dhtmlxgantt.js.map
1.8 MB
{"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/webpack/bootstrap","webpack://[name]/./sources/utils/utils.js","webpack://[name]/./sources/core/ui/utils/dom_helpers.js","webpack://[name]/./sources/utils/extends.js","webpack://[name]/./sources/utils/helpers.js","webpack://[name]/./sources/utils/eventable.js","webpack://[name]/./sources/core/ui/lightbox/controls/base_control.js","webpack://[name]/./sources/core/ui/render/viewport/get_visible_bars_range.js","webpack://[name]/./sources/core/ui/grid/editors/editors/base.js","webpack://[name]/./sources/utils/is_headless.js","webpack://[name]/./sources/utils/env.js","webpack://[name]/./sources/core/ui/layout/cell.js","webpack://[name]/./sources/core/ui/lightbox/controls/select_control.js","webpack://[name]/./sources/core/ui/render/is_legacy_smart_render.js","webpack://[name]/(webpack)/buildin/global.js","webpack://[name]/./sources/utils/global.js","webpack://[name]/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/drop_target.js","webpack://[name]/./sources/core/ui/render/viewport/is_column_visible.js","webpack://[name]/./sources/core/ui/render/viewport/get_visible_cells_range.js","webpack://[name]/./sources/core/ui/render/viewport/get_bg_row_rectangle.js","webpack://[name]/./sources/core/ui/timeline/timeline.js","webpack://[name]/./sources/core/ui/mouse_event_container.js","webpack://[name]/./sources/core/ui/grid/grid.js","webpack://[name]/./sources/core/ui/timeline/scales.js","webpack://[name]/./sources/core/ui/utils/html_helpers.js","webpack://[name]/./sources/core/resource_timetable_builder.js","webpack://[name]/./sources/core/ui/render/task_bar_render.js","webpack://[name]/./sources/core/ui/render/viewport/is_bar_in_viewport.js","webpack://[name]/./sources/core/ui/layout/layout.js","webpack://[name]/./sources/core/ui/render/viewport/get_grid_row_rectangle.js","webpack://[name]/./sources/core/worktime/strategy/work_unit_cache/index.ts","webpack://[name]/./sources/core/worktime/calendar_arguments_helper.js","webpack://[name]/./sources/core/ui/row_position_mixin.js","webpack://[name]/./sources/core/common/duration_formatter_numeric.ts","webpack://[name]/./sources/utils/task_tree_helpers.js","webpack://[name]/./sources/core/gantt_data_range.js","webpack://[name]/./sources/core/datastore/treedatastore.js","webpack://[name]/./sources/core/datastore/power_array.js","webpack://[name]/./sources/core/datastore/datastore.js","webpack://[name]/./node_modules/process/browser.js","webpack://[name]/./sources/utils/timeout.js","webpack://[name]/./sources/core/ui/utils/dom_event_scope.js","webpack://[name]/./sources/core/ui/wai_aria.js","webpack://[name]/./sources/core/ui/lightbox/lightbox_optional_time.js","webpack://[name]/./sources/core/ui/lightbox/controls/typeselect_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/constraint_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/parent_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/duration_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/radio_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/checkbox_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/time_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/textarea_control.js","webpack://[name]/./sources/core/ui/lightbox/controls/template_control.js","webpack://[name]/./sources/core/ui/lightbox/index.js","webpack://[name]/./sources/core/ui/touch.js","webpack://[name]/./sources/core/ui/plugins/timeline_zoom.ts","webpack://[name]/./sources/core/ui/plugins/dhtmlx_hooks.js","webpack://[name]/./sources/core/ui/plugins/jquery_hooks.js","webpack://[name]/./sources/core/ui/plugins/autoscroll.js","webpack://[name]/./sources/core/ui/plugins/index.js","webpack://[name]/./sources/css/skins/contrast_white.js","webpack://[name]/./sources/css/skins/contrast_black.js","webpack://[name]/./sources/css/skins/material.js","webpack://[name]/./sources/css/skins/broadway.js","webpack://[name]/./sources/css/skins/terrace.js","webpack://[name]/./sources/css/skins/meadow.js","webpack://[name]/./sources/css/skins/skyblue.js","webpack://[name]/./sources/core/ui/skin.js","webpack://[name]/./sources/core/facades/layout.js","webpack://[name]/./sources/core/data_task_layers.gpl.js","webpack://[name]/./sources/core/ui/main_layout_initializer.js","webpack://[name]/./sources/core/ui/timeline/links_dnd.js","webpack://[name]/./sources/core/ui/timeline/tasks_dnd.js","webpack://[name]/./sources/core/ui/timeline/main_timeline_initializer.js","webpack://[name]/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/highlight.js","webpack://[name]/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/multi_level.js","webpack://[name]/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/locked_level.js","webpack://[name]/./sources/core/ui/grid/tasks_grid_dnd_marker.js","webpack://[name]/./sources/core/ui/grid/tasks_grid_dnd.js","webpack://[name]/./sources/core/ui/grid/main_grid_initializer.js","webpack://[name]/./sources/core/ui/render/resource_histogram_render.js","webpack://[name]/./sources/core/ui/render/resource_matrix_render.js","webpack://[name]/./sources/core/ui/render/task_grid_line_render.js","webpack://[name]/./sources/core/ui/render/viewport/is_link_in_viewport.js","webpack://[name]/./sources/core/ui/render/link_render.js","webpack://[name]/./sources/core/ui/render/task_bg_render.js","webpack://[name]/./sources/core/ui/render/viewport/is_split_task_in_viewport.js","webpack://[name]/./sources/core/ui/render/task_split_render.js","webpack://[name]/./sources/core/ui/render/task_bar_smart_render.js","webpack://[name]/./sources/core/ui/grid/editors/linked_properties.js","webpack://[name]/./sources/core/ui/grid/editors/editors/duration.js","webpack://[name]/./sources/core/ui/grid/editors/editors/predecessor.js","webpack://[name]/./sources/core/ui/grid/editors/editors/date.js","webpack://[name]/./sources/core/ui/grid/editors/editors/select.js","webpack://[name]/./sources/core/ui/grid/editors/editors/number.js","webpack://[name]/./sources/core/ui/grid/editors/editors/text.js","webpack://[name]/./sources/core/ui/grid/editors/keyboard_mappings/keyboard_navigation.js","webpack://[name]/./sources/core/ui/grid/editors/keyboard_mappings/default.js","webpack://[name]/./sources/core/ui/grid/editors/keyboard_mappings.js","webpack://[name]/./sources/core/ui/grid/editors/controller.js","webpack://[name]/./sources/core/ui/timeline/tasks_canvas_render.gpl.js","webpack://[name]/./sources/core/ui/layout/scrollbar_cell.js","webpack://[name]/./sources/core/ui/layout/resizer_cell.gpl.js","webpack://[name]/./sources/core/ui/layout/view_cell.js","webpack://[name]/./sources/core/ui/layout/view_layout.js","webpack://[name]/./sources/core/ui/render/viewport/is_in_viewport.js","webpack://[name]/./sources/core/ui/render/render_factory.js","webpack://[name]/./sources/core/ui/render/layer_engine.js","webpack://[name]/./sources/core/ui/gantt_layers.js","webpack://[name]/./sources/core/ui/mouse.js","webpack://[name]/./sources/core/ui/configurable.js","webpack://[name]/./sources/core/ui/ui_factory.js","webpack://[name]/./sources/core/ui/index.js","webpack://[name]/./sources/core/ui/message.js","webpack://[name]/./sources/core/ui_core.js","webpack://[name]/./sources/locale/locale_ua.ts","webpack://[name]/./sources/locale/locale_tr.ts","webpack://[name]/./sources/locale/locale_sv.ts","webpack://[name]/./sources/locale/locale_sk.ts","webpack://[name]/./sources/locale/locale_si.ts","webpack://[name]/./sources/locale/locale_ru.ts","webpack://[name]/./sources/locale/locale_ro.ts","webpack://[name]/./sources/locale/locale_pt.ts","webpack://[name]/./sources/locale/locale_pl.ts","webpack://[name]/./sources/locale/locale_no.ts","webpack://[name]/./sources/locale/locale_nl.ts","webpack://[name]/./sources/locale/locale_nb.ts","webpack://[name]/./sources/locale/locale_manager.ts","webpack://[name]/./sources/locale/locale_kr.ts","webpack://[name]/./sources/locale/locale_jp.ts","webpack://[name]/./sources/locale/locale_it.ts","webpack://[name]/./sources/locale/locale_id.ts","webpack://[name]/./sources/locale/locale_hu.ts","webpack://[name]/./sources/locale/locale_hr.ts","webpack://[name]/./sources/locale/locale_he.ts","webpack://[name]/./sources/locale/locale_fr.ts","webpack://[name]/./sources/locale/locale_fi.ts","webpack://[name]/./sources/locale/locale_fa.ts","webpack://[name]/./sources/locale/locale_es.ts","webpack://[name]/./sources/locale/locale_en.ts","webpack://[name]/./sources/locale/locale_el.ts","webpack://[name]/./sources/locale/locale_de.ts","webpack://[name]/./sources/locale/locale_da.ts","webpack://[name]/./sources/locale/locale_cs.ts","webpack://[name]/./sources/locale/locale_cn.ts","webpack://[name]/./sources/locale/locale_ca.ts","webpack://[name]/./sources/locale/locale_be.ts","webpack://[name]/./sources/locale/locale_ar.ts","webpack://[name]/./sources/locale/index.ts","webpack://[name]/./sources/publish_helpers/void_script_third.ts","webpack://[name]/./sources/core/destructor.js","webpack://[name]/./sources/core/common/assert.js","webpack://[name]/./sources/core/ui/resize_listener.js","webpack://[name]/./sources/core/gantt_core.js","webpack://[name]/./sources/core/cached_functions.js","webpack://[name]/./sources/core/data_task_types.js","webpack://[name]/./sources/publish_helpers/void_script_second.ts","webpack://[name]/./sources/core/data.js","webpack://[name]/./sources/core/facades/worktime_calendars.js","webpack://[name]/./sources/core/worktime/strategy/no_work_time.js","webpack://[name]/./sources/core/worktime/time_calculator.js","webpack://[name]/./sources/core/worktime/dynamic_resource_calendars.js","webpack://[name]/./sources/core/worktime/legacy_resource_config.js","webpack://[name]/./sources/core/worktime/strategy/work_unit_cache/larger_units_helper.ts","webpack://[name]/./sources/core/worktime/strategy/work_unit_cache/workunit_object_cache.ts","webpack://[name]/./sources/core/worktime/strategy/work_unit_cache/workunit_map_cache.ts","webpack://[name]/./sources/core/worktime/strategy/calendar_strategy.js","webpack://[name]/./sources/core/worktime/strategy/work_calendar_merger.js","webpack://[name]/./sources/core/worktime/calendar_manager.js","webpack://[name]/./sources/core/worktime/work_time.js","webpack://[name]/./sources/core/load.js","webpack://[name]/./sources/core/tasks.js","webpack://[name]/./sources/core/grid_column_api.gpl.js","webpack://[name]/./sources/core/ui/plugins/column_grid_dnd/scrollable_grid.ts","webpack://[name]/./sources/core/ui/plugins/column_grid_dnd/column_grid_dnd.ts","webpack://[name]/./sources/core/ui/plugins/column_grid_dnd/index.ts","webpack://[name]/./sources/core/ui/grid/grid_resize.gpl.js","webpack://[name]/./sources/core/grid_column_api.js","webpack://[name]/./sources/core/dynamic_loading.js","webpack://[name]/./sources/core/common/link_formatter_simple.ts","webpack://[name]/./sources/core/plugins/formatters.js","webpack://[name]/./sources/core/plugins/auto_task_types.js","webpack://[name]/./sources/core/plugins/new_task_placeholder.js","webpack://[name]/./sources/core/plugins/resources.js","webpack://[name]/./sources/core/plugins/wbs.js","webpack://[name]/./sources/core/plugins/batch_update.js","webpack://[name]/./sources/core/plugins/index.js","webpack://[name]/./sources/core/dataprocessor/simple_storage.ts","webpack://[name]/./sources/core/dataprocessor/extend_gantt.ts","webpack://[name]/./sources/core/dataprocessor/data_processor_events.ts","webpack://[name]/./sources/core/dataprocessor/data_processor.ts","webpack://[name]/./sources/core/dataprocessor/index.js","webpack://[name]/./sources/core/datastore/datastore_render.js","webpack://[name]/./sources/core/datastore/select.js","webpack://[name]/./sources/core/facades/datastore_links.js","webpack://[name]/./sources/core/facades/datastore_tasks.js","webpack://[name]/./sources/core/facades/datastore.js","webpack://[name]/./sources/core/datastore/datastore_hooks.js","webpack://[name]/./node_modules/setimmediate/setImmediate.js","webpack://[name]/./node_modules/timers-browserify/main.js","webpack://[name]/./node_modules/bluebird/js/browser/bluebird.js","webpack://[name]/./sources/utils/promise.js","webpack://[name]/./sources/core/common/state.js","webpack://[name]/./sources/core/common/templates.js","webpack://[name]/./sources/core/common/dnd.js","webpack://[name]/./sources/core/common/date_parsers/csp_compliant_version.ts","webpack://[name]/./sources/core/common/date_parsers/fast_version.ts","webpack://[name]/./sources/core/common/date.js","webpack://[name]/./sources/core/common/serialize.ts","webpack://[name]/./sources/core/common/ajax.js","webpack://[name]/./sources/core/common/config.ts","webpack://[name]/./sources/core/common/services.js","webpack://[name]/./sources/ext/extension_manager.ts","webpack://[name]/./sources/constants/index.js","webpack://[name]/./sources/base_factory/make_instance_common.js","webpack://[name]/./sources/base_factory/make_instance_web.js","webpack://[name]/./sources/ext/undo/undo.ts","webpack://[name]/./sources/ext/undo/monitor.ts","webpack://[name]/./sources/ext/undo/index.ts","webpack://[name]/./sources/ext/tooltip/tooltip.ts","webpack://[name]/./sources/ext/tooltip/tooltipManager.ts","webpack://[name]/./sources/ext/tooltip/index.ts","webpack://[name]/./sources/ext/quick_info/quickInfo.ts","webpack://[name]/./sources/ext/quick_info/index.ts","webpack://[name]/./sources/ext/multiselect.js","webpack://[name]/./sources/ext/marker.js","webpack://[name]/./sources/ext/keyboard_navigation/core.js","webpack://[name]/./sources/ext/keyboard_navigation/modals.js","webpack://[name]/./sources/ext/keyboard_navigation/elements/task_cell.js","webpack://[name]/./sources/ext/keyboard_navigation/elements/task_row.js","webpack://[name]/./sources/ext/keyboard_navigation/elements/header_cell.js","webpack://[name]/./sources/ext/keyboard_navigation/elements/nav_node.js","webpack://[name]/./sources/ext/keyboard_navigation/elements/gantt_node.js","webpack://[name]/./sources/ext/keyboard_navigation/common/trap_modal_focus.js","webpack://[name]/./sources/ext/keyboard_navigation/common/eventhandler.js","webpack://[name]/./sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","webpack://[name]/./sources/ext/keyboard_navigation.js","webpack://[name]/./sources/ext/fullscreen/index.ts","webpack://[name]/./sources/ext/drag_timeline/eventsManager.ts","webpack://[name]/./sources/ext/drag_timeline/index.ts","webpack://[name]/./sources/ext/click_drag/selectedRegion.ts","webpack://[name]/./sources/ext/click_drag/eventsManager.ts","webpack://[name]/./sources/ext/click_drag/index.ts","webpack://[name]/./sources/ext/extensions_gpl.ts","webpack://[name]/./sources/dhtmlxgantt.gpl.ts"],"names":["root","base_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","seed","helpers","copy","result","isDate","Date","isArray","Array","length","isStringObject","String","isNumberObject","Number","isBooleanObject","Boolean","constructor","toString","isCustomType","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","a","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","getTargetNode","e","tagName","srcElement","str","trim","this","replace","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","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","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","b","__","units","second","minute","hour","day","week","month","quarter","year","getFullYear","getMonth","getDate","arrayFilter","arr","callback","filter","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayFind","find","arrayDifference","item","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","sort","throttle","timeout","wait","setTimeout","pop","isValidDate","getTime","Function","delay","timer","$cancelTimeout","$pending","args","clearTimeout","$execute","objectKeys","keys","isEventable","EventHost","_silent_mode","listeners","_silentStart","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","addEvent","settings","handlerId","id","once","originalHandler","removeEvent","clear","eventHost","eventName","thisObject","attachAll","callEvent","eventArguments","handlerName","concat","checkEvent","list","eventId","detachAllEvents","dummy","log","BaseControl","render","set_value","get_value","focus","gantt","view","datastore","viewport","$getConfig","row_height","start","max","floor","end","min","count","ceil","y_end","BaseEditor","show","column","config","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","utils","isNode","$root","isWindowAwailable","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","eventable","domHelpers","Cell","$container","$parent","$config","headerHeight","$gantt","$domEvents","_createDomEventScope","$id","$name","$base_factory","destructor","$view","$services","getService","detach","_headerClickHandler","detachAll","cell","scrollTo","getNode","padding","resize","final","$preResize","topCont","topSize","getSize","minWidth","maxWidth","minHeight","maxHeight","setSize","_hide","cellIndex","moveView","hidden","$toHTML","content","header","raw","html","canCollapse","$fill","init","self","toggle","delegate","collapsed","size","gravity","getContentSize","$lastSize","contentX","contentY","_getBorderSizes","borders","horizontal","vertical","_currentBorders","_borders","_sizeHeader","_sizeContent","_setBorders","cssHash","xLayout","transform","__extends","htmlHelpers","_super","SelectControl","sns","getHtmlSelect","options","_dhx_onchange","onchange","_focus","smart_rendering","_smart_render","g","eval","globalScope","global","createDropTargetObject","res","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","dndTaskId","targetTaskId","store","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","isLegacyRender","columnIndex","scale","viewPort","cellLeftCoord","cellRightCoord","x_end","firstCellIndex","lastCellIndex","getItemTop","Infinity","ScaleHelper","topPositionMixin","canvasRender","Timeline","$scaleHelper","_posFromDateCache","_timelineDragScroll","_findBinary","array","prev","low","high","container","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","col_width","full_width","trace_x","rendered","attr","linksAttr","bindLinks","item_attribute","link_attribute","layers","_createLayerConfig","tasks","linkLayers","links","_attachLayers","ext","dragTimeline","attach","dataHeight","scale_height","refresh","backgroundImage","rowStore","countVisible","data_els","contentHeight","contentWidth","scrollHeight","scrollWidth","scrolled","_refreshScales","smart_scales","getViewPort","scales","_scales","_getScaleChunkHtml","taskFilter","expose","renderer","$ui","taskBar","taskSplitBar","append","taskBg","link","_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","staticBgContainer","$task_bg_static","insertBefore","getScale","destroy","_clearLayers","removeLayer","_render_tasks_scales","scales_html","outer_width","state","getState","_getScales","availWidth","autosize","autosize_min_width","cfgs","prepareConfigs","min_column_width","min_date","max_date","rtl","cfg","fromPos","toPos","templates","scale_row_class","cssClass","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","cells","date","format","template","date_to_str","startIndex","endIndex","inherit_scale_class","scale_cell_class","cssclass","_waiAria","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","posFromDate","dateValue","columnIndexByDate","assert","wholeCells","partCell","pos","roundPos","_getNextVisibleColumn","columns","ignores","visibleDateIndex","_getPrevVisibleColumn","_getClosestVisibleColumn","days","trace_x_ascending","ignore_x","dateIndex","visibleIndex","visibleDate","transition","trace_index_transition","getItemPosition","task","start_date","end_date","xLeft","xRight","getItemHeight","task_height","offset","task_height_offset","primaryScale","getSubScales","sortScales","add","step","_timelineCacheAttached","_resetTopPositionHeight","_unbindStore","events","mouseEvents","h","gridResize","ColumnDnd","default","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","col","min_width","min_grid_column_width","columnsWidth","grid_width","_getGridWidth","_gridCacheAttached","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getColumnIndex","getColumn","gridLine","_refreshPlaceholderOnStoreUpdate","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","close","open","_getColumnWidth","new_width","max_width","_checkGridColumnMinWidthLimits","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","share","iterator","curExtra","_getColsTotalWidth","cols_width","v","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","from","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","$role","getTaskBy","scaleUnit","scaleStep","timegrid","currDate","timestamp","timetable","resource_render_empty_cells","calculateResourceLoad","_task_default_render","_isAllowedUnscheduledTask","_isTaskInTimelineLimits","$getTemplates","taskType","getTaskType","type","padd","types","milestone","link_line_width","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","itemId","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","_get_link_crossing_css","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","text","cond","leftside","$source","start_to_start","$target","finish_to_start","finish_to_finish","_get_conditions","ln","getLink","tp","type_renderers","defaultRenderer","startCoord","endCoord","Layout","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenSrollbars","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","j","$scrollbarRepaint","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","code","isChild","cellId","sub","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","margin","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","cellView","marginSide","dx","dy","workunit_map_cache_1","workunit_object_cache_1","larger_units_helper_1","LargerUnitsCache","createCacheObject","Map","WorkUnitsMapCache","WorkUnitsObjectCache","IsWorkTimeArgument","calendar","ClosestWorkTimeArgument","dir","CalculateEndDateArgument","duration","GetDurationArgument","getWorkHoursArguments","Error","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","arg","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","topCache","getRowTop","taskId","itemIndex","getIndexById","exists","parentId","getItem","DurationFormatterNumeric","canParse","parse","copyLinkIdsArray","linkIds","targetHash","isLinkExists","copyLinkIds","getSubtreeLinks","rootId","isTaskExists","eachTask","getSubtreeTasks","PrimaryScaleHelper","_init_tasks_range","scale_offset_minimal","helper","_scale_range_unit","range","start_interval","resolveConfigRange","getSubtaskDates","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","powerArray","DataStore","TreeDataStore","_branches","pull","$initItem","initItem","$parentProperty","parentProperty","$getRootId","val","$openInitially","openInitially","visibleOrder","$create","fullOrder","_searchVisibleOrder","_skip_refresh","getConfig","canOpenSplitTasks","eachParent","_isSplitItem","_buildTree","data","setParent","_add_branch","$level","calculateItemLevel","_updateOrder","hasChild","loaded","_parseInner","_addItemInner","_move_branch","$rendered_parent","_changeIdInner","oldId","newId","_replace_branch_child","_traverseBranches","branch","_removeItemInner","items","eachItem","move","sid","tindex","source_pid","tbranch","_moveInner","childId","pid","getSiblings","siblings","clearAll","level","_setParentInner","new_pid","silent","startItem","parentsHash","added_already","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","els","temp","rule","$powerArray","$removeAt","$remove","$find","$insertAt","$each","master","$map","$filter","_filterRule","updateItem","removeItem","order","data_size","getVisibleItems","getIndexRange","addItem","changeId","sindex","getIdByIndex","arraysEqual","arr1","arr2","quick","_quick_refresh","oldOrder","serialize","filteredOrder","ret","getItems","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","host","updPerSecond","_on_timeout","createScope","eventScope","staticArray","extend","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","lightboxHiddenAttr","lightboxVisibleAttr","lightboxAttr","lightboxButtonAttrString","buttonName","role","tabindex","lightboxHeader","headerText","lightboxSelectAttrString","time_option","years","months","hours","minutes","lightboxDurationInputAttrString","section","column_duration","aria-valuemin","multiselect","attrs","new_task","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","previousSibling","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","TypeselectControl","typeKey","typeValue","oldOnChange","changeLightboxType","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","getTaskByTime","allow_root","root_id","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","checked","CheckboxControl","checkboxes","TimeControl","auto_end_date","_update_lightbox_select","selects","_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","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","_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","src","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","substr","getLightboxSection","getValue","setValue","get_template_control","control","get_select_control","get_textarea_control","get_time_control","_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","_dhtmlx_confirm","message","ok","opts","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","abs","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","isHeadless","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","newColumnWidth","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","that","vs","av","grid","border","gridId","gridObj","dhtmlXCellObject","jQuery","$","methods","fn","dhx_gantt","each","newgantt","Gantt","getGanttInstance","scrollRange","scrollStep","scrollDelay","scrollSpeed","interval","isMove","delayTimeout","startPos","started","eventPos","isDisplayed","isScrollState","dragMarker","isResize","isLink","isClickDrag","autoscroll","defineDelayTimeout","speed","autoscroll_speed","setInterval","tick","autoscroll_delay","defineScrollInterval","clearInterval","autoscrollInterval","isScroll","targetTouches","posX","posY","need_scroll","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","zoom","skins","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","href","match","skinset","_configure","resetSkin","getTimeline","getGrid","getVerticalScrollbar","getHorizontalScrollbar","DEFAULT_VALUE","tryCall","method","fallback","getTaskTop","getTaskPosition","getTaskHeight","roundTaskDates","domAttr","getLinkNode","oldH","oldV","newV","newH","showDate","date_x","scroll_to","task_scroll_offset","showTask","_scroll_state","x_pos","y_pos","scroll_size","x_inner","y_inner","scrollVer","scrollHor","horState","verState","addTaskLayer","addLinkLayer","initializer","_legacyGridResizerClass","layout","resizers","gridResizer","next","onCreated","mainTimeline","show_chart","showGrid","show_grid","colsWidth","grid_limits","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","shift","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","sqrt","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","getPosition","markerSize","getMarkerSize","viewportSize","getVieportSize","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","updateMarkedHtml","drag_link_class","resetDndState","showDirectingLine","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","pow","tan","angle","atan","coordinateCircleQuarter","PI","sin","cos","ieTransform","shiftLeft","shiftTop","sX","eX","sY","eY","_dir_start","dd","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","_dir_end","targetChanged","_get_link_type","addLink","createLinkDND","createTaskDND","round_task_dates","dragMultiple","_events","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","new_start","new_end","obj_s_x","obj_e_x","_mouse_position_change","_is_number","isFinite","_update_on_move","_update_item_on_move","original","curr_date","dragHash","_isMultiselect","getSelectedTasks","drag_project","initialDrag","childDrag","_update_parents","_get_drag_mode","_fix_dnd_scale_time","fixStart","correct_work_time","roundDate","fixEnd","_fix_working_times","getClosestWorkTime","correctTaskWorkTime","_finalize_mouse_up","work_time","_fireEvent","_dhx_changed","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","removeLineHighlight","markerLine","highlightPosition","ePos","gridHeight","getTaskMarkerPosition","pointerEvents","markerFolder","maxBottom","highlightFolder","linePos","indentNode","indent","itemTop","itemHeight","childCount","getLineMarkerPosition","markerLineTop","highlightRow","dropTarget","relTargetPos","eventTop","findClosesTarget","allowedLevel","targetLevel","findTargetAbove","findTargetBelow","targetTask","targetAbove","targetBelow","rootLevel","current","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","$drop_target","minTop","firstVisibleTaskPos","hiddenTaskPart","getTargetTaskId","lockLevel","order_branch_free","getStore","lastTaskOfLevel","last_item","_getGridPos","_getTargetY","_getTaskByY","dropIndex","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","getRectangle","getVisibleRange","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","fill","histogram_cell_allocated","resource_property","smartRendering","histogram_cell_capacity","row","checkedColumns","renderedCell","renderedResourceLines","renderResourceLineCell","resource_cell_class","resource_cell_value","detachRenderedResourceLine","getRowRectangle","aria","date_grid","tree","grid_indent","grid_blank","grid_file","grid_open","grid_folder","align","justifyContent","center","getGlobalTaskIndex","grid_row_class","css_template","isSelected","sourceTop","sourceHeight","targetTop","targetHeight","sourceLeft","sourceRight","targetLeft","targetRight","tmp","isInViewPort","drawer","current_pos","dirs","down","path","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","marginLeft","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","line_width","_render_link_arrow","borderColor","renderedCells","isRendered","detachRenderedCell","getCellTemplate","task_cell_class","warn","timeline_cell_class","renderOneCell","cssTemplateContent","static_background_cells","cellTemplate","show_task_cells","odd","task_row_class","isBarInViewport","createBaseBarRender","defaultRender","isProject","resetProjectDates","mapTo","keepDatesOnEdit","keepDurationOnEdit","defaultActionOnEdit","TextEditor","formatters","durationFormatter","PredecessorEditor","linkFormatter","parseInputString","predecessors","delimiter","formatPredecessors","formatLinkKey","lag","getLinksDiff","predecessorCodes","selectedLinks","getSelectedLinks","existingLinksSearch","linkId","linksToAdd","linkKey","linksToDelete","linksDiff","batchUpdate","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","minValue","maxValue","parsed","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","newState","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","newValue","oldValue","inline_editors_date_processing","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","moveTask","nextItem","editNextRow","editPrevRow","ScrollbarCell","SCROLL_MODIFIER_KEYS","_scrollHorizontalHandler","_scrollVerticalHandler","_outerScrollVerticalHandler","_outerScrollHorizontalHandler","_mouseWheelHandler","_isHorizontal","scrollPosition","_isVertical","_initVertical","_initHorizontal","_initMouseWheel","_initLinkedViews","_getRootParent","_eachView","eachCell","_getLinkedViews","_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","wx","deltaX","wheelDeltaX","wy","horizontalScrollModifier","horizontal_scroll_key","oldLeft","detail","oldTop","ViewCell","childConfig","createView","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","genericViewPortChecker","basicGetRectangle","task_area_pulls","task_area_renderers","getRenderer","renderMethod","updateMethod","specializedViewPortChecker","layer_attribute","render_item","rendererViewPort","dom","remove_item","clear_container","get_visible_range","render_items","buffer","createDocumentFragment","vis","update_items","nodesToRemove","itemNode","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","rel","requestUpdate","onUpdateRequest","eachLayer","createLayerFactory","previusSiblingContainer","defaultContainerSibling","setService","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","ViewSettings","extendSettings","parentSettings","own","parentView","parentConfig","parentTemplates","configurable","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","ResourceGrid","ResourceTimeline","ResourceHistogram","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderTaskBg","renderLink","gridRenderer","resourceMatrixRenderer","resourceHistogramRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","resourceRow","resourceHistogram","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","buttonAriaAttrs","getFirstDefined","values","_createBox","cancel","contentId","message_ok","message_cancel","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","expire","timers","info","hideAll","popups","modalbox","codeHelpers","_eventRemoveAll","uiApi","$mouseEvents","createLayoutFacade","targetAttribute","_locateHTML","initial_scroll","firstTask","getTaskByIndex","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","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","nb","nl","no","pl","ro","ru","si","sk","sv","tr","ua","_dp","$destroyed","check","show_errors","listenWindowResize","resizeDelay","resizeTimeout","container_resize_timeout","repaintGantt","lowlevelResizeWatcher","previousHeight","previousWidth","getPropertyValue","resizeWatcher","tabIndex","contentWindow","addResizeListener","calculateScaleRange","invalidContainerMessage","validateNode","isHTMLElement","_reinit","dropLayout","rebuildLayout","storeNames","resetLayout","initTemplates","edit","delete","confirm_deleting_title","deleteTask","preserve_scroll","new_pos","setSizes","getTaskRowNode","prevOffset","time_unit","offsetChanged","activate","_cached_functions","update_if_changed","active","cache","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","unscheduled","show_unscheduled","taskStart","taskEnd","_getProjectEnd","project_end","_getProjectStart","project_start","getDefaultTaskDate","parent_id","schedule_from_end","_set_default_task_timing","details_on_create","unselect","getSelectedId","getTaskTimingMode","task_type","$no_start","$no_end","$rendered_type","updateTaskTiming","$effective_calendar","getTaskCalendar","task_mode","dirty","effectiveCalendar","inherit_calendar","taskMode","taskTiming","getSubtaskDuration","task_id","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","equals","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","getMinutesPerWeek","weekStart","_weekCache","has","_calendar","minutesPerWeek","week_start","getHoursPerDay","set","getMinutesPerMonth","monthStart","_monthCache","minutesPerMonth","nextMonth","_cache","setItem","unitCache","CalendarWorkTimeStrategy","_workingUnitsCache","_largeUnitsCache","_worktime","_cached_timestamps","_cached_timestamps_count","_getUnitOrder","_resetTimestampCache","_timestamp","UTC","_checkIfWorkingUnit","skipLookup","_isWorkTime","_is_work_day","_getWorkHours","_is_work_hour","startHour","endHour","_getTimeOfDayStamp","dayEnd","_is_work_minute","checkTime","_internDatesPull","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","checkFirst","checkLast","isLastStep","unitOrder","biggerTimeUnit","_getClosestWorkTimeFuture","_getMinutesPerHour","hourStart","hourEnd","worktimes","_getMinutesPerDay","durationMinutes","durationHours","_getWorkUnitsForRange","getUnitsPerDay","total","_getMinutesBetweenSingleDay","_getIntervalTimestamp","minuteFrom","minuteTo","_getMinutesBetween","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","_getHoursBetween","_setConfig","_parseSettings","_parseHours","_tryChangeCalendarSettings","backup","JSON","stringify","_arraysEqual","mySettings","thatSettings","myDays","otherDates","myHours","otherHours","getDay","getSeconds","endHours","timestampRanges","timerangeConfig","startMinute","endMinute","durationSeconds","calendarConfig","reset_calendar","dateKey","is_work_unit","mult","_calculateEndDate","_calculateMinuteEndDate","_subtractMinuteDate","_calculateHourEndDate","_addInterval","stopAction","added","_addHoursUntilDayEnd","rangeHours","addHours","intervalEnd","durationLeft","setMinutes","setSeconds","hoursPerDay","_addMinutesUntilHourEnd","hour_start","rangeMinutes","addMinutes","_subtractMinutesUntilHourStart","hourStartTimestamp","initialDateTimestamp","addedInterval","calculatedDay","daySchedule","minutesInDay","dayStart","isWorkHour","workInterval","minutesInHour","_getClosestWorkTimePast","_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","_convertWorkTimeSettings","calendars","mergeHelper","_createCalendarFromConfig","apiCore","parentCalendar","defaults","fulltime","createDefaultCalendars","_getOwnCalendar","calendar_property","dynamic_resource_calendars","calendarsConfig","taskObject","stop","isCalendar","restoreConfigCalendars","possibleCalendar","every","worktimeFacadeFactory","facade","jsonParseError","load","url","_load_url","cl","_load_type","ajax","on_load","xmlDoc","responseText","resp","status","responseURL","_process_loading","collections","_load_collections","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","visibleColumns","loadedBranches","old_has_children","branch_loading_property","branch_loading","needLoading","requestData","encodeURIComponent","LinkFormatterSimple","_getWBSCode","_linkReg","linkPart","exec","_findSource","_gantt","pred","getWBSCode","reqTemplate","wbs","getTaskByWBSCode","DurationFormatter","LinkFormatter","enter","callIfEnabled","auto_types","updateParents","checkParent","targetType","getTaskTypeToUpdate","updateTaskType","setTaskType","delTaskParent","group_mode","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","placeholder_task","insertPlaceholder","placeholders","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","isPlaceholderTask","isPlaceholderLink","action","commands","entity","createResourceMethods","falsyValuePrefix","random","resourceHashFunction","getResourceTasks","resourceIds","resourceHash","resourceValue","selectAssignments","owners","filterTasks","propertyValue","filterResourceTasks","getResourceAssignments","assignments","resource_store","_needRecalc","_isRecalcNeeded","_isGroupSort","_calcWBS","$virtual","$wbs","_setWBSCode","getByWBSCode","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","resetCache","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","changeLinkId","changeTaskId","_row_style","rowId","_delete_task","_sendTaskOrder","setDp","DataProcessorEvents","$dp","_dataProcessorHandlers","treeHelper","cascadeDelete","clientSideDelete","updated","updatedRows","clientOnly","_in_progress","cascade_delete","dpMode","cascade","sendAllData","_tSend","_waitMode","itemLinks","_links","getTaskLinks","updateLink","_tMode","_serverProcessor","substring","serverProcessor","pluralizedMode","urlSeparator","upd","isExist","objData","xml_date","parse_date","data_processor_events_1","extend_gantt_1","simple_storage_1","createDataProcessor","router","tMode","DataProcessor","setTransactionMode","serverProcessorURL","action_param","autoUpdate","_headers","_payload","_postDelim","_invalid","messages","inserted","deleted","invalid","invalid_cell","enableUTFencoding","headers","_endnm","_serializeAsJson","_router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","findRow","existing","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","_beforeSendData","_getRowData","_serializeAsJSON","serialize_one","stack","pref","serialized","valid","_forEachUpdatedRow","_sendData","_getAllData","pattern","defineAction","_uActions","afterUpdateCallback","tid","btag","ganttMode","correct","originalSid","afterUpdate","_xml","getGanttMode","reqUrl","filePath","finalizeUpdate","cleanUpdate","atag","_dp_init","_setDefaultTransactionMode","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","ids","urlParams","preprocessedData","query","taskState_1","taskAction","ganttMode_1","_onResolvedCreateUpdate_1","actionPromise","then","catch","hasOne","_prepareDataItem","rawItem","processedItem","dataItem","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","allData","loadedRanges","layerData","skipRepaint","refreshId","selectedId","deleteItem","subItem","getLinkCount","getTaskCount","getVisibleTaskCount","startTask","calculateTaskLevel","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","createDatastore","$StoreType","open_tree_initially","dropService","storeList","stores","refresh_links","refreshLinks","hasSplitParent","_clear_data","unselectTask","facadeFactory","parseDate","originalTask","checkLinkedTaskVisibility","sync_link","sourceTask","sync_link_delete","sync_links","mapEvents","mapFrom","sourceEvent","targetEvent","taskLinks","existingLink","sourceMatch","targetMatch","typeMatch","$index","show_tasks_outside_timescale","oldState","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","setImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","onreadystatechange","installReadyStateChangeImplementation","clearImmediate","scope","Timeout","clearFn","_id","_clearFn","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","u","_dereq_","1","Promise","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","util","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","stderr","write","exit","throwLater","invokeLater","invoke","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","context","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","resolve","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","classString","TypeError","ensureMethod","namedGetter","indexedGetter","isIdentifier","isIndex","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","cb","boundTo","predicateLoop","matchesPredicate","isObject","./es5","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","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","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","reject","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","newStr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","inherits","stackToIndex","currentStack","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","err","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","reduce","PromiseAll","all","promiseAllThis","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","writable","OperationalError","cause","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","prop","descriptor","proto","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","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","limit","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","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","moveItemsCount","srcIndex","dst","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","o2","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","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","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","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","dom_helpers","copyDomEvent","altKey","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","eventParams","passive","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","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","useCsp","csp","time_part","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","minute_start","getMilliseconds","setMilliseconds","_add_days","inc","ndate","setYear","add_quarter","num","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","convert_to_utc","createConfig","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xhr","responseXML","xpathExp","docObj","selectNodes","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","isQt","readyState","setRequestHeader","toUpperCase","send","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","drag_timeline","service","ExtensionsManager","addExtension","_extensions","getExtension","supportedExtensions","license","extensionManager","ExtensionManager","plugins","plugin","templatesLoader","stateService","selected_task","i18n","setLocale","localeObject","MAX_UNDO_STEPS","Undo","maxSteps","undoEnabled","redoEnabled","invert","revert","inverseCommands","_undoStack","_redoStack","getUndoStack","getRedoStack","clearUndoStack","clearRedoStack","updateConfigs","undo_steps","undo_types","undo_actions","undo","redo","_pop","_reorderCommands","_applyAction","_push","logAction","weights","actionWeights","weightA","entities","actions","isExists","getMethod","startsWith","$branch_index","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","saveState","Tooltip","_tooltipNode","setViewport","_root","_isLikeMouseEvent","_calculateTooltipPosition","setContent","_getViewPort","_getViewPortSize","tooltipNode","tooltip","mouse","containerPos","domEventsScope","tooltip_1","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","tooltipFor","cloneDomEvent","clone","delayShow","tooltip_timeout","tooltip_hide_timeout","tooltipManager_1","tooltipManager","tooltips","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","quick_info_content","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","blockSelection","first_indx","target_indx","last_indx","old_selectTask","old_unselectTask","toggleTaskSelection","eachSelectedTask","getLastSelectedTask","old_isSelected","render_marker","show_markers","marker_class","initMarkerArea","markerArea","$marker_area","_markers","renderMarkers","getMarker","addMarker","deleteMarker","updateMarker","_getMarkers","$keyboardNavigation","dispatcher","activeNode","globalNode","GanttNode","setActiveNode","getActiveNode","getDefaultNode","TaskCell","TaskRow","isValid","setDefaultNode","fromDomElement","inputs","HeaderCell","focusGlobalNode","blurNode","focusNode","focusChanged","compareTo","keptFocus","blur","keyDownHandler","isModal","ganttNode","shortcuts","getCommandFromEvent","activeElement","findHandler","doAction","awaitsFocus","clearDelay","modalsStack","afterPopup","startModal","trapFocus","endModal","currentTarget","isTopModal","traceLightbox","focusElement","_compose","cellElement","nextElement","prevTask","moveTo","nextTask","home","pagedown","pageup","bindAll","KeyNavNode","viewWidth","viewHeight","shift+down","shift+up","shift+right","shift+left","space","ctrl+left","ctrl+right","ctrl+enter","taskRow","enter, space","EventHandler","canStringifyThis","canStringifyThat","eventFacade","$eventAttached","scrollHorizontal","scrollVertical","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","charCodeAt","printableKey","fromCharCode","getHashFromEvent","junctionChar","term","combinationChar","backspace","tab","esc","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","keyboard_navigation","isTaskFocused","isInlineEditorCell","focusHandler","$preventDefault","reFocusActiveNode","mousedownHandler","locateTask","removeAttribute","onReady","updateRender","_redrawTasks","focusedItemVisible","nodeConstructor","getScope","scopes","headerCell","taskCell","findVisibleColumnIndex","keyNavFacade","addShortcut","scopeObject","getShortcutHandler","removeShortcut","getScopeName","setupKeyNav","isExpanded","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","fullscreen","backupBodyPadding","backupElementSizes","zIndex","modified","backupPositioning","updateSizes","expandGantt","onFullScreenChange","getFullscreenElement","positions","originalPositioning","resetParentPositioning","setFullScreenSizes","record","restoreParentPositioning","restoreSizes","cantFullscreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","expand","requestArguments","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","collapse","requestExitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","exitFullscreen","EventsManager","_mouseDown","_calculateDirectionVector","vectors","resultVector_1","vector","magnitude","angleDegrees","atan2","_applyDndReadyStyles","_timeline","_clearDndReadyStyles","_getScrollPosition","_countNewScrollPosition","coords","_startPoint","shiftY","_scrollState","_setScrollPosition","requestAnimationFrame","_stopDrag","_originalReadonly","_startDrag","enabled","filterTargets","eventsManager_1","helpers_1","SelectedRegion","_el","relative","_singleRow","_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","coordinates","viewPortBounds","selectedRegion_1","defaultConfig","eventsManager","clickDrag","__assign","click_drag","click_drag_1","drag_timeline_1","fullscreen_1","quick_info_1","quick_info","extensions_gpl_1"],"mappings":"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","file":"dhtmlxgantt.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, base_factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = base_factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"dhtmlxgantt\", [], base_factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dhtmlxgantt\"] = base_factory();\n\telse\n\t\troot[\"dhtmlxgantt\"] = base_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 = 245);\n","var helpers = require(\"./helpers\");\n\nfunction isCustomType(object){\n\tvar constructorString = object.constructor.toString();\n\tvar plainObjectConstructor = ({}).constructor.toString();\n\n\treturn constructorString !== plainObjectConstructor;\n}\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\tif(isCustomType(object)){\n\t\t\t\t\tresult = Object.create(object);\n\t\t\t\t}else{\n\t\t\t\t\tresult = {};\n\t\t\t\t}\n\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;\nfunction insert(node, newone) {\n\tif(!_slave){\n\t\t_slave = document.createElement(\"div\");\n\t}\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};","module.exports = function (d, b) {\n\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\tfunction __() { this.constructor = d; }\n\td.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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 isValidDate(obj){\n\treturn isDate(obj) && !isNaN(obj.getTime());\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\tresult.$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\n\tresult.$pending = false;\n\tresult.$cancelTimeout = function(){\n\t\tclearTimeout(timer);\n\t\tresult.$pending = false;\n\t};\n\tresult.$execute = function(){\n\t\tvar args = Array.prototype.slice.call(arguments);\n\t\tcallback.apply(this, args);\n\t\tresult.$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\nfunction isEventable(obj) {\n\treturn obj.attachEvent && obj.detachEvent;\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\tisValidDate: isValidDate,\n\tisStringObject: isStringObject,\n\tisNumberObject: isNumberObject,\n\tisBooleanObject: isBooleanObject,\n\tdelay: delay,\n\tobjectKeys: objectKeys,\n\tisEventable: isEventable\n};","var EventHost = function(){\n\tthis._silent_mode = false;\n\tthis.listeners = {};\n};\n\nEventHost.prototype = {\n\t_silentStart: function() {\n\t\tthis._silent_mode = true;\n\t},\n\t_silentEnd: function() {\n\t\tthis._silent_mode = false;\n\t}\n};\n\nvar\tcreateEventStorage = function(obj) {\n\tvar handlers = {};\n\tvar index = 0;\n\tvar eventStorage = function(){\n\t\tvar combinedResult = true;\n\t\tfor(var i in handlers){\n\t\t\tvar handlerResult = handlers[i].apply(obj, arguments);\n\t\t\tcombinedResult=combinedResult && handlerResult;\n\t\t}\n\t\treturn combinedResult;\n\t};\n\teventStorage.addEvent=function(handler, settings){\n\t\tif (typeof (handler) == \"function\"){\n\t\t\tvar handlerId;\n\t\t\tif(settings && settings.id){\n\t\t\t\thandlerId = settings.id;\n\t\t\t}else{\n\t\t\t\thandlerId = index;\n\t\t\t\tindex++;\n\t\t\t}\n\n\t\t\tif(settings && settings.once){\n\t\t\t\tvar originalHandler = handler;\n\t\t\t\thandler = function(){\n\t\t\t\t\toriginalHandler();\n\t\t\t\t\teventStorage.removeEvent(handlerId);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\thandlers[handlerId] = handler;\n\t\t\treturn handlerId;\n\t\t}\n\t\treturn false;\n\t};\n\teventStorage.removeEvent=function(id){\n\t\tdelete handlers[id];\n\t};\n\n\teventStorage.clear = function(){\n\t\thandlers = {};\n\t};\n\n\treturn eventStorage;\n};\n\nfunction makeEventable(obj){\n\n\tvar eventHost = new EventHost();\n\tobj.attachEvent=function(eventName, handler, settings){\n\t\teventName = 'ev_'+eventName.toLowerCase();\n\t\tif (!eventHost.listeners[eventName]){\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\n\t\t}\n\n\t\tif(settings && settings.thisObject){\n\t\t\thandler = handler.bind(settings.thisObject);\n\t\t}\n\n\t\tvar innerId = eventHost.listeners[eventName].addEvent(handler, settings);\n\n\t\tvar handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\n\t\tif(settings && settings.id){\n\t\t\thandlerId = settings.id;\n\t\t}\n\t\treturn handlerId;\n\t};\n\n\tobj.attachAll = function(callback){\n\t\tthis.attachEvent('listen_all', callback);\n\t};\n\n\tobj.callEvent=function(name, eventArguments){\n\t\tif (eventHost._silent_mode) return true;\n\n\t\tvar handlerName = 'ev_'+name.toLowerCase();\n\n\t\tvar listeners = eventHost.listeners;\n\t\tif (listeners['ev_listen_all']){\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\n\t\t}\n\n\t\tif (listeners[handlerName])\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\n\t\treturn true;\n\t};\n\n\tobj.checkEvent=function(name){\n\t\tvar listeners = eventHost.listeners;\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\n\t};\n\n\tobj.detachEvent=function(id){\n\t\tif (id){\n\t\t\tvar listeners = eventHost.listeners;\n\t\t\tfor(var i in listeners){\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\n\t\t\t}\n\n\t\t\tvar list = id.split(':');//get EventName and ID\n\t\t\tvar listeners = eventHost.listeners;\n\t\t\tif(list.length === 2){\n\t\t\t\tvar eventName = list[0];\n\t\t\t\tvar eventId = list[1];\n\t\t\t\tif(listeners[eventName]){\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tobj.detachAllEvents = function(){\n\t\tfor (var name in eventHost.listeners) {\n\t\t\teventHost.listeners[name].clear();\n\t\t}\n\t};\n\n}\n\nmodule.exports = makeEventable;","function dummy() {\n\t// eslint-disable-next-line\n\tconsole.log(\"Method is not implemented.\"); \n}\nfunction BaseControl() {\n}\n\n// base methods will be runned in gantt context\nBaseControl.prototype.render = dummy; // arguments: sns\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function(gantt) { // we could send current instance of gantt to module\n\treturn BaseControl;\n};","module.exports = function getVisibleTasksRange(gantt, view, datastore, viewport){\n\tvar config = view.$getConfig();\n\tvar height = config.row_height;\n\tvar buffer = 5;\n\tvar indexStart = Math.max(0, Math.floor(viewport.y / height) - buffer);\n\tvar indexEnd = Math.min(datastore.count(), Math.ceil(viewport.y_end / height) + buffer);\n\treturn {\n\t\tstart: indexStart,\n\t\tend: indexEnd\n\t};\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = function () {\n\t};\n\n\tBaseEditor.prototype = {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t},\n\t\thide: function () {\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = value;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn this.get_input(node).value || \"\";\n\t\t},\n\t\tis_changed: function (value, id, column, node) {\n\t\t\tvar currentValue = this.get_value(id, column, node);\n\t\t\tif (currentValue && value && currentValue.valueOf && value.valueOf) {\n\t\t\t\treturn currentValue.valueOf() != value.valueOf();\n\t\t\t} else {\n\t\t\t\treturn currentValue != value;\n\t\t\t}\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\treturn true;\n\t\t},\n\n\t\tsave: function (id, column, node) {\n\n\t\t},\n\t\tget_input: function (node) {\n\t\t\treturn node.querySelector(\"input\");\n\t\t},\n\t\tfocus: function (node) {\n\t\t\tvar input = this.get_input(node);\n\t\t\tif (!input) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (input.focus) {\n\t\t\t\tinput.focus();\n\t\t\t}\n\n\t\t\tif (input.select) {\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t};\n\treturn BaseEditor;\n};","var utils = require(\"./env\");\n\nmodule.exports = function(gantt){\n\treturn utils.isNode || !gantt.$root;\n};","/* eslint-disable no-restricted-globals */\nvar isWindowAwailable = typeof window !== \"undefined\";\n\n/* eslint-enable no-restricted-globals */\n\nvar env = {\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisIE6: isWindowAwailable && (!XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\n\tisIE7: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\n\tisIE8: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\n};\n\nmodule.exports = env;","var utils = require(\"../../../utils/utils\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tdomHelpers = require(\"../utils/dom_helpers\");\n\nvar Cell = (function () {\n\t\"use strict\";\n\n\tfunction Cell(parent, config, base_factory, gantt) {\n\t\tif (parent) {\n\t\t\tthis.$container = domHelpers.toNode(parent);\n\t\t\tthis.$parent = parent;\n\t\t}\n\t\t// save config\n\t\tthis.$config = utils.mixin(config, {\n\t\t\theaderHeight: 33\n\t\t});\n\t\tthis.$gantt = gantt;\n\t\tthis.$domEvents = gantt._createDomEventScope();\n\t\t// set id\n\t\tthis.$id = config.id || \"c\" + utils.uid();\n\n\t\tthis.$name = \"cell\";\n\t\tthis.$base_factory = base_factory;\n\n\t\teventable(this);\n\n\t}\n\n\tCell.prototype.destructor = function () {\n\t\tthis.$parent = this.$container = this.$view = null;\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\n\t\tmouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n\t\tthis.$domEvents.detachAll();\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\t};\n\tCell.prototype.cell = function (id) {\n\t\treturn null;\n\t};\n\n\tCell.prototype.scrollTo = function(left, top){\n\n\t\tif (left*1 == left){\n\t\t\tthis.$view.scrollLeft = left;\n\t\t}\n\t\tif(top*1 == top){\n\t\t\tthis.$view.scrollTop = top;\n\t\t}\n\t};\n\n\tCell.prototype.clear = function(){\n\t\tthis.getNode().innerHTML = \"\";\n\t\tthis.getNode().className = \"gantt_layout_content\";\n\t\tthis.getNode().style.padding = \"0\";\n\t};\n\n\tCell.prototype.resize = function (final) {\n\t\tif (this.$parent) {\n\t\t\treturn this.$parent.resize(final);\n\t\t}\n\n\t\tif(final === false){\n\t\t\tthis.$preResize = true;\n\t\t}\n\n\t\tvar topCont = this.$container;\n\t\tvar x = topCont.offsetWidth;\n\t\tvar y = topCont.offsetHeight;\n\t\tvar topSize = this.getSize();\n\t\tif (topCont === document.body) {\n\t\t\tx = document.body.offsetWidth;\n\t\t\ty = document.body.offsetHeight;\n\t\t}\n\t\tif (x < topSize.minWidth) {\n\t\t\tx = topSize.minWidth;\n\t\t}\n\t\tif (x > topSize.maxWidth) {\n\t\t\tx = topSize.maxWidth;\n\t\t}\n\t\tif (y < topSize.minHeight) {\n\t\t\ty = topSize.minHeight;\n\t\t}\n\t\tif (y > topSize.maxHeight) {\n\t\t\ty = topSize.maxHeight;\n\t\t}\n\t\tthis.setSize(x, y);\n\n\t\tif(!this.$preResize){\n\t\t//\tself.callEvent(\"onResize\", [x, y]);\n\t\t}\n\t\tthis.$preResize = false;\n\t};\n\n\tCell.prototype.hide = function () {\n\t\tthis._hide(true);\n\t\tthis.resize();\n\t};\n\tCell.prototype.show = function (force) {\n\t\tthis._hide(false);\n\t\tif (force && this.$parent) {\n\t\t\tthis.$parent.show();\n\t\t}\n\t\tthis.resize();\n\t};\n\tCell.prototype._hide = function (mode) {\n\t\tif (mode === true && this.$view.parentNode) {\n\t\t\tthis.$view.parentNode.removeChild(this.$view);\n\t\t}\n\t\telse if (mode === false && !this.$view.parentNode) {\n\t\t\tvar index = this.$parent.cellIndex(this.$id);\n\t\t\tthis.$parent.moveView(this, index);\n\t\t}\n\t\tthis.$config.hidden = mode;\n\t};\n\tCell.prototype.$toHTML = function (content, css) {\n\t\tif (content === void 0) { content = \"\"; }\n\t\tcss = [(css || \"\"), (this.$config.css || \"\")].join(\" \");\n\t\tvar obj = this.$config;\n\t\tvar header = \"\";\n\t\tif (obj.raw) {\n\t\t\tcontent = typeof obj.raw === \"string\" ? obj.raw : \"\";\n\t\t}\n\t\telse {\n\t\t\tif (!content) {\n\t\t\t\tcontent = \"<div class='gantt_layout_content' \"+(css ? \" class='\"+css+\"' \" : \"\")+\" >\" + (obj.html || \"\") + \"</div>\";\n\t\t\t}\n\t\t\tif (obj.header) {\n\t\t\t\tvar collapseIcon = obj.canCollapse ? \"<div class='gantt_layout_header_arrow'></div>\" : \"\";\n\t\t\t\theader = \"<div class='gantt_layout_header'>\" + collapseIcon + \"<div class='gantt_layout_header_content'>\" + obj.header + \"</div></div>\";\n\t\t\t}\n\t\t}\n\t\treturn \"<div class='gantt_layout_cell \" + css + \"' data-cell-id='\" + this.$id + \"'>\" + header + content + \"</div>\";\n\t};\n\tCell.prototype.$fill = function (node, parent) {\n\t\tthis.$view = node;\n\t\tthis.$parent = parent;\n\t\tthis.init();\n\t};\n\tCell.prototype.getNode = function () {\n\t\treturn (this.$view.querySelector(\"gantt_layout_cell\") || this.$view);\n\t};\n\tCell.prototype.init = function () {\n\t\t// [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\n\n\t\tvar self = this;\n\n\t\tthis._headerClickHandler = function(e){\n\t\t\tvar cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\n\t\t\tif(cellId == self.$id){\n\t\t\t\tself.toggle();\n\t\t\t}\n\t\t};\n\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\n\t\tmouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n\n\t\tthis.callEvent(\"onReady\", []);\n\t};\n\tCell.prototype.toggle = function () {\n\t\tthis.$config.collapsed = !this.$config.collapsed;\n\t\tthis.resize();\n\t};\n\tCell.prototype.getSize = function () {\n\t\tvar size = {\n\t\t\theight: this.$config.height || 0,\n\t\t\twidth: this.$config.width || 0,\n\t\t\tgravity: this.$config.gravity || 1,\n\t\t\tminHeight: this.$config.minHeight || 0,\n\t\t\tminWidth: this.$config.minWidth || 0,\n\t\t\tmaxHeight: this.$config.maxHeight || 100000000000,\n\t\t\tmaxWidth: this.$config.maxWidth || 100000000000\n\t\t};\n\t\tif (this.$config.collapsed) {\n\t\t\tvar mode = this.$config.mode === \"x\";\n\t\t\tsize[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\n\t\t}\n\t\treturn size;\n\t};\n\n\tCell.prototype.getContentSize = function(){\n\n\t\tvar width = this.$lastSize.contentX;\n\t\tif(width !== width*1){\n\t\t\twidth = this.$lastSize.width;\n\t\t}\n\n\t\tvar height = this.$lastSize.contentY;\n\t\tif(height !== height*1){\n\t\t\theight = this.$lastSize.height;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t};\n\n\tCell.prototype._getBorderSizes = function(){\n\t\tvar borders = {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\thorizontal: 0,\n\t\t\tvertical: 0\n\t\t};\n\t\tif(this._currentBorders){\n\t\t\tif(this._currentBorders[this._borders.left]){\n\t\t\t\tborders.left = 1;\n\t\t\t\tborders.horizontal++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.right]){\n\t\t\t\tborders.right = 1;\n\t\t\t\tborders.horizontal++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.top]){\n\t\t\t\tborders.top = 1;\n\t\t\t\tborders.vertical++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.bottom]){\n\t\t\t\tborders.bottom = 1;\n\t\t\t\tborders.vertical++;\n\t\t\t}\n\t\t}\n\n\t\treturn borders;\n\n\t};\n\n\tCell.prototype.setSize = function (x, y) {\n\t\tthis.$view.style.width = x + \"px\";\n\t\tthis.$view.style.height = y + \"px\";\n\n\t\tvar borders = this._getBorderSizes();\n\t\tvar contentY = y - borders.vertical;\n\t\tvar contentX = x - borders.horizontal;\n\n\t\tthis.$lastSize = { x: x, y: y, contentX: contentX, contentY: contentY };\n\t\tif (this.$config.header) {\n\t\t\tthis._sizeHeader();\n\t\t}else{\n\t\t\tthis._sizeContent();\n\t\t}\n\t};\n\n\tCell.prototype._borders = {\n\t\t\"left\":\"gantt_layout_cell_border_left\",\n\t\t\"right\":\"gantt_layout_cell_border_right\",\n\t\t\"top\":\"gantt_layout_cell_border_top\",\n\t\t\"bottom\":\"gantt_layout_cell_border_bottom\"\n\t};\n\n\tCell.prototype._setBorders = function(css, view){\n\t\tif(!view) {\n\t\t\tview = this;\n\t\t}\n\t\tvar node = view.$view;\n\n\t\tfor( var i in this._borders){\n\t\t\tdomHelpers.removeClassName(node, this._borders[i]);\n\t\t}\n\n\t\tif(typeof css == \"string\"){\n\t\t\tcss = [css];\n\t\t}\n\n\t\tvar cssHash = {};\n\n\t\tfor(var i = 0; i < css.length; i++){\n\t\t\tdomHelpers.addClassName(node, css[i]);\n\t\t\tcssHash[css[i]] = true;\n\t\t}\n\n\t\tview._currentBorders = cssHash;\n\t};\n\n\n\tCell.prototype._sizeContent = function(){\n\t\tvar content = this.$view.childNodes[0];\n\t\tif(content && content.className == \"gantt_layout_content\"){\n\t\t\tcontent.style.height = this.$lastSize.contentY + \"px\";\n\t\t}\n\t};\n\n\tCell.prototype._sizeHeader = function () {\n\t\tvar size = this.$lastSize;\n\t\tsize.contentY -= this.$config.headerHeight;\n\t\tvar header = this.$view.childNodes[0];\n\t\tvar content = this.$view.childNodes[1];\n\t\tvar xLayout = this.$config.mode === \"x\";\n\t\tif (this.$config.collapsed) {\n\t\t\tcontent.style.display = \"none\";\n\t\t\tif (xLayout) {\n\t\t\t\theader.className = \"gantt_layout_header collapsed_x\";\n\t\t\t\theader.style.width = size.y + \"px\";\n\t\t\t\tvar d = Math.floor(size.y / 2 - size.x / 2);\n\t\t\t\theader.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\n\t\t\t\tcontent.style.display = \"none\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.className = \"gantt_layout_header collapsed_y\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (xLayout) {\n\t\t\t\theader.className = \"gantt_layout_header\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.className = \"gantt_layout_header vertical\";\n\t\t\t}\n\t\t\theader.style.width = 'auto';\n\t\t\theader.style.transform = '';\n\t\t\tcontent.style.display = \"\";\n\t\t\tcontent.style.height = size.contentY + \"px\";\n\t\t}\n\t\theader.style.height = this.$config.headerHeight + \"px\";\n\t};\n\treturn Cell;\n}());\n\nmodule.exports = Cell;\n","var __extends = require(\"../../../../utils/extends\");\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction SelectControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\n\t\treturn self; \n\t}\n\t\n\t__extends(SelectControl, _super);\n\t\n\tSelectControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n\t\thtml += htmlHelpers.getHtmlSelect(sns.options, [{ key: \"style\", value: \"width:100%;\" }]);\n\t\thtml += \"</div>\";\n\t\treturn html;\n\t};\n\n\tSelectControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar select = node.firstChild;\n\t\tif (!select._dhx_onchange && sns.onchange) {\n\t\t\tselect.onchange = sns.onchange;\n\t\t\tselect._dhx_onchange = true;\n\t\t}\n\t\tif (typeof value === \"undefined\")\n\t\t\tvalue = (select.options[0] || {}).value;\n\t\tselect.value = value || \"\";\n\t};\n\t\n\tSelectControl.prototype.get_value = function(node) {\n\t\treturn node.firstChild.value;\n\t};\n\t\n\tSelectControl.prototype.focus = function(node) {\n\t\tvar a = node.firstChild;\n\t\tgantt._focus(a, true);\n\t};\n\t\n\treturn SelectControl;\n};","module.exports = function(gantt){\n\treturn gantt.config.smart_rendering && gantt._smart_render;\n};","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","\n/* eslint-disable no-restricted-globals */\nvar globalScope;\nif(typeof window !== \"undefined\"){\n\tglobalScope = window;\n}else{\n\tglobalScope = global;\n}\n/* eslint-enable no-restricted-globals */\n\nmodule.exports = globalScope;","/**\n * The state object for order branch drag and drop\n */\n\nvar utils = require(\"../../../../utils/utils\");\n\nmodule.exports = {\n\tcreateDropTargetObject: function createDropTargetObject(parent) {\n\t\tvar res = {\n\t\t\ttargetParent: null,\n\t\t\ttargetIndex: 0,\n\t\t\ttargetId: null,\n\t\t\tchild: false,\n\t\t\tnextSibling: false,\n\t\t\tprevSibling: false\n\t\t};\n\n\t\tif (parent) {\n\t\t\tutils.mixin(res, parent, true);\n\t\t}\n\t\treturn res;\n\t},\n\tnextSiblingTarget: function nextSiblingTarget(dndTaskId, targetTaskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = targetTaskId;\n\t\tresult.nextSibling = true;\n\t\tresult.targetParent = store.getParent(result.targetId);\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\n\t\tif(store.getParent(dndTaskId) != result.targetParent || result.targetIndex < store.getBranchIndex(dndTaskId)){\n\t\t\tresult.targetIndex += 1;\n\t\t}\n\t\treturn result;\n\t},\n\tprevSiblingTarget: function prevSiblingTarget(dndTaskId, targetTaskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = targetTaskId;\n\t\tresult.prevSibling = true;\n\t\tresult.targetParent = store.getParent(result.targetId);\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\n\t\tif(store.getParent(dndTaskId) == result.targetParent && result.targetIndex > store.getBranchIndex(dndTaskId)){\n\t\t\tresult.targetIndex -= 1;\n\t\t}\n\t\treturn result;\n\t},\n\tfirstChildTarget: function firstChildTarget(dndTaskId, targetTaskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = targetTaskId;\n\t\tresult.targetParent = result.targetId;\n\t\tresult.targetIndex = 0;\n\t\tresult.child = true;\n\t\treturn result;\n\t},\n\tlastChildTarget: function lastChildTarget(dndTaskId, targetTaskId, store) {\n\t\tvar children = store.getChildren(targetTaskId);\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = children[children.length - 1];\n\t\tresult.targetParent = targetTaskId;\n\t\tresult.targetIndex = children.length;\n\t\tresult.nextSibling = true;\n\t\treturn result;\n\t}\n};","var isLegacyRender = require(\"../is_legacy_smart_render\");\n\nmodule.exports = function isColumnVisible(columnIndex, scale, viewPort, gantt){\n\tvar width = scale.width[columnIndex];\n\tif(width <= 0){\n\t\treturn false;\n\t}\n\tif(!gantt.config.smart_rendering || isLegacyRender(gantt)){\n\t\treturn true;\n\t}\n\tvar cellLeftCoord = scale.left[columnIndex] - width;\n\tvar cellRightCoord = scale.left[columnIndex] + width;\n\treturn (cellLeftCoord <= viewPort.x_end && cellRightCoord >= viewPort.x);//do not render skipped columns\n};","module.exports = function getVisibleCellsRange(scale, viewport){\n\tvar firstCellIndex = 0;\n\tvar lastCellIndex = scale.left.length - 1;\n\tif(viewport){\n\t\tfor(var i = 0; i < scale.left.length; i++){\n\t\t\tvar left = scale.left[i];\n\t\t\tif(left < viewport.x){\n\t\t\t\tfirstCellIndex = i;\n\t\t\t}\n\t\t\tif(left > viewport.x_end){\n\t\t\t\tlastCellIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tstart: firstCellIndex,\n\t\tend: lastCellIndex\n\t};\n};","module.exports = function(item, view){\n\tvar config = view.$getConfig();\n\n\treturn {\n\t\ttop: view.getItemTop(item.id),\n\t\theight: config.row_height,\n\t\tleft: 0,\n\t\tright: Infinity\n\t};\n};","var ScaleHelper = require(\"./scales_ignore\");\nvar eventable = require(\"../../../utils/eventable\");\nvar utils = require(\"../../../utils/utils\");\nvar topPositionMixin = require(\"../row_position_mixin\");\nvar canvasRender = require(\"./tasks_canvas_render\");\n\nvar Timeline = function(parent, config, base_factory, gantt){\n\tthis.$config = utils.mixin({}, config || {});\n\tthis.$scaleHelper = new ScaleHelper(gantt);\n\tthis.$gantt = gantt;\n\tthis._posFromDateCache = {};\n\tthis._timelineDragScroll = null;\n\tutils.mixin(this, topPositionMixin());\n\teventable(this);\n};\n\nTimeline.prototype = {\n\tinit: function(container) {\n\t\tcontainer.innerHTML += \"<div class='gantt_task' style='width:inherit;height:inherit;'></div>\";\n\t\tthis.$task = container.childNodes[0];\n\n\t\tthis.$task.innerHTML = \"<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>\";\n\t\tthis.$task_scale = this.$task.childNodes[0];\n\n\t\tthis.$task_data = this.$task.childNodes[1];\n\t\tthis.$task_data.innerHTML = \"<div class='gantt_task_bg'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div>\";\n\t\tthis.$task_bg = this.$task_data.childNodes[0];\n\t\tthis.$task_links = this.$task_data.childNodes[1];\n\t\tthis.$task_bars = this.$task_data.childNodes[2];\n\n\t\tthis._tasks = {\n\t\t\tcol_width: 0,\n\t\t\twidth: [], // width of each column\n\t\t\tfull_width: 0, // width of all columns\n\t\t\ttrace_x: [],\n\t\t\trendered: {}\n\t\t};\n\n\t\tvar config = this.$getConfig();\n\t\tvar attr = config[this.$config.bind + \"_attribute\"];\n\t\tvar linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\t\tif(!attr && this.$config.bind){\n\t\t\tattr = \"data-\" + this.$config.bind + \"-id\";\n\t\t}\n\t\tif(!linksAttr && this.$config.bindLinks){\n\t\t\tlinksAttr = \"data-\" + this.$config.bindLinks + \"-id\";\n\t\t}\n\t\tthis.$config.item_attribute = attr || null;\n\t\tthis.$config.link_attribute = linksAttr || null;\n\n\t\tvar layers = this._createLayerConfig();\n\t\tif(!this.$config.layers){\n\t\t\tthis.$config.layers = layers.tasks;\n\t\t}\n\t\tif(!this.$config.linkLayers){\n\t\t\tthis.$config.linkLayers = layers.links;\n\t\t}\n\n\t\tthis._attachLayers(this.$gantt);\n\n\t\tthis.callEvent(\"onReady\", []);\n\t\t//this.refresh();\n\t\tif (this.$gantt.ext.dragTimeline) {\n\t\t\tthis._timelineDragScroll = this.$gantt.ext.dragTimeline.create();\n\t\t\tthis._timelineDragScroll.attach(this);\n\t\t}\n\t},\n\n\tsetSize: function(width, height){\n\t\tvar config = this.$getConfig();\n\n\t\tif(width*1 === width){\n\t\t\tthis.$config.width = width;\n\t\t}\n\t\tif(height*1 === height){\n\n\t\t\tthis.$config.height = height;\n\t\t\tvar dataHeight = Math.max(this.$config.height - config.scale_height);\n\t\t\tthis.$task_data.style.height = dataHeight + 'px';\n\t\t}\n\n\t\tthis.refresh();\n\t\tthis.$task_bg.style.backgroundImage = \"\";\n\n\t\tif(config.smart_rendering && this.$config.rowStore){\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tthis.$task_bg.style.height = config.row_height * store.countVisible() +\"px\";\n\t\t}else{\n\t\t\tthis.$task_bg.style.height = \"\";\n\t\t}\n\n\t\tvar scale = this._tasks;\n\t\t//timeline area layers\n\t\tvar data_els = this.$task_data.childNodes;\n\t\tfor(var i= 0, len = data_els.length; i < len; i++){\n\t\t\tvar el = data_els[i];\n\t\t\tif(el.hasAttribute(\"data-layer\") && el.style)\n\t\t\t\tel.style.width = scale.full_width + \"px\";\n\t\t}\n\t},\n\n\tisVisible: function(){\n\t\tif(this.$parent && this.$parent.$config){\n\t\t\treturn !this.$parent.$config.hidden;\n\t\t}else{\n\t\t\treturn this.$task.offsetWidth;\n\t\t}\n\t},\n\n\tgetSize: function(){\n\t\tvar config = this.$getConfig();\n\t\tvar store = this.$config.rowStore;\n\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\n\t\t\tcontentWidth = this.isVisible() ? this._tasks.full_width : 0;\n\n\t\treturn {\n\t\t\tx: this.isVisible() ? this.$config.width : 0,\n\t\t\ty: this.isVisible() ? this.$config.height : 0,\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\n\t\t};\n\t},\n\n\tscrollTo: function(left, top){\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tvar scrolled = false;\n\n\t\tthis.$config.scrollTop = this.$config.scrollTop || 0;\n\t\tthis.$config.scrollLeft = this.$config.scrollLeft || 0;\n\t\tif(top*1 === top){\n\t\t\tthis.$config.scrollTop = top;\n\t\t\tthis.$task_data.scrollTop = this.$config.scrollTop;\n\t\t\tscrolled = true;\n\t\t}\n\t\tif (left*1 === left){\n\t\t\tthis.$task.scrollLeft = left;\n\t\t\tthis.$config.scrollLeft = this.$task.scrollLeft;\n\t\t\tthis._refreshScales();\n\t\t\tscrolled = true;\n\t\t}\n\n\t\tif(scrolled){\n\t\t\tthis.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n\t\t}\n\t},\n\n\t_refreshScales: function _refreshScales() {\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tvar config = this.$getConfig();\n\t\tif (!config.smart_scales) return;\n\n\t\tvar viewPort = this.getViewPort();\n\n\t\tvar scales = this._scales;\n\t\tthis.$task_scale.innerHTML = this._getScaleChunkHtml(scales, viewPort.x, viewPort.x_end);\n\t},\n\n\tgetViewPort: function(){\n\t\tvar scrollLeft = this.$config.scrollLeft || 0;\n\t\tvar scrollTop = this.$config.scrollTop || 0;\n\t\tvar height = this.$config.height || 0;\n\t\tvar width = this.$config.width || 0;\n\t\treturn {\n\t\t\ty: scrollTop,\n\t\t\ty_end: scrollTop + height,\n\t\t\tx: scrollLeft,\n\t\t\tx_end: scrollLeft + width,\n\t\t\theight: height,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\t_createLayerConfig: function(){\n\t\tvar self = this;\n\t\tvar taskFilter = function(){\n\t\t\treturn self.isVisible();\n\t\t};\n\n\t\tvar taskLayers = [\n\t\t\t{\n\t\t\t\texpose: true,\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBar(),\n\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\tfilter: [taskFilter]\n\t\t\t},\n\t\t\t{\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskSplitBar(),\n\t\t\t\tfilter: [taskFilter],\n\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\tappend: true\n\t\t\t},\n\t\t\t{\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBg(),\n\t\t\t\tcontainer: this.$task_bg,\n\t\t\t\tfilter: [\n\t\t\t\t\t//function(){\n\t\t\t\t\t//\treturn !self.$getConfig().static_background;\n\t\t\t\t\t//},\n\t\t\t\t\ttaskFilter\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\n\t\tvar linkLayers = [\n\t\t\t{\n\t\t\t\texpose: true,\n\t\t\t\trenderer: this.$gantt.$ui.layers.link(),\n\t\t\t\tcontainer: this.$task_links,\n\t\t\t\tfilter: [taskFilter]\n\t\t\t}\n\t\t];\n\n\t\treturn {\n\t\t\ttasks: taskLayers,\n\t\t\tlinks: linkLayers\n\t\t};\n\n\t},\n\n\t_attachLayers: function(gantt){\n\t\tthis._taskLayers = [];\n\t\tthis._linkLayers = [];\n\n\t\tvar self = this;\n\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\n\t\tif(this.$config.bind){\n\n\t\t\tthis._bindStore();\n\t\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\t\tif(!taskRenderer){\n\t\t\t\ttaskRenderer = layers.createDataRender({\n\t\t\t\t\tname: this.$config.bind,\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttaskRenderer.container = function(){ return self.$task_data;};\n\n\t\t\tvar taskLayers = this.$config.layers;\n\t\t\tfor(var i = 0; taskLayers && i < taskLayers.length; i++){\n\t\t\t\tvar layer = taskLayers[i];\n\n\t\t\t\tif(typeof layer == \"string\"){\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer]();\n\t\t\t\t}\n\n\t\t\t\tif(typeof layer == \"function\" || (layer && layer.render && layer.update)){\n\t\t\t\t\tlayer = {renderer: layer};\n\t\t\t\t}\n\n\t\t\t\tlayer.view = this;\n\n\t\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\n\t\t\t\tthis._taskLayers.push(bar_layer);\n\t\t\t\tif(layer.expose){\n\t\t\t\t\tthis._taskRenderer = taskRenderer.getLayer(bar_layer);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._initStaticBackgroundRender();\n\t\t}\n\n\t\tif(this.$config.bindLinks){\n\t\t\tself.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n\n\t\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n\t\t\tif(!linkRenderer){\n\t\t\t\tlinkRenderer = layers.createDataRender({\n\t\t\t\t\tname: this.$config.bindLinks,\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar linkLayers = this.$config.linkLayers;\n\t\t\tfor(var i = 0; linkLayers && i < linkLayers.length; i++){\n\n\t\t\t\tif(typeof layer == \"string\"){\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer]();\n\t\t\t\t}\n\n\t\t\t\tvar layer = linkLayers[i];\n\t\t\t\tlayer.view = this;\n\t\t\t//\tlayer.getViewPort = getViewPort;\n\t\t\t//\tsubscribeSmartRender(layer);\n\t\t\t\tvar linkLayer = linkRenderer.addLayer(layer);\n\t\t\t\tthis._taskLayers.push(linkLayer);\n\t\t\t\tif(linkLayers[i].expose){\n\t\t\t\t\tthis._linkRenderer = linkRenderer.getLayer(linkLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_initStaticBackgroundRender: function(){\n\t\tvar self = this;\n\t\tvar staticRender = canvasRender.create();\n\t\tvar store = self.$config.rowStore;\n\t\tif(!store) return;\n\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function(id, item, mode){\n\t\t\tif(id !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!self.isVisible())\n\t\t\t\treturn;\n\t\t\tvar config = self.$getConfig();\n\t\t\tif(config.static_background) {\n\t\t\t\tvar store = self.$gantt.getDatastore(self.$config.bind);\n\t\t\t\tvar staticBgContainer = self.$task_bg_static;\n\t\t\t\tif(!staticBgContainer){\n\t\t\t\t\tstaticBgContainer = document.createElement(\"div\");\n\t\t\t\t\tstaticBgContainer.className = \"gantt_task_bg\";\n\t\t\t\t\tself.$task_bg_static = staticBgContainer;\n\t\t\t\t\tif(self.$task_bg.nextSibling){\n\t\t\t\t\t\tself.$task_data.insertBefore(staticBgContainer, self.$task_bg.nextSibling);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.$task_data.appendChild(staticBgContainer);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (store) {\n\t\t\t\t\tstaticRender.render(staticBgContainer, config, self.getScale(), config.row_height * store.countVisible());\n\t\t\t\t}\n\t\t\t}else if(config.static_background){\n\t\t\t\tif(self.$task_bg_static && self.$task_bg_static.parentNode){\n\t\t\t\t\tself.$task_bg_static.parentNode.removeChild(self.$task_bg_static);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.attachEvent(\"onDestroy\", function () {\n\t\t\tstaticRender.destroy();\n\t\t});\n\t\tthis._initStaticBackgroundRender = function(){};//init once\n\t},\n\n\t_clearLayers: function(gantt){\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n\t\tif (this._taskLayers) {\n\t\t\tfor(var i = 0; i < this._taskLayers.length; i++){\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t\t}\n\t\t}\n\t\tif (this._linkLayers) {\n\t\t\tfor(var i = 0; i < this._linkLayers.length; i++){\n\t\t\t\tlinkRenderer.removeLayer(this._linkLayers[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._linkLayers = [];\n\t\tthis._taskLayers = [];\n\t},\n\n\t_render_tasks_scales: function _render_tasks_scales() {\n\t\tvar config = this.$getConfig();\n\n\t\tvar scales_html = \"\",\n\t\t\touter_width = 0,\n\t\t\tscale_height = 0;\n\n\t\tvar state = this.$gantt.getState();\n\n\t\tif (this.isVisible()) {\n\t\t\tvar helpers = this.$scaleHelper;\n\t\t\tvar scales = this._getScales();\n\t\t\tscale_height = config.scale_height;\n\n\t\t\tvar availWidth = this.$config.width;\n\t\t\tif(config.autosize == \"x\" || config.autosize == \"xy\"){\n\t\t\t\tavailWidth = Math.max(config.autosize_min_width, 0);\n\t\t\t}\n\n\t\t\tvar cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n\t\t\tvar cfg = this._tasks = cfgs[cfgs.length - 1];\n\t\t\tthis._scales = cfgs;\n\t\t\tthis._posFromDateCache = {};\n\n\t\t\tscales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n\n\t\t\touter_width = cfg.full_width + \"px\";//cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\t\t\tscale_height += \"px\";\n\t\t}\n\n\t\tthis.$task_scale.style.height = scale_height;\n\n\t\tthis.$task_data.style.width =\n\t\t\tthis.$task_scale.style.width = outer_width;\n\n\t\tthis.$task_scale.innerHTML = scales_html;\n\n\t},\n\n\t_getScaleChunkHtml: function _get_scale_chunk_html (scales, fromPos, toPos) {\n\t\tvar templates = this.$gantt.templates;\n\t\tvar html = [];\n\n\t\tvar css = templates.scale_row_class;\n\t\tfor (var i = 0; i < scales.length; i++) {\n\t\t\tvar cssClass = \"gantt_scale_line\";\n\t\t\tvar tplClass = css(scales[i]);\n\t\t\tif (tplClass) {\n\t\t\t\tcssClass += \" \" + tplClass;\n\t\t\t}\n\n\t\t\thtml.push(\"<div class=\\\"\" + cssClass + \"\\\" style=\\\"height:\" + (scales[i].height) +\n\t\t\t\t\"px;position:relative;line-height:\" + (scales[i].height) + \"px\\\">\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"</div>\");\n\t\t}\n\n\t\treturn html.join(\"\");\n\t},\n\t_prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\n\t\tvar globalConfig = this.$getConfig();\n\t\tvar globalTemplates = this.$gantt.templates;\n\n\t\tvar cells = [];\n\t\tvar date = null, css = null;\n\n\t\tvar content = config.format || config.template || config.date;\n\n\t\tif(typeof content === \"string\"){\n\t\t\tcontent = this.$gantt.date.date_to_str(content);\n\t\t}\n\n\t\tvar startIndex = 0,\n\t\t\tendIndex = config.count;\n\n\t\tif (globalConfig.smart_scales && (!isNaN(fromPos) && !isNaN(toPos))) {\n\t\t\tstartIndex = _findBinary(config.left, fromPos);\n\t\t\tendIndex = _findBinary(config.left, toPos) + 1;\n\t\t}\n\n\t\tcss = config.css || function () {\n\t\t\t};\n\t\tif (!config.css && globalConfig.inherit_scale_class) {\n\t\t\tcss = globalTemplates.scale_cell_class;\n\t\t}\n\n\t\tfor (var i = startIndex; i < endIndex; i++) {\n\t\t\tif (!config.trace_x[i]) break;\n\n\t\t\tdate = new Date(config.trace_x[i]);\n\t\t\tvar value = content.call(this, date),\n\t\t\t\twidth = config.width[i],\n\t\t\t\theight = config.height,\n\t\t\t\tleft = config.left[i],\n\t\t\t\tstyle = \"\",\n\t\t\t\ttemplate = \"\",\n\t\t\t\tcssclass = \"\";\n\n\t\t\tif (width) {\n\t\t\t\tvar position = globalConfig.smart_scales ? (\"position:absolute;left:\" + left + \"px\") : \"\";\n\n\t\t\t\tstyle = \"width:\" + (width) + \"px;height:\" + height + \"px;\" + position;\n\t\t\t\tcssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\n\n\t\t\t\ttemplate = css.call(this, date);\n\t\t\t\tif (template) cssclass += \" \" + template;\n\n\t\t\t\tvar ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\n\t\t\t\tvar cell = \"<div class='\" + cssclass + \"'\" + ariaAttr + \" style='\" + style + \"'>\" + value + \"</div>\";\n\t\t\t\tcells.push(cell);\n\t\t\t} else {\n\t\t\t\t//do not render ignored cells\n\t\t\t}\n\n\t\t}\n\t\treturn cells.join(\"\");\n\t},\n\tdateFromPos: function dateFromPos(x) {\n\t\tvar scale = this._tasks;\n\t\tif (x < 0 || x > scale.full_width || !scale.full_width) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar ind = _findBinary(this._tasks.left, x);\n\t\tvar summ = this._tasks.left[ind];\n\n\t\tvar col_width = scale.width[ind] || scale.col_width;\n\t\tvar part = 0;\n\t\tif (col_width) {\n\t\t\tpart = (x - summ) / col_width;\n\t\t\tif(scale.rtl){\n\t\t\t\tpart = 1 - part;\n\t\t\t}\n\n\t\t}\n\n\t\tvar unit = 0;\n\t\tif (part) {\n\t\t\tunit = this._getColumnDuration(scale, scale.trace_x[ind]);\n\t\t}\n\n\t\tvar date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\n\t\treturn date;\n\t},\n\tposFromDate: function posFromDate(date) {\n\t\tif (!this.isVisible())\n\t\t\treturn 0;\n\n\t\tif(!date){\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar dateValue = String(date.valueOf());\n\n\t\tif(this._posFromDateCache[dateValue] !== undefined){\n\t\t\treturn this._posFromDateCache[dateValue];\n\t\t}\n\t\tvar ind = this.columnIndexByDate(date);\n\t\tthis.$gantt.assert(ind >= 0, \"Invalid day index\");\n\n\t\tvar wholeCells = Math.floor(ind);\n\t\tvar partCell = ind % 1;\n\n\t\tvar pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\n\t\tif (wholeCells == this._tasks.width.length)\n\t\t\tpos += this._tasks.width[this._tasks.width.length - 1];\n\t\t//for(var i=1; i <= wholeCells; i++)\n\t\t//\tpos += gantt._tasks.width[i-1];\n\n\t\tif (partCell) {\n\t\t\tif (wholeCells < this._tasks.width.length) {\n\t\t\t\tpos += this._tasks.width[wholeCells] * (partCell % 1);\n\t\t\t} else {\n\t\t\t\tpos += 1;\n\t\t\t}\n\n\t\t}\n\n\t\tvar roundPos = Math.round(pos);\n\t\tthis._posFromDateCache[dateValue] = roundPos;\n\t\treturn Math.round(roundPos);\n\t},\n\n\t_getNextVisibleColumn: function (startIndex, columns, ignores) {\n\t\t// iterate columns to the right\n\t\tvar date = +columns[startIndex];\n\t\tvar visibleDateIndex = startIndex;\n\t\twhile (ignores[date]) {\n\t\t\tvisibleDateIndex++;\n\t\t\tdate = +columns[visibleDateIndex];\n\t\t}\n\n\t\treturn visibleDateIndex;\n\t},\n\t_getPrevVisibleColumn: function (startIndex, columns, ignores) {\n\t\t// iterate columns to the left\n\t\tvar date = +columns[startIndex];\n\t\tvar visibleDateIndex = startIndex;\n\t\twhile (ignores[date]) {\n\t\t\tvisibleDateIndex--;\n\t\t\tdate = +columns[visibleDateIndex];\n\t\t}\n\t\treturn visibleDateIndex;\n\t},\n\t_getClosestVisibleColumn: function (startIndex, columns, ignores) {\n\t\tvar visibleDateIndex = this._getNextVisibleColumn(startIndex, columns, ignores);\n\t\tif (!columns[visibleDateIndex]) {\n\t\t\tvisibleDateIndex = this._getPrevVisibleColumn(startIndex, columns, ignores);\n\t\t}\n\t\treturn visibleDateIndex;\n\t},\n\tcolumnIndexByDate: function columnIndexByDate(date) {\n\t\tvar pos = new Date(date).valueOf();\n\t\tvar days = this._tasks.trace_x_ascending,\n\t\t\tignores = this._tasks.ignore_x;\n\n\t\tvar state = this.$gantt.getState();\n\n\t\tif (pos <= state.min_date) {\n\t\t\tif(this._tasks.rtl){\n\t\t\t\treturn days.length;\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t}\n\n\t\tif (pos >= state.max_date) {\n\t\t\tif(this._tasks.rtl){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn days.length;\n\t\t\t}\n\t\t}\n\n\t\tvar dateIndex = _findBinary(days, pos);\n\n\t\tvar visibleIndex = this._getClosestVisibleColumn(dateIndex, days, ignores);\n\t\tvar visibleDate = days[visibleIndex];\n\t\tvar transition = this._tasks.trace_index_transition;\n\n\t\tif(!visibleDate){\n\t\t\tif(transition){\n\t\t\t\treturn transition[0];\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\n\t\tvar part = ((date - days[visibleIndex]) / this._getColumnDuration(this._tasks, days[visibleIndex]));\n\t\tif(transition){\n\t\t\treturn transition[visibleIndex] + (1 - part);\n\t\t}else{\n\t\t\treturn visibleIndex + part;\n\t\t}\n\t},\n\tgetItemPosition:function (task, start_date, end_date) {\n\t\tvar xLeft, xRight, width;\n\t\tif(this._tasks.rtl){\n\t\t\txRight = this.posFromDate(start_date || task.start_date);\n\t\t\txLeft = this.posFromDate(end_date || task.end_date);\n\t\t}else{\n\t\t\txLeft = this.posFromDate(start_date || task.start_date);\n\t\t\txRight = this.posFromDate(end_date || task.end_date);\n\t\t}\n\t\twidth = Math.max((xRight - xLeft), 0);\n\n\t\tvar y = this.getItemTop(task.id);\n\t\tvar height = this.getItemHeight();\n\t\treturn {\n\t\t\tleft: xLeft,\n\t\t\ttop: y,\n\t\t\theight: height,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\tgetItemHeight: function(){\n\t\tvar config = this.$getConfig();\n\n\t\t// height of the bar item\n\t\tvar height = config.task_height;\n\n\t\tif (height == \"full\") {\n\t\t\tvar offset = config.task_height_offset || 5;\n\t\t\theight = config.row_height - offset;\n\t\t}\n\t\t//item height cannot be bigger than row height\n\t\theight = Math.min(height, config.row_height);\n\t\treturn Math.max(height, 0);\n\t},\n\n\tgetScale: function(){\n\t\treturn this._tasks;\n\t},\n\n\t_getScales: function _get_scales() {\n\t\tvar config = this.$getConfig();\n\t\tvar helpers = this.$scaleHelper;\n\t\tvar scales = [helpers.primaryScale(config)].concat(helpers.getSubScales(config));\n\n\t\thelpers.sortScales(scales);\n\t\treturn scales;\n\t},\n\n\t_getColumnDuration: function _get_coll_duration(scale, date) {\n\t\treturn this.$gantt.date.add(date, scale.step, scale.unit) - date;\n\t},\n\t_bindStore: function () {\n\t\tif (this.$config.bind){\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\n\t\t\tthis.$config.rowStore = rowStore;\n\t\t\tif(rowStore && !rowStore._timelineCacheAttached){\n\t\t\t\tvar self = this;\n\t\t\t\trowStore._timelineCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function(){\n\t\t\t\t\tself._resetTopPositionHeight();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\t_unbindStore: function(){\n\t\tif (this.$config.bind){\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\n\t\t\tif(rowStore._timelineCacheAttached){\n\t\t\t\trowStore.detachEvent(rowStore._timelineCacheAttached);\n\t\t\t\trowStore._timelineCacheAttached = false;\n\t\t\t}\n\t\t}\n\t},\n\trefresh: function(){\n\t\tthis._bindStore();\n\n\t\tif(this.$config.bindLinks) {\n\t\t\tthis.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\n\t\t}\n\n\t\tthis._resetTopPositionHeight();\n\t\tthis._initStaticBackgroundRender();\n\t\tthis._render_tasks_scales();\n\t},\n\n\tdestructor: function(){\n\t\tvar gantt = this.$gantt;\n\t\tthis._clearLayers(gantt);\n\t\tthis._unbindStore();\n\t\tthis.$task = null;\n\t\tthis.$task_scale = null;\n\t\tthis.$task_data = null;\n\t\tthis.$task_bg = null;\n\t\tthis.$task_links = null;\n\t\tthis.$task_bars = null;\n\n\t\tthis.$gantt = null;\n\n\t\tif(this.$config.rowStore){\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\n\t\t\tthis.$config.rowStore = null;\n\t\t}\n\t\tif(this.$config.linkStore){\n\t\t\tthis.$config.linkStore = null;\n\t\t}\n\n\t\tif(this._timelineDragScroll) {\n\t\t\tthis._timelineDragScroll.destructor();\n\t\t\tthis._timelineDragScroll = null;\n\t\t}\n\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t}\n};\n\nmodule.exports = Timeline;\n\nfunction _findBinary(array, target) {\n\t// modified binary search, target value not exactly match array elements, looking for closest one\n\n\tvar low = 0, high = array.length - 1, i, item, prev;\n\twhile (low <= high) {\n\n\t\ti = Math.floor((low + high) / 2);\n\t\titem = +array[i];\n\t\tprev = +array[i - 1];\n\t\tif (item < target) {\n\t\t\tlow = i + 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item > target) {\n\t\t\tif (!(!isNaN(prev) && prev < target)) {\n\t\t\t\thigh = i - 1;\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\t// if target is between 'i' and 'i-1' return 'i - 1'\n\t\t\t\treturn i - 1;\n\t\t\t}\n\n\t\t}\n\t\twhile (+array[i] == +array[i + 1]) i++;\n\n\t\treturn i;\n\t}\n\treturn array.length - 1;\n}\n\n","function create(gantt){\n\tvar events = [];\n\n\treturn {\n\t\tdelegate:function(event, className, handler, root) {\n\t\t\tevents.push([event, className, handler, root]);\n\n\t\t\tvar helper = gantt.$services.getService(\"mouseEvents\");\n\t\t\thelper.delegate(event, className, handler, root);\n\t\t},\n\t\tdestructor: function(){\n\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\tfor(var i = 0; i < events.length; i++){\n\t\t\t\tvar h = events[i];\n\t\t\t\tmouseEvents.detach(h[0], h[1], h[2], h[3]);\n\t\t\t}\n\t\t\tevents = [];\n\t\t}\n\t};\n}\n\nmodule.exports = create;","var domHelpers = require(\"../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tgridResize = require(\"./grid_resize\"),\n\ttopPositionMixin = require(\"../row_position_mixin\");\n\nvar ColumnDnd = require(\"../plugins/column_grid_dnd\").default;\n\nvar Grid = function (parent, config, base_factory, gantt) {\n\tthis.$config = utils.mixin({}, config || {});\n\tthis.$gantt = gantt;\n\tthis.$parent = parent;\n\teventable(this);\n\tthis.$state = {};\n\tutils.mixin(this, topPositionMixin());\n};\n\n\nGrid.prototype = {\n\tinit: function(container) {\n\t\tvar gantt = this.$gantt;\n\t\tvar gridAriaAttr = gantt._waiAria.gridAttrString();\n\t\tvar gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\n\t\tvar _ganttConfig = this.$getConfig();\n\t\tvar reorderColumns = _ganttConfig.reorder_grid_columns || false;\n\t\tif (this.$config.reorder_grid_columns !== undefined) {\n\t\t\treorderColumns = this.$config.reorder_grid_columns;\n\t\t}\n\n\n\t\tcontainer.innerHTML = \"<div class='gantt_grid' style='height:inherit;width:inherit;' \" + gridAriaAttr + \"></div>\";\n\t\tthis.$grid = container.childNodes[0];\n\n\t\tthis.$grid.innerHTML = \"<div class='gantt_grid_scale' \" +\n\t\t\tgantt._waiAria.gridScaleRowAttrString() + \"></div><div class='gantt_grid_data' \" + gridDataAriaAttr + \"></div>\";\n\n\t\tthis.$grid_scale = this.$grid.childNodes[0];\n\t\tthis.$grid_data = this.$grid.childNodes[1];\n\n\t\tvar attr = _ganttConfig[this.$config.bind + \"_attribute\"];\n\t\tif (!attr && this.$config.bind) {\n\t\t\tattr = \"data-\" + this.$config.bind + \"-id\";\n\t\t}\n\t\tthis.$config.item_attribute = attr || null;\n\n\t\tif (!this.$config.layers) {\n\t\t\tvar layers = this._createLayerConfig();\n\t\t\tthis.$config.layers = layers;\n\t\t}\n\n\t\tvar resizer = gridResize(gantt, this);\n\t\tresizer.init();\n\t\tthis._renderHeaderResizers = resizer.doOnRender;\n\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\n\t\tthis._addLayers(this.$gantt);\n\t\tthis._initEvents();\n\n\t\tif (reorderColumns) {\n\t\t\tthis._columnDND = new ColumnDnd(gantt, this);\n\t\t\tthis._columnDND.init();\n\t\t}\n\n\t\tthis.callEvent(\"onReady\", []);\n\t\t//this.refresh();\n\t},\n\n\t_validateColumnWidth: function (column, property) {\n\t\t// user can set {name:\"text\", width:\"200\",...} for some reason,\n\t\t// check and convert it to number when possible\n\t\tvar value = column[property];\n\t\tif (value && value != \"*\") {\n\t\t\tvar gantt = this.$gantt;\n\t\t\tvar numericWidth = value * 1;\n\t\t\tif (isNaN(numericWidth)) {\n\t\t\t\tgantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n\t\t\t} else {\n\t\t\t\tcolumn[property] = numericWidth;\n\t\t\t}\n\t\t}\n\t},\n\n\tsetSize: function (width, height) {\n\t\tthis.$config.width = this.$state.width = width;\n\t\tthis.$config.height = this.$state.height = height;\n\n\t\t// TODO: maybe inherit and override in a subclass instead of extending here\n\n\t\tvar columns = this.getGridColumns(),\n\t\t\tinnerWidth = 0;\n\n\t\tvar config = this.$getConfig();\n\t\tvar elasticColumns = config.grid_elastic_columns;\n\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\tthis._validateColumnWidth(columns[i], \"min_width\");\n\t\t\tthis._validateColumnWidth(columns[i], \"max_width\");\n\t\t\tthis._validateColumnWidth(columns[i], \"width\");\n\n\t\t\tinnerWidth += columns[i].width * 1;\n\t\t}\n\n\t\tvar outerWidth;\n\t\tif (isNaN(innerWidth) || !this.$config.scrollable) {\n\t\t\touterWidth = this._setColumnsWidth(width + 1);\n\t\t\tinnerWidth = outerWidth;\n\t\t}\n\n\t\tif(this.$config.scrollable && elasticColumns && !isNaN(innerWidth)){\n\n\t\t\tvar minWidth = 0;\n\t\t\tcolumns.forEach(function(col){\n\t\t\t\tminWidth += col.min_width || config.min_grid_column_width;\n\t\t\t});\n\n\t\t\tvar columnsWidth = Math.max(minWidth, width);\n\t\t\tinnerWidth = this._setColumnsWidth(columnsWidth);\n\t\t\touterWidth = width;\n\t\t}\n\n\t\tif (this.$config.scrollable) {\n\t\t\tthis.$grid_scale.style.width = innerWidth + \"px\";\n\t\t\tthis.$grid_data.style.width = innerWidth + \"px\";\n\t\t} else {\n\t\t\tthis.$grid_scale.style.width = \"inherit\";\n\t\t\tthis.$grid_data.style.width = \"inherit\";\n\t\t}\n\t\tthis.$config.width -= 1;\n\n\t\tvar config = this.$getConfig();\n\t\tif (outerWidth !== width) {\n\t\t\tif(outerWidth !== undefined){\n\t\t\t\tconfig.grid_width = outerWidth;\n\t\t\t\tthis.$config.width = outerWidth - 1;\n\t\t\t}else{\n\t\t\t\tif(!isNaN(innerWidth)){\n\t\t\t\t\tthis._setColumnsWidth(innerWidth);\n\t\t\t\t\tconfig.grid_width = innerWidth;\n\t\t\t\t\tthis.$config.width = innerWidth - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n\t\tthis.$grid_data.style.height = dataHeight + \"px\";\n\t\tthis.refresh();\n\t},\n\tgetSize: function () {\n\n\t\tvar config = this.$getConfig();\n\n\t\tvar store = this.$config.rowStore;\n\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\n\t\t\tcontentWidth = this._getGridWidth();\n\n\t\tvar size = {\n\t\t\tx: this.$state.width,\n\t\t\ty: this.$state.height,\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\n\t\t};\n\n\t\treturn size;\n\t},\n\n\t_bindStore: function () {\n\t\tif (this.$config.bind){\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\n\t\t\tthis.$config.rowStore = rowStore;\n\t\t\tif(rowStore && !rowStore._gridCacheAttached){\n\t\t\t\tvar self = this;\n\t\t\t\trowStore._gridCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function(){\n\t\t\t\t\tself._resetTopPositionHeight();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\t_unbindStore: function(){\n\t\tif (this.$config.bind){\n\t\t\tvar rowStore = this.$gantt.getDatastore(this.$config.bind);\n\t\t\tif(rowStore._gridCacheAttached){\n\t\t\t\trowStore.detachEvent(rowStore._gridCacheAttached);\n\t\t\t\trowStore._gridCacheAttached = false;\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function () {\n\t\tthis._bindStore();\n\n\t\tthis._resetTopPositionHeight();\n\t\tthis._initSmartRenderingPlaceholder();\n\n\t\tthis._calculateGridWidth();\n\t\tthis._renderGridHeader();\n\t},\n\n\tgetViewPort: function(){\n\t\tvar scrollLeft = this.$config.scrollLeft || 0;\n\t\tvar scrollTop = this.$config.scrollTop || 0;\n\t\tvar height = this.$config.height || 0;\n\t\tvar width = this.$config.width || 0;\n\t\treturn {\n\t\t\ty: scrollTop,\n\t\t\ty_end: scrollTop + height,\n\t\t\tx: scrollLeft,\n\t\t\tx_end: scrollLeft + width,\n\t\t\theight: height,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\tscrollTo: function (left, top) {\n\t\tif (!this.isVisible())\n\t\t\treturn;\n\n\t\tvar scrolled = false;\n\n\t\tthis.$config.scrollTop = this.$config.scrollTop || 0;\n\t\tthis.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n\t\tif (left * 1 == left) {\n\t\t\tthis.$config.scrollLeft = this.$state.scrollLeft = this.$grid.scrollLeft = left;\n\t\t\tscrolled = true;\n\t\t}\n\n\t\t// var config = this.$getConfig();\n\t\tif (top * 1 == top) {\n\t\t\tthis.$config.scrollTop = this.$state.scrollTop = this.$grid_data.scrollTop = top;\n\t\t\tscrolled = true;\n\t\t}\n\n\t\tif(scrolled){\n\t\t\tthis.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n\t\t}\n\t},\n\n\tgetColumnIndex: function (name) {\n\t\tvar columns = this.$getConfig().columns;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].name == name) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetColumn: function (name) {\n\t\tvar index = this.getColumnIndex(name);\n\t\tif (index === null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.$getConfig().columns[index];\n\t},\n\n\tgetGridColumns: function () {\n\t\tvar config = this.$getConfig();\n\t\treturn config.columns.slice();\n\t},\n\tisVisible: function () {\n\t\tif (this.$parent && this.$parent.$config) {\n\t\t\treturn !this.$parent.$config.hidden;\n\t\t} else {\n\t\t\treturn this.$grid.offsetWidth;\n\t\t}\n\t},\n\n\tgetItemHeight: function () {\n\t\tvar config = this.$getConfig();\n\t\treturn config.row_height;\n\t},\n\n\t_createLayerConfig: function () {\n\t\tvar gantt = this.$gantt;\n\t\tvar self = this;\n\t\tvar layers = [\n\t\t\t{\n\t\t\t\trenderer: gantt.$ui.layers.gridLine(),\n\t\t\t\tcontainer: this.$grid_data,\n\t\t\t\tfilter: [function () {\n\t\t\t\t\treturn self.isVisible();\n\t\t\t\t}]\n\t\t\t}\n\t\t];\n\t\treturn layers;\n\t},\n\n\t_addLayers: function (gantt) {\n\t\tif (!this.$config.bind)\n\t\t\treturn;\n\n\t\tthis._taskLayers = [];\n\n\t\tvar self = this;\n\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\tif (!taskRenderer) {\n\t\t\ttaskRenderer = layers.createDataRender({\n\t\t\t\tname: this.$config.bind,\n\t\t\t\tdefaultContainer: function () { return self.$grid_data; }\n\t\t\t});\n\t\t}\n\n\t\tvar taskLayers = this.$config.layers;\n\t\tfor (var i = 0; taskLayers && i < taskLayers.length; i++) {\n\t\t\tvar layer = taskLayers[i];\n\t\t\tlayer.view = this;\n\n\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\n\t\t\tthis._taskLayers.push(bar_layer);\n\t\t}\n\n\t\tthis._bindStore();\n\n\t\tthis._initSmartRenderingPlaceholder();\n\t},\n\n\t_refreshPlaceholderOnStoreUpdate: function (id) {\n\t\tvar config = this.$getConfig(),\n\t\t\tstore = this.$config.rowStore;\n\n\t\tif (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar contentHeight;\n\t\tif (this.$config.scrollY) {\n\t\t\tvar scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n\t\t\tif (scroll)\n\t\t\t\tcontentHeight = scroll.getScrollState().scrollSize;\n\t\t}\n\n\t\tif (!contentHeight) {\n\t\t\tcontentHeight = store ? config.row_height * store.countVisible() : 0;\n\t\t}\n\n\t\tif (contentHeight) {\n\t\t\tif (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\n\t\t\t\tthis.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n\t\t\t}\n\n\t\t\tvar placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n\t\t\tplaceholder.style.visibility = \"hidden\";\n\t\t\tplaceholder.style.height = contentHeight + \"px\";\n\t\t\tplaceholder.style.width = \"1px\";\n\t\t\tthis.$grid_data.appendChild(placeholder);\n\t\t}\n\t},\n\n\t_initSmartRenderingPlaceholder: function () {\n\t\tvar store = this.$config.rowStore;\n\t\tif (!store) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthis._initSmartRenderingPlaceholder = function () { };\n\t\t}\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n\t},\n\n\t_initEvents: function () {\n\t\tvar gantt = this.$gantt;\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif (!store) return true;\n\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\tif (target) {\n\t\t\t\tstore.close(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this), this.$grid);\n\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif (!store) return true;\n\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\tif (target) {\n\t\t\t\tstore.open(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this), this.$grid);\n\t},\n\n\t_clearLayers: function (gantt) {\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\tif (this._taskLayers) {\n\t\t\tfor (var i = 0; i < this._taskLayers.length; i++) {\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._taskLayers = [];\n\t},\n\n\t_getColumnWidth: function (column, config, width) {\n\t\tvar min_width = column.min_width || config.min_grid_column_width;\n\t\tvar new_width = Math.max(width, min_width || 10);\n\t\tif (column.max_width)\n\t\t\tnew_width = Math.min(new_width, column.max_width);\n\t\treturn new_width;\n\t},\n\t// set min width only if width < than config.min_grid_column_width\n\t_checkGridColumnMinWidthLimits: function (columns, config) {\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\tvar width = columns[i].width * 1;\n\t\t\tif (!columns[i].min_width && width < config.min_grid_column_width){\n\t\t\t\tcolumns[i].min_width = width;\n\t\t\t}\n\t\t}\n\t},\n\t// return min and max possible grid width according to restricts\n\t_getGridWidthLimits: function () {\n\t\tvar config = this.$getConfig(),\n\t\t\tcolumns = this.getGridColumns(),\n\t\t\tmin_limit = 0,\n\t\t\tmax_limit = 0;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tmin_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\n\t\t\tif (max_limit !== undefined) {\n\t\t\t\tmax_limit = columns[i].max_width ? (max_limit + columns[i].max_width) : undefined;\n\t\t\t}\n\t\t}\n\t\tthis._checkGridColumnMinWidthLimits(columns, config); // FIX ME: should it be before calculating limits?\n\t\treturn [min_limit, max_limit];\n\t},\n\t// resize columns to get total newWidth, starting from columns[start_index]\n\t_setColumnsWidth: function (newWidth, start_index) {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = this.getGridColumns(),\n\t\t\tcolumns_width = 0,\n\t\t\tfinal_width = newWidth;\n\n\t\tstart_index = !window.isNaN(start_index) ? start_index : -1;\n\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\tcolumns_width += columns[i].width * 1;\n\t\t}\n\n\t\tif (window.isNaN(columns_width)) {\n\t\t\tthis._calculateGridWidth();\n\t\t\tcolumns_width = 0;\n\t\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\t\tcolumns_width += columns[i].width * 1;\n\t\t\t}\n\t\t}\n\n\t\tvar extra_width = final_width - columns_width;\n\n\t\tvar start_width = 0;\n\t\tfor (var i = 0; i < start_index + 1; i++) {\n\t\t\tstart_width += columns[i].width;\n\t\t}\n\n\t\tcolumns_width -= start_width;\n\n\t\tfor (var i = start_index + 1; i < columns.length; i++) {\n\n\t\t\tvar col = columns[i];\n\t\t\tvar share = Math.round(extra_width * (col.width / columns_width));\n\n\t\t\t// columns have 2 additional restrict fields - min_width & max_width that are set by user\n\t\t\tif (extra_width < 0) {\n\t\t\t\tif (col.min_width && col.width + share < col.min_width)\n\t\t\t\t\tshare = col.min_width - col.width;\n\t\t\t\telse if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width)\n\t\t\t\t\tshare = config.min_grid_column_width - col.width;\n\t\t\t} else if (col.max_width && col.width + share > col.max_width)\n\t\t\t\tshare = col.max_width - col.width;\n\n\t\t\tcolumns_width -= col.width;\n\t\t\tcol.width += share;\n\t\t\textra_width -= share;\n\n\t\t}\n\n\t\tvar iterator = extra_width > 0 ? 1 : -1;\n\t\twhile ((extra_width > 0 && iterator === 1) || (extra_width < 0 && iterator === -1)) {\n\t\t\tvar curExtra = extra_width;\n\t\t\tfor (i = start_index + 1; i < columns.length; i++) {\n\t\t\t\tvar new_width = columns[i].width + iterator;\n\n\t\t\t\tif (new_width == this._getColumnWidth(columns[i], config, new_width)) {\n\t\t\t\t\textra_width -= iterator;\n\t\t\t\t\tcolumns[i].width = new_width;\n\t\t\t\t}\n\n\t\t\t\tif (!extra_width)\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif (curExtra == extra_width)\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// if impossible to resize the right-side columns, resize the start column\n\t\tif (extra_width && start_index > -1) {\n\t\t\tvar new_width = columns[start_index].width + extra_width;\n\t\t\tif (new_width == this._getColumnWidth(columns[start_index], config, new_width))\n\t\t\t\tcolumns[start_index].width = new_width;\n\t\t}\n\n\t\t//if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n\t\t//\treturn;\n\n\t\treturn this._getColsTotalWidth();\n\t},\n\n\t_getColsTotalWidth: function () {\n\t\tvar columns = this.getGridColumns();\n\t\tvar cols_width = 0;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar v = parseFloat(columns[i].width);\n\t\t\tif (window.isNaN(v)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcols_width += v;\n\t\t}\n\t\treturn cols_width;\n\t},\n\t_calculateGridWidth: function () {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = this.getGridColumns();\n\t\tvar cols_width = 0;\n\t\tvar unknown = [];\n\t\tvar width = [];\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar v = parseFloat(columns[i].width);\n\t\t\tif (window.isNaN(v)) {\n\t\t\t\tv = config.min_grid_column_width || 10;\n\t\t\t\tunknown.push(i);\n\t\t\t}\n\t\t\twidth[i] = v;\n\t\t\tcols_width += v;\n\t\t}\n\t\tvar gridWidth = this._getGridWidth() + 1;\n\t\tif (config.autofit || unknown.length) {\n\t\t\tvar diff = gridWidth - cols_width;\n\t\t\t// TODO: logic may be improved for proportional changing of width\n\n\t\t\t// autofit adjusts columns widths to the outer grid width\n\t\t\t// it doesn't makes sense if grid has inner scroll with elastic columns\n\t\t\tif (config.autofit && !config.grid_elastic_columns) {\n\t\t\t\t// delta must be added for all columns\n\t\t\t\tfor (var i = 0; i < width.length; i++) {\n\t\t\t\t\tvar delta = Math.round(diff / (width.length - i));\n\t\t\t\t\twidth[i] += delta;\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[i], config, width[i]);\n\n\t\t\t\t\tif (new_width != width[i]) {\n\t\t\t\t\t\tdelta = new_width - width[i];\n\t\t\t\t\t\twidth[i] = new_width;\n\t\t\t\t\t}\n\t\t\t\t\tdiff -= delta;\n\t\t\t\t}\n\t\t\t} else if (unknown.length) {\n\t\t\t\t// there are several columns with undefined width\n\t\t\t\tfor (var i = 0; i < unknown.length; i++) {\n\t\t\t\t\tvar delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\n\t\t\t\t\tvar index = unknown[i];\n\t\t\t\t\twidth[index] += delta;\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[index], config, width[index]);\n\t\t\t\t\tif (new_width != width[index]) {\n\t\t\t\t\t\tdelta = new_width - width[index];\n\t\t\t\t\t\twidth[index] = new_width;\n\t\t\t\t\t}\n\t\t\t\t\tdiff -= delta;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < width.length; i++) {\n\t\t\t\tcolumns[i].width = width[i];\n\t\t\t}\n\t\t} else {\n\t\t\tvar changed = (gridWidth != cols_width);\n\t\t\tthis.$config.width = cols_width - 1;\n\t\t\tconfig.grid_width = cols_width;\n\t\t\tif (changed) {\n\t\t\t\tthis.$parent._setContentSize(this.$config.width, null);\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_renderGridHeader: function () {\n\t\tvar gantt = this.$gantt;\n\t\tvar config = this.$getConfig();\n\t\tvar locale = this.$gantt.locale;\n\t\tvar templates = this.$gantt.templates;\n\n\t\tvar columns = this.getGridColumns();\n\t\tif (config.rtl) {\n\t\t\tcolumns = columns.reverse();\n\t\t}\n\t\tvar cells = [];\n\t\tvar width = 0,\n\t\t\tlabels = locale.labels;\n\n\t\tvar lineHeigth = config.scale_height - 1;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar last = i == columns.length - 1;\n\t\t\tvar col = columns[i];\n\n\t\t\t// ensure columns have non-empty names\n\t\t\tif (!col.name) {\n\t\t\t\tcol.name = gantt.uid() + \"\";\n\t\t\t}\n\n\t\t\tvar colWidth = col.width * 1;\n\n\t\t\tvar gridWidth = this._getGridWidth();\n\t\t\tif (last && gridWidth > width + colWidth)\n\t\t\t\tcol.width = colWidth = gridWidth - width;\n\t\t\twidth += colWidth;\n\t\t\tvar sort = (gantt._sort && col.name == gantt._sort.name) ? (\"<div class='gantt_sort gantt_\" + gantt._sort.direction + \"'></div>\") : \"\";\n\t\t\tvar cssClass = [\"gantt_grid_head_cell\",\n\t\t\t\t(\"gantt_grid_head_\" + col.name),\n\t\t\t\t(last ? \"gantt_last_cell\" : \"\"),\n\t\t\t\ttemplates.grid_header_class(col.name, col)].join(\" \");\n\n\t\t\tvar style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\n\t\t\tvar label = (col.label || labels[\"column_\" + col.name] || labels[col.name]);\n\t\t\tlabel = label || \"\";\n\n\t\t\tvar ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\n\n\t\t\tvar cell = \"<div class='\" + cssClass + \"' style='\" + style + \"' \" + ariaAttrs + \" data-column-id='\" + col.name + \"' column_id='\" + col.name + \"'>\" + label + sort + \"</div>\";\n\t\t\tcells.push(cell);\n\t\t}\n\t\tthis.$grid_scale.style.height = (config.scale_height) + \"px\";\n\t\tthis.$grid_scale.style.lineHeight = lineHeigth + \"px\";\n\t\t//this.$grid_scale.style.width = \"inherit\";\n\t\tthis.$grid_scale.innerHTML = cells.join(\"\");\n\n\t\tif (this._renderHeaderResizers) {\n\t\t\tthis._renderHeaderResizers();\n\t\t}\n\t},\n\n\t_getGridWidth: function () {\n\t\t// TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\n\t\treturn this.$config.width;\n\t},\n\n\tdestructor: function () {\n\t\tthis._clearLayers(this.$gantt);\n\t\tif (this._mouseDelegates) {\n\t\t\tthis._mouseDelegates.destructor();\n\t\t\tthis._mouseDelegates = null;\n\t\t}\n\t\tthis._unbindStore();\n\t\tthis.$grid = null;\n\t\tthis.$grid_scale = null;\n\t\tthis.$grid_data = null;\n\t\tthis.$gantt = null;\n\t\tif (this.$config.rowStore) {\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\n\t\t\tthis.$config.rowStore = null;\n\t\t}\n\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\t}\n};\n\nmodule.exports = Grid;\n","var utils = require(\"../../../utils/utils\");\n\nfunction ScaleHelper(gantt){\n\tvar dateHelper = gantt.date;\n\tvar services = gantt.$services;\n\n\treturn {\n\t\tgetSum: function (sizes, from, to) {\n\t\t\tif (to === undefined)\n\t\t\t\tto = sizes.length - 1;\n\t\t\tif (from === undefined)\n\t\t\t\tfrom = 0;\n\n\t\t\tvar summ = 0;\n\t\t\tfor (var i = from; i <= to; i++)\n\t\t\t\tsumm += sizes[i];\n\n\t\t\treturn summ;\n\t\t},\n\t\tsetSumWidth: function (sum_width, scale, from, to) {\n\t\t\tvar parts = scale.width;\n\n\t\t\tif (to === undefined)\n\t\t\t\tto = parts.length - 1;\n\t\t\tif (from === undefined)\n\t\t\t\tfrom = 0;\n\t\t\tvar length = to - from + 1;\n\n\t\t\tif (from > parts.length - 1 || length <= 0 || to > parts.length - 1)\n\t\t\t\treturn;\n\n\t\t\tvar oldWidth = this.getSum(parts, from, to);\n\n\t\t\tvar diff = sum_width - oldWidth;\n\n\t\t\tthis.adjustSize(diff, parts, from, to);\n\t\t\tthis.adjustSize(-diff, parts, to + 1);\n\n\t\t\tscale.full_width = this.getSum(parts);\n\t\t},\n\t\tsplitSize: function (width, count) {\n\t\t\tvar arr = [];\n\t\t\tfor (var i = 0; i < count; i++) arr[i] = 0;\n\n\t\t\tthis.adjustSize(width, arr);\n\t\t\treturn arr;\n\n\t\t},\n\t\tadjustSize: function (width, parts, from, to) {\n\t\t\tif (!from)\n\t\t\t\tfrom = 0;\n\t\t\tif (to === undefined)\n\t\t\t\tto = parts.length - 1;\n\n\t\t\tvar length = to - from + 1;\n\n\t\t\tvar full = this.getSum(parts, from, to);\n\n\t\t\tfor (var i = from; i <= to; i++) {\n\t\t\t\tvar share = Math.floor(width * (full ? (parts[i] / full) : (1 / length)));\n\n\t\t\t\tfull -= parts[i];\n\t\t\t\twidth -= share;\n\t\t\t\tlength--;\n\n\t\t\t\tparts[i] += share;\n\t\t\t}\n\t\t\tparts[parts.length - 1] += width;\n\t\t},\n\t\tsortScales: function (scales) {\n\t\t\tfunction cellSize(unit, step) {\n\t\t\t\tvar d = new Date(1970, 0, 1);\n\t\t\t\treturn dateHelper.add(d, step, unit) - d;\n\t\t\t}\n\n\t\t\tscales.sort(function (a, b) {\n\t\t\t\tif (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < scales.length; i++) {\n\t\t\t\tscales[i].index = i;\n\t\t\t}\n\t\t},\n\t\t_isLegacyMode: function(config){\n\t\t\tvar scaleConfig = config || gantt.config;\n\t\t\treturn scaleConfig.scale_unit || scaleConfig.date_scale || scaleConfig.subscales;\n\t\t},\n\t\t_prepareScaleObject: function(scale){\n\t\t\tvar format = scale.format;\n\t\t\tif(!format){\n\t\t\t\tformat = scale.template || scale.date || \"%d %M\";\n\t\t\t}\n\n\t\t\tif(typeof format === \"string\"){\n\t\t\t\tformat = gantt.date.date_to_str(format);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tunit: scale.unit || \"day\",\n\t\t\t\tstep: scale.step || 1,\n\t\t\t\tformat: format,\n\t\t\t\tcss: scale.css\n\t\t\t};\n\t\t},\n\t\tprimaryScale: function(config) {\n\t\t\tvar templates = services.getService(\"templateLoader\");\n\t\t\tvar legacyMode = this._isLegacyMode(config);\n\n\t\t\tvar scaleConfig = config || gantt.config;\n\n\t\t\tvar result;\n\t\t\tif(legacyMode){\n\t\t\t\ttemplates.initTemplate(\"date_scale\", undefined, undefined, scaleConfig, gantt.config.templates);\n\t\t\t\tresult = {\n\t\t\t\t\tunit: gantt.config.scale_unit,\n\t\t\t\t\tstep: gantt.config.step,\n\t\t\t\t\ttemplate: gantt.templates.date_scale,\n\t\t\t\t\tdate: gantt.config.date_scale,\n\t\t\t\t\tcss: gantt.templates.scale_cell_class\n\t\t\t\t};\n\t\t\t}else{\n\t\t\t\tvar primaryScale = scaleConfig.scales[0];\n\t\t\t\tresult = {\n\t\t\t\t\tunit: primaryScale.unit,\n\t\t\t\t\tstep: primaryScale.step,\n\t\t\t\t\ttemplate: primaryScale.template,\n\t\t\t\t\tformat: primaryScale.format,\n\t\t\t\t\tdate: primaryScale.date,\n\t\t\t\t\tcss: primaryScale.css || gantt.templates.scale_cell_class\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn this._prepareScaleObject(result);\n\t\t},\n\t\tgetSubScales: function(config) {\n\t\t\tvar legacyMode = this._isLegacyMode(config);\n\t\t\tvar scaleConfig = config || gantt.config;\n\t\t\tvar scales;\n\t\t\tif(legacyMode){\n\t\t\t\tscales = scaleConfig.subscales || [];\n\t\t\t}else{\n\t\t\t\tscales = scaleConfig.scales.slice(1);\n\t\t\t}\n\t\t\t\n\t\t\treturn scales.map(function(scale){\n\t\t\t\treturn this._prepareScaleObject(scale);\n\t\t\t}.bind(this));\n\t\t},\n\n\t\tprepareConfigs: function (scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\n\t\t\tvar heights = this.splitSize(scale_height, scales.length);\n\t\t\tvar full_width = container_width;\n\n\t\t\tvar configs = [];\n\t\t\tfor (var i = scales.length - 1; i >= 0; i--) {\n\t\t\t\tvar main_scale = (i == scales.length - 1);\n\t\t\t\tvar cfg = this.initScaleConfig(scales[i], minDate, maxDate);\n\t\t\t\tif (main_scale) {\n\t\t\t\t\tthis.processIgnores(cfg);\n\t\t\t\t}\n\n\t\t\t\tthis.initColSizes(cfg, min_coll_width, full_width, heights[i]);\n\t\t\t\tthis.limitVisibleRange(cfg);\n\n\t\t\t\tif (main_scale) {\n\t\t\t\t\tfull_width = cfg.full_width;\n\t\t\t\t}\n\n\t\t\t\tconfigs.unshift(cfg);\n\t\t\t}\n\n\n\t\t\tfor (var i = 0; i < configs.length - 1; i++) {\n\t\t\t\tthis.alineScaleColumns(configs[configs.length - 1], configs[i]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < configs.length; i++) {\n\n\t\t\t\tif(rtl){\n\t\t\t\t\tthis.reverseScale(configs[i]);\n\t\t\t\t}\n\t\t\t\tthis.setPosSettings(configs[i]);\n\t\t\t}\n\t\t\treturn configs;\n\n\t\t},\n\n\t\treverseScale: function(scale){\n\t\t\tscale.width = scale.width.reverse();\n\t\t\tscale.trace_x = scale.trace_x.reverse();\n\n\t\t\tvar indexes = scale.trace_indexes;\n\t\t\tscale.trace_indexes = {};\n\t\t\tscale.trace_index_transition = {};\n\t\t\tscale.rtl = true;\n\t\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\t\tscale.trace_indexes[scale.trace_x[i].valueOf()] = i;\n\t\t\t\tscale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\n\t\t\t}\n\t\t\treturn scale;\n\t\t},\n\n\t\tsetPosSettings: function (config) {\n\t\t\tfor (var i = 0, len = config.trace_x.length; i < len; i++) {\n\t\t\t\tconfig.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\n\t\t\t}\n\t\t},\n\n\t\t_ignore_time_config: function (date, scale) {\n\n\t\t\tif (gantt.config.skip_off_time) {\n\t\t\t\tvar skip = true;\n\t\t\t\tvar probe = date;\n\n\t\t\t\t// check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\n\t\t\t\tfor (var i = 0; i < scale.step; i++) {\n\t\t\t\t\tif (i) {\n\t\t\t\t\t\tprobe = dateHelper.add(date, i, scale.unit);\n\t\t\t\t\t}\n\n\t\t\t\t\tskip = skip && !this.isWorkTime(probe, scale.unit);\n\t\t\t\t}\n\n\t\t\t\treturn skip;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t//defined in an extension\n\t\tprocessIgnores: function (config) {\n\t\t\tconfig.ignore_x = {};\n\t\t\tconfig.display_count = config.count;\n\t\t},\n\t\tinitColSizes: function (config, min_col_width, full_width, line_height) {\n\t\t\tvar cont_width = full_width;\n\n\t\t\tconfig.height = line_height;\n\n\t\t\tvar column_count = config.display_count === undefined ? config.count : config.display_count;\n\n\t\t\tif (!column_count)\n\t\t\t\tcolumn_count = 1;\n\n\t\t\tconfig.col_width = Math.floor(cont_width / column_count);\n\n\t\t\tif (min_col_width) {\n\t\t\t\tif (config.col_width < min_col_width) {\n\t\t\t\t\tconfig.col_width = min_col_width;\n\t\t\t\t\tcont_width = config.col_width * column_count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconfig.width = [];\n\t\t\tvar ignores = config.ignore_x || {};\n\t\t\tfor (var i = 0; i < config.trace_x.length; i++) {\n\t\t\t\tif (ignores[config.trace_x[i].valueOf()] || (config.display_count == config.count)) {\n\t\t\t\t\tconfig.width[i] = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// width of month columns should be proportional month duration\n\t\t\t\t\tvar width = 1;\n\t\t\t\t\tif (config.unit == \"month\") {\n\t\t\t\t\t\tvar days = Math.round((dateHelper.add(config.trace_x[i], config.step, config.unit) - config.trace_x[i]) / (1000 * 60 * 60 * 24));\n\t\t\t\t\t\twidth = days;\n\t\t\t\t\t}\n\t\t\t\t\tconfig.width[i] = width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.adjustSize(cont_width - this.getSum(config.width)/* 1 width per column from the code above */, config.width);\n\t\t\tconfig.full_width = this.getSum(config.width);\n\t\t},\n\t\tinitScaleConfig: function (config, min_date, max_date) {\n\t\t\tvar cfg = utils.mixin({\n\t\t\t\tcount: 0,\n\t\t\t\tcol_width: 0,\n\t\t\t\tfull_width: 0,\n\t\t\t\theight: 0,\n\t\t\t\twidth: [],\n\t\t\t\tleft: [],\n\t\t\t\ttrace_x: [],\n\t\t\t\ttrace_indexes: {},\n\t\t\t\tmin_date: new Date(min_date),\n\t\t\t\tmax_date: new Date(max_date)\n\t\t\t}, config);\n\n\t\t\tthis.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\n\t\t\t\tcfg.count++;\n\t\t\t\tcfg.trace_x.push(new Date(date));\n\t\t\t\tcfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\n\t\t\t});\n\n\t\t\tcfg.trace_x_ascending = cfg.trace_x.slice();\n\t\t\treturn cfg;\n\t\t},\n\t\titerateScales: function (lower_scale, upper_scale, from, to, callback) {\n\t\t\tvar upper_dates = upper_scale.trace_x;\n\t\t\tvar lower_dates = lower_scale.trace_x;\n\n\t\t\tvar prev = from || 0;\n\t\t\tvar end = to || (lower_dates.length - 1);\n\t\t\tvar prevUpper = 0;\n\n\n\t\t\tfor (var up = 1; up < upper_dates.length; up++) {\n\t\t\t\tvar target_index = (lower_scale.trace_indexes[+upper_dates[up]]);\n\t\t\t\tif (target_index !== undefined && target_index <= end) {\n\t\t\t\t\tif (callback) {\n\t\t\t\t\t\tcallback.apply(this, [prevUpper, up, prev, target_index]);\n\t\t\t\t\t}\n\t\t\t\t\tprev = target_index;\n\t\t\t\t\tprevUpper = up;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\talineScaleColumns: function (lower_scale, upper_scale, from, to) {\n\t\t\tthis.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\n\t\t\t\tvar targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\n\t\t\t\tvar actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\n\t\t\t\tif (actualWidth != targetWidth) {\n\t\t\t\t\tthis.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\n\t\t\t\t}\n\n\t\t\t});\n\t\t},\n\n\t\teachColumn: function (unit, step, min_date, max_date, callback) {\n\t\t\tvar start = new Date(min_date),\n\t\t\t\tend = new Date(max_date);\n\t\t\tif (dateHelper[unit + \"_start\"]) {\n\t\t\t\tstart = dateHelper[unit + \"_start\"](start);\n\t\t\t}\n\n\t\t\tvar curr = new Date(start);\n\t\t\tif (+curr >= +end) {\n\t\t\t\tend = dateHelper.add(curr, step, unit);\n\t\t\t}\n\t\t\twhile (+curr < +end) {\n\t\t\t\tcallback.call(this, new Date(curr));\n\t\t\t\tvar tzOffset = curr.getTimezoneOffset();\n\t\t\t\tcurr = dateHelper.add(curr, step, unit);\n\t\t\t\tcurr = gantt._correct_dst_change(curr, tzOffset, step, unit);\n\t\t\t\tif (dateHelper[unit + '_start'])\n\t\t\t\t\tcurr = dateHelper[unit + \"_start\"](curr);\n\t\t\t}\n\t\t},\n\t\tlimitVisibleRange: function (cfg) {\n\t\t\tvar dates = cfg.trace_x;\n\n\t\t\tvar left = 0, right = cfg.width.length - 1;\n\t\t\tvar diff = 0;\n\t\t\tif (+dates[0] < +cfg.min_date && left != right) {\n\t\t\t\tvar width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\n\t\t\t\tdiff += cfg.width[0] - width;\n\t\t\t\tcfg.width[0] = width;\n\n\t\t\t\tdates[0] = new Date(cfg.min_date);\n\t\t\t}\n\n\t\t\tvar last = dates.length - 1;\n\t\t\tvar lastDate = dates[last];\n\t\t\tvar outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\n\t\t\tif (+outDate > +cfg.max_date && last > 0) {\n\t\t\t\tvar width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\n\t\t\t\tdiff += cfg.width[last] - width;\n\t\t\t\tcfg.width[last] = width;\n\t\t\t}\n\n\t\t\tif (diff) {\n\t\t\t\tvar full = this.getSum(cfg.width);\n\t\t\t\tvar shared = 0;\n\t\t\t\tfor (var i = 0; i < cfg.width.length; i++) {\n\t\t\t\t\tvar share = Math.floor(diff * (cfg.width[i] / full));\n\t\t\t\t\tcfg.width[i] += share;\n\t\t\t\t\tshared += share;\n\t\t\t\t}\n\t\t\t\tthis.adjustSize(diff - shared, cfg.width);\n\t\t\t}\n\n\t\t}\n\t};\n}\n\nmodule.exports = ScaleHelper;\n","var helpers = require(\"../../../utils/helpers\");\n\nvar htmlHelpers = {\n\tgetHtmlSelect: function(options, attributes, value) {\n\t\tvar innerHTML = \"\";\n\t\tvar _this = this;\n\n\t\toptions = options || [];\n\t\t\n\t\thelpers.forEach(options, function(entry) {\n\t\t\tvar _attributes = [{ key: \"value\", value: entry.key }];\n\n\t\t\tif (value == entry.key) {\n\t\t\t\t_attributes[_attributes.length] = { key: \"selected\", value: \"selected\" };\n\t\t\t}\n\t\t\tif (entry.attributes) {\n\t\t\t\t_attributes = _attributes.concat(entry.attributes);\n\t\t\t}\n\t\t\tinnerHTML += _this.getHtmlOption({ innerHTML: entry.label }, _attributes);\n\t\t});\n\n\t\treturn _getHtmlContainer(\"select\", { innerHTML: innerHTML }, attributes);\n\t},\n\tgetHtmlOption: function(options, attributes) { return _getHtmlContainer(\"option\", options, attributes); },\n\tgetHtmlButton: function(options, attributes) { return _getHtmlContainer(\"button\", options, attributes); },\n\tgetHtmlDiv: function(options, attributes) { return _getHtmlContainer(\"div\", options, attributes); },\n\tgetHtmlLabel: function(options, attributes) { return _getHtmlContainer(\"label\", options, attributes); },\n\tgetHtmlInput: function(attributes) {\n\t\treturn \"<input\" + _getHtmlAttributes(attributes || []) + \">\";\n\t}\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n\tvar html;\n\n\toptions = options || [];\n\t\n\thtml = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"</\" + tag +\">\";\n\treturn html;\n\n}\n\nfunction _getHtmlAttributes(attributes) {\n\tvar html = \"\";\n\n\thelpers.forEach(attributes, function(entry) {\n\t\thtml += \" \" + entry.key + \"='\" + entry.value + \"'\";\n\t});\n\treturn html;\n}\n\nmodule.exports = htmlHelpers;","module.exports = function createResourceTimelineBuilder(gantt){\n\n\tvar resourceTaskCache = {};\n\n\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(){\n\t\tresourceTaskCache = {};\n\t});\n\n\tfunction getResourceLoad(resource, resourceProperty, scale, timeline){\n\t\tvar cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\n\t\tvar res;\n\t\tif (!resourceTaskCache[cacheKey]) {\n\t\t\tres = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, resourceProperty, scale, timeline);\n\n\t\t} else {\n\t\t\tres = resourceTaskCache[cacheKey];\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction calculateResourceLoad(resource, resourceProperty, scale, timeline) {\n\n\t\tvar tasks;\n\t\tif(resource.$role == \"task\"){\n\t\t\ttasks = [];\n\t\t}else{\n\t\t\ttasks = gantt.getTaskBy(resourceProperty, resource.id);\n\t\t}\n\t\tvar scaleUnit = scale.unit;\n\t\tvar scaleStep = scale.step;\n\t\tvar timegrid = {};\n\n\t\tfor (var i = 0; i < tasks.length; i++) {\n\t\t\tvar task = tasks[i];\n\n\t\t\tvar currDate = gantt.date[scaleUnit + \"_start\"](new Date(task.start_date));\n\n\t\t\twhile (currDate < task.end_date) {\n\n\t\t\t\tvar date = currDate;\n\t\t\t\tcurrDate = gantt.date.add(currDate, scaleStep, scaleUnit);\n\n\t\t\t\tif (!gantt.isWorkTime({date: date, task: task, unit: scaleUnit})) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar timestamp = date.valueOf();\n\t\t\t\tif (!timegrid[timestamp]){\n\t\t\t\t\ttimegrid[timestamp] = [];\n\t\t\t\t}\n\n\t\t\t\ttimegrid[timestamp].push(task);\n\t\t\t}\n\t\t}\n\n\t\tvar timetable = [];\n\t\tvar start, end, tasks;\n\t\tvar config = timeline.$getConfig();\n\n\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\tstart = new Date(scale.trace_x[i]);\n\t\t\tend = gantt.date.add(start, scaleStep, scaleUnit);\n\t\t\ttasks = timegrid[start.valueOf()] || [];\n\t\t\tif(tasks.length || config.resource_render_empty_cells){\n\t\t\t\ttimetable.push({\n\t\t\t\t\tstart_date: start,\n\t\t\t\t\tend_date: end,\n\t\t\t\t\ttasks: tasks\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttimetable.push(null);\n\t\t\t}\n\t\t}\n\n\t\treturn timetable;\n\t}\n\n\n\n\treturn getResourceLoad;\n};","function createTaskRenderer(gantt) {\n\n\tfunction _render_task_element(task, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar painters = config.type_renderers;\n\t\tvar renderer = painters[gantt.getTaskType(task.type)],\n\t\t\tdefaultRenderer = _task_default_render;\n\n\t\tif (!renderer) {\n\t\t\treturn defaultRenderer.call(gantt, task, view);\n\t\t}else{\n\t\t\treturn renderer.call(gantt, task, function(task){ return defaultRenderer.call(gantt, task, view);}, view);\n\t\t}\n\t}\n\n\tfunction _task_default_render(task, view) {\n\t\tif (gantt._isAllowedUnscheduledTask(task))\n\t\t\treturn;\n\n\t\tif (!gantt._isTaskInTimelineLimits(task)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar pos = view.getItemPosition(task);\n\n\t\tvar cfg = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\t\tvar height = view.getItemHeight();\n\n\t\tvar taskType = gantt.getTaskType(task.type);\n\n\t\tvar padd = Math.floor((gantt.config.row_height - height) / 2);\n\t\tif (taskType == cfg.types.milestone && cfg.link_line_width > 1) {\n\t\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\n\t\t\tpadd += 1;\n\t\t}\n\n\t\tif (taskType == cfg.types.milestone) {\n\t\t\tpos.left -= Math.round(height / 2);\n\t\t\tpos.width = height;\n\t\t}\n\n\t\tvar div = document.createElement(\"div\");\n\n\t\tvar width = Math.round(pos.width);\n\n\t\tif(view.$config.item_attribute) {\n\t\t\tdiv.setAttribute(view.$config.item_attribute, task.id);\n\t\t\tdiv.setAttribute(view.$config.bind + \"_id\", task.id); // 'task_id'/'resource_id' for backward compatibility\n\t\t}\n\n\t\tif (cfg.show_progress && taskType != cfg.types.milestone) {\n\t\t\t_render_task_progress(task, div, width, cfg, templates);\n\t\t}\n\n\t\t//use separate div to display content above progress bar\n\t\tvar content = _render_task_content(task, width, templates);\n\t\tif (task.textColor) {\n\t\t\tcontent.style.color = task.textColor;\n\t\t}\n\t\tdiv.appendChild(content);\n\n\t\tvar css = _combine_item_class(\"gantt_task_line\",\n\t\t\ttemplates.task_class(task.start_date, task.end_date, task),\n\t\t\ttask.id,\n\t\t\tview);\n\t\tif (task.color || task.progressColor || task.textColor) {\n\t\t\tcss += \" gantt_task_inline_color\";\n\t\t}\n\t\tdiv.className = css;\n\n\t\tvar styles = [\n\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\"top:\" + (padd + pos.top) + 'px',\n\t\t\t\"height:\" + height + 'px',\n\t\t\t\"line-height:\" + (Math.max(height < 30 ? height - 2 : height, 0)) + 'px',\n\t\t\t\"width:\" + width + 'px'\n\t\t];\n\t\tif (task.color) {\n\t\t\tstyles.push(\"background-color:\" + task.color);\n\t\t}\n\t\tif (task.textColor) {\n\t\t\tstyles.push(\"color:\" + task.textColor);\n\t\t}\n\n\t\tdiv.style.cssText = styles.join(\";\");\n\t\tvar side = _render_leftside_content(task, cfg, templates);\n\t\tif (side) div.appendChild(side);\n\n\t\tside = _render_rightside_content(task, cfg, templates);\n\t\tif (side) div.appendChild(side);\n\n\t\tgantt._waiAria.setTaskBarAttr(task, div);\n\n\t\tvar state = gantt.getState();\n\n\t\tif (!gantt.isReadonly(task)) {\n\t\t\tif (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\n\t\t\t\t_render_pair(div, \"gantt_task_drag\", task, function (css) {\n\t\t\t\t\tvar el = document.createElement(\"div\");\n\t\t\t\t\tel.className = css;\n\t\t\t\t\treturn el;\n\t\t\t\t}, cfg);\n\t\t\t}\n\t\t\tif (cfg.drag_links && cfg.show_links) {\n\t\t\t\t_render_pair(div, \"gantt_link_control\", task, function (css) {\n\t\t\t\t\tvar outer = document.createElement(\"div\");\n\t\t\t\t\touter.className = css;\n\t\t\t\t\touter.style.cssText = [\n\t\t\t\t\t\t\"height:\" + height + 'px',\n\t\t\t\t\t\t\"line-height:\" + height + 'px'\n\t\t\t\t\t].join(\";\");\n\t\t\t\t\tvar inner = document.createElement(\"div\");\n\t\t\t\t\tinner.className = \"gantt_link_point\";\n\n\t\t\t\t\tvar showLinkPoints = false;\n\t\t\t\t\tif(state.link_source_id && cfg.touch){\n\t\t\t\t\t\tshowLinkPoints = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tinner.style.display = showLinkPoints ? \"block\" : \"\";\n\t\t\t\t\touter.appendChild(inner);\n\t\t\t\t\treturn outer;\n\t\t\t\t}, cfg);\n\t\t\t}\n\t\t}\n\t\treturn div;\n\t}\n\n\tfunction _render_side_content(task, template, cssClass) {\n\t\tif (!template) return null;\n\n\t\tvar text = template(task.start_date, task.end_date, task);\n\t\tif (!text) return null;\n\t\tvar content = document.createElement(\"div\");\n\t\tcontent.className = \"gantt_side_content \" + cssClass;\n\t\tcontent.innerHTML = text;\n\t\treturn content;\n\t}\n\n\tfunction _render_leftside_content(task, cfg, templates) {\n\t\tvar css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\n\t\treturn _render_side_content(task, templates.leftside_text, css);\n\t}\n\n\tfunction _render_rightside_content(task, cfg, templates) {\n\t\tvar css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\n\t\treturn _render_side_content(task, templates.rightside_text, css);\n\t}\n\n\tfunction _get_link_crossing_css(left, task) {\n\t\tvar cond = _get_conditions(left);\n\n\t\tfor (var i in cond) {\n\t\t\tvar links = task[i];\n\t\t\tfor (var ln = 0; ln < links.length; ln++) {\n\t\t\t\tvar link = gantt.getLink(links[ln]);\n\n\t\t\t\tfor (var tp = 0; tp < cond[i].length; tp++) {\n\t\t\t\t\tif (link.type == cond[i][tp]) {\n\t\t\t\t\t\treturn \"gantt_link_crossing\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\n\tfunction _render_task_content(task, width, templates) {\n\t\tvar content = document.createElement(\"div\");\n\t\tif (gantt.getTaskType(task.type) != gantt.config.types.milestone)\n\t\t\tcontent.innerHTML = templates.task_text(task.start_date, task.end_date, task);\n\t\tcontent.className = \"gantt_task_content\";\n\t\t//content.style.width = width + 'px';\n\t\treturn content;\n\t}\n\n\tfunction _render_task_progress(task, element, maxWidth, cfg, templates) {\n\t\tvar done = task.progress * 1 || 0;\n\n\t\tmaxWidth = Math.max(maxWidth - 2, 0);//2px for borders\n\t\tvar pr = document.createElement(\"div\");\n\t\tvar width = Math.round(maxWidth * done);\n\n\t\twidth = Math.min(maxWidth, width);\n\t\tif (task.progressColor) {\n\t\t\tpr.style.backgroundColor = task.progressColor;\n\t\t\tpr.style.opacity = 1;\n\t\t}\n\t\tpr.style.width = width + 'px';\n\t\tpr.className = \"gantt_task_progress\";\n\t\tpr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\n\n\t\tif(cfg.rtl){\n\t\t\tpr.style.position = \"absolute\";\n\t\t\tpr.style.right = \"0px\";\n\t\t}\n\n\t\tvar wrapper = document.createElement(\"div\");\n\t\twrapper.className = \"gantt_task_progress_wrapper\";\n\t\twrapper.appendChild(pr);\n\t\telement.appendChild(wrapper);\n\n\t\tif (gantt.config.drag_progress && !gantt.isReadonly(task)) {\n\t\t\tvar drag = document.createElement(\"div\");\n\n\t\t\tvar markerPos = width;\n\t\t\tif(cfg.rtl){\n\t\t\t\tmarkerPos = maxWidth - width;\n\t\t\t}\n\n\t\t\tdrag.style.left = markerPos + 'px';\n\t\t\tdrag.className = \"gantt_task_progress_drag\";\n\t\t\tpr.appendChild(drag);\n\t\t\telement.appendChild(drag);\n\t\t}\n\t}\n\n\tfunction _get_conditions(leftside) {\n\t\tif (leftside) {\n\t\t\treturn {\n\t\t\t\t$source: [\n\t\t\t\t\tgantt.config.links.start_to_start\n\t\t\t\t],\n\t\t\t\t$target: [\n\t\t\t\t\tgantt.config.links.start_to_start,\n\t\t\t\t\tgantt.config.links.finish_to_start\n\t\t\t\t]\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\t$source: [\n\t\t\t\t\tgantt.config.links.finish_to_start,\n\t\t\t\t\tgantt.config.links.finish_to_finish\n\t\t\t\t],\n\t\t\t\t$target: [\n\t\t\t\t\tgantt.config.links.finish_to_finish\n\t\t\t\t]\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction _combine_item_class(basic, template, itemId, view) {\n\t\tvar cfg = view.$getConfig();\n\t\tvar css = [basic];\n\t\tif (template)\n\t\t\tcss.push(template);\n\n\t\tvar state = gantt.getState();\n\n\t\tvar task = gantt.getTask(itemId);\n\n\t\tif (gantt.getTaskType(task.type) == cfg.types.milestone) {\n\t\t\tcss.push(\"gantt_milestone\");\n\t\t}else if (gantt.getTaskType(task.type) == cfg.types.project) {\n\t\t\tcss.push(\"gantt_project\");\n\t\t}\n\n\t\tcss.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\n\n\n\t\tif (gantt.isSummaryTask(task))\n\t\t\tcss.push(\"gantt_dependent_task\");\n\n\t\tif (gantt.isSplitTask(task) && ((cfg.open_split_tasks && !task.$open) || !cfg.open_split_tasks)) {\n\t\t\tcss.push(\"gantt_split_parent\");\n\t\t}\n\n\t\tif (cfg.select_task && gantt.isSelectedTask(itemId)) {\n\t\t\tcss.push(\"gantt_selected\");\n\t\t}\n\n\t\tif (itemId == state.drag_id) {\n\t\t\tcss.push(\"gantt_drag_\" + state.drag_mode);\n\t\t\tif (state.touch_drag) {\n\t\t\t\tcss.push(\"gantt_touch_\" + state.drag_mode);\n\t\t\t}\n\t\t}\n\n\t\tif (state.link_source_id == itemId)\n\t\t\tcss.push(\"gantt_link_source\");\n\n\t\tif (state.link_target_id == itemId)\n\t\t\tcss.push(\"gantt_link_target\");\n\n\n\t\tif (cfg.highlight_critical_path && gantt.isCriticalTask) {\n\t\t\tif (gantt.isCriticalTask(task))\n\t\t\t\tcss.push(\"gantt_critical_task\");\n\t\t}\n\n\t\tif (state.link_landing_area &&\n\t\t\t(state.link_target_id && state.link_source_id) &&\n\t\t\t(state.link_target_id != state.link_source_id) && \n\t\t\t(state.link_target_id == itemId || state.link_source_id == itemId)) {\n\n\t\t\tvar from_id = state.link_source_id;\n\t\t\tvar from_start = state.link_from_start;\n\t\t\tvar to_start = state.link_to_start;\n\n\t\t\tvar allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\n\n\t\t\tvar dragClass = \"\";\n\t\t\tif (allowDrag) {\n\t\t\t\tif (to_start)\n\t\t\t\t\tdragClass = \"link_start_allow\";\n\t\t\t\telse\n\t\t\t\t\tdragClass = \"link_finish_allow\";\n\t\t\t} else {\n\t\t\t\tif (to_start)\n\t\t\t\t\tdragClass = \"link_start_deny\";\n\t\t\t\telse\n\t\t\t\t\tdragClass = \"link_finish_deny\";\n\t\t\t}\n\t\t\tcss.push(dragClass);\n\t\t}\n\t\treturn css.join(\" \");\n\t}\n\n\tfunction _render_pair(parent, css, task, content, config) {\n\t\tvar state = gantt.getState();\n\t\tvar className, element;\n\t\tif (+task.start_date >= +state.min_date) {\n\t\t\tclassName = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\n\t\t\telement = content(className.join(\" \"));\n\t\t\telement.setAttribute(\"data-bind-property\", \"start_date\");\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t\tif (+task.end_date <= +state.max_date){\n\t\t\tclassName = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\n\t\t\telement = content(className.join(\" \"));\n\t\t\telement.setAttribute(\"data-bind-property\", \"end_date\");\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t}\n\n\treturn _render_task_element;\n}\n\nmodule.exports = createTaskRenderer;","// optimized checker for task bars smart rendering\n\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isBarInViewport(item, viewport, view, gantt){\n\tif(!item.start_date || !item.end_date){\n\t\treturn null;\n\t}\n\n\tvar config = view.$getConfig();\n\tvar top = view.getItemTop(item.id);\n\tvar height = config.row_height;\n\n\tif(top > viewport.y_end || top + height < viewport.y){\n\t\treturn false;\n\t}\n\n\tvar padding = 200;\n\tvar startCoord = view.posFromDate(item.start_date);\n\tvar endCoord = view.posFromDate(item.end_date);\n\tvar left = Math.min(startCoord, endCoord) - padding;\n\tvar right = Math.max(startCoord, endCoord) + padding;\n\n\tif(left > viewport.x_end || right < viewport.x){\n\t\treturn false;\n\t}\n\n\treturn true;\n};","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../utils/dom_helpers\"),\n\tCell = require(\"./cell\");\n\nvar Layout = (function (_super) {\n\t\"use strict\";\n\n\t__extends(Layout, _super);\n\tfunction Layout(parent, config, base_factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tif(parent)\n\t\t\t_this.$root = true;\n\n\t\t_this._parseConfig(config);\n\t\t_this.$name = \"layout\";\n\t\treturn _this;\n\t}\n\n\tLayout.prototype.destructor = function () {\n\t\tif (this.$container && this.$view) {\n\t\t\tdomHelpers.removeNode(this.$view);\n\t\t}\n\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tvar child = this.$cells[i];\n\t\t\tchild.destructor();\n\t\t}\n\t\tthis.$cells = [];\n\n\t\t_super.prototype.destructor.call(this);\n\t};\n\n\tLayout.prototype._resizeScrollbars = function(autosize, scrollbars){\n\t\tvar scrollChanged = false;\n\t\tvar visibleScrollbars = [],\n\t\t\thiddenSrollbars = [];\n\n\t\tfunction showScrollbar(scrollbar){\n\t\t\tscrollbar.$parent.show();\n\t\t\tscrollChanged = true;\n\t\t\tvisibleScrollbars.push(scrollbar);\n\t\t}\n\t\tfunction hideScrollbar(scrollbar){\n\t\t\tscrollbar.$parent.hide();\n\t\t\tscrollChanged = true;\n\t\t\thiddenSrollbars.push(scrollbar);\n\t\t}\n\n\t\tvar scrollbar;\n\t\tfor(var i = 0; i < scrollbars.length; i++){\n\t\t\tscrollbar = scrollbars[i];\n\n\t\t\tif(autosize[scrollbar.$config.scroll]) {\n\t\t\t\thideScrollbar(scrollbar);\n\t\t\t}else if(scrollbar.shouldHide()){\n\t\t\t\thideScrollbar(scrollbar);\n\t\t\t}else if(scrollbar.shouldShow()){\n\t\t\t\tshowScrollbar(scrollbar);\n\t\t\t}else{\n\t\t\t\tif(scrollbar.isVisible()){\n\t\t\t\t\tvisibleScrollbars.push(scrollbar);\n\t\t\t\t}else{\n\t\t\t\t\thiddenSrollbars.push(scrollbar);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar visibleGroups = {};\n\t\tfor(var i = 0; i < visibleScrollbars.length; i++){\n\t\t\tif(visibleScrollbars[i].$config.group){\n\t\t\t\tvisibleGroups[visibleScrollbars[i].$config.group] = true;\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0; i < hiddenSrollbars.length; i++){\n\t\t\tscrollbar = hiddenSrollbars[i];\n\n\t\t\tif(scrollbar.$config.group && visibleGroups[scrollbar.$config.group]){\n\t\t\t\tshowScrollbar(scrollbar);\n\t\t\t\t// GS-707 If the scrollbar was hidden then showed, the container resize shouldn't happen because of that\n\t\t\t\tfor(var j = 0; j < visibleScrollbars.length; j++){\n\t\t\t\t\tif(visibleScrollbars[j] == scrollbar){\n\t\t\t\t\t\tthis.$gantt.$scrollbarRepaint = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn scrollChanged;\n\t};\n\n\tLayout.prototype._syncCellSizes = function(groupName, newSize){\n\t\tif(!groupName)\n\t\t\treturn;\n\n\t\tvar groups = {};\n\n\t\tthis._eachChild(function(cell){\n\t\t\tif(cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\"){\n\t\t\t\tif(!groups[cell.$config.group]){\n\t\t\t\t\tgroups[cell.$config.group] = [];\n\t\t\t\t}\n\t\t\t\tgroups[cell.$config.group].push(cell);\n\t\t\t}\n\t\t});\n\n\t\tif(groups[groupName]){\n\t\t\tthis._syncGroupSize(groups[groupName], newSize);\n\t\t}\n\t\treturn groups[groupName];\n\t};\n\n\tLayout.prototype._syncGroupSize = function(cells, newSize){\n\t\tif(!cells.length) return;\n\n\t\tvar property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n\t\tvar direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n\n\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\tvar ownSize = cells[i].getSize();\n\n\t\t\tvar resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\t\t\tif(resizeSibling.$name == \"resizer\"){\n\t\t\t\tresizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n\t\t\t}\n\t\t\tvar siblingSize = resizeSibling.getSize();\n\n\t\t\tif(resizeSibling[property]){\n\t\t\t\tvar totalGravity = ownSize.gravity + siblingSize.gravity;\n\t\t\t\tvar totalSize = ownSize[property] + siblingSize[property];\n\t\t\t\tvar k = totalGravity / totalSize;\n\t\t\t\tcells[i].$config.gravity = k * newSize;\n\n\t\t\t\tresizeSibling.$config[property] = totalSize - newSize;\n\t\t\t\tresizeSibling.$config.gravity = totalGravity - k * newSize;\n\t\t\t}else{\n\n\n\t\t\t\tcells[i].$config[property] = newSize;\n\t\t\t}\n\n\t\t\tvar mainGrid = this.$gantt.$ui.getView(\"grid\");\n\t\t\tif(mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable){\n\t\t\t\tthis.$gantt.config.grid_width = newSize;\n\t\t\t}\n\t\t}\n\t};\n\n\tLayout.prototype.resize = function(startStage){\n\t\tvar mainCall = false;\n\t\tif(this.$root && !this._resizeInProgress){\n\t\t\tthis.callEvent(\"onBeforeResize\", []);\n\t\t\tmainCall = true;\n\t\t\tthis._resizeInProgress = true;\n\t\t}\n\n\t\t_super.prototype.resize.call(this, true);\n\t\t_super.prototype.resize.call(this, false);\n\n\t\tif(mainCall){\n\n\t\t\tvar contentViews = [];\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n\n\t\t\tvar scrollbars = this.getCellsByType(\"scroller\");\n\n\t\t\tfor(var i = 0; i < contentViews.length; i++){\n\t\t\t\tif(!contentViews[i].$config.hidden)\n\t\t\t\t\tcontentViews[i].setContentSize();\n\t\t\t}\n\n\t\t\tvar autosize = this._getAutosizeMode(this.$config.autosize);\n\n\t\t\tvar scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n\t\t\tif(this.$config.autosize){\n\t\t\t\tthis.autosize(this.$config.autosize);\n\t\t\t\tscrollChanged = true;\n\t\t\t}\n\n\t\t\tif(scrollChanged){\n\t\t\t\tthis.resize();\n\t\t\t\tfor(var i = 0; i < contentViews.length; i++){\n\t\t\t\t\tif(!contentViews[i].$config.hidden)\n\t\t\t\t\t\tcontentViews[i].setContentSize();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onResize\", []);\n\t\t}\n\t\tif(mainCall){\n\t\t\tthis._resizeInProgress = false;\n\t\t}\n\t};\n\n\tLayout.prototype._eachChild = function(code, cell){\n\t\tcell = cell || this;\n\t\tcode(cell);\n\t\tif(cell.$cells){\n\t\t\tfor(var i = 0; i < cell.$cells.length; i++){\n\t\t\t\tthis._eachChild(code, cell.$cells[i]);\n\t\t\t}\n\t\t}\n\t};\n\n\tLayout.prototype.isChild = function(view){\n\t\tvar res = false;\n\t\tthis._eachChild(function(child){\n\t\t\tif(child === view || child.$content === view){\n\t\t\t\tres = true;\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t};\n\n\tLayout.prototype.getCellsByType = function(type){\n\t\tvar res = [];\n\t\tif(type === this.$name){\n\t\t\tres.push(this);\n\t\t}\n\n\t\tif(this.$content && this.$content.$name == type){\n\t\t\tres.push(this.$content);\n\t\t}\n\n\t\tif(this.$cells){\n\t\t\tfor(var i = 0; i < this.$cells.length; i++){\n\t\t\t\tvar children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\t\t\t\tif(children.length){\n\t\t\t\t\tres.push.apply(res, children);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\tLayout.prototype.getNextSibling = function(cellId){\n\t\tvar index = this.cellIndex(cellId);\n\t\tif(index >= 0 && this.$cells[index + 1]){\n\t\t\treturn this.$cells[index + 1];\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tLayout.prototype.getPrevSibling = function(cellId){\n\t\tvar index = this.cellIndex(cellId);\n\t\tif(index >= 0 && this.$cells[index - 1]){\n\t\t\treturn this.$cells[index - 1];\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\n\tLayout.prototype.cell = function (id) {\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tvar child = this.$cells[i];\n\t\t\tif (child.$id === id) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t\tvar sub = child.cell(id);\n\t\t\tif (sub) {\n\t\t\t\treturn sub;\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.cellIndex = function (id) {\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tif (this.$cells[i].$id === id) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t};\n\tLayout.prototype.moveView = function (view, ind) {\n\t\tif (this.$cells[ind] !== view) {\n\t\t\treturn window.alert(\"Not implemented\");\n\t\t}\n\t\telse {\n\t\t\tind += this.$config.header ? 1 : 0;\n\t\t\tvar node = this.$view;\n\t\t\tif (ind >= node.childNodes.length) {\n\t\t\t\tnode.appendChild(view.$view);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode.insertBefore(view.$view, node.childNodes[ind]);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype._parseConfig = function (config) {\n\t\tthis.$cells = [];\n\t\tthis._xLayout = !config.rows;\n\t\tvar cells = config.rows || config.cols || config.views;\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tvar cell = cells[i];\n\t\t\tcell.mode = this._xLayout ? \"x\" : \"y\";\n\t\t\tvar $content = this.$base_factory.initUI(cell, this);\n\t\t\tif(!$content){\n\t\t\t\tcells.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}else{\n\t\t\t\t$content.$parent = this;\n\t\t\t\tthis.$cells.push($content);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.getCells = function () {\n\t\treturn this.$cells;\n\t};\n\tLayout.prototype.render = function () {\n\t\tvar view = domHelpers.insertNode(this.$container, this.$toHTML());\n\t\tthis.$fill(view, null);\n\t\tthis.callEvent(\"onReady\", []);\n\t\tthis.resize();\n\n\t\t// do simple repaint after the first call\n\t\tthis.render = this.resize;\n\t};\n\tLayout.prototype.$fill = function (node, parent) {\n\t\tthis.$view = node;\n\t\tthis.$parent = parent;\n\t\tvar cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\t\tfor (var i = cells.length - 1; i >= 0; i--) {\n\t\t\tvar sub = this.$cells[i];\n\t\t\tsub.$fill(cells[i], this);\n\t\t\t// initially hidden cell\n\t\t\tif (sub.$config.hidden) {\n\t\t\t\tsub.$view.parentNode.removeChild(sub.$view);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.$toHTML = function () {\n\t\tvar mode = this._xLayout ? \"x\" : \"y\";\n\t\tvar html = [];\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\thtml.push(this.$cells[i].$toHTML());\n\t\t}\n\t\treturn _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n\t};\n\n\tLayout.prototype.getContentSize = function(mode){\n\t\tvar contentWidth = 0,\n\t\t\tcontentHeight = 0;\n\n\t\tvar cellSize, cell, borders;\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tcell = this.$cells[i];\n\t\t\tif(cell.$config.hidden)\n\t\t\t\tcontinue;\n\n\t\t\tcellSize = cell.getContentSize(mode);\n\n\t\t\tif(cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]){\n\t\t\t\tcellSize.height = 0;\n\t\t\t\tcellSize.width = 0;\n\t\t\t}\n\n\t\t\tif(cell.$config.resizer){\n\t\t\t\tif(this._xLayout){\n\t\t\t\t\tcellSize.height = 0;\n\t\t\t\t}else{\n\t\t\t\t\tcellSize.width = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tborders = cell._getBorderSizes();\n\n\t\t\tif(this._xLayout){\n\t\t\t\tcontentWidth += (cellSize.width + borders.horizontal);\n\t\t\t\tcontentHeight = Math.max(contentHeight, (cellSize.height + borders.vertical));\n\t\t\t}else{\n\t\t\t\tcontentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n\t\t\t\tcontentHeight += cellSize.height + borders.vertical;\n\t\t\t}\n\t\t}\n\n\t\tborders = this._getBorderSizes();\n\t\tcontentWidth += borders.horizontal;\n\t\tcontentHeight += borders.vertical;\n\n\t\tif(this.$root){\n\t\t\tcontentWidth += 1;\n\t\t\tcontentHeight += 1;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: contentWidth,\n\t\t\theight: contentHeight\n\t\t};\n\t};\n\n\tLayout.prototype._cleanElSize = function(value){\n\t\treturn ((value || \"\").toString().replace(\"px\", \"\") * 1 || 0);\n\t};\n\tLayout.prototype._getBoxStyles = function(div){\n\t\tvar computed = null;\n\t\tif(window.getComputedStyle){\n\t\t\tcomputed = window.getComputedStyle(div, null);\n\t\t}else{\n\t\t\t//IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\n\t\t\tcomputed = {\n\t\t\t\t\"width\":div.clientWidth,\n\t\t\t\t\"height\":div.clientHeight\n\t\t\t};\n\t\t}\n\t\tvar properties = [\n\t\t\t\"width\",\n\t\t\t\"height\",\n\n\t\t\t\"paddingTop\",\n\t\t\t\"paddingBottom\",\n\t\t\t\"paddingLeft\",\n\t\t\t\"paddingRight\",\n\n\t\t\t\"borderLeftWidth\",\n\t\t\t\"borderRightWidth\",\n\t\t\t\"borderTopWidth\",\n\t\t\t\"borderBottomWidth\"\n\t\t];\n\t\tvar styles = {\n\t\t\tboxSizing:(computed.boxSizing == \"border-box\")\n\t\t};\n\n\t\tif(computed.MozBoxSizing){\n\t\t\tstyles.boxSizing = (computed.MozBoxSizing == \"border-box\");\n\t\t}\n\t\tfor(var i =0; i < properties.length; i++){\n\t\t\tstyles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\n\t\t}\n\n\n\t\tvar box = {\n\t\t\thorPaddings : (styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth),\n\t\t\tvertPaddings : (styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth),\n\t\t\tborderBox: styles.boxSizing,\n\t\t\tinnerWidth : styles.width,\n\t\t\tinnerHeight : styles.height,\n\t\t\touterWidth : styles.width,\n\t\t\touterHeight : styles.height\n\t\t};\n\n\n\t\tif(box.borderBox){\n\t\t\tbox.innerWidth -= box.horPaddings;\n\t\t\tbox.innerHeight -= box.vertPaddings;\n\t\t}else{\n\t\t\tbox.outerWidth += box.horPaddings;\n\t\t\tbox.outerHeight += box.vertPaddings;\n\t\t}\n\n\t\treturn box;\n\t};\n\n\tLayout.prototype._getAutosizeMode = function(config){\n\t\tvar res = {x:false, y:false};\n\t\tif(config === \"xy\"){\n\t\t\tres.x = res.y = true;\n\t\t}else if(config === \"y\" || config === true){\n\t\t\tres.y = true;\n\t\t}else if(config === \"x\"){\n\t\t\tres.x = true;\n\t\t}\n\t\treturn res;\n\t};\n\n\tLayout.prototype.autosize = function(mode) {\n\t\tvar res = this._getAutosizeMode(mode);\n\t\tvar boxSizes = this._getBoxStyles(this.$container);\n\t\tvar contentSizes = this.getContentSize(mode);\n\n\t\tvar node = this.$container;\n\t\tif(res.x){\n\t\t\tif(boxSizes.borderBox){\n\t\t\t\tcontentSizes.width += boxSizes.horPaddings;\n\t\t\t}\n\t\t\tnode.style.width = contentSizes.width + \"px\";\n\t\t}\n\t\tif(res.y){\n\t\t\tif(boxSizes.borderBox){\n\t\t\t\tcontentSizes.height += boxSizes.vertPaddings;\n\t\t\t}\n\t\t\tnode.style.height = contentSizes.height + \"px\";\n\t\t}\n\t};\n\n\tLayout.prototype.getSize = function () {\n\t\tthis._sizes = [];\n\t\tvar width = 0;\n\t\tvar minWidth = 0;\n\t\tvar maxWidth = 100000000000;\n\t\tvar height = 0;\n\t\tvar maxHeight = 100000000000;\n\t\tvar minHeight = 0;\n\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\n\t\t\tvar size = this._sizes[i] = this.$cells[i].getSize();\n\t\t\tif (this.$cells[i].$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._xLayout) {\n\t\t\t\tif (!size.width && size.minWidth) {\n\t\t\t\t\twidth += size.minWidth;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\twidth += size.width;\n\t\t\t\t}\n\t\t\t\tmaxWidth += size.maxWidth;\n\t\t\t\tminWidth += size.minWidth;\n\t\t\t\theight = Math.max(height, size.height);\n\t\t\t\tmaxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\n\t\t\t\tminHeight = Math.max(minHeight, size.minHeight); // max of minHeight\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!size.height && size.minHeight) {\n\t\t\t\t\theight += size.minHeight;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\theight += size.height;\n\t\t\t\t}\n\t\t\t\tmaxHeight += size.maxHeight;\n\t\t\t\tminHeight += size.minHeight;\n\t\t\t\twidth = Math.max(width, size.width);\n\t\t\t\tmaxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\n\t\t\t\tminWidth = Math.max(minWidth, size.minWidth); // max of minWidth\n\t\t\t}\n\t\t}\n\t\tvar self = _super.prototype.getSize.call(this);\n\t\t// maxWidth\n\t\tif (self.maxWidth >= 100000) {\n\t\t\tself.maxWidth = maxWidth;\n\t\t}\n\t\t// maxHeight\n\t\tif (self.maxHeight >= 100000) {\n\t\t\tself.maxHeight = maxHeight;\n\t\t}\n\t\t// minWidth\n\t\tself.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth;// || self.width || Math.max(minWidth, width);\n\t\t// minHeight\n\t\tself.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight;//self.minHeight || self.height || Math.max(minHeight, height);\n\t\t// sizes with paddings and margins\n\t\tif (this._xLayout) {\n\t\t\tself.minWidth += this.$config.margin * (this.$cells.length) || 0;\n\t\t\tself.minWidth += this.$config.padding * 2 || 0;\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\n\t\t}\n\t\telse {\n\t\t\tself.minHeight += this.$config.margin * (this.$cells.length) || 0;\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\n\t\t}\n\t\t\n\t\treturn self;\n\t};\n\t// calc total gravity and free space\n\tLayout.prototype._calcFreeSpace = function (s, cell, xLayout) {\n\t\tvar min = xLayout ? cell.minWidth : cell.minHeight;\n\t\tvar max = xLayout ? cell.maxWidth : cell.maxWidth;\n\t\tvar side = s;\n\t\tif (!side) {\n\t\t\tside = Math.floor(this._free / this._gravity * cell.gravity);\n\t\t\tif (side > max) {\n\t\t\t\tside = max;\n\t\t\t\tthis._free -= side;\n\t\t\t\tthis._gravity -= cell.gravity;\n\t\t\t}\n\t\t\tif (side < min) {\n\t\t\t\tside = min;\n\t\t\t\tthis._free -= side;\n\t\t\t\tthis._gravity -= cell.gravity;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (side > max) {\n\t\t\t\tside = max;\n\t\t\t}\n\t\t\tif (side < min) {\n\t\t\t\tside = min;\n\t\t\t}\n\t\t\tthis._free -= side;\n\t\t}\n\t\treturn side;\n\t};\n\tLayout.prototype._calcSize = function (s, size, xLayout) {\n\t\tvar side = s;\n\t\tvar min = xLayout ? size.minWidth : size.minHeight;\n\t\tvar max = xLayout ? size.maxWidth : size.maxHeight;\n\t\tif (!side) {\n\t\t\tside = Math.floor(this._free / this._gravity * size.gravity);\n\t\t}\n\t\tif (side > max) {\n\t\t\tside = max;\n\t\t}\n\t\tif (side < min) {\n\t\t\tside = min;\n\t\t}\n\t\treturn side;\n\t};\n\n\tLayout.prototype._configureBorders = function(){\n\t\tif(this.$root){\n\t\t\tthis._setBorders([\n\t\t\t\tthis._borders.left,\n\t\t\t\tthis._borders.top,\n\t\t\t\tthis._borders.right,\n\t\t\t\tthis._borders.bottom\n\t\t\t],\n\t\t\tthis);\n\t\t}\n\n\t\tvar borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\n\n\t\tvar cells = this.$cells;\n\n\t\tvar lastVisibleIndex = cells.length - 1;\n\t\tfor(var i = lastVisibleIndex; i >= 0; i--){\n\t\t\tif (!cells[i].$config.hidden) {\n\t\t\t\tlastVisibleIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tif (cells[i].$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar lastCell = i >= lastVisibleIndex;\n\t\t\tvar borderColorClass = \"\";\n\t\t\tif(!lastCell && cells[i + 1]){\n\t\t\t\tif(cells[i + 1].$config.view == \"scrollbar\"){\n\t\t\t\t\tif(this._xLayout){\n\t\t\t\t\t\tlastCell = true;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tborderColorClass = \"gantt_layout_cell_border_transparent\";\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tthis._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\n\t\t}\n\t};\n\n\tLayout.prototype._updateCellVisibility = function(){\n\t\tvar oldVisibleCells = this._visibleCells || {};\n\t\tvar firstCall = !this._visibleCells;\n\t\tvar visibleCells = {};\n\t\tvar cell;\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n\t\t\t\tcell._hide(true);\n\t\t\t}else if(!cell.$config.hidden && !oldVisibleCells[cell.$id]){\n\t\t\t\tcell._hide(false);\n\t\t\t}\n\n\t\t\tif(!cell.$config.hidden){\n\t\t\t\tvisibleCells[cell.$id] = true;\n\t\t\t}\n\t\t}\n\t\tthis._visibleCells = visibleCells;\n\t};\n\n\tLayout.prototype.setSize = function (x, y) {\n\t\tthis._configureBorders();\n\t\t_super.prototype.setSize.call(this, x, y);\n\t\ty = this.$lastSize.contentY;\n\t\tx = this.$lastSize.contentX;\n\n\t\tvar padding = (this.$config.padding || 0);\n\t\tthis.$view.style.padding = padding + \"px\";\n\t\tthis._gravity = 0;\n\t\tthis._free = this._xLayout ? x : y;\n\t\tthis._free -= padding * 2;\n\t\t// calc all gravity\n\n\t\tvar cell,\n\t\t\tsize;\n\n\t\tthis._updateCellVisibility();\n\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar margin = (this.$config.margin || 0);\n\t\t\tif(cell.$name == \"resizer\" && !margin){\n\t\t\t\tmargin = -1;\n\t\t\t}\n\n\t\t\t// set margins to child cell\n\t\t\tvar cellView = cell.$view;\n\n\t\t\tvar marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\t\t\tif (i !== this.$cells.length - 1) {\n\t\t\t\tcellView.style[marginSide] = margin + \"px\";\n\t\t\t\tthis._free -= margin; // calc free space without margin\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tif (this._xLayout) {\n\t\t\t\tif (!size.width) {\n\t\t\t\t\tthis._gravity += size.gravity;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!size.height) {\n\t\t\t\t\tthis._gravity += size.gravity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tvar width = size.width;\n\t\t\tvar height = size.height;\n\t\t\tif (this._xLayout) {\n\t\t\t\tthis._calcFreeSpace(width, size, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._calcFreeSpace(height, size, false);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tvar dx = void 0;\n\t\t\tvar dy = void 0;\n\t\t\tif (this._xLayout) {\n\t\t\t\tdx = this._calcSize(size.width, size, true);\n\t\t\t\tdy = y - padding * 2; // layout height without paddings\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdx = x - padding * 2; // layout width without paddings\n\t\t\t\tdy = this._calcSize(size.height, size, false);\n\t\t\t}\n\n\t\t\tcell.setSize(dx, dy);\n\t\t}\n\n\t};\n\n\treturn Layout;\n}(Cell));\n\nmodule.exports = Layout;","module.exports = function(item, view){\n\treturn {\n\t\ttop: view.getItemTop(item.id),\n\t\theight: view.getItemHeight(item.id),\n\t\tleft: 0,\n\t\tright: Infinity\n\t};\n};","import { IWorkUnitCache } from \"./workunit_cache_interface\";\nimport { WorkUnitsMapCache } from \"./workunit_map_cache\";\nimport { WorkUnitsObjectCache } from \"./workunit_object_cache\";\nexport { LargerUnitsCache } from \"./larger_units_helper\";\n\nexport function createCacheObject(): IWorkUnitCache {\n\n\t// worktime hash is on the hot path,\n\t// Map seems to work faster than plain array, use it whenever possible\n\tif (typeof Map !== \"undefined\") {\n\t\treturn new WorkUnitsMapCache();\n\t} else {\n\t\treturn new WorkUnitsObjectCache();\n\t}\n}\n","var utils = require(\"../../utils/utils\");\nvar helpers = require(\"../../utils/helpers\");\n\n\nfunction IsWorkTimeArgument(date, unit, task, id, calendar){\n\tthis.date = date;\n\tthis.unit = unit;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar){\n\tthis.date = date;\n\tthis.dir = dir;\n\tthis.unit = unit;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar){\n\tthis.start_date = start_date;\n\tthis.duration = duration;\n\tthis.unit = unit;\n\tthis.step = step;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction GetDurationArgument(start, end, task, calendar) {\n\tthis.start_date = start;\n\tthis.end_date = end;\n\tthis.task = task;\n\tthis.calendar = calendar;\n\tthis.unit = null;\n\tthis.step = null;\n\treturn this;\n}\n\nvar calendarArgumentsHelper = function(gantt){\n\treturn {\n\t\tgetWorkHoursArguments: function () {\n\t\t\tvar config = arguments[0];\n\t\t\tif (helpers.isDate(config)) {\n\t\t\t\tconfig = {\n\t\t\t\t\tdate: config\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconfig = utils.mixin({}, config);\n\t\t\t}\n\n\t\t\tif(!helpers.isValidDate(config.date)){\n\t\t\t\tgantt.assert(false, \"Invalid date argument for getWorkHours method\");\n\t\t\t\tthrow new Error(\"Invalid date argument for getWorkHours method\");\n\t\t\t}\n\n\t\t\treturn config;\n\t\t},\n\t\tsetWorkTimeArguments: function () {\n\t\t\treturn arguments[0];\n\t\t},\n\t\tunsetWorkTimeArguments: function () {\n\t\t\treturn arguments[0];\n\t\t},\n\t\tisWorkTimeArguments: function () {\n\t\t\tvar config = arguments[0];\n\t\t\tif(config instanceof IsWorkTimeArgument){\n\t\t\t\treturn config;\n\t\t\t}\n\n\t\t\tvar processedConfig;\n\t\t\tif (!config.date) {\n\t\t\t\t//IsWorkTimeArgument(date, unit, task, id, calendar)\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\n\t\t\t}\n\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\n\t\t\tif(!helpers.isValidDate(processedConfig.date)){\n\t\t\t\tgantt.assert(false, \"Invalid date argument for isWorkTime method\");\n\t\t\t\tthrow new Error(\"Invalid date argument for isWorkTime method\");\n\t\t\t}\n\n\t\t\treturn processedConfig;\n\t\t},\n\t\tgetClosestWorkTimeArguments: function (arg) {\n\t\t\tvar config = arguments[0];\n\t\t\tif (config instanceof ClosestWorkTimeArgument)\n\t\t\t\treturn config;\n\n\t\t\tvar processedConfig;\n\t\t\tif (helpers.isDate(config)) {\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(config);\n\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(\n\t\t\t\t\tconfig.date,\n\t\t\t\t\tconfig.dir,\n\t\t\t\t\tconfig.unit,\n\t\t\t\t\tconfig.task,\n\t\t\t\t\tnull,//config.id,\n\t\t\t\t\tconfig.calendar\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif(config.id){\n\t\t\t\tprocessedConfig.task = config;\n\t\t\t}\n\t\t\tprocessedConfig.dir = config.dir || 'any';\n\t\t\tprocessedConfig.unit = config.unit || gantt.config.duration_unit;\n\n\t\t\tif(!helpers.isValidDate(processedConfig.date)){\n\t\t\t\tgantt.assert(false, \"Invalid date argument for getClosestWorkTime method\");\n\t\t\t\tthrow new Error(\"Invalid date argument for getClosestWorkTime method\");\n\t\t\t}\n\t\t\treturn processedConfig;\n\t\t},\n\n\t\t_getStartEndConfig: function (param) {\n\t\t\tvar argumentType = GetDurationArgument;\n\t\t\tvar config;\n\t\t\tif (param instanceof argumentType)\n\t\t\t\treturn param;\n\n\t\t\tif (helpers.isDate(param)) {\n\t\t\t\tconfig = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\n\t\t\t} else {\n\t\t\t\tconfig = new argumentType(param.start_date, param.end_date, param.task);\n\t\t\t\tif (param.id) {\n\t\t\t\t\tconfig.task = param;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.unit = config.unit || gantt.config.duration_unit;\n\t\t\tconfig.step = config.step || gantt.config.duration_step;\n\t\t\tconfig.start_date = config.start_date || config.start || config.date;\n\n\t\t\tif(!helpers.isValidDate(config.start_date)){\n\t\t\t\tgantt.assert(false, \"Invalid start_date argument for getDuration method\");\n\t\t\t\tthrow new Error(\"Invalid start_date argument for getDuration method\");\n\t\t\t}\n\n\t\t\tif(!helpers.isValidDate(config.end_date)){\n\t\t\t\tgantt.assert(false, \"Invalid end_date argument for getDuration method\");\n\t\t\t\tthrow new Error(\"Invalid end_date argument for getDuration method\");\n\t\t\t}\n\n\t\t\treturn config;\n\t\t},\n\n\t\tgetDurationArguments: function (start, end, unit, step) {\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\n\t\t},\n\n\t\thasDurationArguments: function (start, end, unit, step) {\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\n\t\t},\n\n\t\tcalculateEndDateArguments: function (start, duration, unit, step) {\n\t\t\tvar config = arguments[0];\n\t\t\tif (config instanceof CalculateEndDateArgument)\n\t\t\t\treturn config;\n\n\t\t\tvar processedConfig;\n\t\t\t//CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\n\t\t\tif (helpers.isDate(config)) {\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\n\t\t\t\t\targuments[0],\n\t\t\t\t\targuments[1],\n\t\t\t\t\targuments[2],\n\t\t\t\t\tundefined,\n\t\t\t\t\targuments[3],\n\t\t\t\t\tundefined,\n\t\t\t\t\targuments[4]\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\n\t\t\t\t\tconfig.start_date,\n\t\t\t\t\tconfig.duration,\n\t\t\t\t\tconfig.unit,\n\t\t\t\t\tconfig.step,\n\t\t\t\t\tconfig.task,\n\t\t\t\t\tnull,//config.id,\n\t\t\t\t\tconfig.calendar\n\t\t\t\t);\n\t\t\t}\n\t\t\tif(config.id){\n\t\t\t\tprocessedConfig.task = config;\n\n\t\t\t\t// received a task object as an argument\n\t\t\t\t// ignore 'unit' and 'step' properties in this case, since it's likely a part of data model of a task\n\t\t\t\tprocessedConfig.unit = null;\n\t\t\t\tprocessedConfig.step = null;\n\t\t\t}\n\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\t\t\tprocessedConfig.step = processedConfig.step || gantt.config.duration_step;\n\n\t\t\tif(!helpers.isValidDate(processedConfig.start_date)){\n\t\t\t\tgantt.assert(false, \"Invalid start_date argument for calculateEndDate method\");\n\t\t\t\tthrow new Error(\"Invalid start_date argument for calculateEndDate method\");\n\t\t\t}\n\n\t\t\treturn processedConfig;\n\t\t}\n\t};\n};\n\n\nmodule.exports = calendarArgumentsHelper;","function createMixin(){\n\tvar topCache = {};\n\treturn {\n\t\t_resetTopPositionHeight: function(){\n\t\t\ttopCache = {};\n\t\t},\n\n\t\t/**\n\t\t * Get top coordinate by row index (order)\n\t\t * @param {number} index\n\t\t */\n\t\tgetRowTop: function(index){\n\t\t\treturn index * this.$getConfig().row_height;\n\t\t},\n\n\t\t/**\n\t\t * Get top coordinate by item id\n\t\t * @param {*} task_id\n\t\t */\n\t\tgetItemTop: function (taskId) {\n\t\t\tif(this.$config.rowStore){\n\t\t\t\tif(topCache[taskId] !== undefined){\n\t\t\t\t\treturn topCache[taskId];\n\t\t\t\t}\n\t\t\t\tvar store = this.$config.rowStore;\n\t\t\t\tif(!store) return 0;\n\n\t\t\t\tvar itemIndex = store.getIndexById(taskId);\n\n\t\t\t\tif (itemIndex === -1 && store.getParent && store.exists(taskId)) {\n\t\t\t\t\tvar parentId = store.getParent(taskId);\n\t\t\t\t\tif (store.exists(parentId)) {\n\t\t\t\t\t\t// if task is not found in list - maybe it's parent is a split task and we should use parents index instead\n\t\t\t\t\t\tvar parent = store.getItem(parentId);\n\t\t\t\t\t\tif (this.$gantt.isSplitTask(parent)) {\n\t\t\t\t\t\t\treturn this.getRowTop(store.getIndexById(parent.id));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttopCache[taskId] = this.getRowTop(itemIndex);\n\t\t\t\treturn topCache[taskId];\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t}\n\t};\n}\n\nmodule.exports = createMixin;","export default class DurationFormatterNumeric implements IDurationFormatter {\n\tstatic create = (settings: IDurationFormatterConfig = null): IDurationFormatter => {\n\t\treturn new DurationFormatterNumeric();\n\t}\n\tcanParse = (value: string) : boolean => {\n\t\treturn !isNaN(this.parse(value));\n\t}\n\tformat = (value: number) : string => {\n\t\treturn String(value);\n\t}\n\tparse = (value: string) : number => {\n\t\treturn parseInt(value, 10);\n\t}\n}","function copyLinkIdsArray(gantt, linkIds, targetHash){\n\tfor(var i = 0; i < linkIds.length; i++) {\n\t\tif(gantt.isLinkExists(linkIds[i])){\n\t\t\ttargetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\n\t\t}\n\t}\n}\n\nfunction copyLinkIds(gantt, task, targetHash){\n\tcopyLinkIdsArray(gantt, task.$source, targetHash);\n\tcopyLinkIdsArray(gantt, task.$target, targetHash);\n}\n\nfunction getSubtreeLinks(gantt, rootId){\n\tvar res = {};\n\n\tif(gantt.isTaskExists(rootId)){\n\t\tcopyLinkIds(gantt, gantt.getTask(rootId), res);\n\t}\n\n\tgantt.eachTask(function(child){\n\t\tcopyLinkIds(gantt, child, res);\n\t}, rootId);\n\n\treturn res;\n}\n\nfunction getSubtreeTasks(gantt, rootId){\n\tvar res = {};\n\n\tgantt.eachTask(function(child){\n\t\tres[child.id] = child;\n\t}, rootId);\n\n\treturn res;\n}\n\nmodule.exports = {\n\tgetSubtreeLinks: getSubtreeLinks,\n\tgetSubtreeTasks: getSubtreeTasks\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\nvar PrimaryScaleHelper = require(\"./ui/timeline/scales\");\n\nfunction resolveConfigRange(unit, gantt){\n\tvar range = {\n\t\tstart_date:null,\n\t\tend_date:null\n\t};\n\n\tif (gantt.config.start_date && gantt.config.end_date) {\n\t\trange.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n\n\t\tvar end = new Date(gantt.config.end_date);\n\t\tvar start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\t\tif (+end != +start_interval) {\n\t\t\tend = gantt.date.add(start_interval, 1, unit);\n\t\t} else {\n\t\t\tend = start_interval;\n\t\t}\n\n\t\trange.end_date = end;\n\t}\n\treturn range;\n}\n\nfunction _scale_range_unit(gantt) {\n\tvar primaryScale = (new PrimaryScaleHelper(gantt)).primaryScale();\n\tvar unit = primaryScale.unit;\n\tvar step = primaryScale.step;\n\tif (gantt.config.scale_offset_minimal) {\n\n\t\tvar helper = new ScaleHelper(gantt);\n\t\tvar scales = [helper.primaryScale()].concat(helper.getSubScales());\n\n\t\thelper.sortScales(scales);\n\t\tunit = scales[scales.length - 1].unit;\n\t\tstep = scales[scales.length - 1].step || 1;\n\t}\n\treturn { unit:unit, step:step };\n}\n\nfunction _init_tasks_range(gantt) {\n\tvar cfg = _scale_range_unit(gantt);\n\tvar unit = cfg.unit,\n\t\tstep = cfg.step;\n\tvar range = resolveConfigRange(unit, gantt);\n\n\tif(!(range.start_date && range.end_date)){\n\t\trange = gantt.getSubtaskDates();\n\t\tif(!range.start_date || !range.end_date){\n\t\t\trange = {\n\t\t\t\tstart_date: new Date(),\n\t\t\t\tend_date: new Date()\n\t\t\t};\n\t\t}\n\n\t\trange.start_date = gantt.date[unit + \"_start\"](range.start_date);\n\t\trange.start_date = gantt.calculateEndDate({\n\t\t\tstart_date: gantt.date[unit + \"_start\"](range.start_date),\n\t\t\tduration: -1,\n\t\t\tunit: unit,\n\t\t\tstep:step\n\t\t});//one free column before first task\n\n\t\trange.end_date = gantt.date[unit + \"_start\"](range.end_date);\n\t\trange.end_date = gantt.calculateEndDate({start_date: range.end_date, duration: 2, unit: unit, step:step});//one free column after last task\n\t}\n\n\tgantt._min_date = range.start_date;\n\tgantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n\tif (gantt.config.fit_tasks) {\n\t\tvar old_min = +gantt._min_date,\n\t\t\told_max = +gantt._max_date;\n\t\t//this._init_tasks_range();\n\t\tif (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n\t\t\tgantt.render();\n\n\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nmodule.exports = function updateTasksRange(gantt){\n\t_init_tasks_range(gantt);\n\t_adjust_scales(gantt);\n};\n","var powerArray = require(\"./power_array\");\nvar utils = require(\"../../utils/utils\");\nvar helpers = require(\"../../utils/helpers\");\nvar DataStore = require(\"./datastore\");\n\n// TODO: remove workaround for mixup with es5 and ts imports\nif(DataStore.default){\n\tDataStore = DataStore.default;\n}\n\nvar TreeDataStore = function(config){\n\tDataStore.apply(this, [config]);\n\tthis._branches = {};\n\n\tthis.pull = {};\n\tthis.$initItem = config.initItem;\n\tthis.$parentProperty = config.parentProperty || \"parent\";\n\n\tif(typeof config.rootId !== \"function\"){\n\t\tthis.$getRootId = (function(val){\n\t\t\treturn function(){return val;};\n\t\t})(config.rootId || 0);\n\t}else{\n\t\tthis.$getRootId = config.rootId;\n\t}\n\n\t// TODO: replace with live reference to gantt config\n\tthis.$openInitially = config.openInitially;\n\n\tthis.visibleOrder = powerArray.$create();\n\tthis.fullOrder = powerArray.$create();\n\tthis._searchVisibleOrder = {};\n\tthis._skip_refresh = false;\n\n\tthis._ganttConfig = null;\n\tif(config.getConfig){\n\t\tthis._ganttConfig = config.getConfig();\n\t}\n\n\tthis.attachEvent(\"onFilterItem\", function(id, item){\n\n\t\tvar canOpenSplitTasks = false;\n\t\tif(this._ganttConfig){\n\t\t\tvar canOpenSplitTasks = this._ganttConfig.open_split_tasks;\n\t\t}\n\n\t\tvar open = true;\n\t\tthis.eachParent(function(parent){\n\t\t\topen = open && parent.$open && (canOpenSplitTasks || !this._isSplitItem(parent));\n\t\t}, item);\n\t\treturn !!open;\n\t});\n\n\treturn this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n\n\t\t_buildTree: function(data){\n\t\t\tvar item = null;\n\t\t\tvar rootId = this.$getRootId();\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\n\t\t\t\titem = data[i];\n\t\t\t\tthis.setParent(item, this.getParent(item) || rootId);\n\t\t\t}\n\n\t\t\t// calculating $level for each item\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\n\t\t\t\titem = data[i];\n\t\t\t\tthis._add_branch(item);\n\t\t\t\titem.$level = this.calculateItemLevel(item);\n\n\t\t\t\tif (!utils.defined(item.$open)) {\n\t\t\t\t\titem.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis._updateOrder();\n\t\t},\n\t\t_isSplitItem: function(item){\n\t\t\treturn (item.render == \"split\" && this.hasChild(item.id));\n\t\t},\n\t\tparse: function(data){\n\t\t\tthis.callEvent(\"onBeforeParse\", [data]);\n\t\t\tvar loaded = this._parseInner(data);\n\t\t\tthis._buildTree(loaded);\n\t\t\tthis.filter();\n\t\t\tthis.callEvent(\"onParse\", [loaded]);\n\t\t},\n\n\t\t_addItemInner: function(item, index){\n\n\t\t\tvar parent = this.getParent(item);\n\n\t\t\tif(!utils.defined(parent)){\n\t\t\t\tparent = this.$getRootId();\n\t\t\t\tthis.setParent(item, parent);\n\t\t\t}\n\n\t\t\tvar parentIndex = this.getIndexById(parent);\n\t\t\tvar targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n\t\t\tif(targetIndex*1 !== targetIndex){\n\t\t\t\ttargetIndex = undefined;\n\t\t\t}\n\t\t\tDataStore.prototype._addItemInner.call(this, item, targetIndex);\n\t\t\tthis.setParent(item, parent);\n\n\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\n\t\t\t\tthis._move_branch(item, item.$rendered_parent);\n\t\t\t}\n\t\t\tthis._add_branch(item, index);\n\t\t},\n\t\t_changeIdInner: function(oldId, newId){\n\t\t\tvar children = this.getChildren(oldId);\n\t\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\n\n\t\t\tDataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n\t\t\tvar parent = this.getParent(newId);\n\n\t\t\tthis._replace_branch_child(parent, oldId, newId);\n\t\t\tfor(var i = 0; i < children.length; i++){\n\t\t\t\tthis.setParent(this.getItem(children[i]), newId);\n\t\t\t}\n\n\t\t\tthis._searchVisibleOrder[newId] = visibleOrder;\n\t\t\tdelete this._branches[oldId];\n\t\t},\n\n\t\t_traverseBranches: function(code, parent){\n\t\t\tparent = parent || this.$getRootId();\n\t\t\tvar branch = this._branches[parent];\n\t\t\tif (branch) {\n\t\t\t\tfor (var i = 0; i < branch.length; i++) {\n\t\t\t\t\tvar itemId = branch[i];\n\t\t\t\t\tcode.call(this, itemId);\n\t\t\t\t\tif (this._branches[itemId])\n\t\t\t\t\t\tthis._traverseBranches(code, itemId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_updateOrder: function(code){\n\n\t\t\tthis.fullOrder = powerArray.$create();\n\t\t\tthis._traverseBranches(function(taskId){\n\t\t\t\tthis.fullOrder.push(taskId);\n\t\t\t});\n\n\t\t\tif(code)\n\t\t\t\tDataStore.prototype._updateOrder.call(this, code);\n\t\t},\n\n\t\t_removeItemInner: function(id){\n\n\t\t\tvar items = [];\n\t\t\tthis.eachItem(function(child){\n\t\t\t\titems.push(child);\n\t\t\t}, id);\n\n\t\t\titems.push(this.getItem(id));\n\n\t\t\tfor(var i = 0; i < items.length; i++){\n\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\n\t\t\t\tDataStore.prototype._removeItemInner.call(this, items[i].id);\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\n\t\t\t}\n\t\t},\n\n\t\tmove: function(sid, tindex, parent){\n\t\t\t//target id as 4th parameter\n\t\t\tvar id = arguments[3];\n\t\t\tif (id) {\n\t\t\t\tif (id === sid) return;\n\n\t\t\t\tparent = this.getParent(id);\n\t\t\t\ttindex = this.getBranchIndex(id);\n\t\t\t}\n\t\t\tif(sid == parent){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tparent = parent || this.$getRootId();\n\t\t\tvar source = this.getItem(sid);\n\t\t\tvar source_pid = this.getParent(source.id);\n\n\t\t\tvar tbranch = this.getChildren(parent);\n\n\t\t\tif (tindex == -1)\n\t\t\t\ttindex = tbranch.length + 1;\n\t\t\tif (source_pid == parent) {\n\t\t\t\tvar sindex = this.getBranchIndex(sid);\n\t\t\t\tif (sindex == tindex) return;\n\t\t\t}\n\n\t\t\tif(this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false)\n\t\t\t\treturn false;\n\n\t\t\tthis._replace_branch_child(source_pid, sid);\n\t\t\ttbranch = this.getChildren(parent);\n\n\t\t\tvar tid = tbranch[tindex];\n\t\t\tif (!tid) //adding as last element\n\t\t\t\ttbranch.push(sid);\n\t\t\telse\n\t\t\t\ttbranch = tbranch.slice(0, tindex).concat([ sid ]).concat(tbranch.slice(tindex));\n\n\t\t\tthis.setParent(source, parent);\n\t\t\tthis._branches[parent] = tbranch;\n\n\t\t\tvar diff = this.calculateItemLevel(source) - source.$level;\n\t\t\tsource.$level += diff;\n\t\t\tthis.eachItem(function(item){\n\t\t\t\titem.$level += diff;\n\t\t\t}, source.id, this);\n\n\n\t\t\tthis._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n\t\t\tthis.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n\t\t\tthis.refresh();\n\t\t},\n\n\t\tgetBranchIndex: function(id){\n\t\t\tvar branch = this.getChildren(this.getParent(id));\n\t\t\tfor (var i = 0; i < branch.length; i++)\n\t\t\t\tif (branch[i] == id)\n\t\t\t\t\treturn i;\n\n\t\t\treturn -1;\n\t\t},\n\t\thasChild: function(id){\n\t\t\treturn (utils.defined(this._branches[id]) && this._branches[id].length);\n\t\t},\n\t\tgetChildren: function(id){\n\t\t\treturn utils.defined(this._branches[id]) ? this._branches[id] : powerArray.$create();\n\t\t},\n\n\t\tisChildOf: function(childId, parentId){\n\t\t\tif (!this.exists(childId))\n\t\t\t\treturn false;\n\t\t\tif (parentId === this.$getRootId())\n\t\t\t\treturn true;\n\n\t\t\tif (!this.hasChild(parentId))\n\t\t\t\treturn false;\n\n\t\t\tvar item = this.getItem(childId);\n\t\t\tvar pid = this.getParent(childId);\n\n\t\t\tvar parent = this.getItem(parentId);\n\t\t\tif(parent.$level >= item.$level){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\twhile (item && this.exists(pid)) {\n\t\t\t\titem = this.getItem(pid);\n\n\t\t\t\tif (item && item.id == parentId)\n\t\t\t\t\treturn true;\n\t\t\t\tpid = this.getParent(item);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tgetSiblings: function(id){\n\t\t\tif(!this.exists(id)){\n\t\t\t\treturn powerArray.$create();\n\t\t\t}\n\t\t\tvar parent = this.getParent(id);\n\t\t\treturn this.getChildren(parent);\n\n\t\t},\n\t\tgetNextSibling: function(id){\n\t\t\tvar siblings = this.getSiblings(id);\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\n\t\t\t\tif(siblings[i] == id)\n\t\t\t\t\treturn siblings[i+1] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetPrevSibling: function(id){\n\t\t\tvar siblings = this.getSiblings(id);\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\n\t\t\t\tif(siblings[i] == id)\n\t\t\t\t\treturn siblings[i-1] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetParent: function(id){\n\t\t\tvar item = null;\n\t\t\tif(id.id !== undefined){\n\t\t\t\titem = id;\n\t\t\t}else{\n\t\t\t\titem = this.getItem(id);\n\t\t\t}\n\n\t\t\tvar parent;\n\t\t\tif(item){\n\t\t\t\tparent = item[this.$parentProperty];\n\t\t\t}else{\n\t\t\t\tparent = this.$getRootId();\n\t\t\t}\n\t\t\treturn parent;\n\n\t\t},\n\n\t\tclearAll: function(){\n\t\t\tthis._branches = {};\n\t\t\tDataStore.prototype.clearAll.call(this);\n\t\t},\n\n\t\tcalculateItemLevel: function(item){\n\t\t\tvar level = 0;\n\t\t\tthis.eachParent(function(){\n\t\t\t\tlevel++;\n\t\t\t}, item);\n\t\t\treturn level;\n\t\t},\n\n\t\t_setParentInner: function(item, new_pid, silent){\n\t\t\tif(!silent){\n\t\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\n\t\t\t\t\tthis._move_branch(item, item.$rendered_parent, new_pid);\n\t\t\t\t}else{\n\t\t\t\t\tthis._move_branch(item, item[this.$parentProperty], new_pid);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetParent: function(item, new_pid, silent){\n\t\t\tthis._setParentInner(item, new_pid, silent);\n\n\t\t\titem[this.$parentProperty] = new_pid;\n\t\t},\n\t\teachItem: function(code, parent){\n\t\t\tparent = parent || this.$getRootId();\n\n\n\t\t\tvar branch = this.getChildren(parent);\n\t\t\tif (branch)\n\t\t\t\tfor (var i=0; i<branch.length; i++){\n\t\t\t\t\tvar item = this.pull[branch[i]];\n\t\t\t\t\tcode.call(this, item);\n\t\t\t\t\tif (this.hasChild(item.id))\n\t\t\t\t\t\tthis.eachItem(code, item.id);\n\t\t\t\t}\n\t\t},\n\t\teachParent: function(code, startItem) {\n\t\t\tvar parentsHash = {};\n\t\t\tvar item = startItem;\n\t\t\tvar parent = this.getParent(item);\n\n\t\t\twhile (this.exists(parent)) {\n\t\t\t\tif (parentsHash[parent]) {\n\t\t\t\t\tthrow new Error(\"Invalid tasks tree. Cyclic reference has been detected on task \" + parent);\n\t\t\t\t}\n\t\t\t\tparentsHash[parent] = true;\n\t\t\t\titem = this.getItem(parent);\n\t\t\t\tcode.call(this, item);\n\t\t\t\tparent = this.getParent(item);\n\t\t\t}\n\t\t},\n\t\t_add_branch: function(item, index, parent){\n\t\t\tvar pid = parent === undefined ? this.getParent(item) : parent;\n\t\t\tif (!this.hasChild(pid))\n\t\t\t\tthis._branches[pid] = powerArray.$create();\n\t\t\tvar branch = this.getChildren(pid);\n\t\t\tvar added_already = false;\n\t\t\tfor(var i = 0, length = branch.length; i < length; i++){\n\t\t\t\tif(branch[i] == item.id){\n\t\t\t\t\tadded_already = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(!added_already){\n\t\t\t\tif(index*1 == index){\n\n\t\t\t\t\tbranch.splice(index, 0, item.id);\n\t\t\t\t}else{\n\t\t\t\t\tbranch.push(item.id);\n\t\t\t\t}\n\n\t\t\t\titem.$rendered_parent = pid;\n\t\t\t}\n\t\t},\n\t\t_move_branch: function(item, old_parent, new_parent){\n\t\t\t//this.setParent(item, new_parent);\n\t\t\t//this._sync_parent(task);\n\t\t\tthis._replace_branch_child(old_parent, item.id);\n\t\t\tif(this.exists(new_parent) || new_parent == this.$getRootId()){\n\n\t\t\t\tthis._add_branch(item, undefined, new_parent);\n\t\t\t}else{\n\t\t\t\tdelete this._branches[item.id];\n\t\t\t}\n\t\t\titem.$level = this.calculateItemLevel(item);\n\t\t\tthis.eachItem(function(child){\n\t\t\t\tchild.$level = this.calculateItemLevel(child);\n\t\t\t}, item.id);\n\t\t},\n\n\t\t_replace_branch_child: function(node, old_id, new_id){\n\t\t\tvar branch = this.getChildren(node);\n\t\t\tif (branch && node !== undefined){\n\t\t\t\tvar newbranch = powerArray.$create();\n\t\t\t\tfor (var i=0; i<branch.length; i++){\n\t\t\t\t\tif (branch[i] != old_id)\n\t\t\t\t\t\tnewbranch.push(branch[i]);\n\t\t\t\t\telse if (new_id)\n\t\t\t\t\t\tnewbranch.push(new_id);\n\t\t\t\t}\n\t\t\t\tthis._branches[node] = newbranch;\n\t\t\t}\n\n\t\t},\n\n\t\tsort: function(field, desc, parent){\n\t\t\tif (!this.exists(parent)) {\n\t\t\t\tparent = this.$getRootId();\n\t\t\t}\n\n\t\t\tif (!field) field = \"order\";\n\t\t\tvar criteria = (typeof(field) == \"string\") ? (function(a, b) {\n\t\t\t\tif (a[field] == b[field] || \n\t\t\t\t\t(helpers.isDate(a[field]) && helpers.isDate(b[field]) && a[field].valueOf() == b[field].valueOf())) \n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tvar result = a[field] > b[field];\n\t\t\t\treturn result ? 1 : -1;\n\t\t\t}) : field;\n\n\t\t\tif (desc) {\n\t\t\t\tvar original_criteria = criteria;\n\t\t\t\tcriteria = function (a, b) {\n\t\t\t\t\treturn original_criteria(b, a);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar els = this.getChildren(parent);\n\n\t\t\tif (els){\n\t\t\t\tvar temp = [];\n\t\t\t\tfor (var i = els.length - 1; i >= 0; i--)\n\t\t\t\t\ttemp[i] = this.getItem(els[i]);\n\n\t\t\t\ttemp.sort(criteria);\n\n\t\t\t\tfor (var i = 0; i < temp.length; i++) {\n\t\t\t\t\tels[i] = temp[i].id;\n\t\t\t\t\tthis.sort(field, desc, els[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfilter: function(rule){\n\t\t\tfor(var i in this.pull){\n\t\t\t\tif(this.pull[i].$rendered_parent !== this.getParent(this.pull[i])){\n\t\t\t\t\tthis._move_branch(this.pull[i], this.pull[i].$rendered_parent, this.getParent(this.pull[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn DataStore.prototype.filter.apply(this, arguments);\n\t\t},\n\n\t\topen: function(id){\n\t\t\tif(this.exists(id)){\n\t\t\t\tthis.getItem(id).$open = true;\n\t\t\t\tthis.callEvent(\"onItemOpen\", [id]);\n\t\t\t}\n\t\t},\n\n\t\tclose: function(id){\n\t\t\tif(this.exists(id)){\n\t\t\t\tthis.getItem(id).$open = false;\n\t\t\t\tthis.callEvent(\"onItemClose\", [id]);\n\t\t\t}\n\t\t},\n\n\t\tdestructor: function(){\n\t\t\tDataStore.prototype.destructor.call(this);\n\t\t\tthis._branches = null;\n\t\t}\n\t},\n\tDataStore.prototype\n);\n\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n\t$create: function(array){\n\t\treturn utils.mixin(array || [], this);\n\t},\n\t//remove element at specified position\n\t$removeAt:function(pos,len){\n\t\tif (pos>=0) this.splice(pos,(len||1));\n\t},\n\t//find element in collection and remove it\n\t$remove:function(value){\n\t\tthis.$removeAt(this.$find(value));\n\t},\n\t//add element to collection at specific position\n\t$insertAt:function(data,pos){\n\t\tif (!pos && pos!==0) \t//add to the end by default\n\t\t\tthis.push(data);\n\t\telse {\n\t\t\tvar b = this.splice(pos,(this.length-pos));\n\t\t\tthis[pos] = data;\n\t\t\tthis.push.apply(this,b); //reconstruct array without loosing this pointer\n\t\t}\n\t},\n\t//return index of element, -1 if it doesn't exists\n\t$find:function(data){\n\t\tfor (var i=0; i<this.length; i++)\n\t\t\tif (data==this[i]) return i;\n\t\treturn -1;\n\t},\n\t//execute some method for each element of array\n\t$each:function(functor,master){\n\t\tfor (var i=0; i < this.length; i++)\n\t\t\tfunctor.call((master||this),this[i]);\n\t},\n\t//create new array from source, by using results of functor\n\t$map:function(functor,master){\n\t\tfor (var i=0; i < this.length; i++)\n\t\t\tthis[i]=functor.call((master||this),this[i]);\n\t\treturn this;\n\t},\n\t$filter:function(functor, master){\n\t\tfor (var i=0; i < this.length; i++)\n\t\t\tif (!functor.call((master||this),this[i])){\n\t\t\t\tthis.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\treturn this;\n\t}\n};\n\nmodule.exports = $powerArray;","var powerArray = require(\"./power_array\");\nvar utils = require(\"../../utils/utils\");\nvar eventable = require(\"../../utils/eventable\");\n\nvar DataStore = function(config){\n\tthis.pull = {};\n\tthis.$initItem = config.initItem;\n\tthis.visibleOrder = powerArray.$create();\n\tthis.fullOrder = powerArray.$create();\n\tthis._skip_refresh = false;\n\tthis._filterRule = null;\n\tthis._searchVisibleOrder = {};\n\tthis.$config = config;\n\teventable(this);\n\treturn this;\n};\nDataStore.prototype = {\n\n\t_parseInner: function(data){\n\t\tvar item = null,\n\t\t\tloaded = [];\n\t\tfor(var i = 0, len = data.length; i< len; i++){\n\t\t\titem = data[i];\n\t\t\tif(this.$initItem){\n\t\t\t\titem = this.$initItem(utils.copy(item));\n\t\t\t}\n\t\t\tif(this.callEvent(\"onItemLoading\", [item])){\n\t\t\t\tif (!this.pull.hasOwnProperty(item.id)) {\n\t\t\t\t\tthis.fullOrder.push(item.id);\n\t\t\t\t}\n\t\t\t\tloaded.push(item);\n\t\t\t\tthis.pull[item.id] = item;\n\t\t\t}\n\t\t}\n\t\treturn loaded;\n\t},\n\tparse: function(data){\n\t\tthis.callEvent(\"onBeforeParse\", [data]);\n\t\tvar loaded = this._parseInner(data);\n\t\tthis.refresh();\n\t\tthis.callEvent(\"onParse\", [loaded]);\n\t},\n\tgetItem: function(id){\n\t\treturn this.pull[id];\n\t},\n\n\t_updateOrder: function(code){\n\t\tcode.call(this.visibleOrder);\n\t\tcode.call(this.fullOrder);\n\t},\n\tupdateItem: function(id, item){\n\t\tif (!utils.defined(item)) item = this.getItem(id);\n\n\t\tif (!this._skip_refresh) {\n\t\t\tif (this.callEvent(\"onBeforeUpdate\", [item.id, item]) === false) return false;\n\t\t}\n\t\tthis.pull[id]=item;\n\t\tif (!this._skip_refresh) {\n\t\t\tthis.callEvent(\"onAfterUpdate\", [item.id, item]);\n\t\t\tthis.callEvent(\"onStoreUpdated\", [item.id, item, \"update\"]);\n\t\t}\n\t},\n\n\t_removeItemInner: function(id){\n\t\t//clear from collections\n\t\t//this.visibleOrder.$remove(id);\n\t\tthis._updateOrder(function(){ this.$remove(id);});\n\t\tdelete this.pull[id];\n\t},\n\n\tremoveItem: function(id){\n\t\t//utils.assert(this.exists(id), \"Not existing ID in remove command\"+id);\n\n\t\tvar obj = this.getItem(id);\t//save for later event\n\t\tif (!this._skip_refresh) {\n\t\t\tif (this.callEvent(\"onBeforeDelete\", [obj.id, obj]) === false) return false;\n\t\t}\n\n\t\tthis._removeItemInner(id);\n\n\t\tif (!this._skip_refresh) {\n\t\t\tthis.filter();\n\t\t\tthis.callEvent(\"onAfterDelete\", [obj.id, obj]);\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\", [obj.id, obj, \"delete\"]);\n\t\t}\n\t},\n\n\t_addItemInner: function(item, index){\n\t\t//in case of treetable order is sent as 3rd parameter\n\t\t//var order = index;\n\n\t\tif(this.exists(item.id)){\n\t\t\tthis.silent(function(){this.updateItem(item.id, item);});\n\t\t}else{\n\t\t\tvar order = this.visibleOrder;\n\n\t\t\t//by default item is added to the end of the list\n\t\t\tvar data_size = order.length;\n\n\t\t\tif (!utils.defined(index) || index < 0)\n\t\t\t\tindex = data_size;\n\t\t\t//check to prevent too big indexes\n\t\t\tif (index > data_size){\n\t\t\t\t//dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n\t\t\t\tindex = Math.min(order.length,index);\n\t\t\t}\n\t\t}\n\n\n\t\t//gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\t\tthis.pull[item.id]=item;\n\t\tif (!this._skip_refresh){\n\t\t\tthis._updateOrder(function(){\n\t\t\t\tif(this.$find(item.id) === -1)\n\t\t\t\t\tthis.$insertAt(item.id,index);\n\t\t\t});\n\t\t}\n\t\tthis.filter();\n\t\t//order.$insertAt(item.id,index);\n\t},\n\n\n\tisVisible: function(id){\n\t\treturn this.visibleOrder.$find(id) > -1;\n\t},\n\tgetVisibleItems: function(){\n\t\treturn this.getIndexRange();\n\t},\n\n\taddItem: function(item, index){\n\t\tif (!utils.defined(item.id))\n\t\t\titem.id = utils.uid();\n\n\t\tif(this.$initItem){\n\t\t\titem = this.$initItem(item);\n\t\t}\n\n\t\tif (!this._skip_refresh){\n\t\t\tif (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n\t\t}\n\n\n\t\tthis._addItemInner(item, index);\n\n\t\tif (!this._skip_refresh){\n\t\t\tthis.callEvent(\"onAfterAdd\",[item.id, item]);\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\",[item.id,item,\"add\"]);\n\t\t}\n\t\treturn item.id;\n\t},\n\n\t_changeIdInner: function(oldId, newId){\n\t\tif(this.pull[oldId])\n\t\t\tthis.pull[newId] = this.pull[oldId];\n\n\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\n\t\tthis.pull[newId].id = newId;\n\t\tthis._updateOrder(function(){\n\t\t\tthis[this.$find(oldId)] = newId;\n\t\t});\n\t\tthis._searchVisibleOrder[newId] = visibleOrder;\n\t\tdelete this._searchVisibleOrder[oldId];\n\n\t\t//this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\t\tdelete this.pull[oldId];\n\t},\n\tchangeId: function(oldId, newId){\n\t\tthis._changeIdInner(oldId, newId);\n\n\t\tthis.callEvent(\"onIdChange\", [oldId, newId]);\n\n\t},\n\texists: function(id){\n\t\treturn !!(this.pull[id]);\n\t},\n\n\t_moveInner: function(sindex, tindex){\n\t\tvar id = this.getIdByIndex(sindex);\n\n\t\tthis._updateOrder(function(){\n\t\t\tthis.$removeAt(sindex);\n\t\t\tthis.$insertAt(id,Math.min(this.length, tindex));\n\t\t});\n\t\t//this.visibleOrder.$removeAt(sindex);\t//remove at old position\n\t\t//if (sindex<tindex) tindex--;\t//correct shift, caused by element removing\n\t\t//this.visibleOrder.$insertAt(id,Math.min(this.visibleOrder.length, tindex));\t//insert at new position\n\t},\n\n\tmove: function(sindex, tindex){\n\t\t//gantt.assert(sindex>=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n\n\t\tvar id = this.getIdByIndex(sindex);\n\t\tvar obj = this.getItem(id);\n\t\tthis._moveInner(sindex, tindex);\n\n\n\t\tif (!this._skip_refresh) {\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n\t\t}\n\t},\n\tclearAll: function(){\n\t\tthis.pull = {};\n\t\tthis.visibleOrder = powerArray.$create();\n\t\tthis.fullOrder = powerArray.$create();\n\t\tif (this._skip_refresh) return;\n\t\tthis.callEvent(\"onClearAll\",[]);\n\t\tthis.refresh();\n\t},\n\n\tsilent:function(code, master){\n\t\tthis._skip_refresh = true;\n\t\tcode.call(master||this);\n\t\tthis._skip_refresh = false;\n\t},\n\n\tarraysEqual: function (arr1, arr2) {\n\t\tif(arr1.length !== arr2.length)\n\t\t\treturn false;\n\t\tfor(var i = 0; i < arr1.length; i++) {\n\t\t\tif(arr1[i] !== arr2[i])\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\trefresh: function(id, quick){\n\t\tif (this._skip_refresh) return;\n\n\t\tvar args;\n\t\tif (id){\n\t\t\targs = [id, this.pull[id], \"paint\"];\n\t\t}else{\n\t\t\targs = [null,null,null];\n\t\t}\n\n\t\tif(this.callEvent(\"onBeforeStoreUpdate\", args) === false){\n\t\t\treturn;\n\t\t}\n\n\t\tif(id){\n\t\t\t// if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n\t\t\tif(!quick && !this._quick_refresh){\n\t\t\t\tvar oldOrder = this.visibleOrder;\n\t\t\t\tthis.filter();\n\t\t\t\tif(!this.arraysEqual(oldOrder, this.visibleOrder)){\n\t\t\t\t\tid = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else{\n\t\t\tthis.filter();\n\t\t}\n\n\t\tif (id){\n\t\t\targs = [id, this.pull[id], \"paint\"];\n\t\t}else{\n\t\t\targs = [null,null,null];\n\t\t}\n\n\t\tthis.callEvent(\"onStoreUpdated\",args);\n\t},\n\n\tcount: function(){\n\t\treturn this.fullOrder.length;\n\t},\n\tcountVisible: function(){\n\t\treturn this.visibleOrder.length;\n\t},\n\n\tsort: function(sort){},\n\n\tserialize: function(){},\n\n\teachItem: function(code){\n\t\tfor (var i=0; i<this.fullOrder.length; i++) {\n\t\t\tvar item = this.pull[this.fullOrder[i]];\n\t\t\tcode.call(this, item);\n\t\t}\n\t},\n\n\tfilter: function(rule){\n\t\tthis.callEvent(\"onBeforeFilter\", []);\n\t\tvar filteredOrder = powerArray.$create();\n\t\tthis.eachItem(function(item){\n\t\t\tif(this.callEvent(\"onFilterItem\", [item.id, item])){\n\t\t\t\tfilteredOrder.push(item.id);\n\t\t\t}\n\t\t});\n\n\t\tthis.visibleOrder = filteredOrder;\n\t\tthis._searchVisibleOrder = {};\n\t\tfor(var i = 0; i < this.visibleOrder.length; i++){\n\t\t\tthis._searchVisibleOrder[this.visibleOrder[i]] = i;\n\t\t}\n\t\tthis.callEvent(\"onFilter\", []);\n\t},\n\n\tgetIndexRange: function(from, to){\n\t\tto=Math.min((to||Infinity),this.countVisible()-1);\n\n\t\tvar ret= [];\n\t\tfor (var i=(from||0); i <= to; i++)\n\t\t\tret.push(this.getItem(this.visibleOrder[i]));\n\t\treturn ret;\n\t},\n\tgetItems: function(){\n\t\tvar res = [];\n\t\tfor(var i in this.pull){\n\t\t\tres.push(this.pull[i]);\n\t\t}\n\t/*\tfor(var i = 0; i < this.fullOrder.length; i++){\n\n\t\t}*/\n\t\treturn res;\n\t},\n\n\tgetIdByIndex: function(index){\n\t\treturn this.visibleOrder[index];\n\t},\n\tgetIndexById: function(id){\n\t\tvar res = this._searchVisibleOrder[id];\n\t\tif(res === undefined){\n\t\t\tres = -1;\n\t\t}\n\t\treturn res;\n\t},\n\t_getNullIfUndefined: function(value){\n\t\tif(value === undefined){\n\t\t\treturn null;\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t},\n\tgetFirst: function(){\n\t\treturn this._getNullIfUndefined(this.visibleOrder[0]);\n\t},\n\tgetLast: function(){\n\t\treturn this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length-1]);\n\t},\n\tgetNext: function(id){\n\t\treturn this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) + 1]);\n\t},\n\tgetPrev: function(id){\n\t\treturn this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) - 1]);\n\t},\n\tdestructor: function(){\n\t\tthis.detachAllEvents();\n\t\tthis.pull = null;\n\t\tthis.$initItem = null;\n\t\tthis.visibleOrder = null;\n\t\tthis.fullOrder = null;\n\t\tthis._skip_refresh = null;\n\t\tthis._filterRule = null;\n\t\tthis._searchVisibleOrder = null;\n\t}\n};\n\nmodule.exports = DataStore;","// shim for using process in browser\nvar process = module.exports = {};\n\n// 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}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\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 try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\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\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\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\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\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 if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\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) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function checkTimeout(host, updPerSecond){\n\tif (!updPerSecond)\n\t\treturn true;\n\t\n\tif (host._on_timeout)\n\t\treturn false;\n\t\n\tvar timeout = Math.ceil(1000/updPerSecond);\n\tif (timeout < 2) return true;\n\n\tsetTimeout(function(){\n\t\tdelete host._on_timeout;\n\t}, timeout);\n\n\thost._on_timeout = true;\n\treturn true;\n}\n\nmodule.exports = checkTimeout;","var utils = require(\"../../../utils/utils\");\n\nfunction createScope(addEvent, removeEvent) {\n\taddEvent = addEvent || utils.event;\n\tremoveEvent = removeEvent || utils.eventRemove;\n\n\tvar handlers = [];\n\n\tvar eventScope = {\n\t\tattach: function(el, event, callback, capture){\n\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\n\t\t\taddEvent(el, event, callback, capture);\n\t\t},\n\t\tdetach: function(el, event, callback, capture){\n\t\t\tremoveEvent(el, event, callback, capture);\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tvar handler = handlers[i];\n\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n\t\t\t\t\thandlers.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdetachAll: function () {\n\t\t\tvar staticArray = handlers.slice();\n\t\t\t// original handlers array can be spliced on every iteration\n\t\t\tfor (var i = 0; i < staticArray.length; i++){\n\t\t\t\tvar handler = staticArray[i];\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\n\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\n\t\t\t}\n\t\t\thandlers.splice(0, handlers.length);\n\t\t},\n\t\textend: function(){\n\t\t\treturn createScope(this.event, this.eventRemove);\n\t\t}\n\t};\n\n\treturn eventScope;\n}\n\nmodule.exports = createScope;","module.exports = function(gantt){\n\t// TODO: why eslint fails on regexp?\n\t// eslint-disable-next-line no-control-regex\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\n\n\tfunction stripHTMLLite(htmlText){\n\t\treturn (htmlText + \"\")\n\t\t\t.replace(htmlTags, \" \").\n\t\t\treplace(extraSpaces, \" \");\n\t}\n\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\n\tfunction escapeQuotes(text){\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\n\t}\n\n\tgantt._waiAria = {\n\t\tgetAttributeString: function(attr){\n\t\t\tvar attributes = [\" \"];\n\t\t\tfor(var i in attr){\n\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\n\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\n\t\t\t}\n\t\t\tattributes.push(\" \");\n\t\t\treturn attributes.join(\" \");\n\n\t\t},\n\n\t\tgetTimelineCellAttr:function(dateString){\n\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": dateString});\n\t\t},\n\n\t\t_taskCommonAttr: function(task, div){\n\n\t\t\tif(!(task.start_date && task.end_date))\n\t\t\t\treturn;\n\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n\t\t\tif(task.$dataprocessor_class){\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\n\t\t\t}\n\n\t\t\tdiv.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\");\n\t\t},\n\n\t\tsetTaskBarAttr: function(task, div){\n\t\t\tthis._taskCommonAttr(task, div);\n\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.drag_move){\n\t\t\t\tif(task.id != gantt.getState(\"tasksDnd\").drag_id){\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\n\t\t\t\t}else{\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttaskRowAttr: function(task, div){\n\n\t\t\tthis._taskCommonAttr(task, div);\n\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.order_branch){\n\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\n\t\t\t}\n\n\t\t\tdiv.setAttribute(\"role\", \"row\");\n\n\t\t\tdiv.setAttribute(\"aria-level\", task.$level);\n\n\t\t\tif(gantt.hasChild(task.id)){\n\t\t\t\tdiv.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n\t\t\t}\n\t\t},\n\n\t\tlinkAttr: function(link, div){\n\n\t\t\tvar linkTypes = gantt.config.links;\n\n\t\t\tvar toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n\t\t\tvar fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n\n\t\t\tvar content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart);\n\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(content));\n\t\t\tif(gantt.isReadonly(link)){\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\n\t\t\t}\n\t\t},\n\n\t\tgridSeparatorAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"separator\");\n\t\t},\n\n\t\tlightboxHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t},\n\n\t\tlightboxVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\tlightboxAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\n\t\t},\n\n\t\tlightboxButtonAttrString:function(buttonName){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":gantt.locale.labels[buttonName], \"tabindex\":\"0\"});\n\t\t},\n\n\t\tlightboxHeader: function(div, headerText){\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\n\t\t},\n\n\t\tlightboxSelectAttrString: function(time_option){\n\t\t\tvar label = \"\";\n\n\t\t\tswitch (time_option) {\n\t\t\t\tcase \"%Y\":\n\t\t\t\t\tlabel = gantt.locale.labels.years;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%m\":\n\t\t\t\t\tlabel = gantt.locale.labels.months;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%d\":\n\t\t\t\t\tlabel = gantt.locale.labels.days;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%H:%i\":\n\t\t\t\t\tlabel = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": label});\n\t\t},\n\n\t\tlightboxDurationInputAttrString: function(section){\n\t\t\treturn this.getAttributeString({\"aria-label\": gantt.locale.labels.column_duration, \"aria-valuemin\": \"0\"});\n\t\t},\n\n\t\tgridAttrString: function(){\n\t\t\treturn [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n\t\t},\n\n\n\t\tgridScaleRowAttrString: function(){\n\t\t\treturn \"role='row'\";\n\t\t},\n\n\t\tgridScaleCellAttrString: function(column, label){\n\t\t\tvar attrs = \"\";\n\t\t\tif(column.name == \"add\"){\n\t\t\t\tattrs = this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\n\t\t\t}else{\n\n\t\t\t\tvar attributes = {\n\t\t\t\t\t\"role\":\"columnheader\",\n\t\t\t\t\t\"aria-label\": label\n\t\t\t\t};\n\n\t\t\t\tif(gantt._sort && gantt._sort.name == column.name){\n\t\t\t\t\tif(gantt._sort.direction == \"asc\"){\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"ascending\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"descending\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tattrs = this.getAttributeString(attributes);\n\t\t\t}\n\t\t\treturn attrs;\n\t\t},\n\n\t\tgridDataAttrString: function(){\n\t\t\treturn \"role='rowgroup'\";\n\t\t},\n\n\t\tgridCellAttrString: function(column, textValue, task){\n\t\t\tvar attributes = {\"role\":\"gridcell\", \"aria-label\": textValue};\n\t\t\tif(!column.editor || gantt.isReadonly(task)){\n\t\t\t\tattributes[\"aria-readonly\"] = true;\n\t\t\t}\n\n\t\t\treturn this.getAttributeString(attributes);\n\t\t},\n\n\t\tgridAddButtonAttrString: function(column){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\n\t\t},\n\n\t\tmessageButtonAttrString: function(buttonLabel){\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\n\t\t},\n\n\t\tmessageInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tmessageModalAttr: function(div, uid){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tif(uid){\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\n\t\t\t}\n\n\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tquickInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t},\n\n\t\tquickInfoHeaderAttrString: function(){\n\t\t\treturn \" role='heading' \";\n\t\t},\n\n\t\tquickInfoHeader: function(div, header){\n\t\t\tdiv.setAttribute(\"aria-label\", header);\n\t\t},\n\n\t\tquickInfoButtonAttrString: function(label){\n\t\t\treturn gantt._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\n\t\t},\n\n\t\ttooltipAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\n\t\t},\n\n\t\ttooltipVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\ttooltipHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t}\n\t};\n\n\tfunction isDisabled(){\n\t\treturn !gantt.config.wai_aria_attributes;\n\t}\n\n\tfor(var i in gantt._waiAria){\n\t\tgantt._waiAria[i] = (function(payload){\n\t\t\treturn function(){\n\t\t\t\tif(isDisabled()){\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t\treturn payload.apply(this, arguments);\n\t\t\t};\n\t\t})(gantt._waiAria[i]);\n\t}\n\n\n};","module.exports = function(gantt) {\n\n\tgantt._extend_to_optional = function (lightbox_block) {\n\n\t\tvar duration = lightbox_block;\n\t\tvar optional_time = {\n\t\t\trender: duration.render,\n\t\t\tfocus: duration.focus,\n\t\t\tset_value: function (node, value, task, section) {\n\t\t\t\tvar mapping = gantt._resolve_default_mapping(section);\n\t\t\t\tif (!task[mapping.start_date] || (mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task))) {\n\t\t\t\t\toptional_time.disable(node, section);\n\t\t\t\t\tvar val = {};\n\n\t\t\t\t\tfor (var i in mapping) {\n\t\t\t\t\t\t//take default values from the time control from task start/end dates\n\t\t\t\t\t\tval[mapping[i]] = task[i];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, val, section);//set default value\n\t\t\t\t} else {\n\t\t\t\t\toptional_time.enable(node, section);\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, task, section);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget_value: function (node, task, section) {\n\t\t\t\tif (section.disabled) {\n\t\t\t\t\treturn {start_date: null};\n\t\t\t\t} else {\n\t\t\t\t\treturn duration.get_value.call(gantt, node, task, section);\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdate_block: function (node, section) {\n\t\t\t\tgantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n\t\t\t\tnode.style.display = section.disabled ? \"none\" : \"block\";\n\n\t\t\t\tif (section.button) {\n\t\t\t\t\tvar button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n\t\t\t\t\t\tlabels = gantt.locale.labels;\n\n\t\t\t\t\tvar button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n\n\t\t\t\t\tbutton.innerHTML = button_text;\n\t\t\t\t}\n\t\t\t\tgantt.resizeLightbox();\n\t\t\t},\n\t\t\tdisable: function (node, section) {\n\t\t\t\tsection.disabled = true;\n\t\t\t\toptional_time.update_block(node, section);\n\n\t\t\t},\n\t\t\tenable: function (node, section) {\n\t\t\t\tsection.disabled = false;\n\t\t\t\toptional_time.update_block(node, section);\n\t\t\t},\n\t\t\tbutton_click: function (index, el, section, container) {\n\t\t\t\tif (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar config = gantt._get_typed_lightbox_config()[index];\n\t\t\t\tif (config.disabled) {\n\t\t\t\t\toptional_time.enable(container, config);\n\t\t\t\t} else {\n\t\t\t\t\toptional_time.disable(container, config);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn optional_time;\n\t};\n\n\tgantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n\tgantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./select_control\")(gantt);\n\n\tfunction TypeselectControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(TypeselectControl, _super);\n\n\tTypeselectControl.prototype.render = function(sns) {\n\t\tvar types = gantt.config.types,\n\t\t\tlocale = gantt.locale.labels,\n\t\t\toptions = [];\n\n\t\tvar filter = sns.filter || function (typeKey, typeValue) {\n\t\t\tif (!types.placeholder || typeValue !== types.placeholder) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t\tfor (var i in types) {\n\t\t\tif (!filter(i, types[i]) === false) {\n\t\t\t\toptions.push({ key: types[i], label: locale[\"type_\" + i] });\n\t\t\t}\n\t\t}\n\t\tsns.options = options;\n\n\t\tvar oldOnChange = sns.onchange;\n\t\tsns.onchange = function () {\n\t\t\tgantt.changeLightboxType(this.value);\n\t\t\tif (typeof oldOnChange == 'function') {\n\t\t\t\toldOnChange.apply(this, arguments);\n\t\t\t}\n\t\t};\n\n\t\treturn _super.prototype.render.apply(this, arguments);\n\t};\n\n\treturn TypeselectControl;\n};\n","var __extends = require(\"../../../../utils/extends\");\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction ConstraintControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(ConstraintControl, _super);\n\n\tfunction isNonTimedConstraint(value) {\n\t\tif (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction toggleTimeSelect(timeSelects, typeValue) {\n\t\tvar isNonTimed = isNonTimedConstraint(typeValue);\n\t\tfor (var i = 0; i < timeSelects.length; i++) {\n\t\t\ttimeSelects[i].disabled = isNonTimed;\n\t\t}\n\t}\n\n\tConstraintControl.prototype.render = function (sns) {\n\t\tvar height = (sns.height || 30) + \"px\";\n\t\tvar html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n\n\t\tvar options = [];\n\t\tfor (var i in gantt.config.constraint_types) {\n\t\t\toptions.push({ key: gantt.config.constraint_types[i], label: gantt.locale.labels[gantt.config.constraint_types[i]] });\n\t\t}\n\n\t\tsns.options = sns.options || options;\n\n\t\thtml += \"<span data-constraint-type-select>\" + htmlHelpers.getHtmlSelect(sns.options, [{ key: \"data-type\", value: \"constraint-type\" }]) + \"</span>\";\n\n\t\tvar timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\n\t\thtml += \"<label data-constraint-time-select>\" + timeLabel + \": \" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</label>\";\n\n\t\thtml += \"</div>\";\n\t\treturn html;\n\t};\n\n\tConstraintControl.prototype.set_value = function (node, value, task, config) {\n\t\tvar typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n\t\tvar timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n\t\tvar map = config._time_format_order;\n\n\t\tvar mapping = gantt._resolve_default_mapping(config);\n\n\t\tif (!typeSelect._eventsInitialized) {\n\t\t\ttypeSelect.addEventListener(\"change\", function (e) {\n\t\t\t\ttoggleTimeSelect(timeSelects, e.target.value);\n\t\t\t});\n\t\t\ttypeSelect._eventsInitialized = true;\n\t\t}\n\n\t\tvar constraintDate = task[mapping.constraint_date] || new Date();\n\t\tgantt.form_blocks._fill_lightbox_select(timeSelects, 0, constraintDate, map, config);\n\n\t\tvar constraintType = task[mapping.constraint_type] || gantt.getConstraintType(task);\n\t\ttypeSelect.value = constraintType;\n\t\ttoggleTimeSelect(timeSelects, constraintType);\n\t};\n\n\tConstraintControl.prototype.get_value = function (node, task, config) {\n\t\tvar typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n\t\tvar timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n\n\t\tvar constraintType = typeSelect.value;\n\t\tvar constraintDate = null;\n\t\tif (!isNonTimedConstraint(constraintType)) {\n\t\t\tconstraintDate = gantt.form_blocks.getTimePickerValue(timeSelects, config);\n\t\t}\n\n\t\treturn {\n\t\t\tconstraint_type: constraintType,\n\t\t\tconstraint_date: constraintDate\n\t\t};\n\t};\n\n\tConstraintControl.prototype.focus = function (node) {\n\t\tgantt._focus(node.querySelector(\"select\"));\n\t};\n\n\treturn ConstraintControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./select_control\")(gantt);\n\n\tfunction ParentControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\n\t\treturn self; \n\t}\n\n\t__extends(ParentControl, _super);\n\n\n\tParentControl.prototype.render = function(sns) {\n\t\treturn _display(sns, false);\n\t};\n\n\tParentControl.prototype.set_value = function(node, value, ev, config) {\n\t\t// GS-1051. If the value is `0`, the set_value function in the select control won't select \n\t\t// the first child because (0 || '') = '';\n\t\tif (value === 0) value = \"0\";\n\n\t\tvar tmpDom = document.createElement(\"div\");\n\t\ttmpDom.innerHTML = _display(config, ev.id);\n\t\tvar newOptions = tmpDom.removeChild(tmpDom.firstChild);\n\t\tnode.onselect = null;\n\t\tnode.parentNode.replaceChild(newOptions, node);\n\n\t\treturn gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\n\t};\n\n\tfunction _display(config, item_id) {\n\t\tvar tasks = [],\n\t\t\toptions = [];\n\t\tif (item_id) {\n\t\t\ttasks = gantt.getTaskByTime();\n\t\t\tif (config.allow_root) {\n\t\t\t\ttasks.unshift({id: gantt.config.root_id, text: config.root_label || \"\"});\n\t\t\t}\n\t\t\ttasks = _filter(tasks, config, item_id);\n\t\t\tif (config.sort) {\n\t\t\t\ttasks.sort(config.sort);\n\t\t\t}\n\t\t}\n\t\tvar text = config.template || gantt.templates.task_text;\n\t\tfor (var i = 0; i < tasks.length; i++) {\n\t\t\tvar label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\n\t\t\tif (label === undefined) {\n\t\t\t\tlabel = \"\";\n\t\t\t}\n\t\t\toptions.push({\n\t\t\t\tkey: tasks[i].id,\n\t\t\t\tlabel: label\n\t\t\t});\n\t\t}\n\t\tconfig.options = options;\n\t\tconfig.map_to = config.map_to || \"parent\";\n\t\treturn gantt.form_blocks.select.render.apply(this, arguments);\n\t}\n\n\tfunction _filter(options, config, item_id) {\n\t\tvar filter = config.filter || function() {\n\t\t\treturn true;\n\t\t};\n\n\t\toptions = options.slice(0);\n\n\t\tfor (var i = 0; i < options.length; i++) {\n\t\t\tvar task = options[i];\n\t\t\tif (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\n\t\t\t\toptions.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\treturn options;\n\t}\n\treturn ParentControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar DurationFormatterNumeric = require(\"../../../common/duration_formatter_numeric\").default;\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction DurationControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\n\t\treturn self; \n\t}\n\n\tfunction getFormatter(config) {\n\t\treturn config.formatter || new DurationFormatterNumeric();\n\t}\n\n\t__extends(DurationControl, _super);\n\n\tDurationControl.prototype.render = function(sns) {\n\t\tvar time = \"<div class='gantt_time_selects'>\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</div>\";\n\t\tvar label = \" \"+ gantt.locale.labels[gantt.config.duration_unit + \"s\"] +\" \";\n\t\tvar singleDate = sns.single_date ? \" style='display:none'\" : \"\";\n\t\tvar readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\n\t\tvar ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\n\n\t\tvar durationInputClass = \"gantt_duration_value\";\n\t\tif(sns.formatter) {\n\t\t\tlabel = \"\";\n\t\t\tdurationInputClass += \" gantt_duration_value_formatted\" ;\n\t\t}\n\n\t\tvar duration = \"<div class='gantt_duration' \" + singleDate + \">\" +\n\t\t\t\"<input type='button' class='gantt_duration_dec' value='−'\" + readonly + \">\" +\n\t\t\t\"<input type='text' value='5days' class='\"+durationInputClass+\"'\" + readonly + \" \" + ariaAttr + \">\" +\n\t\t\t\"<input type='button' class='gantt_duration_inc' value='+'\" + readonly + \">\"+label+\"<span></span>\" +\n\t\t\t\"</div>\";\n\t\tvar html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;' class='gantt_section_time'>\" + time + \" \" + duration + \"</div>\";\n\t\treturn html;\n\t};\n\n\tDurationControl.prototype.set_value = function(node, value, ev, config) {\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar inps = node.getElementsByTagName(\"input\");\n\t\tvar duration = inps[1];\n\t\tvar btns = [inps[0], inps[2]];\n\t\tvar endspan = node.getElementsByTagName(\"span\")[0];\n\t\tvar map = config._time_format_order;\n\t\tvar mapping;\n\t\tvar start_date;\n\t\tvar end_date;\n\t\tvar duration_val;\n\n\t\tfunction _calc_date() {\n\t\t\tvar start_date = _getStartDate.call(gantt, node, config);\n\t\t\tvar duration = _getDuration.call(gantt, node, config);\n\t\t\tvar end_date = gantt.calculateEndDate({start_date: start_date, duration: duration, task: ev});\n\n\t\t\tvar template = gantt.templates.task_end_date || gantt.templates.task_date;\n\t\t\tendspan.innerHTML = template(end_date);\n\t\t}\n\n\t\tfunction _change_duration(step) {\n\t\t\tvar value = duration.value;\n\n\t\t\tvalue = getFormatter(config).parse(value);\n\t\t\tif (window.isNaN(value))\n\t\t\t\tvalue = 0;\n\t\t\tvalue += step;\n\t\t\tif (value < 1) value = 1;\n\t\t\tduration.value = getFormatter(config).format(value);\n\t\t\t_calc_date();\n\t\t}\n\n\t\tbtns[0].onclick = gantt.bind(function() {\n\t\t\t_change_duration(-1 * gantt.config.duration_step);\n\t\t}, this);\n\t\tbtns[1].onclick = gantt.bind(function() {\n\t\t\t_change_duration(1 * gantt.config.duration_step);\n\t\t}, this);\n\t\ts[0].onchange = _calc_date;\n\t\ts[1].onchange = _calc_date;\n\t\ts[2].onchange = _calc_date;\n\t\tif (s[3]) s[3].onchange = _calc_date;\n\n\t\tduration.onkeydown = gantt.bind(function(e) {\n\t\t\tvar code; \n\n\t\t\te = e || window.event;\n\t\t\tcode = (e.charCode || e.keyCode || e.which);\n\t\t\t\n\t\t\tif (code == gantt.constants.KEY_CODES.DOWN) {\n\t\t\t\t_change_duration(-1 * gantt.config.duration_step);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (code == gantt.constants.KEY_CODES.UP) {\n\t\t\t\t_change_duration(1 * gantt.config.duration_step);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\twindow.setTimeout(_calc_date, 1);\n\t\t}, this);\n\n\t\tduration.onchange = gantt.bind(_calc_date, this);\n\n\t\tmapping = gantt._resolve_default_mapping(config);\n\t\tif (typeof(mapping) === \"string\") mapping = {start_date: mapping};\n\n\t\tstart_date = ev[mapping.start_date] || new Date();\n\t\tend_date = ev[mapping.end_date] || gantt.calculateEndDate({\n\t\t\tstart_date: start_date,\n\t\t\tduration: 1,\n\t\t\ttask: ev\n\t\t});\n\t\tduration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\n\t\t\tstart_date: start_date,\n\t\t\tend_date: end_date,\n\t\t\ttask: ev\n\t\t});\n\t\tduration_val = getFormatter(config).format(duration_val);\n\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, config);\n\t\tduration.value = duration_val;\n\t\t_calc_date();\n\t};\n\n\tDurationControl.prototype.get_value = function(node, ev, config) {\n\t\tvar startDate = _getStartDate(node, config);\n\t\tvar duration = _getDuration(node, config);\n\t\tvar endDate = gantt.calculateEndDate({start_date: startDate, duration: duration, task: ev});\n\n\t\tif (typeof gantt._resolve_default_mapping(config) == \"string\") {\n\t\t\treturn startDate;\n\t\t}\n\n\t\treturn {\n\t\t\tstart_date: startDate,\n\t\t\tend_date: endDate,\n\t\t\tduration: duration\n\t\t};\n\t};\n\n\tDurationControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\n\t};\n\n\n\tfunction _getStartDate(node, config) {\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\t\tvar hours = 0;\n\t\tvar minutes = 0;\n\n\t\tif (gantt.defined(map[3])) {\n\t\t\tvar input = s[map[3]];\n\t\t\tvar time = parseInt(input.value, 10);\n\t\t\tif (isNaN(time) && input.hasAttribute(\"data-value\")) {\n\t\t\t\ttime = parseInt(input.getAttribute(\"data-value\"), 10);\n\t\t\t}\n\n\t\t\thours = Math.floor(time / 60);\n\t\t\tminutes = time % 60;\n\t\t}\n\t\treturn new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\n\t}\n\n\tfunction _getDuration(node, config) {\n\t\tvar duration = node.getElementsByTagName(\"input\")[1];\n\n\t\tduration = getFormatter(config).parse(duration.value);\n\t\tif (!duration || window.isNaN(duration)) duration = 1;\n\t\tif (duration < 0) duration *= -1;\n\t\treturn duration;\n\t}\n\n\treturn DurationControl; \n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction RadioControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(RadioControl, _super);\n\n\tRadioControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n\t\tif (sns.options && sns.options.length) {\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\n\t\t\t\thtml += \"<label><input type='radio' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n\t\t\t}\n\t\t}\n\n\t\thtml += \"</div>\";\n\t\treturn html;\n\t};\n\n\tRadioControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar radio;\n\n\t\tif (!sns.options || !sns.options.length) return;\n\n\t\tradio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") ||\n\t\t\t\tnode.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\n\n\t\tif (!radio) return;\n\n\t\tif (!node._dhx_onchange && sns.onchange) {\n\t\t\tnode.onchange = sns.onchange;\n\t\t\tnode._dhx_onchange = true;\n\t\t}\n\n\t\tradio.checked = true;\n\t};\n\n\tRadioControl.prototype.get_value = function(node, ev) {\n\t\tvar result = node.querySelector(\"input[type=radio]:checked\");\n\n\t\treturn result ? result.value : \"\";\n\t};\n\n\tRadioControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\"input[type=radio]\"));\n\t};\n\n\treturn RadioControl;\n};","var helpers = require(\"../../../../utils/helpers\");\nvar __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction CheckboxControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(CheckboxControl, _super);\n\n\tCheckboxControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n\t\tif (sns.options && sns.options.length) {\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\n\t\t\t\thtml += \"<label><input type='checkbox' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n\t\t\t}\n\t\t}\n\t\thtml += \"</div>\";\n\t\treturn html;\n\t};\n\n\tCheckboxControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\n\n\t\tif (!node._dhx_onchange && sns.onchange) {\n\t\t\tnode.onchange = sns.onchange;\n\t\t\tnode._dhx_onchange = true;\n\t\t}\n\n\t\thelpers.forEach(checkboxes, function(entry) {\n\t\t\tentry.checked = value ? value.indexOf(entry.value) >= 0 : false;\n\t\t});\n\t};\n\n\tCheckboxControl.prototype.get_value = function(node) {\n\t\treturn helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function(entry) {\n\t\t\treturn entry.value;\n\t\t});\n\t};\n\n\tCheckboxControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\"input[type=checkbox]\"));\n\t};\n\n\treturn CheckboxControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TimeControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(TimeControl, _super);\n\n\tTimeControl.prototype.render = function (sns) {\n\t\tvar time = gantt.form_blocks.getTimePicker.call(this, sns);\n\t\tvar html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;text-align:center;' class='gantt_section_time'>\";\n\t\thtml += time;\n\n\t\tif (sns.single_date) {\n\t\t\ttime = gantt.form_blocks.getTimePicker.call(this, sns, true);\n\t\t\thtml += \"<span></span>\";\n\t\t} else {\n\t\t\thtml += \"<span style='font-weight:normal; font-size:10pt;'> – </span>\";\n\t\t}\n\n\t\thtml += time;\n\t\thtml += \"</div>\";\n\t\treturn html;\n\t};\n\n\tTimeControl.prototype.set_value = function (node, value, ev, config) {\n\t\tvar cfg = config;\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\n\t\tif (cfg.auto_end_date) {\n\t\t\tvar _update_lightbox_select = function () {\n\t\t\t\tstart_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\n\t\t\t\tend_date = gantt.calculateEndDate({ start_date: start_date, duration: 1, task: ev });\n\t\t\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n\t\t\t};\n\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\ts[i].onchange = _update_lightbox_select;\n\t\t\t}\n\t\t}\n\n\t\tvar mapping = gantt._resolve_default_mapping(config);\n\n\t\tif (typeof (mapping) === \"string\") mapping = { start_date: mapping };\n\n\t\tvar start_date = ev[mapping.start_date] || new Date();\n\t\tvar end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n\t\t\tstart_date: start_date,\n\t\t\tduration: 1,\n\t\t\ttask: ev\n\t\t});\n\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n\t};\n\n\tTimeControl.prototype.get_value = function (node, ev, config) {\n\t\tvar selects = node.getElementsByTagName(\"select\");\n\t\tvar startDate;\n\t\tvar map = config._time_format_order;\n\t\tfunction _getEndDate(selects, map, startDate) {\n\t\t\tvar endDate = gantt.form_blocks.getTimePickerValue(selects, config, map.size);\n\n\t\t\tif (endDate <= startDate) {\n\t\t\t\treturn gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\n\t\t\t}\n\t\t\treturn endDate;\n\t\t}\n\n\t\tstartDate = gantt.form_blocks.getTimePickerValue(selects, config);\n\n\t\tif (typeof gantt._resolve_default_mapping(config) === \"string\") {\n\t\t\treturn startDate;\n\t\t}\n\n\t\treturn {\n\t\t\tstart_date: startDate,\n\t\t\tend_date: _getEndDate(selects, map, startDate)\n\t\t};\n\t};\n\n\tTimeControl.prototype.focus = function (node) {\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\n\t};\n\n\treturn TimeControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TextareaControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(TextareaControl, _super);\n\n\tTextareaControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"130\") + \"px\";\n\t\treturn \"<div class='gantt_cal_ltext' style='height:\" + height + \";'><textarea></textarea></div>\";\n\t};\n\n\tTextareaControl.prototype.set_value = function(node, value) {\n\t\tgantt.form_blocks.textarea._get_input(node).value = value || \"\";\n\t};\n\n\tTextareaControl.prototype.get_value = function(node) {\n\t\treturn gantt.form_blocks.textarea._get_input(node).value;\n\t};\n\n\tTextareaControl.prototype.focus = function(node) {\n\t\tvar a = gantt.form_blocks.textarea._get_input(node);\n\t\tgantt._focus(a, true);\n\t};\n\n\tTextareaControl.prototype._get_input = function(node) {\n\t\treturn node.querySelector(\"textarea\");\n\t};\n\n\treturn TextareaControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TemplateControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\t\treturn self; \n\t}\n\n\t__extends(TemplateControl, _super);\n\n\n\tTemplateControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"30\") + \"px\";\n\t\treturn \"<div class='gantt_cal_ltext gantt_cal_template' style='height:\" + height + \";'></div>\";\n\t};\n\n\tTemplateControl.prototype.set_value = function(node, value) {\n\t\tnode.innerHTML = value || \"\";\n\t};\n\n\tTemplateControl.prototype.get_value = function(node) {\n\t\treturn node.innerHTML || \"\";\n\t};\n\n\tTemplateControl.prototype.focus = function() {};\n\n\treturn TemplateControl;\n};","module.exports = function (gantt) {\n\tvar domHelpers = require(\"../utils/dom_helpers\");\n\tvar helpers = require(\"../../../utils/helpers\");\n\n\tvar TemplateControl = require(\"./controls/template_control\")(gantt);\n\tvar TextareaControl = require(\"./controls/textarea_control\")(gantt);\n\tvar TimeControl = require(\"./controls/time_control\")(gantt);\n\tvar SelectControl = require(\"./controls/select_control\")(gantt);\n\tvar CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\n\tvar RadioControl = require(\"./controls/radio_control\")(gantt);\n\tvar DurationControl = require(\"./controls/duration_control\")(gantt);\n\tvar ParentControl = require(\"./controls/parent_control\")(gantt);\n\tvar ResourcesControl = require(\"./controls/resources_control\")(gantt);\n\tvar ConstraintControl = require(\"./controls/constraint_control\")(gantt);\n\tvar TypeselectControl = require(\"./controls/typeselect_control\")(gantt);\n\n\tgantt._lightbox_methods = {};\n\tgantt._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>\";\n\n\n\t//TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\tvar state = gantt.$services.getService(\"state\");\n\tstate.registerProvider(\"lightbox\", function () {\n\t\treturn {\n\t\t\tlightbox: gantt._lightbox_id\n\t\t};\n\t});\n\n\tgantt.showLightbox = function (id) {\n\t\tif (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n\n\t\tvar task = this.getTask(id);\n\n\t\tvar box = this.getLightbox(this.getTaskType(task.type));\n\t\tthis._center_lightbox(box);\n\t\tthis.showCover();\n\t\tthis._fill_lightbox(id, box);\n\n\t\tthis._waiAria.lightboxVisibleAttr(box);\n\n\t\tthis.callEvent(\"onLightbox\", [id]);\n\t};\n\n\tfunction _is_chart_visible(gantt) {\n\t\tvar timeline = gantt.$ui.getView(\"timeline\");\n\t\tif (timeline && timeline.isVisible()) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tgantt._get_timepicker_step = function () {\n\t\tif (this.config.round_dnd_dates) {\n\t\t\tvar step;\n\t\t\tif (_is_chart_visible(this)) {\n\t\t\t\tvar scale = gantt.getScale();\n\t\t\t\tstep = (helpers.getSecondsInUnit(scale.unit) * scale.step) / 60;//timepicker step is measured in minutes\n\t\t\t}\n\n\t\t\tif (!step || step >= 60 * 24) {\n\t\t\t\tstep = this.config.time_step;\n\t\t\t}\n\t\t\treturn step;\n\t\t}\n\t\treturn this.config.time_step;\n\t};\n\tgantt.getLabel = function (property, key) {\n\t\tvar sections = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < sections.length; i++) {\n\t\t\tif (sections[i].map_to == property) {\n\t\t\t\tvar options = sections[i].options;\n\t\t\t\tfor (var j = 0; j < options.length; j++) {\n\t\t\t\t\tif (options[j].key == key) {\n\t\t\t\t\t\treturn options[j].label;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tgantt.updateCollection = function (list_name, collection) {\n\t\tcollection = collection.slice(0);\n\t\tvar list = gantt.serverList(list_name);\n\t\tif (!list) return false;\n\t\tlist.splice(0, list.length);\n\t\tlist.push.apply(list, collection || []);\n\t\tgantt.resetLightbox();\n\t};\n\tgantt.getLightboxType = function () {\n\t\treturn this.getTaskType(this._lightbox_type);\n\t};\n\tgantt.getLightbox = function (type) {\n\t\tvar lightboxDiv;\n\t\tvar fullWidth;\n\t\tvar html;\n\t\tvar sns;\n\t\tvar ds;\n\t\tvar classNames = \"\";\n\n\t\tif (type === undefined)\n\t\t\ttype = this.getLightboxType();\n\n\t\tif (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n\t\t\tthis._lightbox_type = this.getTaskType(type);\n\t\t\tlightboxDiv = document.createElement(\"div\");\n\t\t\tclassNames = \"gantt_cal_light\";\n\t\t\tfullWidth = this._is_lightbox_timepicker();\n\n\t\t\tif (gantt.config.wide_form || fullWidth)\n\t\t\t\tclassNames += \" gantt_cal_light_wide\";\n\n\t\t\tif (fullWidth) {\n\t\t\t\tgantt.config.wide_form = true;\n\t\t\t\tclassNames += \" gantt_cal_light_full\";\n\t\t\t}\n\n\t\t\tlightboxDiv.className = classNames;\n\n\t\t\tlightboxDiv.style.visibility = \"hidden\";\n\t\t\thtml = this._lightbox_template;\n\n\t\t\thtml += getHtmlButtons(this.config.buttons_left);\n\t\t\thtml += getHtmlButtons(this.config.buttons_right, true);\n\n\t\t\tlightboxDiv.innerHTML = html;\n\n\t\t\tgantt._waiAria.lightboxAttr(lightboxDiv);\n\n\t\t\tif (gantt.config.drag_lightbox) {\n\t\t\t\tlightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\t\t\t\tlightboxDiv.firstChild.onselectstart = function () {\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\t\t\t\tlightboxDiv.firstChild.style.cursor = \"pointer\";\n\t\t\t\tgantt._init_dnd_events();\n\t\t\t}\n\n\t\t\tdocument.body.insertBefore(lightboxDiv, document.body.firstChild);\n\t\t\tthis._lightbox = lightboxDiv;\n\n\t\t\tsns = this._get_typed_lightbox_config(type);\n\t\t\thtml = this._render_sections(sns);\n\n\t\t\tds = lightboxDiv.querySelector(\"div.gantt_cal_larea\");\n\t\t\t\n\t\t\t//GS-1131. If gantt_cal_larea is displayed, Firefox renders buttons incorrectly;\n\t\t\tvar backup_overflow = ds.style.overflow;\n\t\t\tds.style.overflow = 'hidden';\n\n\t\t\tds.innerHTML = html;\n\n\t\t\t\n\n\t\t\tbindLabelsToInputs(sns);\n\n\t\t\t//sizes\n\t\t\tthis.resizeLightbox();\n\n\t\t\tds.style.overflow = backup_overflow;\n\n\t\t\tthis._init_lightbox_events(this);\n\t\t\tlightboxDiv.style.display = \"none\";\n\t\t\tlightboxDiv.style.visibility = \"visible\";\n\t\t}\n\t\treturn this._lightbox;\n\t};\n\n\tgantt._render_sections = function (sns) {\n\t\tvar html = \"\";\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar block = this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue; //ignore incorrect blocks\n\t\t\tsns[i].id = \"area_\" + this.uid();\n\n\t\t\tvar display = sns[i].hidden ? \" style='display:none'\" : \"\";\n\t\t\tvar button = \"\";\n\t\t\tif (sns[i].button) {\n\t\t\t\tbutton = \"<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\t\t\t}\n\t\t\tif (this.config.wide_form) {\n\t\t\t\thtml += \"<div class='gantt_wrap_section' \" + display + \">\";\n\t\t\t}\n\t\t\thtml += \"<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\t\t\thtml += \"</div>\";\n\t\t}\n\t\treturn html;\n\t};\n\n\n\tgantt.resizeLightbox = function () {\n\t\tif (!this._lightbox) return;\n\n\t\tvar con = this._lightbox.querySelector(\".gantt_cal_larea\");\n\t\tcon.style.height = \"0px\";\n\t\tcon.style.height = con.scrollHeight + \"px\";\n\t\tthis._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n\t\tcon.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n\t};\n\n\tgantt._center_lightbox = function (box) {\n\t\tif (box) {\n\t\t\tbox.style.display = \"block\";\n\n\t\t\tvar scroll_top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tvar scroll_left = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;\n\n\t\t\tvar view_height = window.innerHeight || document.documentElement.clientHeight;\n\n\t\t\tif (scroll_top) // if vertical scroll on window\n\t\t\t\tbox.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";\n\t\t\telse // vertical scroll on body\n\t\t\t\tbox.style.top = Math.round(Math.max(((view_height - box.offsetHeight) / 2), 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n\n\t\t\t// not quite accurate but used for compatibility reasons\n\t\t\tif (document.documentElement.scrollWidth > document.body.offsetWidth) // if horizontal scroll on the window\n\t\t\t\tbox.style.left = Math.round(scroll_left + (document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n\t\t\telse // horizontal scroll on the body\n\t\t\t\tbox.style.left = Math.round((document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n\t\t}\n\t};\n\tgantt.showCover = function () {\n\t\tif (this._cover) return;\n\n\t\tthis._cover = document.createElement(\"DIV\");\n\t\tthis._cover.className = \"gantt_cal_cover\";\n\n\t\tdocument.body.appendChild(this._cover);\n\t};\n\n\tgantt.event(window, \"deviceorientation\", function(){\n\t\tif(gantt.getState().lightbox){\n\t\t\tgantt._center_lightbox(gantt.getLightbox());\n\t\t}\n\t});\n\n\tgantt._init_lightbox_events = function () {\n\t\tgantt.lightbox_events = {};\n\n\n\t\tgantt.lightbox_events.gantt_save_btn = function () {\n\t\t\tgantt._save_lightbox();\n\t\t};\n\n\n\t\tgantt.lightbox_events.gantt_delete_btn = function () {\n\t\t\tif (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id]))\n\t\t\t\treturn;\n\n\t\t\tif (gantt.isTaskExists(gantt._lightbox_id)) {\n\t\t\t\tgantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n\t\t\t} else {\n\t\t\t\tgantt.hideLightbox();\n\t\t\t}\n\n\t\t};\n\n\n\t\tgantt.lightbox_events.gantt_cancel_btn = function () {\n\t\t\tgantt._cancel_lightbox();\n\t\t};\n\n\n\t\tgantt.lightbox_events[\"default\"] = function (e, src) {\n\t\t\tif (src.getAttribute(\"data-dhx-button\")) {\n\t\t\t\tgantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n\t\t\t} else {\n\t\t\t\tvar index, block, sec;\n\n\t\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\t\tif (className.indexOf(\"gantt_custom_button\") != -1) {\n\t\t\t\t\tif (className.indexOf(\"gantt_custom_button_\") != -1) {\n\t\t\t\t\t\tindex = src.parentNode.getAttribute(\"data-index\");\n\t\t\t\t\t\tsec = src;\n\t\t\t\t\t\twhile (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n\t\t\t\t\t\t\tsec = sec.parentNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex = src.getAttribute(\"data-index\");\n\t\t\t\t\t\tsec = src.parentNode;\n\t\t\t\t\t\tsrc = src.firstChild;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar sections = gantt._get_typed_lightbox_config();\n\n\t\t\t\tif (index) {\n\t\t\t\t\tindex = index * 1;\n\t\t\t\t\tblock = gantt.form_blocks[sections[index * 1].type];\n\t\t\t\t\tblock.button_click(index, src, sec, sec.nextSibling);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.event(gantt.getLightbox(), \"click\", function (e) {\n\t\t\te = e || window.event;\n\t\t\tvar src = e.target ? e.target : e.srcElement;\n\n\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\tif (!className) {\n\t\t\t\tsrc = src.previousSibling;\n\t\t\t\tclassName = domHelpers.getClassName(src);\n\t\t\t}\n\t\t\tif (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n\t\t\t\tsrc = src.firstChild;\n\t\t\t\tclassName = domHelpers.getClassName(src);\n\t\t\t}\n\t\t\tif (src && className) {\n\t\t\t\tvar func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n\t\t\t\treturn func(e, src);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tgantt.getLightbox().onkeydown = function (e) {\n\t\t\tvar event = e || window.event;\n\t\t\tvar target = e.target || e.srcElement;\n\t\t\tvar buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n\t\t\tswitch ((e || event).keyCode) {\n\t\t\t\tcase gantt.constants.KEY_CODES.SPACE: {\n\t\t\t\t\tif ((e || event).shiftKey) return;\n\t\t\t\t\tif (buttonTarget && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase gantt.keys.edit_save:\n\t\t\t\t\tif ((e || event).shiftKey) return;\n\t\t\t\t\tif (buttonTarget && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgantt._save_lightbox();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase gantt.keys.edit_cancel:\n\t\t\t\t\tgantt._cancel_lightbox();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t};\n\n\tgantt._cancel_lightbox = function () {\n\t\tvar task = this.getLightboxValues();\n\t\tthis.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\t\tif (gantt.isTaskExists(task.id) && task.$new) {\n\t\t\tthis.silent(function () {\n\t\t\t\tgantt.$data.tasksStore.removeItem(task.id);\n\t\t\t\tgantt._update_flags(task.id, null);\n\t\t\t});\n\t\t}\n\n\t\tthis.refreshData();\n\t\tthis.hideLightbox();\n\t};\n\n\tgantt._save_lightbox = function () {\n\t\tvar task = this.getLightboxValues();\n\t\tif (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new]))\n\t\t\treturn;\n\n\t\tif (task.$new) {\n\t\t\tdelete task.$new;\n\t\t\tthis.addTask(task, task.parent, this.getTaskIndex(task.id));\n\t\t} else if (this.isTaskExists(task.id)) {\n\t\t\tthis.mixin(this.getTask(task.id), task, true);\n\t\t\tthis.refreshTask(task.id);\n\t\t\tthis.updateTask(task.id);\n\t\t}\n\t\tthis.refreshData();\n\n\t\t// TODO: do we need any blockable events here to prevent closing lightbox?\n\t\tthis.hideLightbox();\n\t};\n\n\tgantt._resolve_default_mapping = function (section) {\n\t\tvar mapping = section.map_to;\n\t\tvar time_controls = { \"time\": true, \"time_optional\": true, \"duration\": true, \"duration_optional\": true };\n\t\tif (time_controls[section.type]) {\n\t\t\tif (section.map_to == \"auto\") {\n\t\t\t\tmapping = { start_date: \"start_date\", end_date: \"end_date\", duration: \"duration\" };\n\t\t\t} else if (typeof (section.map_to) === \"string\") {\n\t\t\t\tmapping = { start_date: section.map_to };\n\t\t\t}\n\t\t} else if (section.type === \"constraint\") {\n\t\t\tif (!section.map_to || typeof (section.map_to) === \"string\") {\n\t\t\t\tmapping = { constraint_type: \"constraint_type\", constraint_date: \"constraint_date\" };\n\t\t\t}\n\t\t}\n\n\t\treturn mapping;\n\t};\n\n\tgantt.getLightboxValues = function () {\n\t\tvar task = {};\n\n\t\tif (gantt.isTaskExists(this._lightbox_id)) {\n\t\t\ttask = this.mixin({}, this.getTask(this._lightbox_id));\n\t\t}\n\n\t\tvar sns = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar node = document.getElementById(sns[i].id);\n\t\t\tnode = (node ? node.nextSibling : node);\n\t\t\tvar block = this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue;\n\t\t\tvar res = block.get_value.call(this, node, task, sns[i]);\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\n\t\t\tif (typeof map_to == \"string\" && map_to != \"auto\") {\n\t\t\t\ttask[map_to] = res;\n\t\t\t} else if (typeof map_to == \"object\") {\n\t\t\t\tfor (var property in map_to) {\n\t\t\t\t\tif (map_to[property])\n\t\t\t\t\t\ttask[map_to[property]] = res[property];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn task;\n\t};\n\n\n\tgantt.hideLightbox = function () {\n\t\tvar box = this.getLightbox();\n\t\tif (box) box.style.display = \"none\";\n\n\t\tthis._waiAria.lightboxHiddenAttr(box);\n\t\tthis._lightbox_id = null;\n\n\t\tthis.hideCover();\n\t\tthis.callEvent(\"onAfterLightbox\", []);\n\t};\n\tgantt.hideCover = function () {\n\t\tif (this._cover)\n\t\t\tthis._cover.parentNode.removeChild(this._cover);\n\t\tthis._cover = null;\n\t};\n\n\tgantt.resetLightbox = function () {\n\t\tif (gantt._lightbox && !gantt._custom_lightbox)\n\t\t\tgantt._lightbox.parentNode.removeChild(gantt._lightbox);\n\t\tgantt._lightbox = null;\n\t\tgantt.hideCover();\n\t};\n\tgantt._set_lightbox_values = function (data, box) {\n\t\tvar task = data;\n\t\tvar s = box.getElementsByTagName(\"span\");\n\t\tvar lightboxHeader = [];\n\t\tif (gantt.templates.lightbox_header) {\n\t\t\tlightboxHeader.push(\"\");\n\t\t\tlightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n\t\t\ts[1].innerHTML = \"\";\n\t\t\ts[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n\t\t} else {\n\t\t\tlightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n\t\t\tlightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\t\t\ts[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n\t\t\ts[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n\t\t}\n\t\ts[1].innerHTML = lightboxHeader[0];\n\t\ts[2].innerHTML = lightboxHeader[1];\n\n\t\tgantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n\t\tvar sns = this._get_typed_lightbox_config(this.getLightboxType());\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar section = sns[i];\n\n\t\t\tif (!this.form_blocks[section.type]) {\n\t\t\t\tcontinue;//skip incorrect sections, same check is done during rendering\n\t\t\t}\n\n\n\t\t\tvar node = document.getElementById(section.id).nextSibling;\n\t\t\tvar block = this.form_blocks[section.type];\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\n\t\t\tvar value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n\t\t\tblock.set_value.call(gantt, node, value, task, section);\n\n\t\t\tif (section.focus)\n\t\t\t\tblock.focus.call(gantt, node);\n\t\t}\n\t\tif (data.id)\n\t\t\tgantt._lightbox_id = data.id;\n\t};\n\tgantt._fill_lightbox = function (id, box) {\n\t\tvar task = this.getTask(id);\n\t\tthis._set_lightbox_values(task, box);\n\t};\n\n\n\tgantt.getLightboxSection = function (name) {\n\t\tvar config = this._get_typed_lightbox_config();\n\t\tvar i = 0;\n\t\tfor (i; i < config.length; i++)\n\t\t\tif (config[i].name == name)\n\t\t\t\tbreak;\n\t\tvar section = config[i];\n\t\tif (!section)\n\t\t\treturn null;\n\n\t\tif (!this._lightbox)\n\t\t\tthis.getLightbox();\n\t\tvar header = document.getElementById(section.id);\n\t\tvar node = header.nextSibling;\n\n\t\tvar result = {\n\t\t\tsection: section,\n\t\t\theader: header,\n\t\t\tnode: node,\n\t\t\tgetValue: function (ev) {\n\t\t\t\treturn gantt.form_blocks[section.type].get_value.call(gantt, node, (ev || {}), section);\n\t\t\t},\n\t\t\tsetValue: function (value, ev) {\n\t\t\t\treturn gantt.form_blocks[section.type].set_value.call(gantt, node, value, (ev || {}), section);\n\t\t\t}\n\t\t};\n\n\t\tvar handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n\t\treturn handler ? handler(result) : result;\n\t};\n\n\tgantt._lightbox_methods.get_template_control = function (result) {\n\t\tresult.control = result.node;\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_select_control = function (result) {\n\t\tresult.control = result.node.getElementsByTagName(\"select\")[0];\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_textarea_control = function (result) {\n\t\tresult.control = result.node.getElementsByTagName(\"textarea\")[0];\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_time_control = function (result) {\n\t\tresult.control = result.node.getElementsByTagName(\"select\"); // array\n\t\treturn result;\n\t};\n\n\n\tgantt._init_dnd_events = function () {\n\t\tthis.event(document.body, \"mousemove\", gantt._move_while_dnd);\n\t\tthis.event(document.body, \"mouseup\", gantt._finish_dnd);\n\t\tgantt._init_dnd_events = function () {\n\t\t};\n\t};\n\tgantt._move_while_dnd = function (event) {\n\t\tif (gantt._dnd_start_lb) {\n\t\t\tif (!document.gantt_unselectable) {\n\t\t\t\tdocument.body.className += \" gantt_unselectable\";\n\t\t\t\tdocument.gantt_unselectable = true;\n\t\t\t}\n\t\t\tvar lb = gantt.getLightbox();\n\t\t\tvar now = [event.pageX, event.pageY];\n\t\t\tlb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n\t\t\tlb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n\t\t}\n\t};\n\tgantt._ready_to_dnd = function (event) {\n\t\tvar lb = gantt.getLightbox();\n\t\tgantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n\t\tgantt._dnd_start_lb = [event.pageX, event.pageY];\n\t};\n\tgantt._finish_dnd = function () {\n\t\tif (gantt._lb_start) {\n\t\t\tgantt._lb_start = gantt._dnd_start_lb = false;\n\t\t\tdocument.body.className = document.body.className.replace(\" gantt_unselectable\", \"\");\n\t\t\tdocument.gantt_unselectable = false;\n\t\t}\n\t};\n\n\n\tgantt._focus = function (node, select) {\n\t\tif (node && node.focus) {\n\t\t\tif (gantt.config.touch) {\n\t\t\t\t//do not focus editor, to prevent auto-zoom\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tif (select && node.select) node.select();\n\t\t\t\t\tnode.focus();\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// silent errors\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\n\tgantt.form_blocks = {\n\t\tgetTimePicker: function (sns, hidden) {\n\t\t\tvar html = \"\";\n\t\t\tvar cfg = this.config;\n\t\t\tvar i;\n\t\t\tvar options;\n\t\t\tvar ariaAttrs;\n\t\t\tvar readonly;\n\t\t\tvar display;\n\t\t\tvar settings = {\n\t\t\t\tfirst: 0,\n\t\t\t\tlast: 24 * 60,\n\t\t\t\tdate: this.date.date_part(new Date(gantt._min_date.valueOf())),\n\t\t\t\ttimeFormat: getTimeFormat(sns)\n\t\t\t};\n\n\t\t\t// map: default order => real one\n\t\t\tsns._time_format_order = { size: 0 };\n\n\t\t\tif (gantt.config.limit_time_select) {\n\t\t\t\tsettings.first = 60 * cfg.first_hour;\n\t\t\t\tsettings.last = 60 * cfg.last_hour + 1;\n\t\t\t\tsettings.date.setHours(cfg.first_hour);\n\t\t\t}\n\n\t\t\tfor (i = 0; i < settings.timeFormat.length; i++) {\n\t\t\t\t// adding spaces between selects\n\t\t\t\tif (i > 0) {\n\t\t\t\t\thtml += \" \";\n\t\t\t\t}\n\n\t\t\t\toptions = getHtmlTimePickerOptions(sns, i, settings);\n\n\t\t\t\tif (options) {\n\t\t\t\t\tariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n\t\t\t\t\treadonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n\t\t\t\t\tdisplay = hidden ? \" style='display:none' \" : \"\";\n\t\t\t\t\thtml += \"<select \" + readonly + display + ariaAttrs + \">\" + options + \"</select>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn html;\n\t\t},\n\t\tgetTimePickerValue: function (selects, config, offset) {\n\t\t\tvar map = config._time_format_order;\n\t\t\tvar needSetTime = gantt.defined(map[3]);\n\n\t\t\tvar time;\n\t\t\tvar hours = 0;\n\t\t\tvar minutes = 0;\n\n\t\t\tvar mapOffset = offset || 0;\n\n\t\t\tif (needSetTime) {\n\t\t\t\ttime = parseInt(selects[map[3] + mapOffset].value, 10);\n\t\t\t\thours = Math.floor(time / 60);\n\t\t\t\tminutes = time % 60;\n\t\t\t}\n\t\t\treturn new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n\t\t},\n\n\t\t_fill_lightbox_select: function (s, i, d, map) {\n\t\t\ts[i + map[0]].value = d.getDate();\n\t\t\ts[i + map[1]].value = d.getMonth();\n\t\t\ts[i + map[2]].value = d.getFullYear();\n\t\t\tif (gantt.defined(map[3])) {\n\t\t\t\tvar v = d.getHours() * 60 + d.getMinutes();\n\t\t\t\tv = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n\t\t\t\tvar input = s[i + map[3]];\n\t\t\t\tinput.value = v;\n\t\t\t\t//in case option not shown\n\t\t\t\tinput.setAttribute(\"data-value\", v);\n\t\t\t}\n\t\t},\n\t\ttemplate: new TemplateControl(),\n\t\ttextarea: new TextareaControl(),\n\t\tselect: new SelectControl(),\n\t\ttime: new TimeControl(),\n\t\tduration: new DurationControl(),\n\t\tparent: new ParentControl(),\n\t\tradio: new RadioControl(),\n\t\tcheckbox: new CheckboxControl(),\n\t\tresources: new ResourcesControl(),\n\t\tconstraint: new ConstraintControl(),\n\t\ttypeselect: new TypeselectControl()\n\t};\n\n\tgantt._is_lightbox_timepicker = function () {\n\t\tvar s = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < s.length; i++)\n\t\t\tif (s[i].name == \"time\" && s[i].type == \"time\")\n\t\t\t\treturn true;\n\t\treturn false;\n\t};\n\n\tgantt._dhtmlx_confirm = function (message, title, callback, ok) {\n\t\tif (!message)\n\t\t\treturn callback();\n\t\tvar opts = { text: message };\n\t\tif (title)\n\t\t\topts.title = title;\n\t\tif (ok) {\n\t\t\topts.ok = ok;\n\t\t}\n\t\tif (callback) {\n\t\t\topts.callback = function (result) {\n\t\t\t\tif (result)\n\t\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\tgantt.confirm(opts);\n\t};\n\n\tfunction _get_type_name(type_value) {\n\t\tfor (var i in this.config.types) {\n\t\t\tif (this.config.types[i] == type_value) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn \"task\";\n\t}\n\n\tgantt._get_typed_lightbox_config = function (type) {\n\t\tif (type === undefined) {\n\t\t\ttype = this.getLightboxType();\n\t\t}\n\n\t\tvar field = _get_type_name.call(this, type);\n\n\t\tif (gantt.config.lightbox[field + \"_sections\"]) {\n\t\t\treturn gantt.config.lightbox[field + \"_sections\"];\n\t\t} else {\n\t\t\treturn gantt.config.lightbox.sections;\n\t\t}\n\t};\n\n\tgantt._silent_redraw_lightbox = function (type) {\n\t\tvar oldType = this.getLightboxType();\n\n\t\tif (this.getState().lightbox) {\n\t\t\tvar taskId = this.getState().lightbox;\n\t\t\tvar formData = this.getLightboxValues(),\n\t\t\t\ttask = this.copy(this.getTask(taskId));\n\n\t\t\tthis.resetLightbox();\n\n\t\t\tvar updTask = this.mixin(task, formData, true);\n\t\t\tvar box = this.getLightbox(type ? type : undefined);\n\t\t\tthis._center_lightbox(this.getLightbox());\n\t\t\tthis._set_lightbox_values(updTask, box);\n\t\t\tthis.showCover();\n\t\t} else {\n\t\t\tthis.resetLightbox();\n\t\t\tthis.getLightbox(type ? type : undefined);\n\t\t}\n\t\tthis.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n\t};\n\n\tfunction bindLabelsToInputs(sns) {\n\t\tvar section;\n\t\tvar label;\n\t\tvar labelBlock;\n\t\tvar inputBlock;\n\t\tvar input;\n\t\tvar i;\n\n\t\tfor (i = 0; i < sns.length; i++) {\n\t\t\tsection = sns[i];\n\t\t\tlabelBlock = document.getElementById(section.id);\n\n\t\t\tif (!section.id || !labelBlock) continue;\n\n\t\t\tlabel = labelBlock.querySelector(\"label\");\n\t\t\tinputBlock = labelBlock.nextSibling;\n\n\t\t\tif (!inputBlock) continue;\n\n\t\t\tinput = inputBlock.querySelector(\"input, select, textarea\");\n\t\t\tif (input) {\n\t\t\t\tinput.id = input.id || \"input_\" + gantt.uid();\n\t\t\t\tsection.inputId = input.id;\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getHtmlButtons(buttons, floatRight) {\n\t\tvar button;\n\t\tvar ariaAttr;\n\t\tvar html = \"\";\n\t\tvar i;\n\n\t\tfor (i = 0; i < buttons.length; i++) {\n\t\t\t// needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n\t\t\tbutton = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n\n\t\t\tariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n\t\t\thtml += \"<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\t\t}\n\t\treturn html;\n\t}\n\n\tfunction getTimeFormat(sns) {\n\t\tvar scale;\n\t\tvar unit;\n\t\tvar result;\n\n\t\tif (sns.time_format) return sns.time_format;\n\n\t\t// default order\n\t\tresult = [\"%d\", \"%m\", \"%Y\"];\n\t\tscale = gantt.getScale();\n\t\tunit = scale ? scale.unit : gantt.config.duration_unit;\n\t\tif (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n\t\t\tresult.push(\"%H:%i\");\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction getHtmlTimePickerOptions(sns, index, settings) {\n\t\tvar range;\n\t\tvar offset;\n\t\tvar start_year;\n\t\tvar end_year;\n\t\tvar i;\n\t\tvar time;\n\t\tvar diff;\n\t\tvar tdate;\n\t\tvar html = \"\";\n\n\t\tswitch (settings.timeFormat[index]) {\n\t\t\tcase \"%Y\":\n\t\t\t\tsns._time_format_order[2] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//year\n\n\t\t\t\tif (sns.year_range) {\n\t\t\t\t\tif (!isNaN(sns.year_range)) {\n\t\t\t\t\t\trange = sns.year_range;\n\t\t\t\t\t} else if (sns.year_range.push) {\n\t\t\t\t\t\t// if\n\t\t\t\t\t\tstart_year = sns.year_range[0];\n\t\t\t\t\t\tend_year = sns.year_range[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trange = range || 10;\n\t\t\t\toffset = offset || Math.floor(range / 2);\n\t\t\t\tstart_year = start_year || settings.date.getFullYear() - offset;\n\t\t\t\tend_year = end_year || start_year + range;\n\n\t\t\t\tfor (i = start_year; i < end_year; i++)\n\t\t\t\t\thtml += \"<option value='\" + (i) + \"'>\" + (i) + \"</option>\";\n\t\t\t\tbreak;\n\t\t\tcase \"%m\":\n\t\t\t\tsns._time_format_order[1] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//month\n\t\t\t\tfor (i = 0; i < 12; i++)\n\t\t\t\t\thtml += \"<option value='\" + i + \"'>\" + gantt.locale.date.month_full[i] + \"</option>\";\n\t\t\t\tbreak;\n\t\t\tcase \"%d\":\n\t\t\t\tsns._time_format_order[0] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//days\n\t\t\t\tfor (i = 1; i < 32; i++)\n\t\t\t\t\thtml += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n\t\t\t\tbreak;\n\t\t\tcase \"%H:%i\":\n\t\t\t\t// var last = 24*60, first = 0;\n\t\t\t\tsns._time_format_order[3] = index;\n\t\t\t\tsns._time_format_order.size++;\n\t\t\t\t//hours\n\t\t\t\ti = settings.first;\n\t\t\t\ttdate = settings.date.getDate();\n\t\t\t\tsns._time_values = [];\n\n\t\t\t\twhile (i < settings.last) {\n\t\t\t\t\ttime = gantt.templates.time_picker(settings.date);\n\t\t\t\t\thtml += \"<option value='\" + i + \"'>\" + time + \"</option>\";\n\t\t\t\t\tsns._time_values.push(i);\n\t\t\t\t\tsettings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\n\t\t\t\t\tdiff = (settings.date.getDate() != tdate) ? 1 : 0; // moved or not to the next day\n\t\t\t\t\ti = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn html;\n\t}\n};","module.exports = function(gantt) {\n\n\tgantt.config.touch_drag = 500; //nearly immediate dnd\n\tgantt.config.touch = true;\n\tgantt.config.touch_feedback = true;\n\tgantt.config.touch_feedback_duration = 1;\n\tgantt._prevent_touch_scroll = false;\n\n\n\tgantt._touch_feedback = function () {\n\t\tif (gantt.config.touch_feedback) {\n\t\t\tif (navigator.vibrate)\n\t\t\t\tnavigator.vibrate(gantt.config.touch_feedback_duration);\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onGanttReady\", gantt.bind(function(){\n\t\tif (this.config.touch != \"force\")\n\t\t\tthis.config.touch = this.config.touch &&\n\t\t\t\t((navigator.userAgent.indexOf(\"Mobile\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"iPad\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Android\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Touch\") != -1)) ||\n\t\t\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n\n\t\tif (this.config.touch) {\n\n\t\t\tvar touchEventsSupported = true;\n\t\t\ttry {\n\t\t\t\tdocument.createEvent(\"TouchEvent\");\n\t\t\t} catch (e) {\n\t\t\t\ttouchEventsSupported = false;\n\t\t\t}\n\n\t\t\tif (touchEventsSupported) {\n\t\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n\t\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\n\t\t\t\t\tif (ev.touches[0])\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttarget: ev.target,\n\t\t\t\t\t\t\tpageX: ev.touches[0].pageX,\n\t\t\t\t\t\t\tpageY: ev.touches[0].pageY,\n\t\t\t\t\t\t\tclientX: ev.touches[0].clientX,\n\t\t\t\t\t\t\tclientY: ev.touches[0].clientY\n\t\t\t\t\t\t};\n\t\t\t\t\telse\n\t\t\t\t\t\treturn ev;\n\t\t\t\t}, function () {\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t} else if (window.navigator.pointerEnabled) {\n\t\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n\t\t\t\t\tif (ev.pointerType == \"mouse\") return null;\n\t\t\t\t\treturn ev;\n\t\t\t\t}, function (ev) {\n\t\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\n\t\t\t\t});\n\t\t\t} else if (window.navigator.msPointerEnabled) {\n\t\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n\t\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n\t\t\t\t\treturn ev;\n\t\t\t\t}, function (ev) {\n\t\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\t}, gantt));\n\n\n\tfunction findTargetView(event){\n\t\tvar allViews = gantt.$layout.getCellsByType(\"viewCell\");\n\n\t\tfor(var i = 0; i < allViews.length; i++){\n\t\t\tvar box = allViews[i].$view.getBoundingClientRect();\n\t\t\tif(event.clientX >= box.left && event.clientX <= box.right &&\n\t\t\t\tevent.clientY <= box.bottom && event.clientY >= box.top){\n\t\t\t\t\treturn allViews[i];\n\t\t\t\t}\n\t\t}\n\t}\n\n\tfunction getScrollState(view){\n\t\tvar scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n\t\tvar scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n\n\t\tvar scrollState = {x: null, y: null};\n\t\tif(scrollX){\n\t\t\tvar state = scrollX.getScrollState();\n\t\t\tif(state.visible){\n\t\t\t\tscrollState.x = scrollX.$view.scrollLeft;\n\t\t\t}\n\t\t}\n\t\tif(scrollY){\n\t\t\tvar state = scrollY.getScrollState();\n\t\t\tif(state.visible){\n\t\t\t\tscrollState.y = scrollY.$view.scrollTop;\n\t\t\t}\n\t\t}\n\t\treturn scrollState;\n\t}\n\n\tfunction scrollView(view, left, top){\n\t\tvar scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n\t\tvar scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n\n\t\tif(scrollX){\n\t\t\tscrollX.scrollTo(left, null);\n\t\t}\n\t\tif(scrollY){\n\t\t\tscrollY.scrollTo(null, top);\n\t\t}\n\t}\n\n\tfunction getTaskDND(){\n\t\tvar tasksDnD;\n\t\tif(gantt.$ui.getView(\"timeline\")){\n\t\t\ttasksDnD = gantt.$ui.getView(\"timeline\")._tasks_dnd;\n\t\t}\n\t\treturn tasksDnD;\n\t}\n\n\tvar touchHandlers = [];\n\n//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\tgantt._touch_events = function (names, accessor, ignore) {\n\t\t//webkit on android need to be handled separately\n\t\tvar dblclicktime = 0;\n\t\tvar actionMode = false;\n\t\tvar scrollMode = false;\n\t\tvar actionStart = null;\n\t\tvar scrollState;\n\t\tvar longTapTimer = null;\n\t\tvar currentDndId = null;\n\t\tvar dndNodes = [];\n\t\tvar targetView = null;\n\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\n\t\t\tgantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n\t\t}\n\t\ttouchHandlers = [];\n\n\t\t//touch move\n\t\ttouchHandlers.push([gantt.$container, names[0], function (e) {\n\t\t\tvar tasksDnD = getTaskDND();\n\n\t\t\t\tif (ignore(e)) return;\n\n\t\t\t\t//ignore common and scrolling moves\n\t\t\t\tif (!actionMode) return;\n\n\t\t\t\tif (longTapTimer) clearTimeout(longTapTimer);\n\n\t\t\t\tvar source = accessor(e);\n\t\t\t\tif (tasksDnD && (tasksDnD.drag.id || tasksDnD.drag.start_drag)) {\n\t\t\t\t\ttasksDnD.on_mouse_move(source);\n\t\t\t\t\tif (e.preventDefault)\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.cancelBubble = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!gantt._prevent_touch_scroll) {\n\t\t\t\t\tif (source && actionStart) {\n\t\t\t\t\t\tvar dx = actionStart.pageX - source.pageX;\n\t\t\t\t\t\tvar dy = actionStart.pageY - source.pageY;\n\t\t\t\t\t\tif (!scrollMode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\n\t\t\t\t\t\t\tscrollMode = true;\n\t\t\t\t\t\t\t//gantt._touch_scroll_active = scroll_mode = true;\n\t\t\t\t\t\t\tdblclicktime = 0;\n\n\t\t\t\t\t\t\tif(targetView){\n\t\t\t\t\t\t\t\tscrollState = getScrollState(targetView);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tscrollState = gantt.getScrollState();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (scrollMode) {\n\n\t\t\t\t\t\t\tvar newScrollState;\n\t\t\t\t\t\t\tvar scrollX = scrollState.x + dx;\n\t\t\t\t\t\t\tvar scrollY = scrollState.y + dy;\n\t\t\t\t\t\t\tif(targetView){\n\t\t\t\t\t\t\t\tscrollView(targetView, scrollX, scrollY);\n\t\t\t\t\t\t\t\tnewScrollState = getScrollState(targetView);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tgantt.scrollTo(scrollX, scrollY);\n\t\t\t\t\t\t\t\tnewScrollState = gantt.getScrollState();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ((scrollState.x != newScrollState.x && dy > 2 * dx) ||\n\t\t\t\t\t\t\t\t(scrollState.y != newScrollState.y && dx > 2 * dy )) {\n\t\t\t\t\t\t\t\treturn block_action(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn block_action(e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}]);\n\n\n\t\t//block touch context menu in IE10\n\t\ttouchHandlers.push([this.$container, \"contextmenu\", function (e) {\n\t\t\tif (actionMode)\n\t\t\t\treturn block_action(e);\n\t\t}]);\n\n\t\t//touch start\n\t\ttouchHandlers.push([this.$container, names[1], function (e) {\n\t\t\t// block pull-to-refresh\n\t\t\tif(document && document.body){\n\t\t\t\tdocument.body.classList.add(\"gantt_touch_active\");\n\t\t\t}\n\n\t\t\tif (ignore(e)) return;\n\t\t\tif (e.touches && e.touches.length > 1) {\n\t\t\t\tactionMode = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tactionStart = accessor(e);\n\t\t\ttargetView = findTargetView(actionStart);\n\t\t\tif (!gantt._locate_css(actionStart, \"gantt_hor_scroll\") && !gantt._locate_css(actionStart, \"gantt_ver_scroll\")) {\n\t\t\t\tactionMode = true;\n\t\t\t}\n\t\t\tvar tasksDnD = getTaskDND();\n\n\t\t\t//long tap\n\t\t\tlongTapTimer = setTimeout(function () {\n\t\t\t\tvar taskId = gantt.locate(actionStart);\n\t\t\t\tif (tasksDnD && (taskId && !gantt._locate_css(actionStart, \"gantt_link_control\") && !gantt._locate_css(actionStart, \"gantt_grid_data\"))) {\n\t\t\t\t\ttasksDnD.on_mouse_down(actionStart);\n\n\t\t\t\t\tif (tasksDnD.drag && tasksDnD.drag.start_drag) {\n\t\t\t\t\t\tcloneTaskRendered(taskId);\n\t\t\t\t\t\ttasksDnD._start_dnd(actionStart);\n\t\t\t\t\t\tgantt._touch_drag = true;\n\n\t\t\t\t\t\tgantt.refreshTask(taskId);\n\n\t\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlongTapTimer = null;\n\t\t\t}, gantt.config.touch_drag);\n\t\t}]);\n\n\t\t//touch end\n\t\ttouchHandlers.push([this.$container, names[2], function (e) {\n\t\t\tif(document && document.body){\n\t\t\t\tdocument.body.classList.remove(\"gantt_touch_active\");\n\t\t\t}\n\t\t\tif (ignore(e)) return;\n\t\t\tif (longTapTimer) clearTimeout(longTapTimer);\n\t\t\tgantt._touch_drag = false;\n\t\t\tactionMode = false;\n\t\t\tvar source = accessor(e);\n\n\t\t\tvar tasksDnD = getTaskDND();\n\n\t\t\tif(tasksDnD)\n\t\t\t\ttasksDnD.on_mouse_up(source);\n\n\t\t\tif (currentDndId && gantt.isTaskExists(currentDndId)) {\n\t\t\t\tgantt.refreshTask(currentDndId);\n\t\t\t\tif(dndNodes.length){\n\t\t\t\t\tdndNodes.forEach(function(node){\n\t\t\t\t\t\tif(node.parentNode){\n\t\t\t\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//gantt._touch_scroll_active = action_mode = scroll_mode = false;\n\t\t\tactionMode = scrollMode = false;\n\t\t\tdndNodes = [];\n\t\t\tcurrentDndId = null;\n\n\t\t\t//dbl-tap handling\n\t\t\tif (actionStart && dblclicktime) {\n\t\t\t\tvar now = new Date();\n\t\t\t\tif ((now - dblclicktime) < 500) {\n\n\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\t\t\tmouseEvents.onDoubleClick(actionStart);\n\t\t\t\t\tblock_action(e);\n\t\t\t\t} else\n\t\t\t\t\tdblclicktime = now;\n\t\t\t} else {\n\t\t\t\tdblclicktime = new Date();\n\t\t\t}\n\t\t}]);\n\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\n\t\t\tgantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n\t\t}\n\n\t\t//common helper, prevents event\n\t\tfunction block_action(e) {\n\t\t\tif (e && e.preventDefault){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\te.cancelBubble = true;\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction cloneTaskRendered(taskId) {\n\t\t\tvar renders = gantt._getTaskLayers();\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\tif (task && gantt.isTaskVisible(taskId)) {\n\t\t\t\tcurrentDndId = taskId;\n\t\t\t\tfor (var i = 0; i < renders.length; i++) {\n\t\t\t\t\ttask = renders[i].rendered[taskId];\n\t\t\t\t\tif (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\n\t\t\t\t\t\tvar copy = task.cloneNode(true);\n\t\t\t\t\t\tdndNodes.push(task);\n\t\t\t\t\t\trenders[i].rendered[taskId] = copy;\n\t\t\t\t\t\ttask.style.display = \"none\";\n\t\t\t\t\t\tcopy.className += \" gantt_drag_move \";\n\t\t\t\t\t\ttask.parentNode.appendChild(copy);\n\t\t\t\t\t\t//return copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n};","import * as env from \"../../../utils/env\";\nimport * as eventable from \"../../../utils/eventable\";\nimport * as isHeadless from \"../../../utils/is_headless\";\nimport { IScale, TModifierKeys } from \"../../common/config\";\n\ninterface ITimelineZoomConfig {\n\thandler?: (e: Event) => {};\n\tstartDate?: Date;\n\tendDate?: Date;\n\tlevels: IZoomLevel[];\n\tactiveLevelIndex?: number;\n\twidthStep?: number;\n\tminColumnWidth?: number;\n\tmaxColumnWidth?: number;\n\tuseKey?: \"ctrlKey\" | \"altKey\" | \"shiftKey\";\n\ttrigger?: \"wheel\" | null | undefined;\n\telement?: Element | (() => Element);\n}\n\nconst USE_KEY = [\"ctrlKey\", \"altKey\", \"shiftKey\", \"metaKey\"];\n\ninterface IZoomLevel {\n\tname?: string;\n\tscale_height?: number;\n\tmin_column_width: number;\n\tscales: IScale[];\n}\n\nconst _defaultScales = [\n\t[\n\t\t{\n\t\t\tunit: \"month\",\n\t\t\tdate: \"%M\",\n\t\t\tstep: 1\n\t\t},\n\t\t{\n\t\t\tunit: \"day\",\n\t\t\tdate: \"%d\",\n\t\t\tstep: 1\n\t\t}\n\t],\n\t[\n\t\t{\n\t\t\tunit: \"day\",\n\t\t\tdate: \"%d %M\",\n\t\t\tstep: 1\n\t\t}\n\t],\n\t[\n\t\t{\n\t\t\tunit: \"day\",\n\t\t\tdate: \"%d %M\",\n\t\t\tstep: 1\n\t\t},\n\t\t{\n\t\t\tunit: \"hour\",\n\t\t\tdate: \"%H:00\",\n\t\t\tstep: 8\n\t\t},\n\t],\n\t[\n\t\t{\n\t\t\tunit: \"day\",\n\t\t\tdate: \"%d %M\",\n\t\t\tstep: 1\n\t\t},\n\t\t{\n\t\t\tunit: \"hour\",\n\t\t\tdate: \"%H:00\",\n\t\t\tstep: 1\n\t\t},\n\t],\n];\n\nexport default class TimelineZoom {\n\tpublic attachEvent: (eventName: string, handler: () => void) => string;\n\tpublic callEvent: (eventName: string, args: any[]) => any;\n\tpublic detachEvent: (eventName: string) => any;\n\tprotected _initialStartDate: Date;\n\tprotected _initialEndDate: Date;\n\tprotected _activeLevelIndex: number;\n\tprotected _levels: IZoomLevel[];\n\tprotected _handler: (e: any) => void;\n\tprotected $gantt;\n\tprotected _widthStep: number;\n\tprotected _minColumnWidth: number;\n\tprotected _maxColumnWidth: number;\n\tprotected _useKey: TModifierKeys;\n\tprotected _visibleDate: Date;\n\tprotected _initialized: boolean;\n\tprotected _domEvents: any;\n\n\tconstructor(gantt) {\n\t\tthis.$gantt = gantt;\n\t\tthis._domEvents = this.$gantt._createDomEventScope();\n\t}\n\n\tpublic init(config: ITimelineZoomConfig) {\n\t\tif(!isHeadless(this.$gantt)){\n\t\t\treturn;\n\t\t}\n\t\tthis._initialStartDate = config.startDate;\n\t\tthis._initialEndDate = config.endDate;\n\t\tthis._activeLevelIndex = config.activeLevelIndex ? config.activeLevelIndex : 0;\n\t\tthis._levels = this._mapScales(config.levels || _defaultScales);\n\t\tthis._handler = config.handler || this._defaultHandler;\n\t\tthis._minColumnWidth = config.minColumnWidth || 60;\n\t\tthis._maxColumnWidth = config.maxColumnWidth || 240;\n\t\tthis._widthStep = config.widthStep || 3/8 * config.minColumnWidth;\n\t\tthis._useKey = config.useKey;\n\n\t\tif(!this._initialized){\n\t\t\teventable(this);\n\t\t\tthis.$gantt.attachEvent(\"onGanttScroll\", () => {\n\t\t\t\tthis._getVisibleDate();\n\t\t\t});\n\t\t}\n\n\t\tthis._domEvents.detachAll();\n\n\t\tif(config.trigger === \"wheel\"){\n\t\t\tif(this.$gantt.$root){\n\t\t\t\tthis._attachWheelEvent(config);\n\t\t\t}else{\n\t\t\t\tthis.$gantt.attachEvent(\"onGanttReady\", () => {\n\t\t\t\t\tthis._attachWheelEvent(config);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis._initialized = true;\n\t\tthis.setLevel(this._activeLevelIndex);\n\t}\n\n\tpublic zoomIn = () => {\n\t\tconst index = this.getCurrentLevel() - 1;\n\t\tif(index < 0){\n\t\t\treturn;\n\t\t}\n\t\tthis.setLevel(index);\n\t}\n\n\tpublic zoomOut = () => {\n\t\tconst index = this.getCurrentLevel() + 1;\n\t\tif(index > this._levels.length - 1){\n\t\t\treturn;\n\t\t}\n\t\tthis.setLevel(index);\n\t}\n\n\tpublic getCurrentLevel = () => {\n\t\treturn this._activeLevelIndex;\n\t}\n\n\tpublic getLevels = () => {\n\t\treturn this._levels;\n\t}\n\n\tpublic setLevel = (level: number|string) => {\n\t\tconst zoomLevel = this._getZoomIndexByName(level);\n\n\t\tif(zoomLevel === -1){\n\t\t\tthis.$gantt.assert(zoomLevel !== -1, \"Invalid zoom level for gantt.ext.zoom.setLevel. \" + level + \" is not an expected value.\");\n\t\t}\n\t\tthis._setLevel(zoomLevel, 0);\n\t}\n\n\tprotected _getZoomIndexByName = (levelName: number|string) => {\n\t\tlet zoomLevel:number = -1;\n\t\tif(typeof levelName === \"string\"){\n\t\t\tif(!isNaN(Number(levelName)) && this._levels[Number(levelName)]){\n\t\t\t\tzoomLevel = Number(levelName);\n\t\t\t}else{\n\t\t\t\tfor(let i = 0; i < this._levels.length; i++){\n\t\t\t\t\tif(this._levels[i].name === levelName){\n\t\t\t\t\t\tzoomLevel = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tzoomLevel = levelName;\n\t\t}\n\t\treturn zoomLevel;\n\t}\n\n\tprotected _mapScales(levels: IScale[][] | any): IZoomLevel[]{\n\t\treturn levels.map((l) => {\n\t\t\tif(Array.isArray(l)){\n\t\t\t\treturn {\n\t\t\t\t\tscales: l\n\t\t\t\t};\n\t\t\t}else{\n\t\t\t\treturn l;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _getVisibleDate = () => {\n\t\tconst scrollPos = this.$gantt.getScrollState().x;\n\t\tconst viewPort = this.$gantt.$task.offsetWidth;\n\t\tthis._visibleDate = this.$gantt.dateFromPos(scrollPos + viewPort/2);\n\t}\n\n\tprotected _setLevel = (level: number, cursorOffset: number) => {\n\t\tthis._activeLevelIndex = level;\n\n\t\tconst gantt = this.$gantt;\n\t\tconst nextConfig = gantt.copy(this._levels[this._activeLevelIndex]);\n\t\tconst chartConfig = gantt.copy(nextConfig);\n\t\tdelete chartConfig.name;\n\n\t\tgantt.mixin(gantt.config, chartConfig, true);\n\n\t\tconst isRendered = !!gantt.$root;\n\n\t\tif(isRendered){\n\t\t\tif(cursorOffset){\n\t\t\t\tconst cursorDate = this.$gantt.dateFromPos(cursorOffset + this.$gantt.getScrollState().x);\n\t\t\t\tthis.$gantt.render();\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(cursorDate);\n\t\t\t\tthis.$gantt.scrollTo(newPosition - cursorOffset);\n\t\t\t}else{\n\t\t\t\tconst viewPort = this.$gantt.$task.offsetWidth;\n\t\t\t\tif(!this._visibleDate){\n\t\t\t\t\tthis._getVisibleDate();\n\t\t\t\t}\n\t\t\t\tconst middleDate = this._visibleDate;\n\t\t\t\tthis.$gantt.render();\n\t\t\t\tconst newPosition = this.$gantt.posFromDate(middleDate);\n\t\t\t\tthis.$gantt.scrollTo(newPosition - viewPort/2);\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onAfterZoom\", [this._activeLevelIndex, nextConfig]);\n\t\t}\n\t}\n\n\tprivate _attachWheelEvent = (config) => {\n\t\tconst event = env.isFF ? \"wheel\" : \"mousewheel\";\n\t\tlet el: Element;\n\t\tif(typeof config.element === \"function\"){\n\t\t\tel = config.element();\n\t\t}else{\n\t\t\tel = config.element as Element;\n\t\t}\n\t\tif (!el){\n\t\t\treturn;\n\t\t}\n\n\t\tthis._domEvents.attach(el, event, this.$gantt.bind(function(e) {\n\t\t\tif (this._useKey) {\n\t\t\t\tif (USE_KEY.indexOf(this._useKey) < 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!e[this._useKey]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof this._handler === \"function\") {\n\t\t\t\tthis._handler.apply(this, [e]);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}, this));\n\t}\n\n\tprivate _defaultHandler = (e: any):void => {\n\t\tconst timelineOffset = this.$gantt.$task.getBoundingClientRect().x;\n\t\tconst cursorOffset = e.clientX - timelineOffset;\n\t\tconst wheelY = this.$gantt.env.isFF ? (e.deltaY*-40) : e.wheelDelta;\n\t\tlet wheelUp = false;\n\t\tif (wheelY > 0) {\n\t\t\twheelUp = true;\n\t\t}\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis._setScaleSettings(wheelUp, cursorOffset);\n\t}\n\n\tprivate _setScaleSettings(wheelUp: boolean, cursorOffset: number) {\n\t\tif (wheelUp) {\n\t\t\tthis._stepUp(cursorOffset);\n\t\t} else {\n\t\t\tthis._stepDown(cursorOffset);\n\t\t}\n\t}\n\n\tprivate _setScaleDates = () => {\n\t\tif(this._initialStartDate && this._initialEndDate){\n\t\t\tthis.$gantt.config.start_date = this._initialStartDate;\n\t\t\tthis.$gantt.config.end_date = this._initialEndDate;\n\t\t}\n\t}\n\n\tprivate _stepUp(cursorOffset) {\n\t\tif (this._activeLevelIndex >= this._levels.length - 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet nextLevel = this._activeLevelIndex;\n\t\tthis._setScaleDates();\n\n\t\tif(this._widthStep){\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width + this._widthStep;\n\t\t\tif (newColumnWidth > this._maxColumnWidth) {\n\t\t\t\tnewColumnWidth = this._minColumnWidth;\n\t\t\t\tnextLevel++;\n\t\t\t}\n\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\n\t\t}else{\n\t\t\tnextLevel++;\n\t\t}\n\t\tthis._setLevel(nextLevel, cursorOffset);\n\t}\n\tprivate _stepDown(cursorOffset) {\n\t\tif (this._activeLevelIndex < 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet nextLevel = this._activeLevelIndex;\n\t\tthis._setScaleDates();\n\n\t\tif(this._widthStep){\n\t\t\tlet newColumnWidth = this.$gantt.config.min_column_width - this._widthStep;\n\t\t\tif (newColumnWidth < this._minColumnWidth) {\n\t\t\t\tnewColumnWidth = this._maxColumnWidth;\n\t\t\t\tnextLevel--;\n\t\t\t}\n\t\t\tthis.$gantt.config.min_column_width = newColumnWidth;\n\t\t}else{\n\t\t\tnextLevel--;\n\t\t}\n\t\tthis._setLevel(nextLevel, cursorOffset);\n\t}\n}","if (window.dhtmlx){\n\n\tif (!window.dhtmlx.attaches)\n\twindow.dhtmlx.attaches = {};\n\n\twindow.dhtmlx.attaches.attachGantt=function(start, end, gantt){\n\t\tvar obj = document.createElement(\"DIV\");\n\n\t\tgantt = gantt || window.gantt;\n\n\t\tobj.id = \"gantt_\"+ gantt.uid();\n\t\tobj.style.width = \"100%\";\n\t\tobj.style.height = \"100%\";\n\t\tobj.cmp = \"grid\";\n\n\t\tdocument.body.appendChild(obj);\n\t\tthis.attachObject(obj.id);\n\t\tthis.dataType = \"gantt\";\n\t\tthis.dataObj = gantt;\n\n\t\tvar that = this.vs[this.av];\n\t\tthat.grid = gantt;\n\n\t\tgantt.init(obj.id, start, end);\n\t\tobj.firstChild.style.border = \"none\";\n\n\t\tthat.gridId = obj.id;\n\t\tthat.gridObj = obj;\n\n\t\tvar method_name=\"_viewRestore\";\n\t\treturn this.vs[this[method_name]()].grid;\n\t};\n\n}\nif (typeof(window.dhtmlXCellObject) != \"undefined\") {\n\n\twindow.dhtmlXCellObject.prototype.attachGantt=function(start, end, gantt){\n\t\tgantt = gantt || window.gantt;\n\n\t\tvar obj = document.createElement(\"DIV\");\n\t\tobj.id = \"gantt_\"+gantt.uid();\n\t\tobj.style.width = \"100%\";\n\t\tobj.style.height = \"100%\";\n\t\tobj.cmp = \"grid\";\n\n\t\tdocument.body.appendChild(obj);\n\t\tthis.attachObject(obj.id);\n\n\t\tthis.dataType = \"gantt\";\n\t\tthis.dataObj = gantt;\n\n\t\tgantt.init(obj.id, start, end);\n\t\tobj.firstChild.style.border = \"none\";\n\n\t\tobj = null;\n\t\tthis.callEvent(\"_onContentAttach\",[]);\n\n\t\treturn this.dataObj;\n\t};\n}\n\nmodule.exports = null;","if (window.jQuery){\n\n\t(function( $ ){\n\n\t\tvar methods = [];\n\t\t$.fn.dhx_gantt = function(config){\n\t\t\tconfig = config || {};\n\t\t\tif (typeof(config) === 'string') {\n\t\t\t\tif (methods[config] ) {\n\t\t\t\t\treturn methods[config].apply(this, []);\n\t\t\t\t}else {\n\t\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar views = [];\n\t\t\t\tthis.each(function() {\n\t\t\t\t\tif (this && this.getAttribute){\n\t\t\t\t\t\tif (!this.gantt && !(window.gantt.$root == this)){\n\n\t\t\t\t\t\t\tvar newgantt = (window.gantt.$container && window.Gantt) ? window.Gantt.getGanttInstance():window.gantt;\n\t\t\t\t\t\t\tfor (var key in config)\n\t\t\t\t\t\t\t\tif (key!=\"data\")\n\t\t\t\t\t\t\t\t\tnewgantt.config[key] = config[key];\n\n\t\t\t\t\t\t\tnewgantt.init(this);\n\t\t\t\t\t\t\tif (config.data)\n\t\t\t\t\t\t\t\tnewgantt.parse(config.data);\n\n\t\t\t\t\t\t\tviews.push(newgantt);\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tviews.push(typeof this.gantt == \"object\" ? this.gantt : window.gantt);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\n\t\t\t\tif (views.length === 1) return views[0];\n\t\t\t\treturn views;\n\t\t\t}\n\t\t};\n\n\t})(window.jQuery);\n\n}\n\n\nmodule.exports = null;","var domHelpers = require(\"../utils/dom_helpers\");\nvar isHeadless = require(\"../../../utils/is_headless\");\n\nmodule.exports = function(gantt){\n\n\tvar scrollRange = 50,\n\t\tscrollStep = 30,\n\t\tscrollDelay = 10,\n\t\tscrollSpeed = 50;\n\n\tvar interval = null,\n\t\tisMove = false,\n\t\tdelayTimeout = null,\n\t\tstartPos = {\n\t\t\tstarted: false\n\t\t},\n\t\teventPos = {};\n\n\n\tfunction isDisplayed(element){\n\t\treturn element &&\n\t\t\tdomHelpers.isChildOf(element, gantt.$root) &&\n\t\t\telement.offsetHeight;\n\t}\n\n\tfunction getAutoscrollContainer(){\n\t\tvar element;\n\t\tif(isDisplayed(gantt.$task)){\n\t\t\telement = gantt.$task;\n\t\t}else if(isDisplayed(gantt.$grid)){\n\t\t\telement = gantt.$grid;\n\t\t}else{\n\t\t\telement = gantt.$root;\n\t\t}\n\n\t\treturn element;\n\t}\n\n\tfunction isScrollState() {\n\t\tvar dragMarker = !!document.querySelector(\".gantt_drag_marker\");\n\t\tvar isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\");\n\t\tvar isLink = !!document.querySelector(\".gantt_link_direction\");\n\t\tvar state = gantt.getState();\n\t\tvar isClickDrag = state.autoscroll;\n\t\tisMove = dragMarker && !isResize && !isLink;\n\n\t\treturn !((!state.drag_mode && !dragMarker) || isResize) || isClickDrag;\n\t}\n\n\tfunction defineDelayTimeout(state) {\n\t\tif (delayTimeout) {\n\t\t\tclearTimeout(delayTimeout);\n\t\t\tdelayTimeout = null;\n\t\t}\n\t\tif (state) {\n\t\t\tvar speed = gantt.config.autoscroll_speed;\n\t\t\tif (speed && speed < 10) // limit speed value to 10\n\t\t\t\tspeed = 10;\n\n\t\t\tdelayTimeout = setTimeout(function() {\n\t\t\t\tinterval = setInterval(tick, speed || scrollSpeed);\n\t\t\t}, gantt.config.autoscroll_delay || scrollDelay);\n\t\t}\n\t}\n\n\tfunction defineScrollInterval(state) {\n\t\tif (state) {\n\t\t\tdefineDelayTimeout(true);\n\t\t\tif (!startPos.started) {\n\t\t\t\tstartPos.x = eventPos.x;\n\t\t\t\tstartPos.y = eventPos.y;\n\t\t\t\tstartPos.started = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (interval) {\n\t\t\t\tclearInterval(interval);\n\t\t\t\tinterval = null;\n\t\t\t}\n\t\t\tdefineDelayTimeout(false);\n\t\t\tstartPos.started = false;\n\t\t}\n\t}\n\n\tfunction autoscrollInterval(event) {\n\t\tvar isScroll = isScrollState();\n\n\t\tif ((interval || delayTimeout) && !isScroll) {\n\t\t\tdefineScrollInterval(false);\n\t\t}\n\n\t\tif (!gantt.config.autoscroll || !isScroll) {\n\t\t\treturn false;\n\t\t}\n\n\t\teventPos = {\n\t\t\tx: event.clientX,\n\t\t\ty: event.clientY\n\t\t};\n\n\t\t// if it is a mobile device, we need to detect the touch event coords\n\t\tif (event.type == \"touchmove\"){\n\t\t\teventPos.x = event.targetTouches[0].clientX;\n\t\t\teventPos.y = event.targetTouches[0].clientY;\n\t\t}\n\n\t\tif (!interval && isScroll) {\n\t\t\tdefineScrollInterval(true);\n\t\t}\n\t}\n\n\tfunction tick() {\n\n\t\tif (!isScrollState()) {\n\t\t\tdefineScrollInterval(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tvar container = getAutoscrollContainer();\n\t\tif(!container){\n\t\t\treturn;\n\t\t}\n\n\t\tvar box = domHelpers.getNodePosition(container);\n\n\t\tvar posX = eventPos.x - box.x;\n\t\tvar posY = eventPos.y - box.y;\n\n\t\tvar scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n\t\tvar scrollTop = need_scroll(posY, box.height, startPos.y - box.y);\n\n\t\tvar scrollState = gantt.getScrollState();\n\n\t\tvar currentScrollTop = scrollState.y,\n\t\t\tscrollOuterHeight = scrollState.inner_height,\n\t\t\tscrollInnerHeight = scrollState.height,\n\t\t\tcurrentScrollLeft = scrollState.x,\n\t\t\tscrollOuterWidth = scrollState.inner_width,\n\t\t\tscrollInnerWidth = scrollState.width;\n\n\t\t// do scrolling only if we have scrollable area to do so\n\t\tif (scrollTop && !scrollOuterHeight) {\n\t\t\tscrollTop = 0;\n\t\t} else if (scrollTop < 0 && !currentScrollTop) {\n\t\t\tscrollTop = 0;\n\t\t} else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n\t\t\tscrollTop = 0;\n\t\t}\n\n\t\tif (scrollLeft && !scrollOuterWidth) {\n\t\t\tscrollLeft = 0;\n\t\t} else if (scrollLeft < 0 && !currentScrollLeft) {\n\t\t\tscrollLeft = 0;\n\t\t} else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n\t\t\tscrollLeft = 0;\n\t\t}\n\n\t\tvar step = gantt.config.autoscroll_step;\n\n\t\tif (step && step < 2) // limit step value to 2\n\t\t\tstep = 2;\n\n\t\tscrollLeft = scrollLeft * (step || scrollStep);\n\t\tscrollTop = scrollTop * (step || scrollStep);\n\n\t\tif (scrollLeft || scrollTop) {\n\t\t\tscroll(scrollLeft, scrollTop);\n\t\t}\n\t}\n\n\tfunction need_scroll(pos, boxSize, startCoord) {\n\t\tif ((pos - scrollRange < 0) && (pos < startCoord))\n\t\t\treturn -1;\n\t\telse if ((pos > boxSize - scrollRange) && (pos > startCoord))\n\t\t\treturn 1;\n\t\treturn 0;\n\t}\n\n\tfunction scroll(left, top) {\n\t\tvar scrollState = gantt.getScrollState();\n\n\t\tvar scrollLeft = null,\n\t\t\tscrollTop = null;\n\n\t\tif (left) {\n\t\t\tscrollLeft = scrollState.x + left;\n\t\t\tscrollLeft = Math.min(scrollState.width, scrollLeft);\n\t\t\tscrollLeft = Math.max(0, scrollLeft);\n\t\t}\n\n\t\tif (top) {\n\t\t\tscrollTop = scrollState.y + top;\n\t\t\tscrollTop = Math.min(scrollState.height, scrollTop);\n\t\t\tscrollTop = Math.max(0, scrollTop);\n\t\t}\n\n\t\tgantt.scrollTo(scrollLeft, scrollTop);\n\t}\n\n\tgantt.attachEvent(\"onGanttReady\", function() {\n\t\tif(!isHeadless(gantt)){\n\t\t\tgantt.eventRemove(document.body, \"mousemove\", autoscrollInterval);\n\t\t\tgantt.event(document.body, \"mousemove\", autoscrollInterval);\n\n\t\t\tgantt.eventRemove(document.body, \"touchmove\", autoscrollInterval);\n\t\t\tgantt.event(document.body, \"touchmove\", autoscrollInterval);\n\n\t\t\tgantt.eventRemove(document.body, \"pointermove\", autoscrollInterval);\n\t\t\tgantt.event(document.body, \"pointermove\", autoscrollInterval);\n\t\t}\n\t});\n\n\tgantt.attachEvent(\"onDestroy\", function(){\n\t\tdefineScrollInterval(false);\n\t});\n\n};","module.exports = function(gantt){\n\tif(!gantt.ext){\n\t\tgantt.ext = {};\n\t}\n\n\tvar modules = [\n\t\trequire(\"./autoscroll\"),\n\t\trequire(\"./jquery_hooks\"),\n\t\trequire(\"./dhtmlx_hooks\")\n\t];\n\n\tfor(var i = 0; i < modules.length; i++){\n\t\tif(modules[i])\n\t\t\tmodules[i](gantt);\n\t}\n\n\tvar TimelineZoom = require(\"./timeline_zoom\").default;\n\tgantt.ext.zoom = new TimelineZoom(gantt);\n};","module.exports = function(gantt) {\ngantt.skins[\"contrast_white\"] = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:100,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\ngantt.skins[\"contrast_black\"] = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:100,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\n\tgantt.skins.material = {\n\t\tconfig: {\n\t\t\tgrid_width: 411,\n\t\t\trow_height: 34,\n\t\t\ttask_height_offset: 6,\n\t\t\tscale_height: 36,\n\t\t\tlink_line_width: 2,\n\t\t\tlink_arrow_size: 6,\n\t\t\tlightbox_additional_height: 80\n\t\t},\n\t\t_second_column_width: 110,\n\t\t_third_column_width: 75,\n\t\t_redefine_lightbox_buttons: {\n\t\t\t\"buttons_left\": [\"dhx_delete_btn\"],\n\t\t\t\"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n\t\tvar t = gantt.getTaskNode(id);\n\t\tif (t) {\n\t\t\tt.className += \" gantt_drag_animation\";\n\t\t\tsetTimeout(function () {\n\t\t\t\tvar indx = t.className.indexOf(\" gantt_drag_animation\");\n\t\t\t\tif (indx > -1) {\n\t\t\t\t\tt.className = t.className.slice(0, indx);\n\t\t\t\t}\n\t\t\t}, 200);\n\t\t}\n\t});\n\n};","module.exports = function(gantt) {\n\tgantt.skins.broadway = {\n\t\tconfig: {\n\t\t\tgrid_width: 360,\n\t\t\trow_height: 35,\n\t\t\tscale_height: 35,\n\t\t\tlink_line_width: 1,\n\t\t\tlink_arrow_size: 7,\n\t\t\tlightbox_additional_height: 86\n\t\t},\n\t\t_second_column_width: 90,\n\t\t_third_column_width: 80,\n\n\t\t_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\t\t_config_buttons_left: {},\n\t\t_config_buttons_right: {\n\t\t\t\"gantt_delete_btn\": \"icon_delete\",\n\t\t\t\"gantt_save_btn\": \"icon_save\"\n\t\t}\n\t};\n};","module.exports = function(gantt) {\ngantt.skins.terrace = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:90,\n\t_third_column_width:70\t\t\n};\n\n};","module.exports = function(gantt) {\ngantt.skins.meadow = {\n\tconfig:{\n\t\tgrid_width:350,\n\t\trow_height: 27,\n\t\tscale_height: 30,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:72\n\t},\n\t_second_column_width:95,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\ngantt.skins.skyblue = {\n\tconfig:{\n\t\tgrid_width:350,\n\t\trow_height: 27,\n\t\tscale_height: 27,\n\t\tlink_line_width:1,\n\t\tlink_arrow_size:8,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:95,\n\t_third_column_width:80\n};\n\n};","function _configure(col, data, force) {\n\tfor (var key in data)\n\t\tif (typeof col[key] == \"undefined\" || force)\n\t\t\tcol[key] = data[key];\n}\n\nfunction _get_skin(force, gantt) {\n\tvar skin = gantt.skin;\n\tif (!skin || force) {\n\t\tvar links = document.getElementsByTagName(\"link\");\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\n\t\t\tif (res) {\n\t\t\t\tif (gantt.skins[res[1]] || !skin) {\n\t\t\t\t\tskin = res[1];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgantt.skin = skin || \"terrace\";\n\tvar skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"];\n\n\t//apply skin related settings\n\t_configure(gantt.config, skinset.config, force);\n\n\tvar config = gantt.getGridColumns();\n\tif (config[1] && !gantt.defined(config[1].width))\n\t\tconfig[1].width = skinset._second_column_width;\n\tif (config[2] && !gantt.defined(config[2].width))\n\t\tconfig[2].width = skinset._third_column_width;\n\t\n\tfor (var i=0; i<config.length; i++) {\n\t\tvar column = config[i];\n\t\tif (column.name == \"add\") {\n\t\t\tif(!column.width){\n\t\t\t\tcolumn.width = 44;\n\t\t\t}\n\t\t\tif (!(gantt.defined(column.min_width) && gantt.defined(column.max_width))) {\n\t\t\t\tcolumn.min_width = column.min_width || column.width;\n\t\t\t\tcolumn.max_width = column.max_width || column.width;\n\t\t\t}\n\t\t\tif (column.min_width)\n\t\t\t\tcolumn.min_width = +column.min_width;\n\t\t\tif (column.max_width)\n\t\t\t\tcolumn.max_width = +column.max_width;\n\t\t\tif (column.width) {\n\t\t\t\tcolumn.width = +column.width;\n\t\t\t\tcolumn.width = (column.min_width && column.min_width > column.width) ? column.min_width : column.width;\n\t\t\t\tcolumn.width = (column.max_width && column.max_width < column.width) ? column.max_width : column.width;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (skinset.config.task_height)\n\t\tgantt.config.task_height = skinset.config.task_height || \"full\"; \n\n\tif (skinset._lightbox_template)\n\t\tgantt._lightbox_template = skinset._lightbox_template;\n\n\tif (skinset._redefine_lightbox_buttons) {\n\t\tgantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n\t\tgantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n\t}\n\n\n\tgantt.resetLightbox();\n}\n\nmodule.exports = function(gantt) {\n\tif(!gantt.resetSkin){\n\t\tgantt.resetSkin = function () {\n\t\t\tthis.skin = \"\";\n\t\t\t_get_skin(true, this);\n\t\t};\n\t\tgantt.skins = {};\n\n\t\tgantt.attachEvent(\"onGanttLayoutReady\", function(){\n\t\t\t_get_skin(false, this);\n\t\t});\n\t}\n};","function createLayoutFacade(){\n\n\tfunction getTimeline(gantt){\n\t\treturn gantt.$ui.getView(\"timeline\");\n\t}\n\n\tfunction getGrid(gantt){\n\t\treturn gantt.$ui.getView(\"grid\");\n\t}\n\n\tfunction getVerticalScrollbar(gantt){\n\t\treturn gantt.$ui.getView(\"scrollVer\");\n\t}\n\n\tfunction getHorizontalScrollbar(gantt){\n\t\treturn gantt.$ui.getView(\"scrollHor\");\n\t}\n\n\tvar DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n\tfunction tryCall(getView, method, args, fallback){\n\t\tvar view = getView(this);\n\t\tif (!(view && view.isVisible())) {\n\t\t\tif(fallback){\n\t\t\t\treturn fallback();\n\t\t\t}else{\n\t\t\t\treturn DEFAULT_VALUE;\n\t\t\t}\n\t\t} else {\n\t\t\treturn view[method].apply(view, args);\n\t\t}\n\t}\n\n\treturn {\n\n\t\tgetColumnIndex: function(name) {\n\t\t\tvar res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tdateFromPos: function(x) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn this.getState().min_date;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tposFromDate: function(date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetRowTop: function(index) {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getRowTop\", [index],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getRowTop\", [index]);}\n\t\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskTop: function(id) {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemTop\", [id],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemTop\", [id]);}\n\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\n\t\tgetTaskPosition: function(task, start_date, end_date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\tvar top = this.getTaskTop(task.id);\n\t\t\t\tvar height = this.getTaskHeight();\n\n\t\t\t\treturn {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\ttop: top,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: 0\n\t\t\t\t};\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskHeight: function() {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemHeight\", [],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemHeight\", []);}\n\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\n\t\tcolumnIndexByDate: function(date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\troundTaskDates: function() {\n\t\t\ttryCall.call(this, getTimeline, \"roundTaskDates\", []);\n\t\t},\n\n\t\tgetScale: function() {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getScale\", []);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskNode: function(id) {\n\t\t\tvar timeline = getTimeline(this);\n\t\t\tif (!timeline || !timeline.isVisible()) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tvar node = timeline._taskRenderer.rendered[id];\n\t\t\t\tif(!node){\n\t\t\t\t\tvar domAttr = timeline.$config.item_attribute;\n\t\t\t\t\tnode = timeline.$task_bars.querySelector(\"[\" +domAttr+ \"='\"+id+\"']\");\n\t\t\t\t}\n\n\t\t\t\treturn node || null;\n\t\t\t}\n\t\t},\n\n\n\t\tgetLinkNode: function(id) {\n\t\t\tvar timeline = getTimeline(this);\n\t\t\tif (!timeline.isVisible()) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn timeline._linkRenderer.rendered[id];\n\t\t\t}\n\t\t},\n\n\t\tscrollTo: function(left, top){\n\t\t\tvar vertical = getVerticalScrollbar(this);\n\t\t\tvar horizontal = getHorizontalScrollbar(this);\n\n\t\t\tvar oldH = {position: 0},\n\t\t\t\toldV = {position: 0};\n\n\t\t\tif(vertical){\n\t\t\t\toldV = vertical.getScrollState();\n\t\t\t}\n\t\t\tif(horizontal){\n\t\t\t\toldH = horizontal.getScrollState();\n\t\t\t}\n\n\t\t\tif (horizontal && left*1 == left){\n\t\t\t\thorizontal.scroll(left);\n\t\t\t}\n\t\t\tif(vertical && top*1 == top){\n\t\t\t\tvertical.scroll(top);\n\t\t\t}\n\n\t\t\tvar newV = {position: 0},\n\t\t\t\tnewH = {position: 0};\n\t\t\tif(vertical){\n\t\t\t\tnewV = vertical.getScrollState();\n\t\t\t}\n\t\t\tif(horizontal){\n\t\t\t\tnewH = horizontal.getScrollState();\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n\t\t},\n\n\t\tshowDate: function(date){\n\t\t\tvar date_x = this.posFromDate(date);\n\t\t\tvar scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n\t\t\tthis.scrollTo(scroll_to);\n\t\t},\n\t\tshowTask: function(id) {\n\t\t\tvar pos = this.getTaskPosition(this.getTask(id));\n\n\t\t\tvar left = Math.max(pos.left - this.config.task_scroll_offset, 0);\n\n\t\t\tvar dataHeight = this._scroll_state().y;\n\t\t\tvar top;\n\t\t\tif(!dataHeight){\n\t\t\t\ttop = pos.top;\n\t\t\t}else{\n\t\t\t\ttop = pos.top - (dataHeight - this.config.row_height)/2;\n\t\t\t}\n\n\t\t\tthis.scrollTo(left, top);\n\t\t},\n\t\t_scroll_state: function(){\n\t\t\tvar result = {\n\t\t\t\tx: false,\n\t\t\t\ty: false,\n\t\t\t\tx_pos: 0,\n\t\t\t\ty_pos: 0,\n\t\t\t\tscroll_size: this.config.scroll_size + 1,//1px for inner content\n\t\t\t\tx_inner: 0,\n\t\t\t\ty_inner: 0\n\t\t\t};\n\n\t\t\tvar scrollVer = getVerticalScrollbar(this),\n\t\t\t\tscrollHor = getHorizontalScrollbar(this);\n\t\t\tif(scrollHor){\n\t\t\t\tvar horState = scrollHor.getScrollState();\n\t\t\t\tif(horState.visible){\n\t\t\t\t\tresult.x = horState.size;\n\t\t\t\t\tresult.x_inner = horState.scrollSize;\n\t\t\t\t}\n\t\t\t\tresult.x_pos = horState.position || 0;\n\t\t\t}\n\n\t\t\tif(scrollVer){\n\t\t\t\tvar verState = scrollVer.getScrollState();\n\t\t\t\tif(verState.visible){\n\t\t\t\t\tresult.y = verState.size;\n\n\t\t\t\t\tresult.y_inner = verState.scrollSize;\n\t\t\t\t}\n\t\t\t\tresult.y_pos = verState.position || 0;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\tgetScrollState: function(){\n\t\t\tvar state = this._scroll_state();\n\t\t\treturn { x:state.x_pos, y:state.y_pos, inner_width:state.x, inner_height:state.y, width: state.x_inner, height: state.y_inner };\n\t\t}\n\n\t};\n\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function(gantt) {\n\tdelete gantt.addTaskLayer;\n\tdelete gantt.addLinkLayer;\n};","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar initializer = (function() {\n\treturn function (gantt) {\n\t\treturn {\n\n\t\t\tgetVerticalScrollbar: function(){\n\t\t\t\treturn gantt.$ui.getView(\"scrollVer\");\n\t\t\t},\n\t\t\tgetHorizontalScrollbar: function(){\n\t\t\t\treturn gantt.$ui.getView(\"scrollHor\");\n\t\t\t},\n\n\t\t\t_legacyGridResizerClass: function(layout){\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\n\t\t\t\t\tvar r = resizers[i];\n\t\t\t\t\tvar gridResizer = false;\n\n\t\t\t\t\tvar prev = r.$parent.getPrevSibling(r.$id);\n\t\t\t\t\tif(prev && prev.$config && prev.$config.id === \"grid\"){\n\t\t\t\t\t\tgridResizer= true;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar next = r.$parent.getNextSibling(r.$id);\n\t\t\t\t\t\tif(next && next.$config && next.$config.id === \"grid\"){\n\t\t\t\t\t\t\tgridResizer= true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(gridResizer){\n\t\t\t\t\t\tr.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonCreated: function(layout) {\n\t\t\t\tvar first = true;\n\n\t\t\t\tthis._legacyGridResizerClass(layout);\n\n\t\t\t\tlayout.attachEvent(\"onBeforeResize\", function() {\n\t\t\t\t\tvar mainTimeline = gantt.$ui.getView(\"timeline\");\n\t\t\t\t\tif (mainTimeline)\n\t\t\t\t\t\tmainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n\n\t\t\t\t\tvar mainGrid = gantt.$ui.getView(\"grid\");\n\n\t\t\t\t\tif(!mainGrid)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar showGrid = gantt.config.show_grid;\n\t\t\t\t\tif (first) {\n\t\t\t\t\t\tvar colsWidth = mainGrid._getColsTotalWidth();\n\t\t\t\t\t\tif (colsWidth !== false){\n\t\t\t\t\t\t\tgantt.config.grid_width = colsWidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowGrid = showGrid && !!gantt.config.grid_width;\n\t\t\t\t\t\tgantt.config.show_grid = showGrid;\n\t\t\t\t\t}\n\t\t\t\t\tmainGrid.$config.hidden = mainGrid.$parent.$config.hidden = !showGrid;\n\n\t\t\t\t\tif (!mainGrid.$config.hidden) {\n\t\t\t\t\t\t/* restrict grid width due to min_width, max_width, min_grid_column_width */\n\t\t\t\t\t\tvar grid_limits = mainGrid._getGridWidthLimits();\n\t\t\t\t\t\tif (grid_limits[0] && gantt.config.grid_width < grid_limits[0])\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[0];\n\t\t\t\t\t\tif (grid_limits[1] && gantt.config.grid_width > grid_limits[1])\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[1];\n\t\t\t\t\t\tif (mainTimeline && gantt.config.show_chart){\n\n\t\t\t\t\t\t\tmainGrid.$config.width = gantt.config.grid_width - 1;\n\t\t\t\t\t\t\tif (!first) {\n\t\t\t\t\t\t\t\tif (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n\t\t\t\t\t\t\t\t\t// timeline is being displayed after being not visible, reset grid with from full screen\n\t\t\t\t\t\t\t\t\tif (!mainGrid.$config.original_grid_width) {\n\t\t\t\t\t\t\t\t\t\tvar skinSettings = gantt.skins[gantt.skin];\n\t\t\t\t\t\t\t\t\t\tif(skinSettings && skinSettings.config && skinSettings.config.grid_width){\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n\t\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgantt.config.grid_width = mainGrid.$config.original_grid_width;\n\t\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmainGrid.$parent._setContentSize(mainGrid.$config.width, null);\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, gantt.config.grid_width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\n\t\t\t\t\t\t\t\tif (mainGrid.$parent.$config.group) {\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, mainGrid.$parent.$config.width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n\t\t\t\t\t\t\t\t// hiding timeline, remember grid with to restore it when timeline is displayed again\n\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = gantt.config.grid_width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!first) {\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfirst = false;\n\t\t\t\t});\n\t\t\t\tthis._initScrollStateEvents(layout);\n\t\t\t},\n\n\t\t\t_initScrollStateEvents: function(layout) {\n\t\t\t\tgantt._getVerticalScrollbar = this.getVerticalScrollbar;\n\t\t\t\tgantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n\n\t\t\t\tvar vertical = this.getVerticalScrollbar();\n\t\t\t\tvar horizontal = this.getHorizontalScrollbar();\n\t\t\t\tif (vertical) {\n\t\t\t\t\tvertical.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (horizontal) {\n\t\t\t\t\thorizontal.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tlayout.attachEvent(\"onResize\", function(){\n\t\t\t\t\tif (vertical && !gantt.$scroll_ver){\n\t\t\t\t\t\tgantt.$scroll_ver = vertical.$scroll_ver;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (horizontal && !gantt.$scroll_hor){\n\t\t\t\t\t\tgantt.$scroll_hor = horizontal.$scroll_hor;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_findGridResizer: function(layout, grid){\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\n\t\t\t\tvar gridFirst = true;\n\t\t\t\tvar gridResizer;\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\n\t\t\t\t\tvar res = resizers[i];\n\t\t\t\t\tres._getSiblings();\n\t\t\t\t\tvar prev = res._behind;\n\t\t\t\t\tvar next = res._front;\n\t\t\t\t\tif(prev && prev.$content === grid || (prev.isChild && prev.isChild(grid))){\n\t\t\t\t\t\tgridResizer = res;\n\t\t\t\t\t\tgridFirst = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}else if(next && next.$content === grid || (next.isChild && next.isChild(grid))){\n\t\t\t\t\t\tgridResizer = res;\n\t\t\t\t\t\tgridFirst = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tresizer: gridResizer,\n\t\t\t\t\tgridFirst: gridFirst\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tonInitialized: function (layout) {\n\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\n\t\t\t\tvar resizeInfo = this._findGridResizer(layout, grid);\n\n\t\t\t\t// expose grid resize events\n\t\t\t\tif(resizeInfo.resizer){\n\t\t\t\t\tvar gridFirst = resizeInfo.gridFirst,\n\t\t\t\t\t\tnext = resizeInfo.resizer;\n\t\t\t\t\tvar initialWidth;\n\t\t\t\t\tnext.attachEvent(\"onResizeStart\", function(prevCellWidth, nextCellWidth){\n\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\n\t\t\t\t\t\tif(viewCell){\n\t\t\t\t\t\t\tvar limits = grid._getGridWidthLimits();\n\n\t\t\t\t\t\t\t// min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\t\t\t\t\t\t\tif(!grid.$config.scrollable)\n\t\t\t\t\t\t\t\tviewCell.$config.minWidth = limits[0];\n\n\t\t\t\t\t\t\tviewCell.$config.maxWidth = limits[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinitialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n\t\t\t\t\t});\n\t\t\t\t\tnext.attachEvent(\"onResize\", function(newBehindSize, newFrontSize){\n\t\t\t\t\t\tvar newSize = gridFirst ? newBehindSize : newFrontSize;\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n\t\t\t\t\t});\n\t\t\t\t\tnext.attachEvent(\"onResizeEnd\", function(oldBackSize, oldFrontSize, newBackSize, newFrontSize){\n\n\t\t\t\t\t\tvar oldSize = gridFirst ? oldBackSize : oldFrontSize;\n\t\t\t\t\t\tvar newSize = gridFirst ? newBackSize : newFrontSize;\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\n\t\t\t\t\t\tif(viewCell){\n\t\t\t\t\t\t\tviewCell.$config.minWidth = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\t\t\t\t\t\tif(res){\n\t\t\t\t\t\t\tgantt.config.grid_width = newSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonDestroyed: function (timeline) {\n\n\t\t\t}\n\t\t};\n\n\t};\n})();\n\nmodule.exports = initializer;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar initLinksDND = function(timeline, gantt) {\n\tvar _link_landing,\n\t\t_link_target_task,\n\t\t_link_target_task_start,\n\t\t_link_source_task,\n\t\t_link_source_task_start,\n\t\tmarkerDefaultOffset = 10,\n\t\tscrollDefaultSize = 18;\n\n\n\tfunction getVisibleMilestoneWidth() {\n\t\tvar origWidth = timeline.getItemHeight();//m-s have square shape\n\t\treturn Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n\t}\n\n\tfunction isMilestone(task) {\n\t\treturn gantt.getTaskType(task.type) == gantt.config.types.milestone;\n\t}\n\n\tfunction getDndState(){\n\t\treturn {\n\t\t\tlink_source_id : _link_source_task,\n\t\t\tlink_target_id : _link_target_task,\n\t\t\tlink_from_start : _link_source_task_start,\n\t\t\tlink_to_start : _link_target_task_start,\n\t\t\tlink_landing_area : _link_landing\n\t\t};\n\t}\n\n\tvar services = gantt.$services;\n\n\tvar state = services.getService(\"state\");\n\tvar DnD = services.getService(\"dnd\");\n\n\tstate.registerProvider(\"linksDnD\", getDndState);\n\n\tvar start_marker = \"task_start_date\",\n\t\tend_marker = \"task_end_date\",\n\t\tlink_edge_marker = \"gantt_link_point\",\n\t\tlink_landing_hover_area = \"gantt_link_control\";\n\n\tvar dnd = new DnD(timeline.$task_bars, {\n\t\tsensitivity : 0,\n\t\tupdates_per_second : 60,\n\t\tmousemoveContainer: gantt.$root,\n\t\tselector: \".\" + link_edge_marker,\n\t\tpreventDefault: true\n\t});\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function(obj,e) {\n\t\tvar target = (e.target||e.srcElement);\n\t\tresetDndState();\n\t\tif(gantt.getState(\"tasksDnd\").drag_id)\n\t\t\treturn false;\n\n\t\tif(domHelpers.locateClassName(target, link_edge_marker)){\n\t\t\tif(domHelpers.locateClassName(target, start_marker))\n\t\t\t\t_link_source_task_start = true;\n\n\t\t\tvar sid = gantt.locate(e);\n\t\t\t_link_source_task = sid;\n\n\t\t\tvar t = gantt.getTask(sid);\n\t\t\tif(gantt.isReadonly(t)){\n\t\t\t\tresetDndState();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar shift = 0;\n\n\t\t\tthis._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\n\t}, this));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function(obj,e) {\n\t\tif(gantt.config.touch) {\n\t\t\tgantt.refreshData();\n\t\t}\n\t\tupdateMarkedHtml(dnd.config.marker);\n\t}, this));\n\n\tfunction getLinePos(task, to_start, shift, cfg, isStart){\n\t\tvar taskPos = getMilestonePosition(task, function(task){ return gantt.getTaskPosition(task);}, cfg);\n\n\t\tvar pos = {x: taskPos.x, y: taskPos.y};\n\t\tif(!to_start){\n\t\t\tpos.x = taskPos.xEnd;\n\t\t}\n\n\t\t//var pos = gantt._get_task_pos(task, !!to_start);\n\t\tpos.y += gantt.config.row_height/2;\n\n\t\tvar offset = isMilestone(task) && isStart ? 2 : 0;\n\n\t\tshift = shift || 0;\n\t\tif(cfg.rtl)\n\t\t\tshift = shift * -1;\n\n\t\tpos.x += (to_start ? -1 : 1)*shift - offset;\n\t\treturn pos;\n\t}\n\n\tfunction getMilestonePosition(task, getTaskPosition, cfg){\n\t\tvar pos = getTaskPosition(task);\n\n\t\tvar res = {\n\t\t\tx: pos.left,\n\t\t\ty: pos.top,\n\t\t\twidth: pos.width,\n\t\t\theight: pos.height\n\t\t};\n\n\t\tif(cfg.rtl){\n\t\t\tres.xEnd = res.x;\n\t\t\tres.x = res.xEnd + res.width;\n\t\t}else{\n\t\t\tres.xEnd = res.x + res.width;\n\t\t}\n\t\tres.yEnd = res.y + res.height;\n\n\t\tif(gantt.getTaskType(task.type) == gantt.config.types.milestone){\n\t\t\tvar milestoneWidth = getVisibleMilestoneWidth();\n\n\t\t\tres.x += (!cfg.rtl ? -1 : 1)*(milestoneWidth / 2);\n\t\t\tres.xEnd += (!cfg.rtl ? 1 : -1)*(milestoneWidth / 2);\n\n\t\t\t//pos.x -= milestoneWidth / 2;\n\t\t\t//pos.xEnd += milestoneWidth / 2;\n\t\t\tres.width = pos.xEnd - pos.x;\n\t\t}\n\n\n\t\treturn res;\n\t}\n\n\tfunction getVieportSize(){\n\t\tvar root = gantt.$root;\n\t\treturn { right: root.offsetWidth, bottom: root.offsetHeight };\n\t}\n\tfunction getMarkerSize (marker){\n\t\tvar width = 0, height = 0;\n\t\tif(marker){\n\t\t\twidth = marker.offsetWidth || 0;\n\t\t\theight = marker.offsetHeight || 0;\n\t\t}\n\t\treturn { width: width, height: height };\n\t}\n\n\tfunction getPosition(e, marker){\n\t\tvar oldPos = dnd.getPosition(e);\n\n\t\tvar markerSize = getMarkerSize(marker);\n\t\tvar viewportSize = getVieportSize();\n\n\t\tvar offsetX = gantt.config.tooltip_offset_x || markerDefaultOffset;\n\t\tvar offsetY = gantt.config.tooltip_offset_y || markerDefaultOffset;\n\n\t\tvar scrollSize = gantt.config.scroll_size || scrollDefaultSize;\n\n\t\tvar position = {\n\t\t\ty: oldPos.y + offsetY,\n\t\t\tx: oldPos.x + offsetX,\n\t\t\tbottom: oldPos.y + markerSize.height + offsetY + scrollSize,\n\t\t\tright: oldPos.x + markerSize.width + offsetX + scrollSize\n\t\t};\n\n\t\tif(position.bottom > viewportSize.bottom){\n\t\t\tposition.y = viewportSize.bottom - markerSize.height - offsetY;\n\t\t}\n\n\t\tif(position.right > viewportSize.right){\n\t\t\tposition.x = viewportSize.right - markerSize.width - offsetX;\n\t\t}\n\t\treturn position;\n\t}\n\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function(obj,e) {\n\t\tvar dd = dnd.config;\n\t\tvar pos = getPosition(e, dd.marker);\n\t\tadvanceMarker(dd.marker, pos);\n\t\tvar landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n\n\t\tvar prevTarget = _link_target_task;\n\t\tvar prevLanding = _link_landing;\n\t\tvar prevToStart = _link_target_task_start;\n\n\t\tvar targ = gantt.locate(e),\n\t\t\tto_start = true;\n\n\t\t// can drag and drop link to another gantt on the page, such links are not supported\n\t\tvar sameGantt = domHelpers.isChildOf(e.target || e.srcElement, gantt.$root);\n\t\tif(!sameGantt){\n\t\t\tlanding = false;\n\t\t\ttarg = null;\n\t\t}\n\n\t\tif(landing){\n\t\t\t//refreshTask\n\t\t\tto_start = !domHelpers.locateClassName(e, end_marker);\n\t\t\tlanding = !!targ;\n\t\t}\n\n\t\t_link_target_task = targ;\n\t\t_link_landing = landing;\n\t\t_link_target_task_start = to_start;\n\n\t\tif(landing){\n\t\t\tvar t = gantt.getTask(targ);\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar node = domHelpers.locateClassName(e, link_landing_hover_area);\n\t\t\tvar shift = 0;\n\t\t\tif(node){\n\t\t\t\tshift = Math.floor(node.offsetWidth / 2);\n\t\t\t}\n\n\t\t\tthis._dir_end = getLinePos(t, !!_link_target_task_start,shift, config);\n\t\t}else{\n\t\t\tthis._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\t\t\tif(gantt.env.isEdge){ // to fix margin collapsing\n\t\t\t\tthis._dir_end.y += window.scrollY;\n\t\t\t}\n\t\t}\n\n\t\tvar targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\t\tif(targetChanged){\n\t\t\tif(prevTarget)\n\t\t\t\tgantt.refreshTask(prevTarget, false);\n\t\t\tif(targ)\n\t\t\t\tgantt.refreshTask(targ, false);\n\t\t}\n\n\t\tif(targetChanged){\n\t\t\tupdateMarkedHtml(dd.marker);\n\t\t}\n\n\t\tshowDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n\n\t\treturn true;\n\t}, this));\n\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function() {\n\t\tvar drag = getDndState();\n\n\t\tif(drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id){\n\t\t\tvar type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n\t\t\tvar link = {source : drag.link_source_id, target: drag.link_target_id, type:type};\n\t\t\tif(link.type && gantt.isLinkAllowed(link)) {\n\t\t\t\tif(gantt.callEvent(\"onLinkCreated\", [link])){\n\t\t\t\t\tgantt.addLink(link);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tresetDndState();\n\n\t\tif(gantt.config.touch) {\n\t\t\tgantt.refreshData();\n\t\t}\n\t\telse {\n\t\t\tif (drag.link_source_id)\n\t\t\t\tgantt.refreshTask(drag.link_source_id, false);\n\t\t\tif (drag.link_target_id)\n\t\t\t\tgantt.refreshTask(drag.link_target_id, false);\n\t\t}\n\t\tremoveDirectionLine();\n\t}, this));\n\n\tfunction updateMarkedHtml(marker){\n\t\tvar link = getDndState();\n\n\t\tvar css = [\"gantt_link_tooltip\"];\n\t\tif(link.link_source_id && link.link_target_id){\n\t\t\tif(gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)){\n\t\t\t\tcss.push(\"gantt_allowed_link\");\n\t\t\t}else{\n\t\t\t\tcss.push(\"gantt_invalid_link\");\n\t\t\t}\n\t\t}\n\n\t\tvar className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n\t\tif(className)\n\t\t\tcss.push(className);\n\n\t\tvar html = \"<div class='\"+className+ \"'>\" +\n\t\t\tgantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) +\n\t\t\t\"</div>\";\n\t\tmarker.innerHTML = html;\n\t}\n\n\tfunction advanceMarker(marker, pos){\n\t\tmarker.style.left = pos.x + \"px\";\n\t\tmarker.style.top = pos.y + \"px\";\n\t}\n\n\tfunction resetDndState(){\n\t\t_link_source_task =\n\t\t\t_link_source_task_start =\n\t\t\t\t_link_target_task = null;\n\t\t_link_target_task_start = true;\n\t}\n\tfunction showDirectingLine(s_x, s_y, e_x, e_y){\n\t\tvar div = getDirectionLine();\n\n\t\tvar link = getDndState();\n\n\t\tvar css = [\"gantt_link_direction\"];\n\t\tif(gantt.templates.link_direction_class){\n\t\t\tcss.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n\t\t}\n\n\t\tvar dist =Math.sqrt( (Math.pow(e_x - s_x, 2)) + (Math.pow(e_y - s_y, 2)) );\n\t\tdist = Math.max(0, dist - 3);\n\t\tif(!dist)\n\t\t\treturn;\n\n\t\tdiv.className = css.join(\" \");\n\t\tvar tan = (e_y - s_y)/(e_x - s_x),\n\t\t\tangle = Math.atan(tan);\n\n\t\tif(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2){\n\t\t\tangle += Math.PI;\n\t\t}else if(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3){\n\t\t\tangle -= Math.PI;\n\t\t}\n\n\n\n\t\tvar sin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle),\n\t\t\ttop = Math.round(s_y),\n\t\t\tleft = Math.round(s_x);\n\n\n\t\tvar style = [\n\t\t\t\"-webkit-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-moz-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-ms-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-o-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"width:\" + Math.round(dist) + \"px\"\n\t\t];\n\n\t\tif(window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1){\n\t\t\t//ms-filter breaks styles in ie9, so add it only for 8th\n\t\t\tstyle.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n\n\t\t\tvar shiftLeft = Math.abs(Math.round(s_x - e_x)),\n\t\t\t\tshiftTop = Math.abs(Math.round(e_y - s_y));\n\t\t\t//fix rotation axis\n\t\t\tswitch(coordinateCircleQuarter(s_x, e_x, s_y, e_y)){\n\t\t\t\tcase 1:\n\t\t\t\t\ttop -= shiftTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tleft -= shiftLeft;\n\t\t\t\t\ttop -= shiftTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tleft -= shiftLeft;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t\tstyle.push(\"top:\" + top + \"px\");\n\t\tstyle.push(\"left:\" + left + \"px\");\n\n\t\tdiv.style.cssText = style.join(\";\");\n\t}\n\n\tfunction ieTransform(sin, cos){\n\t\treturn \"progid:DXImageTransform.Microsoft.Matrix(\"+\n\t\t\t\"M11 = \"+cos+\",\"+\n\t\t\t\"M12 = -\"+sin+\",\"+\n\t\t\t\"M21 = \"+sin+\",\"+\n\t\t\t\"M22 = \"+cos+\",\"+\n\t\t\t\"SizingMethod = 'auto expand'\"+\n\t\t\")\";\n\t}\n\tfunction coordinateCircleQuarter(sX, eX, sY, eY){\n\t\tif(eX >= sX){\n\t\t\tif(eY <= sY){\n\t\t\t\treturn 1;\n\t\t\t}else{\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t}else{\n\t\t\tif(eY <= sY){\n\t\t\t\treturn 2;\n\t\t\t}else{\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t}\n\n\t}\n\tfunction getDirectionLine(){\n\t\tif(!dnd._direction || !dnd._direction.parentNode){\n\t\t\tdnd._direction = document.createElement(\"div\");\n\t\t\ttimeline.$task_links.appendChild(dnd._direction);\n\t\t}\n\t\treturn dnd._direction;\n\t}\n\tfunction removeDirectionLine(){\n\t\tif(dnd._direction){\n\t\t\tif (dnd._direction.parentNode)\t//the event line can be detached because of data refresh\n\t\t\t\tdnd._direction.parentNode.removeChild(dnd._direction);\n\n\t\t\tdnd._direction = null;\n\t\t}\n\t}\n\tgantt.attachEvent(\"onGanttRender\", gantt.bind(function() {\n\t\tif(dnd._direction){\n\t\t\tshowDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n\t\t}\n\t}, this));\n};\n\nmodule.exports = {\n\tcreateLinkDND: function(){\n\t\treturn {\n\t\t\tinit: initLinksDND\n\t\t};\n\t}\n};","var domHelpers = require(\"../utils/dom_helpers\");\nvar utils = require(\"../../../utils/utils\");\nvar timeout = require(\"../../../utils/timeout\");\nvar helpers = require(\"../../../utils/helpers\");\n\nfunction createTaskDND(timeline, gantt) {\n\tvar services = gantt.$services;\n\treturn {\n\t\tdrag: null,\n\t\tdragMultiple: {},\n\t\t_events: {\n\t\t\tbefore_start: {},\n\t\t\tbefore_finish: {},\n\t\t\tafter_finish: {}\n\t\t},\n\t\t_handlers: {},\n\t\tinit: function() {\n\t\t\tthis._domEvents = gantt._createDomEventScope();\n\t\t\tthis.clear_drag_state();\n\t\t\tvar drag = gantt.config.drag_mode;\n\t\t\tthis.set_actions();\n\n\t\t\tvar stateService = services.getService(\"state\");\n\t\t\tstateService.registerProvider(\"tasksDnd\", utils.bind(function() {\n\t\t\t\treturn {\n\t\t\t\t\tdrag_id : this.drag ? this.drag.id : undefined,\n\t\t\t\t\tdrag_mode : this.drag ? this.drag.mode : undefined,\n\t\t\t\t\tdrag_from_start : this.drag ? this.drag.left : undefined\n\t\t\t\t};\n\t\t\t}, this));\n\n\t\t\tvar evs = {\n\t\t\t\t\"before_start\": \"onBeforeTaskDrag\",\n\t\t\t\t\"before_finish\": \"onBeforeTaskChanged\",\n\t\t\t\t\"after_finish\": \"onAfterTaskDrag\"\n\t\t\t};\n\t\t\t//for now, all drag operations will trigger the same events\n\t\t\tfor (var stage in this._events) {\n\t\t\t\tfor (var mode in drag) {\n\t\t\t\t\tthis._events[stage][mode] = evs[stage];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._handlers[drag.move] = this._move;\n\t\t\tthis._handlers[drag.resize] = this._resize;\n\t\t\tthis._handlers[drag.progress] = this._resize_progress;\n\t\t},\n\t\tset_actions: function() {\n\t\t\tvar data = timeline.$task_data;\n\t\t\tthis._domEvents.attach(data, \"mousemove\", gantt.bind(function(e) {\n\t\t\t\tthis.on_mouse_move(e);\n\t\t\t}, this));\n\t\t\tthis._domEvents.attach(data, \"mousedown\", gantt.bind(function(e) {\n\t\t\t\tthis.on_mouse_down(e);\n\t\t\t}, this));\n\t\t\tthis._domEvents.attach(document.body, \"mouseup\", gantt.bind(function(e) {\n\t\t\t\tthis.on_mouse_up(e);\n\t\t\t}, this));\n\t\t},\n\n\t\tclear_drag_state: function() {\n\t\t\tthis.drag = {\n\t\t\t\tid: null,\n\t\t\t\tmode: null,\n\t\t\t\tpos: null,\n\t\t\t\tstart_x: null,\n\t\t\t\tstart_y: null,\n\t\t\t\tobj: null,\n\t\t\t\tleft: null\n\t\t\t};\n\t\t\tthis.dragMultiple = {};\n\t\t},\n\t\t_resize: function(task, shift, drag) {\n\t\t\tvar cfg = timeline.$getConfig();\n\t\t\tvar coords_x = this._drag_task_coords(task, drag);\n\t\t\tif (drag.left) {\n\t\t\t\ttask.start_date = gantt.dateFromPos(coords_x.start + shift);\n\t\t\t\tif (!task.start_date) {\n\t\t\t\t\ttask.start_date = new Date(gantt.getState().min_date);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttask.end_date = gantt.dateFromPos(coords_x.end + shift);\n\t\t\t\tif (!task.end_date) {\n\t\t\t\t\ttask.end_date = new Date(gantt.getState().max_date);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar minDurationInUnits = this._calculateMinDuration(cfg.min_duration, cfg.duration_unit);\n\t\t\tif (task.end_date - task.start_date < cfg.min_duration) {\n\t\t\t\tif (drag.left)\n\t\t\t\t\ttask.start_date = gantt.calculateEndDate(task.end_date, -minDurationInUnits, cfg.duration_unit, task);\n\t\t\t\telse\n\t\t\t\t\ttask.end_date = gantt.calculateEndDate(task.start_date, minDurationInUnits, cfg.duration_unit, task);\n\t\t\t}\n\t\t\tgantt._init_task_timing(task);\n\t\t},\n\t\t_calculateMinDuration: function(duration, unit) {\n\t\t\tvar inMs = {\n\t\t\t\t\"minute\": 60000,\n\t\t\t\t\"hour\": 3600000,\n\t\t\t\t\"day\": 86400000,\n\t\t\t\t\"week\": 604800000,\n\t\t\t\t\"month\": 2419200000,\n\t\t\t\t\"year\": 31356000000\n\t\t\t};\n\t\t\treturn Math.ceil(duration / inMs[unit]);\n\t\t},\n\t\t_resize_progress: function(task, shift, drag) {\n\t\t\tvar coords_x = this._drag_task_coords(task, drag);\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar diffValue = !config.rtl ? (drag.pos.x - coords_x.start) : (coords_x.start - drag.pos.x);\n\n\t\t\tvar diff = Math.max(0, diffValue);\n\t\t\ttask.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n\t\t},\n\t\t_find_max_shift: function(dragItems, shift) {\n\t\t\tvar correctShift;\n\t\t\tfor (var i in dragItems) {\n\t\t\t\tvar drag = dragItems[i];\n\t\t\t\tvar task = gantt.getTask(drag.id);\n\n\t\t\t\tvar coords_x = this._drag_task_coords(task, drag);\n\t\t\t\tvar minX = gantt.posFromDate(new Date(gantt.getState().min_date));\n\t\t\t\tvar maxX = gantt.posFromDate(new Date(gantt.getState().max_date));\n\n\t\t\t\tif (coords_x.end + shift > maxX) {\n\t\t\t\t\tvar maxShift = maxX - coords_x.end;\n\t\t\t\t\tif (maxShift < correctShift || correctShift === undefined) {\n\t\t\t\t\t\tcorrectShift = maxShift;\n\t\t\t\t\t}\n\t\t\t\t} else if (coords_x.start + shift < minX) {\n\t\t\t\t\tvar minShift = minX - coords_x.start;\n\t\t\t\t\tif (minShift > correctShift || correctShift === undefined) {\n\t\t\t\t\t\tcorrectShift = minShift;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn correctShift;\n\t\t},\n\t\t_move: function(task, shift, drag) {\n\t\t\tvar coords_x = this._drag_task_coords(task, drag);\n\t\t\tvar new_start = gantt.dateFromPos(coords_x.start + shift),\n\t\t\t\tnew_end = gantt.dateFromPos(coords_x.end + shift);\n\t\t\tif (!new_start) {\n\t\t\t\ttask.start_date = new Date(gantt.getState().min_date);\n\t\t\t\ttask.end_date = gantt.dateFromPos(gantt.posFromDate(task.start_date) + (coords_x.end - coords_x.start));\n\t\t\t} else if (!new_end) {\n\t\t\t\ttask.end_date = new Date(gantt.getState().max_date);\n\t\t\t\ttask.start_date = gantt.dateFromPos(gantt.posFromDate(task.end_date) - (coords_x.end - coords_x.start));\n\t\t\t} else {\n\t\t\t\ttask.start_date = new_start;\n\t\t\t\ttask.end_date = new_end;\n\t\t\t}\n\t\t},\n\t\t_drag_task_coords: function(t, drag) {\n\t\t\tvar start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n\t\t\tvar end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n\t\t\treturn {\n\t\t\t\tstart: start,\n\t\t\t\tend: end\n\t\t\t};\n\t\t},\n\t\t_mouse_position_change: function(oldPos, newPos) {\n\t\t\tvar dx = oldPos.x - newPos.x,\n\t\t\t\tdy = oldPos.y - newPos.y;\n\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t},\n\t\t_is_number: function(n) {\n\t\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t\t},\n\n\t\ton_mouse_move: function(e) {\n\t\t\tif (this.drag.start_drag) {\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\n\t\t\t\tvar sX = this.drag.start_drag.start_x,\n\t\t\t\t\tsY = this.drag.start_drag.start_y;\n\n\t\t\t\tif ((Date.now() - this.drag.timestamp > 50) ||\n\t\t\t\t\t(this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n\t\t\t\t\t\tx: sX,\n\t\t\t\t\t\ty: sY\n\t\t\t\t\t}, pos) > 20)) {\n\t\t\t\t\tthis._start_dnd(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar drag = this.drag;\n\n\t\t\tif (drag.mode) {\n\t\t\t\tif (!timeout(this, 40))//limit update frequency\n\t\t\t\t\treturn;\n\n\t\t\t\tthis._update_on_move(e);\n\n\t\t\t}\n\t\t},\n\n\t\t_update_item_on_move: function(shift, id, mode, drag, e) {\n\t\t\tvar task = gantt.getTask(id);\n\t\t\tvar original = gantt.mixin({}, task);\n\t\t\tvar copy = gantt.mixin({}, task);\n\t\t\tthis._handlers[mode].apply(this, [copy, shift, drag]);\n\t\t\tgantt.mixin(task, copy, true);\n\t\t\t//gantt._update_parents(drag.id, true);\n\t\t\tgantt.callEvent(\"onTaskDrag\", [task.id, mode, copy, original, e]);\n\t\t\tgantt.mixin(task, copy, true);\n\t\t\tgantt.refreshTask(id);\n\t\t},\n\n\t\t_update_on_move: function(e) {\n\t\t\tvar drag = this.drag;\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tif (drag.mode) {\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\t\t\t\tif (drag.pos && drag.pos.x == pos.x)\n\t\t\t\t\treturn;\n\n\t\t\t\tdrag.pos = pos;\n\n\t\t\t\tvar curr_date = gantt.dateFromPos(pos.x);\n\t\t\t\tif (!curr_date || isNaN(curr_date.getTime()))\n\t\t\t\t\treturn;\n\n\n\t\t\t\tvar shift = pos.x - drag.start_x;\n\t\t\t\tvar task = gantt.getTask(drag.id);\n\t\t\t\tif (this._handlers[drag.mode]) {\n\t\t\t\t\tif (drag.mode === config.drag_mode.move) {\n\t\t\t\t\t\tvar dragHash = {};\n\n\t\t\t\t\t\tif (this._isMultiselect()) {\n\t\t\t\t\t\t\tvar selectedTasksIds = gantt.getSelectedTasks();\n\t\t\t\t\t\t\tif (selectedTasksIds.indexOf(drag.id) >= 0) {\n\t\t\t\t\t\t\t\tdragHash = this.dragMultiple;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gantt.isSummaryTask(task) && gantt.config.drag_project) {\n\t\t\t\t\t\t\tvar initialDrag = {};\n\t\t\t\t\t\t\tinitialDrag[drag.id] = utils.copy(drag);\n\t\t\t\t\t\t\tdragHash = utils.mixin(initialDrag, this.dragMultiple);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar maxShift = this._find_max_shift(dragHash, shift);\n\t\t\t\t\t\tif (maxShift !== undefined) {\n\t\t\t\t\t\t\tshift = maxShift;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\t\t\t\t\t\tfor (var i in dragHash) {\n\t\t\t\t\t\t\tvar childDrag = dragHash[i];\n\t\t\t\t\t\t\tthis._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// for resize and progress\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\t\t\t\t\t}\n\t\t\t\t\tgantt._update_parents(drag.id);\n\t\t\t\t}\n\n\t\t\t}\n\t\t},\n\n\t\ton_mouse_down: function(e, src) {\n\t\t\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n\t\t\t// let's ignore right mouse button then\n\t\t\tif (e.button == 2 && e.button !== undefined)\n\t\t\t\treturn;\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar id = gantt.locate(e);\n\t\t\tvar task = null;\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\ttask = gantt.getTask(id);\n\t\t\t}\n\n\t\t\tif (gantt.isReadonly(task) || this.drag.mode) return;\n\n\t\t\tthis.clear_drag_state();\n\n\t\t\tsrc = src || (e.target || e.srcElement);\n\n\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\tvar drag = this._get_drag_mode(className, src);\n\n\t\t\tif (!className || !drag) {\n\t\t\t\tif (src.parentNode)\n\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\n\t\t\t\telse\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!drag) {\n\t\t\t\tif (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n\t\t\t\t\tif (src.parentNode)\n\t\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n\t\t\t\t\tid = gantt.locate(src);\n\t\t\t\t\ttask = gantt.copy(gantt.getTask(id) || {});\n\n\t\t\t\t\tif (gantt.isReadonly(task)) {\n\t\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((gantt.isSummaryTask(task) && !config.drag_project) && drag.mode != config.drag_mode.progress) {//only progress drag is allowed for tasks with flexible duration\n\t\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdrag.id = id;\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\n\t\t\t\t\tdrag.start_x = pos.x;\n\t\t\t\t\tdrag.start_y = pos.y;\n\t\t\t\t\tdrag.obj = task;\n\t\t\t\t\tthis.drag.start_drag = drag;\n\t\t\t\t\tthis.drag.timestamp = Date.now();\n\n\t\t\t\t} else\n\t\t\t\t\tthis.clear_drag_state();\n\t\t\t}\n\t\t},\n\t\t_fix_dnd_scale_time: function(task, drag) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar unit = gantt.getScale().unit,\n\t\t\t\tstep = gantt.getScale().step;\n\t\t\tif (!config.round_dnd_dates) {\n\t\t\t\tunit = 'minute';\n\t\t\t\tstep = config.time_step;\n\t\t\t}\n\n\t\t\tfunction fixStart(task) {\n\t\t\t\tif (!gantt.config.correct_work_time)\n\t\t\t\t\treturn;\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\tif (!gantt.isWorkTime(task.start_date, undefined, task))\n\t\t\t\t\ttask.start_date = gantt.calculateEndDate({\n\t\t\t\t\t\tstart_date: task.start_date,\n\t\t\t\t\t\tduration: -1,\n\t\t\t\t\t\tunit: config.duration_unit,\n\t\t\t\t\t\ttask: task\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction fixEnd(task) {\n\t\t\t\tif (!gantt.config.correct_work_time)\n\t\t\t\t\treturn;\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\tif (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task))\n\t\t\t\t\ttask.end_date = gantt.calculateEndDate({\n\t\t\t\t\t\tstart_date: task.end_date,\n\t\t\t\t\t\tduration: 1,\n\t\t\t\t\t\tunit: config.duration_unit,\n\t\t\t\t\t\ttask: task\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (drag.mode == config.drag_mode.resize) {\n\t\t\t\tif (drag.left) {\n\t\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\n\t\t\t\t\tfixStart(task);\n\t\t\t\t} else {\n\t\t\t\t\ttask.end_date = gantt.roundDate({date: task.end_date, unit: unit, step: step});\n\t\t\t\t\tfixEnd(task);\n\t\t\t\t}\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\n\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\n\t\t\t\tfixStart(task);\n\t\t\t\ttask.end_date = gantt.calculateEndDate(task);\n\t\t\t}\n\t\t},\n\t\t_fix_working_times: function(task, drag) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar drag = drag || {mode: config.drag_mode.move};\n\n\t\t\tif (drag.mode == config.drag_mode.resize) {\n\t\t\t\tif (drag.left) {\n\t\t\t\t\ttask.start_date = gantt.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\n\t\t\t\t} else {\n\t\t\t\t\ttask.end_date = gantt.getClosestWorkTime({date: task.end_date, dir: 'past', task: task});\n\t\t\t\t}\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\n\t\t\t\tgantt.correctTaskWorkTime(task);\n\t\t\t}\n\t\t},\n\n\t\t_finalize_mouse_up: function(taskId, config, drag, e) {\n\t\t\tvar task = gantt.getTask(taskId);\n\n\t\t\tif (config.work_time && config.correct_work_time) {\n\t\t\t\tthis._fix_working_times(task, drag);\n\t\t\t}\n\n\t\t\tthis._fix_dnd_scale_time(task, drag);\n\n\t\t\tif (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n\t\t\t\t//drag.obj._dhx_changed = false;\n\t\t\t\tthis.clear_drag_state();\n\t\t\t\tif (taskId == drag.id) {\n\t\t\t\t\tdrag.obj._dhx_changed = false;\n\t\t\t\t\tgantt.mixin(task, drag.obj, true);\n\t\t\t\t}\n\n\n\t\t\t\tgantt.refreshTask(task.id);\n\t\t\t} else {\n\t\t\t\tvar drag_id = taskId;\n\n\t\t\t\tgantt._init_task_timing(task);\n\n\t\t\t\tthis.clear_drag_state();\n\t\t\t\tgantt.updateTask(task.id);\n\t\t\t\tthis._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n\t\t\t}\n\n\t\t},\n\n\t\ton_mouse_up: function(e) {\n\n\t\t\tvar drag = this.drag;\n\t\t\tif (drag.mode && drag.id) {\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\t//drop\n\t\t\t\tvar task = gantt.getTask(drag.id);\n\t\t\t\tvar dragMultiple = this.dragMultiple;\n\n\t\t\t\tif (drag.mode === config.drag_mode.move) {\n\t\t\t\t\tif ((gantt.isSummaryTask(task) && config.drag_project) || (this._isMultiselect())) {\n\t\t\t\t\t\tfor (var i in dragMultiple) {\n\t\t\t\t\t\t\tthis._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._finalize_mouse_up(drag.id, config, drag, e);\n\t\t\t}\n\t\t\tthis.clear_drag_state();\n\t\t},\n\t\t_get_drag_mode: function(className, el) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar modes = config.drag_mode;\n\t\t\tvar classes = (className || \"\").split(\" \");\n\t\t\tvar classname = classes[0];\n\t\t\tvar drag = {mode: null, left: null};\n\t\t\tswitch (classname) {\n\t\t\t\tcase \"gantt_task_line\":\n\t\t\t\tcase \"gantt_task_content\":\n\t\t\t\t\tdrag.mode = modes.move;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_task_drag\":\n\t\t\t\t\tdrag.mode = modes.resize;\n\n\t\t\t\t\tvar dragProperty = el.getAttribute(\"data-bind-property\");\n\n\t\t\t\t\tif (dragProperty == \"start_date\") {\n\t\t\t\t\t\tdrag.left = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdrag.left = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_task_progress_drag\":\n\t\t\t\t\tdrag.mode = modes.progress;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_link_control\":\n\t\t\t\tcase \"gantt_link_point\":\n\t\t\t\t\tdrag.mode = modes.ignore;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tdrag = null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn drag;\n\n\t\t},\n\n\t\t_start_dnd: function(e) {\n\t\t\tvar drag = this.drag = this.drag.start_drag;\n\t\t\tdelete drag.start_drag;\n\n\t\t\tvar cfg = timeline.$getConfig();\n\t\t\tvar id = drag.id;\n\n\t\t\tif (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n\t\t\t\tthis.clear_drag_state();\n\t\t\t} else {\n\t\t\t\tdelete drag.start_drag;\n\t\t\t\tvar task = gantt.getTask(id);\n\t\t\t\tif (gantt.isReadonly(task)){\n\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._isMultiselect()) {\n\t\t\t\t\t// for don't move selected tasks when drag unselected task\n\t\t\t\t\tvar selectedTasksIds = gantt.getSelectedTasks();\n\t\t\t\t\tif (selectedTasksIds.indexOf(drag.id) >= 0) {\n\t\t\t\t\t\thelpers.forEach(selectedTasksIds, gantt.bind(function(taskId) {\n\t\t\t\t\t\t\tvar selectedTask = gantt.getTask(taskId);\n\t\t\t\t\t\t\tif (gantt.isSummaryTask(selectedTask) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n\t\t\t\t\t\t\t\tthis._addSubtasksToDragMultiple(selectedTask.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.dragMultiple[taskId] = gantt.mixin({\n\t\t\t\t\t\t\t\tid: selectedTask.id,\n\t\t\t\t\t\t\t\tobj: gantt.copy(selectedTask)\n\t\t\t\t\t\t\t}, this.drag);\n\t\t\t\t\t\t}, this));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// for move unselected summary\n\t\t\t\tif (gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n\t\t\t\t\tthis._addSubtasksToDragMultiple(task.id);\n\t\t\t\t}\n\t\t\t\tgantt.callEvent(\"onTaskDragStart\", []);\n\t\t\t}\n\n\t\t},\n\t\t_fireEvent: function(stage, mode, params) {\n\t\t\tgantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n\n\t\t\tvar trigger = this._events[stage][mode];\n\n\t\t\tgantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n\t\t\tgantt.assert(params, \"Invalid event arguments\");\n\n\n\t\t\tif (!gantt.checkEvent(trigger))\n\t\t\t\treturn true;\n\n\t\t\treturn gantt.callEvent(trigger, params);\n\t\t},\n\n\t\tround_task_dates: function(task) {\n\t\t\tvar drag_state = this.drag;\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tif (!drag_state) {\n\t\t\t\tdrag_state = {mode: config.drag_mode.move};\n\t\t\t}\n\t\t\tthis._fix_dnd_scale_time(task, drag_state);\n\t\t},\n\t\tdestructor: function() {\n\t\t\tthis._domEvents.detachAll();\n\t\t},\n\t\t_isMultiselect: function() {\n\t\t\treturn gantt.config.drag_multiple && !!(gantt.getSelectedTasks && gantt.getSelectedTasks().length > 0);\n\t\t},\n\t\t_addSubtasksToDragMultiple: function(summaryId) {\n\t\t\tgantt.eachTask(function(child) {\n\t\t\t\tthis.dragMultiple[child.id] = gantt.mixin({\n\t\t\t\t\tid: child.id,\n\t\t\t\t\tobj: gantt.copy(child)\n\t\t\t\t}, this.drag);\n\t\t\t}, summaryId, this);\n\t\t}\n\t};\n}\n\nfunction initTaskDND() {\n\tvar _tasks_dnd;\n\treturn {\n\t\textend: function(timeline) {\n\t\t\ttimeline.roundTaskDates = function(task) {\n\t\t\t\t_tasks_dnd.round_task_dates(task);\n\t\t\t};\n\n\t\t},\n\t\tinit: function(timeline, gantt) {\n\t\t\t_tasks_dnd = createTaskDND(timeline, gantt);\n\t\t\t// TODO: entry point for touch handlers, move touch to timeline\n\t\t\ttimeline._tasks_dnd = _tasks_dnd;\n\t\t\treturn _tasks_dnd.init(gantt);\n\t\t},\n\t\tdestructor: function() {\n\t\t\tif (_tasks_dnd) {\n\t\t\t\t_tasks_dnd.destructor();\n\t\t\t\t_tasks_dnd = null;\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = {\n\tcreateTaskDND: initTaskDND\n};\n","var utils = require(\"../../../utils/utils\"),\n\ttaskDnD = require(\"./tasks_dnd\"),\n\tlinkDnD = require(\"./links_dnd\"),\n\tdomHelpers = require(\"../utils/dom_helpers\");\n\nvar initializer = (function(){\n\treturn function(gantt){\n\t\tvar services = gantt.$services;\n\t\treturn {\n\t\t\tonCreated: function (timeline) {\n\t\t\t\tvar config = timeline.$config;\n\t\t\t\tconfig.bind = utils.defined(config.bind) ? config.bind : \"task\";\n\t\t\t\tconfig.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n\n\t\t\t\ttimeline._linksDnD = linkDnD.createLinkDND();\n\t\t\t\ttimeline._tasksDnD = taskDnD.createTaskDND();\n\t\t\t\ttimeline._tasksDnD.extend(timeline);\n\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\t\t\t},\n\t\t\tonInitialized: function (timeline) {\n\t\t\t\tthis._attachDomEvents(gantt);\n\n\t\t\t\tthis._attachStateProvider(gantt, timeline);\n\n\t\t\t\ttimeline._tasksDnD.init(timeline, gantt);\n\t\t\t\ttimeline._linksDnD.init(timeline, gantt);\n\n\t\t\t\tif(timeline.$config.id == \"timeline\"){\n\t\t\t\t\tthis.extendDom(timeline);\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonDestroyed: function (timeline) {\n\t\t\t\tthis._clearDomEvents(gantt);\n\t\t\t\tthis._clearStateProvider(gantt);\n\t\t\t\tif (timeline._tasksDnD) {\n\t\t\t\t\ttimeline._tasksDnD.destructor();\n\t\t\t\t}\n\t\t\t},\n\t\t\textendDom: function(timeline){\n\t\t\t\tgantt.$task = timeline.$task;\n\t\t\t\tgantt.$task_scale = timeline.$task_scale;\n\t\t\t\tgantt.$task_data = timeline.$task_data;\n\t\t\t\tgantt.$task_bg = timeline.$task_bg;\n\t\t\t\tgantt.$task_links = timeline.$task_links;\n\t\t\t\tgantt.$task_bars = timeline.$task_bars;\n\t\t\t},\n\n\t\t\t_clearDomEvents: function(){\n\t\t\t\tthis._mouseDelegates.destructor();\n\t\t\t\tthis._mouseDelegates = null;\n\t\t\t},\n\n\t\t\t_attachDomEvents: function(gantt){\n\t\t\t\tfunction _delete_link_handler(id, e) {\n\t\t\t\t\tif (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n\n\t\t\t\t\t\tvar link = this.getLink(id);\n\t\t\t\t\t\tif (this.isReadonly(link)) return;\n\n\t\t\t\t\t\tvar title = \"\";\n\t\t\t\t\t\tvar question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n\n\t\t\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t\t\tgantt._dhtmlx_confirm(question, title, function () {\n\t\t\t\t\t\t\t\tgantt.deleteLink(id);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, (this.config.touch ? 300 : 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n\t\t\t\t\tvar id = this.locate(e, this.config.link_attribute);\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tthis.callEvent(\"onLinkClick\", [id, e]);\n\t\t\t\t\t}\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\t\t\t\t\tvar date = gantt.dateFromPos(pos.x);\n\t\t\t\t\tvar coll = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\t\t\tvar coll_date = gantt.getScale().trace_x[coll];\n\n\t\t\t\t\tgantt.callEvent(\"onScaleClick\", [e, coll_date]);\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar id = this.locate(e, gantt.config.link_attribute);\n\t\t\t\t\t_delete_link_handler.call(this, id, e);\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar id = this.locate(e),\n\t\t\t\t\t\ttask = this.getTask(id);\n\n\t\t\t\t\tvar link = null;\n\t\t\t\t\tif (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n\t\t\t\t\t\tif (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n\t\t\t\t\t\t\tlink = task.$target[0];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlink = task.$source[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (link)\n\t\t\t\t\t\t_delete_link_handler.call(this, link, e);\n\t\t\t\t\treturn false;\n\t\t\t\t}, gantt), this.$task);\n\t\t\t},\n\n\t\t\t_attachStateProvider: function(gantt, timeline){\n\t\t\t\tvar self = timeline;\n\t\t\t\tvar state = services.getService(\"state\");\n\t\t\t\tstate.registerProvider(\"tasksTimeline\", function(){\n\t\t\t\t\treturn {\n\t\t\t\t\t\tscale_unit: self._tasks ? self._tasks.unit : undefined,\n\t\t\t\t\t\tscale_step: self._tasks ? self._tasks.step : undefined\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_clearStateProvider: function(){\n\t\t\t\tvar state = services.getService(\"state\");\n\t\t\t\tstate.unregisterProvider(\"tasksTimeline\");\n\t\t\t}\n\t\t};\n\t};\n\n})();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../utils/dom_helpers\");\n\n/**\n * methods for highlighting current drag and drop position\n */\n\nfunction highlightPosition(target, root, grid){\n\tvar markerPos = getTaskMarkerPosition(target, grid);\n\t// setting position of row\n\troot.marker.style.left = markerPos.x + 9 + \"px\";\n\troot.marker.style.top = markerPos.y + \"px\";\n\tvar markerLine = root.markerLine;\n\tif(!markerLine){\n\t\tmarkerLine = document.createElement(\"div\");\n\t\tmarkerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n\t\tmarkerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n\t\tmarkerLine.style.pointerEvents = \"none\";\n\t}\n\n\tif(target.child){\n\t\thighlightFolder(target, markerLine, grid);\n\t}else{\n\t\thighlightRow(target, markerLine, grid);\n\t}\n\n\tif(!root.markerLine){\n\t\tdocument.body.appendChild(markerLine);\n\t\troot.markerLine = markerLine;\n\t}\n}\n\nfunction removeLineHighlight(root){\n\tif(root.markerLine && root.markerLine.parentNode){\n\t\troot.markerLine.parentNode.removeChild(root.markerLine);\n\t}\n\troot.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid){\n\tvar linePos = getLineMarkerPosition(target, grid);\n\tvar maxBottom = grid.$grid_data.getBoundingClientRect().bottom;\n\n\tmarkerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n\tmarkerLine.style.left = linePos.x + \"px\";\n\tmarkerLine.style.height = \"4px\";\n\n\tvar markerLineTop = linePos.y - 2;\n\tmarkerLine.style.top = markerLineTop + \"px\";\n\tmarkerLine.style.width = linePos.width + \"px\";\n\n\tif (markerLineTop > maxBottom) {\n\t\tmarkerLine.style.top = maxBottom + 'px';\n\t}\n\n\treturn markerLine;\n}\nfunction highlightFolder(target, markerFolder, grid){\n\tvar id = target.targetParent;\n\tvar pos = gridToPageCoordinates({x: 0, y: grid.getItemTop(id)}, grid);\n\tvar maxBottom = grid.$grid_data.getBoundingClientRect().bottom;\n\n\tmarkerFolder.innerHTML = \"<div class='gantt_grid_dnd_marker_folder'></div>\";\n\tmarkerFolder.style.width = grid.$grid_data.offsetWidth + \"px\";\n\tmarkerFolder.style.top = pos.y + \"px\";\n\tmarkerFolder.style.left = pos.x + \"px\";\n\tmarkerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\tif (pos.y > maxBottom) {\n\t\tmarkerFolder.style.top = maxBottom + 'px';\n\t}\n\n\treturn markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid){\n\tvar store = grid.$config.rowStore;\n\tvar pos = {x:0, y:0};\n\tvar indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n\tvar indent = 15;\n\tvar level = 0;\n\tif(indentNode){\n\t\tindent = indentNode.offsetWidth;\n\t}\n\tvar iconWidth = 40;\n\tif(target.targetId !== store.$getRootId()){\n\t\tvar itemTop = grid.getItemTop(target.targetId);\n\t\tvar itemHeight = grid.getItemHeight(target.targetId);\n\t\tlevel = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n\t\tif(target.prevSibling){\n\t\t\tpos.y = itemTop;\n\t\t}else if(target.nextSibling){\n\t\t\tvar childCount = 0;\n\t\t\tstore.eachItem(function(child){\n\t\t\t\tif(store.getIndexById(child.id) !== -1)\n\t\t\t\t\tchildCount++;\n\t\t\t}, target.targetId);\n\n\t\t\tpos.y = itemTop + itemHeight + childCount*itemHeight;\n\t\t}else {\n\t\t\tpos.y = itemTop + itemHeight;\n\t\t\tlevel += 1;\n\t\t}\n\t}\n\tpos.x = iconWidth + level * indent;\n\tpos.width = Math.max(grid.$grid_data.offsetWidth - pos.x, 0);\n\treturn gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid){\n\tvar gridPos = domHelpers.getNodePosition(grid.$grid_data);\n\tpos.x += gridPos.x - grid.$grid.scrollLeft;\n\tpos.y += gridPos.y - grid.$grid_data.scrollTop;\n\treturn pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\tvar ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data);\n\tvar store = grid.$config.rowStore;\n\t// row offset\n\tvar x = pos.x;\n\tvar y = ePos.y - 10;\n\n\tvar config = grid.$getConfig();\n\t// prevent moving row out of grid_data container\n\tif (y < pos.y) y = pos.y;\n\tvar gridHeight = store.countVisible() * config.row_height;\n\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\n\n\tpos.x = x;\n\tpos.y = y;\n\treturn pos;\n}\n\nmodule.exports = {\n\tremoveLineHighlight: removeLineHighlight,\n\thighlightPosition: highlightPosition\n};\n","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = true\n */\n\nvar dropTarget = require(\"./drop_target\");\n\nmodule.exports = function getMultiLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store){\n\tvar result;\n\n\tif(targetTaskId !== store.$getRootId()){\n\t\tif(relTargetPos < 0.25){\n\t\t\tresult = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t}else if(relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)){\n\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t}else {\n\t\t\tresult = dropTarget.firstChildTarget(dndTaskId, targetTaskId, store);\n\t\t}\n\t}else{\n\t\tvar rootId = store.$getRootId();\n\t\tif(store.hasChild(rootId) && eventTop >= 0){\n\t\t\tresult = dropTarget.lastChildTarget(dndTaskId, rootId, store);\n\t\t}else{\n\t\t\tresult = dropTarget.firstChildTarget(dndTaskId, rootId, store);\n\t\t}\n\t}\n\n\treturn result;\n};","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = false\n */\n\nvar dropTarget = require(\"./drop_target\");\n\nfunction getLast(store){\n\tvar current = store.getNext();\n\twhile(store.exists(current)){\n\n\t\tvar next = store.getNext(current);\n\t\tif(!store.exists(next)){\n\t\t\treturn current;\n\t\t}else{\n\t\t\tcurrent = next;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction findClosesTarget(dndTaskId, taskId, allowedLevel, store, up){\n\tvar prev = taskId;\n\twhile(store.exists(prev)){\n\t\tvar targetLevel = store.calculateItemLevel(store.getItem(prev));\n\t\tif((targetLevel === allowedLevel || targetLevel === (allowedLevel - 1)) && store.getBranchIndex(prev) > -1){\n\t\t\tbreak;\n\t\t}else {\n\t\t\tprev = up ? store.getPrev(prev) : store.getNext(prev);\n\t\t}\n\t}\n\n\tif(store.exists(prev)){\n\t\tif(store.calculateItemLevel(store.getItem(prev)) === allowedLevel){\n\t\t\treturn up ? dropTarget.nextSiblingTarget(dndTaskId, prev, store) : dropTarget.prevSiblingTarget(dndTaskId, prev, store);\n\t\t}else{\n\t\t\treturn dropTarget.firstChildTarget(dndTaskId, prev, store);\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction findTargetAbove(dndTaskId, taskId, allowedLevel, store){\n\treturn findClosesTarget(dndTaskId, taskId, allowedLevel, store, true);\n}\nfunction findTargetBelow(dndTaskId, taskId, allowedLevel, store){\n\treturn findClosesTarget(dndTaskId, taskId, allowedLevel, store, false);\n}\n\nmodule.exports = function getSameLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store, level){\n\tvar result;\n\tif(targetTaskId !== store.$getRootId()){\n\t\tvar targetTask = store.getItem(targetTaskId);\n\t\tvar targetLevel = store.calculateItemLevel(targetTask);\n\t\tif(targetLevel === level){\n\t\t\tvar prevSibling = store.getPrevSibling(targetTaskId);\n\t\t\tif(relTargetPos < 0.5 && !prevSibling){\n\t\t\t\tresult = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t\t}else{\n\t\t\t\tif(relTargetPos < 0.5){\n\t\t\t\t\ttargetTaskId = prevSibling;\n\t\t\t\t}\n\t\t\t\tresult = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n\t\t\t}\n\t\t}else if(targetLevel > level){\n\t\t\tstore.eachParent(function(parent){\n\t\t\t\tif(store.calculateItemLevel(parent) === level){\n\t\t\t\t\ttargetTaskId = parent.id;\n\t\t\t\t}\n\t\t\t}, targetTask); \n\t\t\tresult = findTargetAbove(dndTaskId, targetTaskId, level, store);\n\t\t}else{\n\t\t\tvar targetAbove = findTargetAbove(dndTaskId, targetTaskId, level, store);\n\t\t\tvar targetBelow = findTargetBelow(dndTaskId, targetTaskId, level, store);\n\t\t\tresult = (relTargetPos < 0.5) ? targetAbove : targetBelow;\n\t\t}\n\t}else{\n\t\tvar rootId = store.$getRootId();\n\t\tvar rootLevel = store.getChildren(rootId);\n\t\tresult = dropTarget.createDropTargetObject();\n\t\tif(rootLevel.length && eventTop >= 0){\n\t\t\tresult = findTargetAbove(dndTaskId, getLast(store), level, store);\n\t\t}else{\n\t\t\tresult = findTargetBelow(dndTaskId, rootId, level, store);\n\t\t}\n\t}\n\n\treturn result;\n};\n","var domHelpers = require(\"../utils/dom_helpers\");\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\n\nfunction _init_dnd(gantt, grid) {\n\tvar DnD = gantt.$services.getService(\"dnd\");\n\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\n\t\treturn;\n\t}\n\n\tfunction locate(e){\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\n\t}\n\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tif (!el) return false;\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\t\tif (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")){\n\t\t\treturn false;\n\t\t}\n\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\n\t\tvar datastore = grid.$config.rowStore;\n\t\tvar task = datastore.getItem(id);\n\n\t\tif (gantt.isReadonly(task))\n\t\t\treturn false;\n\n\t\tdnd.config.initial_open_state = task.$open;\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n\t\t\treturn false;\n\t\t}\n\n\t}, gantt));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\n\t\tvar element = dnd.config.marker.firstChild;\n\t\tif(element){\n\t\t\tdnd.config.marker.style.opacity = 0.4;\n\t\t\telement.style.position = \"static\";\n\t\t\telement.style.pointerEvents = \"none\";\n\t\t}\n\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar store = grid.$config.rowStore;\n\n\t\tvar task = store.getItem(dnd.config.id);\n\t\tdnd.config.level = store.calculateItemLevel(task);\n\t\tdnd.config.drop_target = dropTarget.createDropTargetObject({\n\t\t\ttargetParent: store.getParent(task.id),\n\t\t\ttargetIndex: store.getBranchIndex(task.id),\n\t\t\ttargetId: task.id,\n\t\t\tnextSibling: true\n\t\t});\n\n\t\ttask.$open = false;\n\t\ttask.$transparent = true;\n\t\tthis.refreshData();\n\t}, gantt));\n\n\tfunction getTargetTaskId(e){\n\t\tvar y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\t\tvar store = grid.$config.rowStore;\n\n\t\ty = y || 0;\n\n\t\t// limits for the marker according to the layout layer\n\t\tvar scrollPos = grid.$state.scrollTop || 0;\n\t\tvar maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n\t\tvar minTop = scrollPos;\n\t\tvar firstVisibleTaskPos = grid.$state.scrollTop / grid.getItemHeight();\n\t\tvar hiddenTaskPart = firstVisibleTaskPos - Math.floor(firstVisibleTaskPos);\n\t\tif (hiddenTaskPart > 0.1 && hiddenTaskPart < 0.9) {\n\t\t\tmaxBottom = maxBottom - grid.getItemHeight() * hiddenTaskPart;\n\t\t\tminTop = minTop + grid.getItemHeight() * (1 - hiddenTaskPart);\n\t\t}\n\n\t\tif (y >= maxBottom) {\n\t\t\ty = maxBottom;\n\t\t} else if (y <= minTop) {\n\t\t\ty = minTop;\n\t\t}\n\n\t\tvar index = Math.floor(y / grid.getItemHeight());\n\n\t\tif (index > store.countVisible() - 1) {\n\t\t\treturn store.$getRootId();\n\t\t}\n\n\t\treturn store.getIdByIndex(index);\n\t}\n\n\tfunction getDropPosition(e){\n\t\tvar targetTaskId = getTargetTaskId(e);\n\t\tvar relTargetPos = null;\n\t\tvar store = grid.$config.rowStore;\n\t\tvar config = grid.$getConfig();\n\t\tvar lockLevel = !config.order_branch_free;\n\n\t\tvar eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n\t\tif(targetTaskId !== store.$getRootId()) {\n\t\t\tvar rowTop = grid.getItemTop(targetTaskId);\n\t\t\tvar rowHeight = grid.getItemHeight();\n\t\t\trelTargetPos = (eventTop - rowTop) / rowHeight;\n\t\t}\n\n\t\tvar result;\n\t\tif(!lockLevel){\n\t\t\tresult = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\n\t\t}else{\n\t\t\tresult = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n\t\tvar target = getDropPosition(e);\n\n\t\tif(!target ||\n\t\t\tgantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false){\n\t\t\t\ttarget = dropTarget.createDropTargetObject(dnd.config.drop_target);\n\t\t\t}\n\n\t\thiglighter.highlightPosition(target, dnd.config, grid);\n\t\tdnd.config.drop_target = target;\n\n\t\tthis.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n\t\treturn true;\n\t}, gantt));\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n\t\tvar store = grid.$config.rowStore;\n\t\tvar task = store.getItem(dnd.config.id);\n\n\t\thiglighter.removeLineHighlight(dnd.config);\n\n\t\ttask.$transparent = false;\n\t\ttask.$open = dnd.config.initial_open_state;\n\t\tvar target = dnd.config.drop_target;\n\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n\t\t\ttask.$drop_target = null;\n\t\t} else {\n\t\t\tstore.move(dnd.config.id, target.targetIndex, target.targetParent);\n\t\t\tgantt.render();\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n\t\t}\n\t\tstore.refresh(task.id);\n\t}, gantt));\n}\n\nmodule.exports = {\n\tinit: _init_dnd\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nfunction _init_dnd(gantt, grid) {\n\tvar DnD = gantt.$services.getService(\"dnd\");\n\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\n\t\treturn;\n\t}\n\n\tfunction locate(e){\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\n\t}\n\n\tfunction getStore(){\n\t\treturn gantt.getDatastore(grid.$config.bind);\n\t}\n\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tif (!el) return false;\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n\t\tif (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")){\n\t\t\treturn false;\n\t\t}\n\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar datastore = getStore();\n\n\t\tvar task = datastore.getItem(id);\n\n\t\tif (gantt.isReadonly(task))\n\t\t\treturn false;\n\n\t\tdnd.config.initial_open_state = task.$open;\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n\t\t\treturn false;\n\t\t}\n\n\t}, gantt));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\n\t\tvar element = dnd.config.marker.firstChild;\n\t\tif(element){\n\t\t\telement.style.position = \"static\";\n\t\t}\n\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar store = getStore();\n\n\t\tvar task = store.getItem(dnd.config.id);\n\t\tdnd.config.index = store.getBranchIndex(dnd.config.id);\n\t\tdnd.config.parent = task.parent;\n\t\ttask.$open = false;\n\t\ttask.$transparent = true;\n\t\tthis.refreshData();\n\t}, gantt));\n\n\tdnd.lastTaskOfLevel = function (level) {\n\t\tvar last_item = null;\n\t\tvar store = getStore();\n\t\tvar tasks = store.getItems();\n\t\tfor (var i = 0, len = tasks.length; i < len; i++) {\n\t\t\tif (tasks[i].$level == level) {\n\t\t\t\tlast_item = tasks[i];\n\t\t\t}\n\t\t}\n\t\treturn last_item ? last_item.id : null;\n\t};\n\tdnd._getGridPos = gantt.bind(function (e) {\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\t\tvar store = getStore();\n\t\t// row offset\n\t\tvar x = pos.x;\n\t\tvar y = e.pos.y - 10;\n\n\t\tvar config = grid.$getConfig();\n\t\t// prevent moving row out of grid_data container\n\t\tif (y < pos.y) y = pos.y;\n\t\tvar gridHeight = store.countVisible() * config.row_height;\n\t\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\n\n\t\tpos.x = x;\n\t\tpos.y = y;\n\t\treturn pos;\n\t}, gantt);\n\tdnd._getTargetY = gantt.bind(function (e) {\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\t\tvar scrollPos = grid.$state.scrollTop || 0;\n\t\tvar maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n\n\t\tvar y = e.pageY - pos.y + scrollPos;\n\t\tif (y > maxBottom) {\n\t\t\ty = maxBottom;\n\t\t} else if (y < scrollPos) {\n\t\t\ty = scrollPos;\n\t\t}\n\t\treturn y;\n\t}, gantt);\n\tdnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n\n\t\tvar config = grid.$getConfig(),\n\t\t\tstore = getStore();\n\n\t\ty = y || 0;\n\n\t\tvar index = Math.floor(y / config.row_height);\n\t\tindex = dropIndex < index ? index - 1 : index;\n\n\t\tif (index > store.countVisible() - 1)\n\t\t\treturn null;\n\n\t\treturn store.getIdByIndex(index);\n\t}, gantt);\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n\t\tvar maxBottom = gantt.$grid_data.getBoundingClientRect().height + (grid.$state.scrollTop || 0);\n\t\tvar dd = dnd.config;\n\t\tvar pos = dnd._getGridPos(e);\n\n\t\tvar config = grid.$getConfig(),\n\t\t\tstore = getStore();\n\n\t\t// setting position of row\n\t\tif (pos.y < maxBottom) {\n\t\t\tdd.marker.style.top = pos.y + \"px\";\n\t\t} else {\n\t\t\tdd.marker.style.top = maxBottom + \"px\";\n\t\t}\n\t\tdd.marker.style.left = pos.x + 10 + \"px\";\n\n\t\t// highlight row when mouseover\n\t\tvar item = store.getItem(dnd.config.id);\n\t\tvar targetY = dnd._getTargetY(e);\n\t\tvar el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n\t\tif (!store.exists(el)) {\n\t\t\tel = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\t\t\tif (el == dnd.config.id) {\n\t\t\t\tel = null;\n\t\t\t}\n\t\t}\n\n\t\tfunction allowedLevel(next, item) {\n\t\t\treturn (!(store.isChildOf(over.id, item.id)) && (next.$level == item.$level || config.order_branch_free));\n\t\t}\n\n\t\tif (store.exists(el)) {\n\t\t\tvar over = store.getItem(el);\n\n\t\t\tif (store.getIndexById(over.id) * config.row_height + config.row_height / 2 < targetY) {\n\t\t\t\t//hovering over bottom part of item, check can be drop to bottom\n\t\t\t\tvar index = store.getIndexById(over.id);\n\t\t\t\tvar nextId = store.getNext(over.id);//adds +1 when hovering over placeholder\n\t\t\t\tvar next = store.getItem(nextId);\n\t\t\t\tif (next) {\n\t\t\t\t\tif (next.id != item.id) {\n\t\t\t\t\t\tover = next; //there is a valid target\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (config.order_branch_free) {\n\t\t\t\t\t\t\tif (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1))\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstore.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//we at end of the list, check and drop at the end of list\n\t\t\t\t\tnextId = store.getIdByIndex(index);\n\t\t\t\t\tnext = store.getItem(nextId);\n\n\t\t\t\t\tif (allowedLevel(next, item) && next.id != item.id) {\n\t\t\t\t\t\tstore.move(item.id, -1, store.getParent(next.id));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (config.order_branch_free) {\n\t\t\t\tif (over.id != item.id && allowedLevel(over, item)) {\n\t\t\t\t\tif (!store.hasChild(over.id)) {\n\t\t\t\t\t\tover.$open = true;\n\t\t\t\t\t\tstore.move(item.id, -1, over.id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (store.getIndexById(over.id) || config.row_height / 3 < targetY) return;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//if item is on different level, check the one before it\n\t\t\tvar index = store.getIndexById(over.id),\n\t\t\t\tprevId = store.getIdByIndex(index - 1);\n\n\t\t\tvar prev = store.getItem(prevId);\n\n\t\t\tvar shift = 1;\n\t\t\twhile ((!prev || prev.id == over.id) && index - shift >= 0) {\n\n\t\t\t\tprevId = store.getIdByIndex(index - shift);\n\t\t\t\tprev = store.getItem(prevId);\n\t\t\t\tshift++;\n\t\t\t}\n\n\t\t\tif (item.id == over.id) return;\n\t\t\t//replacing item under cursor\n\t\t\tif (allowedLevel(over, item) && item.id != over.id) {\n\t\t\t\tstore.move(item.id, 0, 0, over.id);\n\n\t\t\t} else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n\t\t\t\tstore.move(item.id, 0, over.id);\n\n\t\t\t} else if (prev && (allowedLevel(prev, item)) && (item.id != prev.id)) {\n\t\t\t\tstore.move(item.id, -1, store.getParent(prev.id));\n\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}, gantt));\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n\t\tvar store = getStore();\n\t\tvar task = store.getItem(dnd.config.id);\n\t\ttask.$transparent = false;\n\t\ttask.$open = dnd.config.initial_open_state;\n\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n\t\t\tstore.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n\t\t\ttask.$drop_target = null;\n\t\t} else {\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n\t\t}\n\t\tgantt.render();\n\t\tthis.refreshData();\n\t}, gantt));\n}\n\nmodule.exports = {\n\tinit: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\nvar rowDnd = require(\"./tasks_grid_dnd\");\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\nvar initializer = (function(){\n\treturn function(gantt){\n\t\treturn {\n\t\t\tonCreated: function (grid) {\n\t\t\t\tgrid.$config = utils.mixin(grid.$config, {\n\t\t\t\t\tbind: \"task\"\n\t\t\t\t});\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tthis.extendGantt(grid);\n\t\t\t\t\tgantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n\t\t\t\t\tgantt.ext.inlineEditors.init();\n\t\t\t\t}\n\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\t\t\t},\n\t\t\tonInitialized: function (grid) {\n\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\tif (config.order_branch) {\n\t\t\t\t\tif(config.order_branch == \"marker\"){\n\t\t\t\t\t\trowDndMarker.init(grid.$gantt, grid);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trowDnd.init(grid.$gantt, grid);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.initEvents(grid, gantt);\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tthis.extendDom(grid);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDestroyed: function (grid) {\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tgantt.ext.inlineEditors.destructor();\n\t\t\t\t}\n\t\t\t\tthis.clearEvents(grid, gantt);\n\t\t\t},\n\n\t\t\tinitEvents: function (grid, gantt) {\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\t\tif (id !== null) {\n\t\t\t\t\t\tvar task = this.getTask(id);\n\t\t\t\t\t\tif (config.scroll_on_click && !gantt._is_icon_open_click(e))\n\t\t\t\t\t\t\tthis.showDate(task.start_date);\n\t\t\t\t\t\tgantt.callEvent(\"onTaskRowClick\", [id, trg]);\n\t\t\t\t\t}\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar column = trg.getAttribute(\"data-column-id\");\n\n\t\t\t\t\tif (!gantt.callEvent(\"onGridHeaderClick\", [column, e]))\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar config = grid.$getConfig();\n\n\t\t\t\t\tif (column == \"add\") {\n\t\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\t\t\t\tmouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config.sort && column) { // GS-929: if there is no column name, we cannot sort the column\n\t\t\t\t\t\tvar sorting_method = column,\n\t\t\t\t\t\t\tconf;\n\n\t\t\t\t\t\tfor (var i = 0; i < config.columns.length; i++) {\n\t\t\t\t\t\t\tif (config.columns[i].name == column) {\n\t\t\t\t\t\t\t\tconf = config.columns[i];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (conf && conf.sort !== undefined && conf.sort !== true) {\n\t\t\t\t\t\t\tsorting_method = conf.sort;\n\n\t\t\t\t\t\t\tif (!sorting_method) { // column sort property 'false', no sorting\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar sort = (this._sort && this._sort.direction && this._sort.name == column) ? this._sort.direction : \"desc\";\n\t\t\t\t\t\t// invert sort direction\n\t\t\t\t\t\tsort = (sort == \"desc\") ? \"asc\" : \"desc\";\n\t\t\t\t\t\tthis._sort = {\n\t\t\t\t\t\t\tname: column,\n\t\t\t\t\t\t\tdirection: sort\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.sort(sorting_method, sort == \"desc\");\n\t\t\t\t\t}\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\t\tif (config.readonly) return;\n\n\t\t\t\t\tvar item = {};\n\t\t\t\t\tthis.createTask(item, id ? id : gantt.config.root_id);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t},\n\n\t\t\tclearEvents: function(grid, gantt){\n\t\t\t\tthis._mouseDelegates.destructor();\n\t\t\t\tthis._mouseDelegates = null;\n\t\t\t},\n\n\t\t\textendDom: function(grid){\n\t\t\t\tgantt.$grid = grid.$grid;\n\t\t\t\tgantt.$grid_scale = grid.$grid_scale;\n\t\t\t\tgantt.$grid_data = grid.$grid_data;\n\t\t\t},\n\t\t\textendGantt: function(grid){\n\t\t\t\tgantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n\n\t\t\t\tgrid.attachEvent(\"onColumnResizeStart\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeStart\", arguments);\n\t\t\t\t});\n\t\t\t\tgrid.attachEvent(\"onColumnResize\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResize\", arguments);\n\t\t\t\t});\n\t\t\t\tgrid.attachEvent(\"onColumnResizeEnd\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeEnd\", arguments);\n\t\t\t\t});\n\n\t\t\t\tgrid.attachEvent(\"onColumnResizeComplete\", function(columns, totalWidth){\n\t\t\t\t\tgantt.config.grid_width = totalWidth;\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t};\n})();\n\nmodule.exports = initializer;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction renderBar(level, start, end, timeline){\n\tvar top = (1 - (level*1||0))*100;\n\tvar left = timeline.posFromDate(start);\n\tvar right = timeline.posFromDate(end);\n\tvar element = document.createElement(\"div\");\n\telement.className = \"gantt_histogram_hor_bar\";\n\telement.style.top = top + '%';\n\telement.style.left = left + \"px\";\n\telement.style.width = (right - left + 1) + \"px\";\n\treturn element;\n}\nfunction renderConnection(prevLevel, nextLevel, left){\n\tif(prevLevel === nextLevel){\n\t\treturn null;\n\t}\n\n\tvar top = 1 - Math.max(prevLevel, nextLevel);\n\tvar height = Math.abs(prevLevel - nextLevel);\n\tvar element = document.createElement(\"div\");\n\telement.className = \"gantt_histogram_vert_bar\";\n\telement.style.top = top*100 + \"%\";\n\telement.style.height = height*100 + \"%\";\n\telement.style.left = left + \"px\";\n\n\treturn element;\n}\n\nfunction generateRenderResourceHistogram(gantt){\n\tvar getResourceLoad = resourceTimetable(gantt);\n\tvar renderedHistogramCells = {};\n\tvar renderedHistogramRows = {};\n\tvar renderedHistogramCapacity = {};\n\n\tfunction detachRenderedHistogramCell(id, index){\n\n\t\tvar renderedRow = renderedHistogramCells[id];\n\t\tif(renderedRow && renderedRow[index] && \n\t\t\trenderedRow[index].parentNode\n\t\t\t){\n\t\t\t\trenderedRow[index].parentNode.removeChild(renderedRow[index]);\n\t\t\t}\n\t}\n\n\tfunction renderHistogramLine(capacity, timeline, maxCapacity, viewport){\n\t\tvar scale = timeline.getScale();\n\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tvar range = getVisibleCellsRange(scale, viewport);\n\t\tfor (var i = range.start; i <= range.end; i++) {\n\t\t\tvar colStart = scale.trace_x[i];\n\t\t\tvar colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n\t\t\tvar col = scale.trace_x[i].valueOf();\n\t\t\tvar level = Math.min(capacity[col]/maxCapacity, 1) || 0;\n\t\t\t// do not render histogram for lines with below zero capacity, as it's reserved for folders\n\t\t\tif(level < 0){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar nextLevel = Math.min(capacity[colEnd.valueOf()]/maxCapacity, 1) || 0;\n\t\t\tvar bar = renderBar(level, colStart, colEnd, timeline);\n\t\t\tif(bar){\n\t\t\t\tel.appendChild(bar);\n\t\t\t}\n\t\t\tvar connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\t\t\tif(connection){\n\t\t\t\tel.appendChild(connection);\n\t\t\t}\n\n\t\t}\n\t\treturn el;\n\t}\n\n\tfunction renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport){\n\n\t\tvar renderedElement = renderedHistogramCapacity[resource.id];\n\t\tif(renderedElement && renderedElement.parentNode){\n\t\t\trenderedElement.parentNode.removeChild(renderedElement);\n\t\t}\n\n\t\tvar capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\n\t\tif (capacityElement) {\n\t\t\tcapacityElement.setAttribute(\"data-resource-id\", resource.id);\n\t\t\tcapacityElement.setAttribute(timeline.$config.item_attribute, resource.id);\n\t\t\tcapacityElement.style.position = \"absolute\";\n\t\t\tcapacityElement.style.top = (sizes.top + 1) + \"px\";\n\t\t\tcapacityElement.style.height = (config.row_height - 1) + \"px\";\n\t\t\tcapacityElement.style.left = 0;\n\t\t}\n\t\treturn capacityElement;\n\t}\n\n\tfunction renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline){\n\t\tvar css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks);\n\t\tvar content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks);\n\t\tvar fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks);\n\t\tif(css || content){\n\t\t\tvar el = document.createElement('div');\n\t\t\tel.className = [\"gantt_histogram_cell\", css].join(\" \");\n\t\t\tel.setAttribute(timeline.$config.item_attribute, resource.id);\n\t\t\tel.style.cssText = [\n\t\t\t\t'left:' + sizes.left + 'px',\n\t\t\t\t'width:' + sizes.width + 'px',\n\t\t\t\t'height:' + (config.row_height - 1) + 'px',\n\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\n\t\t\t\t'top:' + (sizes.top + 1) + 'px'\n\t\t\t].join(\";\");\n\n\n\t\t\tif (content) {\n\t\t\t\tcontent = \"<div class='gantt_histogram_label'>\" + content +\"</div>\";\n\t\t\t}\n\n\t\t\tif (fill) {\n\t\t\t\tcontent = \"<div class='gantt_histogram_fill' style='height:\"+(Math.min(fill/maxCapacity||0, 1)*100)+\"%;'></div>\" + content;\n\t\t\t}\n\n\t\t\tif (content) {\n\t\t\t\tel.innerHTML = content;\n\t\t\t}\n\n\t\t\treturn el;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfunction renderResourceHistogram(resource, timeline, viewport) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar scale = timeline.getScale();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n\n\t\tvar cells = [];\n\t\tvar capacityMatrix = {};\n\t\tvar maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n\t\trenderedHistogramCells[resource.id] = {};\n\t\trenderedHistogramRows[resource.id] = null;\n\t\trenderedHistogramCapacity[resource.id] = null;\n\n\t\tvar smartRendering = !!viewport;//no viewport means smart rendering is disabled\n\n\t\tvar range = getVisibleCellsRange(scale, viewport);\n\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n\n\t\t\tvar day = timetable[columnIndex];\n\t\t\tif(!day){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tcapacityMatrix[day.start_date.valueOf()] = capacity || 0;\n\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\n\t\t\tvar el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\t\t\tif(el){\n\t\t\t\tcells.push(el);\n\t\t\t\trenderedHistogramCells[resource.id][columnIndex] = el;\n\t\t\t}\n\t\t}\n\n\t\tvar row = null;\n\t\tif (cells.length) {\n\t\t\trow = document.createElement(\"div\");\n\t\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\t\trow.appendChild(cells[i]);\n\t\t\t}\n\n\t\t\tvar capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\t\t\tif(capacityElement){\n\t\t\t\trow.appendChild(capacityElement);\n\t\t\t\trenderedHistogramCapacity[resource.id] = capacityElement;\n\t\t\t}\n\t\t\trenderedHistogramRows[resource.id] = row;\n\t\t}\n\n\t\treturn row;\n\t}\n\n\tfunction updateResourceHistogram(resource, node, timeline, viewport) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar scale = timeline.getScale();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n\t\tvar maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n\t\tvar capacityMatrix = {};\n\n\t\tvar smartRendering = !!viewport;//no viewport means smart rendering is disabled\n\t\t\n\t\tvar range = getVisibleCellsRange(scale, viewport);\n\n\t\tvar checkedColumns = {};\n\t\tif(renderedHistogramCells && renderedHistogramCells[resource.id]){\n\t\t\tfor(var i in renderedHistogramCells[resource.id]){\n\t\t\t\tcheckedColumns[i] = i;\n\t\t\t}\n\t\t}\n\n\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n\t\t\tvar day = timetable[columnIndex];\n\t\t\tcheckedColumns[columnIndex] = false;\n\t\t\tif(!day){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tcapacityMatrix[day.start_date.valueOf()] = capacity || 0;\n\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\n\t\t\tif(smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)){\n\t\t\t\tdetachRenderedHistogramCell(resource.id, columnIndex);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar renderedCell = renderedHistogramCells[resource.id];\n\t\t\tif(!renderedCell || !renderedCell[columnIndex]){\n\t\t\t\tvar el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\t\t\t\tif(el){\n\t\t\t\t\tnode.appendChild(el);\n\t\t\t\t\trenderedHistogramCells[resource.id][columnIndex] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if(renderedCell && renderedCell[columnIndex] && !renderedCell[columnIndex].parentNode){\n\t\t\t\tnode.appendChild(renderedCell[columnIndex]);\n\t\t\t}\n\t\t}\n\n\t\tfor(var i in checkedColumns){\n\t\t\tif(checkedColumns[i] !== false){\n\t\t\t\tdetachRenderedHistogramCell(resource.id, i);\n\t\t\t}\n\t\t}\n\n\t\tvar capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\t\tif(capacityElement){\n\t\t\tnode.appendChild(capacityElement);\n\t\t\trenderedHistogramCapacity[resource.id] = capacityElement;\n\t\t}\n\t}\n\n\treturn {\n\t\trender: renderResourceHistogram,\n\t\tupdate: updateResourceHistogram,\n\t\tgetRectangle: getRectangle,\n\t\tgetVisibleRange: getVisibleRange\n\t};\n}\n\nmodule.exports = generateRenderResourceHistogram;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction generateRenderResourceLine(gantt){\n\tvar getResourceLoad = resourceTimetable(gantt);\n\tvar renderedResourceLines = {};\n\n\tfunction renderResourceLineCell(resource, day, templates, config, timeline){\n\t\tvar css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks);\n\t\tvar content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks);\n\n\t\tif (css || content){\n\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\t\t\tvar el = document.createElement('div');\n\t\t\tel.setAttribute(timeline.$config.item_attribute, resource.id);\n\t\t\tel.className = [\"gantt_resource_marker\", css].join(\" \");\n\n\t\t\tel.style.cssText = [\n\t\t\t\t'left:' + sizes.left + 'px',\n\t\t\t\t'width:' + sizes.width + 'px',\n\t\t\t\t'height:' + (config.row_height - 1) + 'px',\n\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\n\t\t\t\t'top:' + sizes.top + 'px'\n\t\t\t].join(\";\");\n\n\t\t\tif(content)\n\t\t\t\tel.innerHTML = content;\n\t\t\t\n\t\t\treturn el;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfunction detachRenderedResourceLine(id, index){\n\t\tif(renderedResourceLines[id] && renderedResourceLines[id][index] &&\n\t\t\trenderedResourceLines[id][index].parentNode\n\t\t\t){\n\t\t\t\trenderedResourceLines[id][index].parentNode.removeChild(renderedResourceLines[id][index]);\n\t\t\t}\n\t}\n\n\tfunction renderResourceLine(resource, timeline, viewport) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar scale = timeline.getScale();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n\t\tvar smartRendering = !!viewport;//no viewport means smart rendering is disabled\n\t\tvar cells = [];\n\t\trenderedResourceLines[resource.id] = {};\n\n\t\tvar range = getVisibleCellsRange(scale, viewport);\n\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n\n\t\t\tvar day = timetable[columnIndex];\n\t\t\tif(!day){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\t\t\tif(cell){\n\t\t\t\tcells.push(cell);\n\t\t\t\trenderedResourceLines[resource.id][columnIndex] = cell;\n\t\t\t}\n\t\t}\n\n\t\tvar row = null;\n\t\tif(cells.length){\n\t\t\trow = document.createElement(\"div\");\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\trow.appendChild(cells[i]);\n\t\t\t}\n\t\t}\n\t\treturn row;\n\t}\n\n\tfunction updateResourceLine(resource, node, timeline, viewport) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar scale = timeline.getScale();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n\n\t\tvar range = getVisibleCellsRange(scale, viewport);\n\n\t\tvar checkedColumns = {};\n\t\tif(renderedResourceLines && renderedResourceLines[resource.id]){\n\t\t\tfor(var i in renderedResourceLines[resource.id]){\n\t\t\t\tcheckedColumns[i] = i;\n\t\t\t}\n\t\t}\n\n\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n\t\t\tvar day = timetable[columnIndex];\n\t\t\tcheckedColumns[columnIndex] = false;\n\t\t\tif(!day){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(!isColumnVisible(columnIndex, scale, viewport, gantt)){\n\t\t\t\tdetachRenderedResourceLine(resource.id, columnIndex);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(!renderedResourceLines[resource.id] || !renderedResourceLines[resource.id][columnIndex]){\n\t\t\t\tvar cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\t\t\t\tif(cell){\n\t\t\t\t\tnode.appendChild(cell);\n\t\t\t\t\trenderedResourceLines[resource.id][columnIndex] = cell;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if(renderedResourceLines[resource.id] && renderedResourceLines[resource.id][columnIndex] && !renderedResourceLines[resource.id][columnIndex].parentNode){\n\t\t\t\tnode.appendChild(renderedResourceLines[resource.id][columnIndex]);\n\t\t\t}\n\t\t}\n\n\t\tfor(var i in checkedColumns){\n\t\t\tif(checkedColumns[i] !== false){\n\t\t\t\tdetachRenderedResourceLine(resource.id, i);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\trender: renderResourceLine,\n\t\tupdate: updateResourceLine,\n\t\tgetRectangle: getRectangle,\n\t\tgetVisibleRange: getVisibleRange\n\t};\n}\n\nmodule.exports = generateRenderResourceLine;","var helpers = require(\"../../../utils/helpers\");\nvar getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridLineRender(gantt){\n\n\tfunction _render_grid_item(item, view, viewport) {\n\t\tvar columns = view.getGridColumns();\n\t\tvar config = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\n\t\tvar store = view.$config.rowStore;\n\n\t\tvar cells = [];\n\t\tvar has_child;\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar last = i == columns.length - 1;\n\t\t\tvar col = columns[i];\n\t\t\tvar cell;\n\n\t\t\tvar value;\n\t\t\tvar textValue;\n\t\t\tif (col.name == \"add\") {\n\t\t\t\tvar aria = gantt._waiAria.gridAddButtonAttrString(col);\n\n\t\t\t\tvalue = \"<div \" + aria + \" class='gantt_add'></div>\";\n\t\t\t\ttextValue = \"\";\n\t\t\t} else {\n\t\t\t\tif (col.template)\n\t\t\t\t\tvalue = col.template(item);\n\t\t\t\telse\n\t\t\t\t\tvalue = item[col.name];\n\n\t\t\t\tif (helpers.isDate(value)){\n\t\t\t\t\tvalue = templates.date_grid(value, item, col.name);\n\t\t\t\t}\n\n\t\t\t\tif (value === null || value === undefined) {\n\t\t\t\t\tvalue = \"\";\n\t\t\t\t}\n\n\t\t\t\ttextValue = value;\n\t\t\t\tvalue = \"<div class='gantt_tree_content'>\" + value + \"</div>\";\n\t\t\t}\n\t\t\tvar css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\n\n\t\t\tvar tree = [];\n\t\t\tif (col.tree) {\n\t\t\t\tcss += \" gantt_cell_tree\";\n\t\t\t\tfor (var j = 0; j < item.$level; j++)\n\t\t\t\t\ttree.push(templates.grid_indent(item));\n\n\t\t\t\thas_child = store.hasChild(item.id) && !(gantt.isSplitTask(item) && !gantt.config.open_split_tasks);\n\t\t\t\tif (has_child) {\n\t\t\t\t\ttree.push(templates.grid_open(item));\n\t\t\t\t\ttree.push(templates.grid_folder(item));\n\t\t\t\t} else {\n\t\t\t\t\ttree.push(templates.grid_blank(item));\n\t\t\t\t\ttree.push(templates.grid_file(item));\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\n\t\t\tif (this.defined(col.align)){\n\t\t\t\tvar flexAlign = {\n\t\t\t\t\tright: \"flex-end\",\n\t\t\t\t\tleft: \"flex-start\",\n\t\t\t\t\tcenter: \"center\"\n\t\t\t\t};\n\t\t\t\tvar justifyContent = flexAlign[col.align];\n\n\t\t\t\tstyle += \"text-align:\" + col.align + \";justify-content:\" + justifyContent + \";\";\n\t\t\t}\n\n\t\t\tvar aria = gantt._waiAria.gridCellAttrString(col, textValue, item);\n\n\t\t\ttree.push(value);\n\t\t\tcell = \"<div class='\" + css + \"' data-column-index='\"+i+\"' data-column-name='\"+col.name+\"' style='\" + style + \"' \" + aria + \">\" + tree.join(\"\") + \"</div>\";\n\t\t\tcells.push(cell);\n\t\t}\n\t\tvar css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n\t\tcss += (item.$transparent) ? \" gantt_transparent\" : \"\";\n\n\t\tcss += (item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\");\n\n\t\tif (templates.grid_row_class) {\n\t\t\tvar css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n\t\t\tif (css_template)\n\t\t\t\tcss += \" \" + css_template;\n\t\t}\n\n\t\tif(store.isSelected(item.id)) {\n\t\t\tcss += \" gantt_selected\";\n\t\t}\n\n\t\tvar el = document.createElement(\"div\");\n\t\tel.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n\t\tvar height = view.getItemHeight();\n\t\tel.style.height = height + \"px\";\n\t\tel.style.lineHeight = height + \"px\";\n\n\t\tif(config.smart_rendering){\n\t\t\tel.style.position = \"absolute\";\n\t\t\tel.style.left = \"0px\";\n\t\t\tel.style.top = view.getItemTop(item.id) + \"px\";\n\t\t}\n\n\t\tif(view.$config.item_attribute){\n\t\t\tel.setAttribute(view.$config.item_attribute, item.id);\n\t\t\tel.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n\t\t}\n\n\t\tgantt._waiAria.taskRowAttr(item, el);\n\n\t\tel.innerHTML = cells.join(\"\");\n\t\treturn el;\n\t}\n\n\treturn {\n\t\trender: _render_grid_item,\n\t\tupdate: null,\n\t\tgetRectangle: getRowRectangle,\n\t\tgetVisibleRange: getVisibleRange\n\t};\n}\n\nmodule.exports = createGridLineRender;","\n// optimized checker for links smart rendering\n\n// first check the vertical position since it's easier to calculate\n\nmodule.exports = function isLinkInViewPort(item, viewport, view, gantt){\n\tvar source = view.$gantt.getTask(item.source);\n\tvar target = view.$gantt.getTask(item.target);\n\tvar config = view.$getConfig();\n\t// check vertical visibility first since it's a lighter check\n\tvar sourceTop = view.getItemTop(source.id);\n\tvar sourceHeight = config.row_height;\n\n\tvar targetTop = view.getItemTop(target.id);\n\tvar targetHeight = config.row_height;\n\n\tif(viewport.y > sourceTop + sourceHeight && \n\t\tviewport.y > targetTop + targetHeight){\n\t\treturn false;\n\t}\n\n\tif(viewport.y_end < targetTop && \n\t\tviewport.y_end < sourceTop){\n\t\treturn false;\n\t}\n\n\tvar padding = 100;\n\tvar sourceLeft = view.posFromDate(source.start_date);\n\tvar sourceRight = view.posFromDate(source.end_date);\n\tvar targetLeft = view.posFromDate(target.start_date);\n\tvar targetRight = view.posFromDate(target.end_date);\n\t\n\tif(sourceLeft > sourceRight){\n\t\t// rtl\n\t\tvar tmp = sourceRight;\n\t\tsourceRight = sourceLeft;\n\t\tsourceLeft = tmp;\n\t}\n\tif(targetLeft > targetRight){\n\t\t// rtl\n\t\tvar tmp = targetRight;\n\t\ttargetRight = targetLeft;\n\t\ttargetLeft = tmp;\n\t}\n\tsourceLeft += -padding; // add buffer for custom elements\n\tsourceRight += padding;\n\ttargetLeft += -padding; // add buffer for custom elements\n\ttargetRight += padding;\n\n\tif(viewport.x > sourceRight && \n\t\tviewport.x > targetRight){\n\t\treturn false;\n\t}\n\n\tif(viewport.x_end < sourceLeft && \n\t\tviewport.x_end < targetLeft){\n\t\treturn false;\n\t}\n\treturn true;\n};\n","var isInViewPort = require(\"./viewport/is_link_in_viewport\");\n\nfunction createLinkRender(gantt){\n\nfunction _render_link_element(link, view) {\n\tvar config = view.$getConfig();\n\n\tvar pt = path_builder.get_endpoint(link, view);\n\tvar dy = pt.e_y - pt.y;\n\tvar dx = pt.e_x - pt.x;\n\tif(!dx && !dy){\n\t\treturn null;\n\t}\n\n\n\tvar dots = path_builder.get_points(link, view);\n\tvar lines = drawer.get_lines(dots, view);\n\n\tvar div = document.createElement(\"div\");\n\n\tvar css = \"gantt_task_link\";\n\n\tif (link.color) {\n\t\tcss += \" gantt_link_inline_color\";\n\t}\n\tvar cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\tif (cssTemplate) {\n\t\tcss += \" \" + cssTemplate;\n\t}\n\n\tif (config.highlight_critical_path && gantt.isCriticalLink) {\n\t\tif (gantt.isCriticalLink(link))\n\t\t\tcss += \" gantt_critical_link\";\n\t}\n\n\tdiv.className = css;\n\n\tif(view.$config.link_attribute){\n\t\tdiv.setAttribute(view.$config.link_attribute, link.id);\n\t\tdiv.setAttribute(\"link_id\", link.id);\n\t}\n\n\tfor (var i = 0; i < lines.length; i++) {\n\t\tif (i == lines.length - 1) {\n\t\t\tlines[i].size -= config.link_arrow_size;\n\t\t}\n\t\tvar el = drawer.render_line(lines[i], lines[i + 1], view);\n\t\tif (link.color) {\n\t\t\tel.firstChild.style.backgroundColor = link.color;\n\t\t}\n\t\tdiv.appendChild(el);\n\t}\n\n\tvar direction = lines[lines.length - 1].direction;\n\tvar endpoint = _render_link_arrow(dots[dots.length - 1], direction, view);\n\tif (link.color) {\n\t\tendpoint.style.borderColor = link.color;\n\t}\n\tdiv.appendChild(endpoint);\n\n\tgantt._waiAria.linkAttr(link, div);\n\n\treturn div;\n}\n\nfunction _render_link_arrow(point, direction, view) {\n\tvar config = view.$getConfig();\n\tvar div = document.createElement(\"div\");\n\tvar top = point.y;\n\tvar left = point.x;\n\n\tvar size = config.link_arrow_size;\n\tvar line_width = config.row_height;\n\tvar className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\tswitch (direction) {\n\t\tcase drawer.dirs.right:\n\t\t\ttop -= (size - line_width) / 2;\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tcase drawer.dirs.left:\n\t\t\ttop -= (size - line_width) / 2;\n\t\t\tbreak;\n\t\tcase drawer.dirs.up:\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tcase drawer.dirs.down:\n\t\t\ttop += size * 2;\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tdiv.style.cssText = [\n\t\t\"top:\" + top + \"px\",\n\t\t\"left:\" + left + 'px'].join(';');\n\tdiv.className = className;\n\n\treturn div;\n}\n\n\nvar drawer = {\n\tcurrent_pos: null,\n\tdirs: {\"left\": 'left', \"right\": 'right', \"up\": 'up', \"down\": 'down'},\n\tpath: [],\n\tclear: function () {\n\t\tthis.current_pos = null;\n\t\tthis.path = [];\n\t},\n\tpoint: function (pos) {\n\t\tthis.current_pos = gantt.copy(pos);\n\t},\n\tget_lines: function (dots) {\n\t\tthis.clear();\n\t\tthis.point(dots[0]);\n\t\tfor (var i = 1; i < dots.length; i++) {\n\t\t\tthis.line_to(dots[i]);\n\t\t}\n\t\treturn this.get_path();\n\t},\n\tline_to: function (pos) {\n\t\tvar next = gantt.copy(pos);\n\t\tvar prev = this.current_pos;\n\n\t\tvar line = this._get_line(prev, next);\n\t\tthis.path.push(line);\n\t\tthis.current_pos = next;\n\t},\n\tget_path: function () {\n\t\treturn this.path;\n\t},\n\tget_wrapper_sizes: function (v, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar res,\n\t\t\twrapper_size = config.link_wrapper_width,\n\t\t\ty = v.y + (config.row_height - wrapper_size) / 2;\n\t\tswitch (v.direction) {\n\t\t\tcase this.dirs.left:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y,\n\t\t\t\t\theight: wrapper_size,\n\t\t\t\t\tlineHeight: wrapper_size,\n\t\t\t\t\tleft: v.x - v.size - wrapper_size / 2,\n\t\t\t\t\twidth: v.size + wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.right:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y,\n\t\t\t\t\tlineHeight: wrapper_size,\n\t\t\t\t\theight: wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: v.size + wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.up:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y - v.size,\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\n\t\t\t\t\theight: v.size + wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.down:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y /*- wrapper_size/2*/,\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\n\t\t\t\t\theight: v.size + wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn res;\n\t},\n\tget_line_sizes: function (v, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar res,\n\t\t\tline_size = config.link_line_width,\n\t\t\twrapper_size = config.link_wrapper_width,\n\t\t\tsize = v.size + line_size;\n\t\tswitch (v.direction) {\n\t\t\tcase this.dirs.left:\n\t\t\tcase this.dirs.right:\n\t\t\t\tres = {\n\t\t\t\t\theight: line_size,\n\t\t\t\t\twidth: size,\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.up:\n\t\t\tcase this.dirs.down:\n\t\t\t\tres = {\n\t\t\t\t\theight: size,\n\t\t\t\t\twidth: line_size,\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\n\t\treturn res;\n\t},\n\trender_line: function (v, end, view) {\n\t\tvar pos = this.get_wrapper_sizes(v, view);\n\t\tvar wrapper = document.createElement(\"div\");\n\t\twrapper.style.cssText = [\n\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\"height:\" + pos.height + \"px\",\n\t\t\t\"width:\" + pos.width + \"px\"\n\t\t].join(';');\n\t\twrapper.className = \"gantt_line_wrapper\";\n\n\t\tvar innerPos = this.get_line_sizes(v, view);\n\t\tvar inner = document.createElement(\"div\");\n\t\tinner.style.cssText = [\n\t\t\t\"height:\" + innerPos.height + \"px\",\n\t\t\t\"width:\" + innerPos.width + \"px\",\n\t\t\t\"margin-top:\" + innerPos.marginTop + \"px\",\n\t\t\t\"margin-left:\" + innerPos.marginLeft + \"px\"\n\t\t].join(\";\");\n\n\t\tinner.className = \"gantt_link_line_\" + v.direction;\n\t\twrapper.appendChild(inner);\n\n\t\treturn wrapper;\n\t},\n\t_get_line: function (from, to) {\n\t\tvar direction = this.get_direction(from, to);\n\t\tvar vect = {\n\t\t\tx: from.x,\n\t\t\ty: from.y,\n\t\t\tdirection: this.get_direction(from, to)\n\t\t};\n\t\tif (direction == this.dirs.left || direction == this.dirs.right) {\n\t\t\tvect.size = Math.abs(from.x - to.x);\n\t\t} else {\n\t\t\tvect.size = Math.abs(from.y - to.y);\n\t\t}\n\t\treturn vect;\n\t},\n\tget_direction: function (from, to) {\n\t\tvar direction = 0;\n\t\tif (to.x < from.x) {\n\t\t\tdirection = this.dirs.left;\n\t\t} else if (to.x > from.x) {\n\t\t\tdirection = this.dirs.right;\n\t\t} else if (to.y > from.y) {\n\t\t\tdirection = this.dirs.down;\n\t\t} else {\n\t\t\tdirection = this.dirs.up;\n\t\t}\n\t\treturn direction;\n\t}\n\n};\n\nvar path_builder = {\n\n\tpath: [],\n\tclear: function () {\n\t\tthis.path = [];\n\t},\n\tcurrent: function () {\n\t\treturn this.path[this.path.length - 1];\n\t},\n\tpoint: function (next) {\n\t\tif (!next)\n\t\t\treturn this.current();\n\n\t\tthis.path.push(gantt.copy(next));\n\t\treturn next;\n\t},\n\tpoint_to: function (direction, diff, point) {\n\t\tif (!point)\n\t\t\tpoint = gantt.copy(this.point());\n\t\telse\n\t\t\tpoint = {x: point.x, y: point.y};\n\t\tvar dir = drawer.dirs;\n\t\tswitch (direction) {\n\t\t\tcase (dir.left):\n\t\t\t\tpoint.x -= diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.right):\n\t\t\t\tpoint.x += diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.up):\n\t\t\t\tpoint.y -= diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.down):\n\t\t\t\tpoint.y += diff;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this.point(point);\n\t},\n\tget_points: function (link, view) {\n\t\tvar pt = this.get_endpoint(link, view);\n\t\tvar xy = gantt.config;\n\n\t\tvar dy = pt.e_y - pt.y;\n\t\tvar dx = pt.e_x - pt.x;\n\n\t\tvar dir = drawer.dirs;\n\n\t\tthis.clear();\n\t\tthis.point({x: pt.x, y: pt.y});\n\n\t\tvar shiftX = 2 * xy.link_arrow_size;//just random size for first line\n\t\tvar lineType = this.get_line_type(link, view.$getConfig());\n\n\t\tvar forward = (pt.e_x > pt.x);\n\t\tif (lineType.from_start && lineType.to_start) {\n\t\t\tthis.point_to(dir.left, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t}\n\t\t\tthis.point_to(dir.right, shiftX);\n\n\t\t} else if (!lineType.from_start && lineType.to_start) {\n\t\t\tforward = (pt.e_x > (pt.x + 2 * shiftX));\n\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tdx -= shiftX;\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tdx -= 2 * shiftX;\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\n\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\n\t\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\t}\n\n\t\t} else if (!lineType.from_start && !lineType.to_start) {\n\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t} else {\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t}\n\t\t\tthis.point_to(dir.left, shiftX);\n\t\t} else if (lineType.from_start && !lineType.to_start) {\n\n\t\t\tforward = (pt.e_x > (pt.x - 2 * shiftX));\n\t\t\tthis.point_to(dir.left, shiftX);\n\n\t\t\tif (!forward) {\n\t\t\t\tdx += shiftX;\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tdx += 2 * shiftX;\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\n\t\t\t\tthis.point_to(dir.left, shiftX);\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.path;\n\t},\n\tget_line_type: function(link, config){\n\t\tvar types = config.links;\n\t\tvar from_start = false, to_start = false;\n\t\tif (link.type == types.start_to_start) {\n\t\t\tfrom_start = to_start = true;\n\t\t} else if (link.type == types.finish_to_finish) {\n\t\t\tfrom_start = to_start = false;\n\t\t} else if (link.type == types.finish_to_start) {\n\t\t\tfrom_start = false;\n\t\t\tto_start = true;\n\t\t} else if (link.type == types.start_to_finish) {\n\t\t\tfrom_start = true;\n\t\t\tto_start = false;\n\t\t} else {\n\t\t\tgantt.assert(false, \"Invalid link type\");\n\t\t}\n\n\t\tif(config.rtl){\n\t\t\tfrom_start = !from_start;\n\t\t\tto_start = !to_start;\n\t\t}\n\n\t\treturn {from_start: from_start, to_start: to_start};\n\t},\n\n\tget_endpoint: function (link, view) {\n\t\tvar config = view.$getConfig();\n\n\t\tvar lineType = this.get_line_type(link, config);\n\t\tvar from_start = lineType.from_start,\n\t\t\tto_start = lineType.to_start;\n\n\t\tvar source = gantt.getTask(link.source);\n\t\tvar target = gantt.getTask(link.target);\n\n\t\tvar from = getMilestonePosition(source, view),\n\t\t\tto = getMilestonePosition(target, view);\n\n\t\treturn {\n\t\t\tx: from_start ? from.left : (from.left + from.width),\n\t\t\te_x: to_start ? to.left : (to.left + to.width),\n\t\t\ty: from.top,\n\t\t\te_y: to.top\n\t\t};\n\t}\n};\n\nfunction getMilestonePosition(task, view){\n\tvar config = view.$getConfig();\n\tvar pos = view.getItemPosition(task);\n\tif(gantt.getTaskType(task.type) == config.types.milestone){\n\t\tvar milestoneHeight = gantt.getTaskHeight();\n\t\tvar milestoneWidth = Math.sqrt(2*milestoneHeight*milestoneHeight);\n\t\tpos.left -= milestoneWidth / 2;\n\t\tpos.width = milestoneWidth;\n\t}\n\treturn pos;\n}\n\n\nreturn {\n\trender: _render_link_element,\n\tupdate: null,\n\t//getRectangle: getLinkRectangle\n\tisInViewPort: isInViewPort\n};\n}\n\nmodule.exports = createLinkRender;","var getRowRectangle = require(\"./viewport/get_bg_row_rectangle\");\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nfunction createTaskBgRender(gantt){\n\tvar renderedCells = {};\n\tvar visibleCells = {};\n\n\tfunction isRendered(item, columnIndex){\n\t\tif(renderedCells[item.id][columnIndex] && renderedCells[item.id][columnIndex].parentNode){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfunction detachRenderedCell(itemId, columnIndex){\n\t\tif(renderedCells[itemId] && renderedCells[itemId][columnIndex] &&\n\t\t\trenderedCells[itemId][columnIndex].parentNode\n\t\t\t){\n\t\t\t\trenderedCells[itemId][columnIndex].parentNode.removeChild(renderedCells[itemId][columnIndex]);\n\t\t\t}\n\t}\n\n\tfunction getCellTemplate(view){\n\t\tvar templates = view.$getTemplates();\n\t\tvar cssTemplate;\n\t\tif (typeof templates.task_cell_class !== \"undefined\") {\n\t\t\tcssTemplate = templates.task_cell_class;\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tvar log = console.warn || console.log;\n\t\t\tlog('gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.');\n\t\t} else {\n\t\t\tcssTemplate = templates.timeline_cell_class;\n\t\t}\n\t\treturn cssTemplate;\n\t}\n\n\tfunction renderCells(item, node, view, viewPort){\n\t\tvar config = view.$getConfig();\n\t\tvar cfg = view.getScale();\n\t\tvar count = cfg.count;\n\t\tvar cssTemplate = getCellTemplate(view);\n\n\t\tif (config.show_task_cells) {\n\t\t\tif(!renderedCells[item.id]){\n\t\t\t\trenderedCells[item.id] = {};\n\t\t\t}\n\t\t\tif(!visibleCells[item.id]){\n\t\t\t\tvisibleCells[item.id] = {};\n\t\t\t}\n\n\t\t\tvar range = getVisibleCellsRange(cfg, viewPort);\n\n\t\t\tfor(var i in visibleCells[item.id]){\n\t\t\t\tvar index = visibleCells[item.id][i];\n\n\t\t\t\tif(Number(index) < range.start || Number(index) > range.end){\n\t\t\t\t\tdetachRenderedCell(item.id, index);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvisibleCells[item.id] = {};\n\t\t\t// TODO: do not iterate all cell, only ones in the viewport and once that are already rendered\n\t\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n\t\t\t\tvar cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cssTemplate, config);\n\t\t\t\tif(!cell && isRendered(item, columnIndex)){\n\t\t\t\t\tdetachRenderedCell(item.id, columnIndex);\n\t\t\t\t}else if (cell && !cell.parentNode){\n\t\t\t\t\tnode.appendChild(cell);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction renderOneCell(scale, columnIndex, item, viewPort, count, cssTemplate, config){\n\t\tvar width = scale.width[columnIndex],\n\t\t\tcssclass = \"\";\n\n\t\tif (isColumnVisible(columnIndex, scale, viewPort, gantt)) {//do not render skipped columns\n\t\t\t\n\t\t\tvar cssTemplateContent = cssTemplate(item, scale.trace_x[columnIndex]);\n\n\t\t\tif(config.static_background){\n\t\t\t\t// if cell render in static background is not allowed, or if it's a blank cell\n\t\t\t\tif(!(config.static_background_cells && cssTemplateContent)){\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(renderedCells[item.id][columnIndex]){\n\t\t\t\tvisibleCells[item.id][columnIndex] = columnIndex;\n\t\t\t\treturn renderedCells[item.id][columnIndex];\n\t\t\t}\n\t\t\tvar cell = document.createElement(\"div\");\n\t\t\tcell.style.width = (width) + \"px\";\n\n\t\t\tcssclass = \"gantt_task_cell\" + (columnIndex == count - 1 ? \" gantt_last_cell\" : \"\");\n\t\t\tif (cssTemplateContent) {\n\t\t\t\tcssclass += \" \" + cssTemplateContent;\n\t\t\t}\n\t\t\tcell.className = cssclass;\n\n\t\t\tcell.style.position = \"absolute\";\n\t\t\tcell.style.left = scale.left[columnIndex] + \"px\";\n\t\t\trenderedCells[item.id][columnIndex] = cell;\n\t\t\tvisibleCells[item.id][columnIndex] = columnIndex;\n\n\t\t\treturn cell;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfunction _render_bg_line(item, view, viewPort) {\n\t\tvar config = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\t\tvar cfg = view.getScale();\n\t\tvar count = cfg.count;\n\n\t\tif(config.static_background && !config.static_background_cells){\n\t\t\treturn null;\n\t\t}\n\n\t\tvar row = document.createElement(\"div\");\n\n\t\tvar cellTemplate = getCellTemplate(view);\n\n\t\tvar range;\n\n\t\tif(!viewPort || !config.smart_rendering || isLegacyRender(gantt)){\n\t\t\trange = {\n\t\t\t\tstart: 0,\n\t\t\t\tend: count - 1\n\t\t\t};\n\t\t} else {\n\t\t\trange = getVisibleCellsRange(cfg, viewPort.x);\n\t\t}\n\t\tif (config.show_task_cells) {\n\t\t\trenderedCells[item.id] = {};\n\t\t\tvisibleCells[item.id] = {};\n\t\t\tfor (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n\t\t\t\tvar cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cellTemplate, config);\n\t\t\t\tif(cell){\n\t\t\t\t\trow.appendChild(cell);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar odd = gantt.getGlobalTaskIndex(item.id) % 2 !== 0;\n\t\tvar cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n\t\tvar css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n\n\t\tvar store = view.$config.rowStore;\n\t\tif(store.isSelected(item.id)) {\n\t\t\tcss += \" gantt_selected\";\n\t\t}\n\n\t\trow.className = css;\n\n\t\tif (config.smart_rendering) {\n\t\t\trow.style.position = \"absolute\";\n\t\t\trow.style.top = view.getItemTop(item.id) + \"px\";\n\t\t\trow.style.width = \"100%\";\n\t\t}else{\n\t\t\trow.style.position = \"relative\";\n\t\t}\n\t\trow.style.height = (config.row_height) + \"px\";\n\n\t\tif(view.$config.item_attribute){\n\t\t\trow.setAttribute(view.$config.item_attribute, item.id);\n\t\t\trow.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n\t\t}\n\n\t\treturn row;\n\t}\n\n\treturn {\n\t\trender: _render_bg_line,\n\t\tupdate: renderCells,\n\t\tgetRectangle: getRowRectangle,\n\t\tgetVisibleRange: getVisibleRange\n\t};\n}\n\nmodule.exports = createTaskBgRender;\n","var isBarInViewport = require(\"./is_bar_in_viewport\");\nmodule.exports = function isSplitTaskInViewport(item, viewport, view, gantt){\n\tif (!gantt.isSplitTask(item)) {\n\t\treturn false;\n\t}\n\n\tvar range = gantt.getSubtaskDates(item.id);\n\n\treturn isBarInViewport({\n\t\tid: item.id,\n\t\tstart_date: range.start_date,\n\t\tend_date: range.end_date,\n\t\tparent: item.parent\n\t}, viewport, view, gantt);\n};","var createBaseBarRender = require(\"./task_bar_render\");\nvar isInViewPort = require(\"./viewport/is_split_task_in_viewport\");\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createTaskRenderer(gantt){\n\tvar defaultRender = createBaseBarRender(gantt);\n\n\tfunction renderSplitTask(task, timeline) {\n\t\tif (gantt.isSplitTask(task) && ((gantt.config.open_split_tasks && !task.$open) || !gantt.config.open_split_tasks)) {\n\t\t\tvar el = document.createElement('div'),\n\t\t\t\tsizes = gantt.getTaskPosition(task);\n\n\t\t\tif(gantt.hasChild(task.id)){\n\t\t\t\tgantt.eachTask(function(child){\n\t\t\t\t\tvar isProject = gantt.isSummaryTask(child);\n\t\t\t\t\tif(isProject){\n\t\t\t\t\t\tgantt.resetProjectDates(child);\n\t\t\t\t\t}\n\t\t\t\t\tvar element = defaultRender(child, timeline);\n\t\t\t\t\tif(!element)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar padding = Math.floor((gantt.config.row_height - sizes.height) / 2);\n\n\t\t\t\t\telement.style.top = (sizes.top + padding) + \"px\";\n\t\t\t\t\telement.classList.add(\"gantt_split_child\");\n\t\t\t\t\tif(isProject){\n\t\t\t\t\t\telement.classList.add(\"gantt_split_subproject\");\n\t\t\t\t\t}\n\n\t\t\t\t\tel.appendChild(element);\n\t\t\t\t}, task.id);\n\t\t\t}\n\t\t\treturn el;\n\t\t}\n\t\treturn false;\n\t}\n\treturn {\n\t\trender: renderSplitTask,\n\t\tupdate: null,\n\t\t//getRectangle: getBarRectangle\n\t\tisInViewPort: isInViewPort,\n\t\tgetVisibleRange: getVisibleRange\n\t};\n}\n\nmodule.exports = createTaskRenderer;","var isInViewPort = require(\"./viewport/is_bar_in_viewport\");\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\nvar createBaseBarRender = require(\"./task_bar_render\");\n\nmodule.exports = function createTaskRenderer(gantt){\n\tvar defaultRender = createBaseBarRender(gantt);\n\treturn {\n\t\trender: defaultRender,\n\t\tupdate: null,\n\t\t//getRectangle: getBarRectangle\n\t\tisInViewPort: isInViewPort,\n\t\tgetVisibleRange: getVisibleRange\n\t};\n};","module.exports = function (gantt) {\n\treturn function processTaskDateProperties(item, mapTo, mode) {\n\t\tif (mode == \"keepDates\") {\n\t\t\tkeepDatesOnEdit(item, mapTo);\n\t\t} else if (mode == \"keepDuration\") {\n\t\t\tkeepDurationOnEdit(item, mapTo);\n\t\t} else {\n\t\t\tdefaultActionOnEdit(item, mapTo);\n\t\t}\n\t};\n\n\t// resize task\n\t// resize task when start/end/duration changes\n\tfunction keepDatesOnEdit(item, mapTo) {\n\t\tif (mapTo == \"duration\") {\n\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t} else if (mapTo == \"end_date\" || mapTo == \"start_date\") {\n\t\t\titem.duration = gantt.calculateDuration(item);\n\t\t}\n\t}\n\n\t// move task(before 6.2)\n\t// move task when start/end dates changes\n\t// resize task when duration changes\n\tfunction keepDurationOnEdit(item, mapTo) {\n\t\tif (mapTo == \"end_date\") {\n\t\t\titem.start_date = gantt.calculateEndDate({\n\t\t\t\tstart_date: item.end_date,\n\t\t\t\tduration: -item.duration,\n\t\t\t\ttask: item\n\t\t\t}\n\t\t\t);\n\t\t} else if (mapTo == \"start_date\" || mapTo == \"duration\") {\n\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t}\n\t}\n\n\t// default behavior\n\t// move task when start date changes\n\t// resize task when end date/duration changes\n\tfunction defaultActionOnEdit(item, mapTo) {\n\t\tif (mapTo == \"start_date\" || mapTo == \"duration\") {\n\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t} else if (mapTo == \"end_date\") {\n\t\t\titem.duration = gantt.calculateDuration(item);\n\t\t}\n\t}\n};","module.exports = function(gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction TextEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(TextEditor, BaseEditor);\n\n\tfunction getFormatter(config) {\n\t\treturn config.formatter || gantt.ext.formatters.durationFormatter();\n\t}\n\tutils.mixin(TextEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"<div><input type='text' name='\" + column.name + \"'></div>\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = getFormatter(column.editor).format(value);\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn getFormatter(column.editor).parse(this.get_input(node).value || \"\");\n\t\t}\n\t}, true);\n\n\treturn TextEditor;\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction PredecessorEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(PredecessorEditor, BaseEditor);\n\n\tfunction getFormatter(config) {\n\t\treturn config.formatter || gantt.ext.formatters.linkFormatter();\n\t}\n\n\tfunction parseInputString(value, config) {\n\t\tvar predecessors = (value || \"\").split(config.delimiter || \",\");\n\t\tfor (var i = 0; i < predecessors.length; i++) {\n\t\t\tvar val = predecessors[i].trim();\n\t\t\tif (val) {\n\t\t\t\tpredecessors[i] = val;\n\t\t\t} else {\n\t\t\t\tpredecessors.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\tpredecessors.sort();\n\t\treturn predecessors;\n\t}\n\n\tfunction formatPredecessors(task, config, gantt) {\n\t\tvar links = task.$target;\n\t\tvar labels = [];\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar link = gantt.getLink(links[i]);\n\t\t\tlabels.push(getFormatter(config).format(link));\n\t\t}\n\t\treturn labels.join((config.delimiter || \",\") + \" \");\n\t}\n\n\tfunction getSelectedLinks(taskId, predecessorCodes, config) {\n\t\tvar links = [];\n\t\tpredecessorCodes.forEach(function (code) {\n\t\t\tvar link = getFormatter(config).parse(code);\n\t\t\tif(link){\n\t\t\t\tlink.target = taskId;\n\t\t\t\tif (gantt.isLinkAllowed(link)) {\n\t\t\t\t\tlinks.push(link);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn links;\n\t}\n\n\tfunction formatLinkKey(link){\n\t\treturn link.source + \"_\" + link.target + \"_\" + link.type + \"_\" + (link.lag||0);\n\t}\n\n\tfunction getLinksDiff(task, predecessorCodes, config) {\n\t\tvar selectedLinks = getSelectedLinks(task.id, predecessorCodes, config);\n\t\tvar existingLinksSearch = {};\n\t\ttask.$target.forEach(function (linkId) {\n\t\t\tvar link = gantt.getLink(linkId);\n\t\t\texistingLinksSearch[formatLinkKey(link)] = link.id;\n\t\t});\n\n\t\tvar linksToAdd = [];\n\t\tselectedLinks.forEach(function (link) {\n\t\t\tvar linkKey = formatLinkKey(link);\n\t\t\tif (!existingLinksSearch[linkKey]) {\n\t\t\t\tlinksToAdd.push(link);\n\t\t\t} else {\n\t\t\t\tdelete existingLinksSearch[linkKey];\n\t\t\t}\n\t\t});\n\n\t\tvar linksToDelete = [];\n\t\tfor (var i in existingLinksSearch) {\n\t\t\tlinksToDelete.push(existingLinksSearch[i]);\n\t\t}\n\n\t\treturn {\n\t\t\tadd: linksToAdd,\n\t\t\tremove: linksToDelete\n\t\t};\n\t}\n\n\tutils.mixin(PredecessorEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"<div><input type='text' name='\" + column.name + \"'></div>\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\thide: function () {\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = formatPredecessors(value, column.editor, gantt);\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn parseInputString((this.get_input(node).value || \"\"), column.editor);\n\t\t},\n\t\tsave: function (id, column, node) {\n\t\t\tvar task = gantt.getTask(id);\n\n\t\t\tvar linksDiff = getLinksDiff(task, this.get_value(id, column, node), column.editor);\n\n\t\t\tif (linksDiff.add.length || linksDiff.remove.length) {\n\t\t\t\tgantt.batchUpdate(function () {\n\t\t\t\t\tlinksDiff.add.forEach(function (link) {\n\t\t\t\t\t\tgantt.addLink(link);\n\t\t\t\t\t});\n\t\t\t\t\tlinksDiff.remove.forEach(function (linkId) {\n\t\t\t\t\t\tgantt.deleteLink(linkId);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (gantt.autoSchedule)\n\t\t\t\t\t\tgantt.autoSchedule();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tis_changed: function (value, id, column, node) {\n\t\t\tvar inputPredecessors = this.get_value(id, column, node);\n\t\t\tvar taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\n\n\t\t\treturn inputPredecessors.join() !== taskPredecessors.join();\n\t\t}\n\t}, true);\n\n\treturn PredecessorEditor;\n};","module.exports = function (gantt) {\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tvar html5DateFormat = \"%Y-%m-%d\";\n\n\tvar dateToStr = null;\n\tvar strToDate = null;\n\n\tfunction init() {\n\t\tif (!dateToStr) {\n\t\t\tdateToStr = gantt.date.date_to_str(html5DateFormat);\n\t\t}\n\t\tif (!strToDate) {\n\t\t\tstrToDate = gantt.date.str_to_date(html5DateFormat);\n\t\t}\n\t}\n\n\tfunction DateEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(DateEditor, BaseEditor);\n\n\tutils.mixin(DateEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tinit();\n\t\t\tvar minValue = null;\n\t\t\tvar maxValue = null;\n\n\t\t\tif(typeof config.min === \"function\"){\n\t\t\t\tminValue = config.min(id, column);\n\t\t\t}else{\n\t\t\t\tminValue = config.min;\n\t\t\t}\n\n\t\t\tif(typeof config.max === \"function\"){\n\t\t\t\tmaxValue = config.max(id, column);\n\t\t\t}else{\n\t\t\t\tmaxValue = config.max;\n\t\t\t}\n\n\t\t\tvar minAttr = minValue ? \" min='\" + dateToStr(minValue)+\"' \" : \"\";\n\t\t\tvar maxAttr = maxValue ? \" max='\" + dateToStr(maxValue)+\"' \" : \"\";\n\t\t\tvar html = \"<div style='width:140px'><input type='date' \" + minAttr + maxAttr + \" name='\" + column.name + \"'></div>\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tif (value && value.getFullYear) {\n\t\t\t\tthis.get_input(node).value = dateToStr(value);\n\t\t\t} else {\n\t\t\t\tthis.get_input(node).value = value;\n\t\t\t}\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\tif (!value || isNaN(value.getTime()))\n\t\t\t\treturn false;\n\t\t\treturn true;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\tvar parsed;\n\t\t\ttry {\n\t\t\t\tparsed = strToDate(this.get_input(node).value || \"\");\n\t\t\t} catch (e) {\n\t\t\t\tparsed = null;// return null will cancel changes\n\t\t\t}\n\n\t\t\treturn parsed;\n\t\t}\n\t}, true);\n\n\treturn DateEditor;\n};\n","module.exports = function(gantt) {\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction SelectEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(SelectEditor, BaseEditor);\n\n\tutils.mixin(SelectEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"<div><select name='\" + column.name + \"'>\";\n\t\t\tvar optionsHtml = [],\n\t\t\t\toptions = config.options || [];\n\n\t\t\tfor (var i = 0; i < options.length; i++) {\n\t\t\t\toptionsHtml.push(\"<option value='\" + config.options[i].key + \"'>\" + options[i].label + \"</option>\");\n\t\t\t}\n\n\t\t\thtml += optionsHtml.join(\"\") + \"</select></div>\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tget_input: function (node) {\n\t\t\treturn node.querySelector(\"select\");\n\t\t}\n\t}, true);\n\n\treturn SelectEditor;\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction NumberEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(NumberEditor, BaseEditor);\n\n\tutils.mixin(NumberEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar min = config.min || 0,\n\t\t\t\tmax = config.max || 100;\n\n\t\t\tvar html = \"<div><input type='number' min='\" + min + \"' max='\" + max + \"' name='\" + column.name + \"'></div>\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn this.get_input(node).value || \"\";\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\treturn !isNaN(parseInt(value, 10));\n\t\t}\n\t}, true);\n\n\treturn NumberEditor;\n};","module.exports = function(gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction TextEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(TextEditor, BaseEditor);\n\n\tutils.mixin(TextEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"<div><input type='text' name='\" + column.name + \"'></div>\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t}\n\t}, true);\n\n\treturn TextEditor;\n};","module.exports = {\n\tinit: function(controller, grid){\n\t\tvar self = controller;\n\t\tvar gantt = grid.$gantt;\n\n\t\tvar onBlurDelay = null;\n\t\tvar keyNav = gantt.ext.keyboardNavigation;\n\t\tkeyNav.attachEvent(\"onBeforeFocus\", function (node) {\n\t\t\tvar activeCell = controller.locateCell(node);\n\t\t\tclearTimeout(onBlurDelay);\n\t\t\tif (activeCell) {\n\t\t\t\tvar columnName = activeCell.columnName;\n\t\t\t\tvar id = activeCell.id;\n\n\t\t\t\tvar editorState = self.getState();\n\t\t\t\tif(self.isVisible()){\n\t\t\t\t\tif(editorState.id == id && editorState.columnName === columnName) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onFocus\", function (node) {\n\t\t\tvar activeCell = controller.locateCell(node);\n\t\t\tvar state = controller.getState();\n\t\t\tclearTimeout(onBlurDelay);\n\t\t\tif (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n\t\t\t\tif(self.isVisible()){\n\t\t\t\t\tself.save();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tcontroller.attachEvent(\"onHide\", function(){\n\t\t\tclearTimeout(onBlurDelay);\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onBlur\", function () {\n\t\t\tonBlurDelay = setTimeout(function(){\n\t\t\t\tself.save();\n\t\t\t});\n\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskDblClick\", function(id,e){\n\t\t\t// block lightbox on double click inside editor\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\t\t\tif(cell && controller.isVisible() && cell.columnName == state.columnName){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\n\t\t\tif(gantt._is_icon_open_click(e))\n\t\t\t\treturn true;\n\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\n\t\t\t\tif(controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName){\n\t\t\t\t\t// do nothing if editor is already active in this cell\n\t\t\t\t}else{\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\n\t\t\tself.save();\n\t\t\treturn true;\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onKeyDown\", function(command, e){\n\t\t\tvar activeCell = controller.locateCell(e.target);\n\t\t\tvar hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n\n\t\t\tvar state = controller.getState();\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\tvar keyCode = e.keyCode;\n\t\t\tvar preventKeyNav = false;\n\n\t\t\tswitch (keyCode){\n\t\t\t\tcase keyboard.ENTER:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tcontroller.save();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}else if(hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.ESC:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tcontroller.hide();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.UP:\n\t\t\t\tcase keyboard.DOWN:\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.LEFT:\n\t\t\t\tcase keyboard.RIGHT:\n\t\t\t\t\tif((hasEditor && controller.isVisible()) || state.editorType === \"date\"){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.SPACE:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.DELETE:\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t} else if(hasEditor && controller.isVisible()){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.TAB:\n\t\t\t\t\tif(controller.isVisible()){\n\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tcontroller.editPrevCell(true);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcontroller.editNextCell(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar newState = controller.getState();\n\t\t\t\t\t\tif(newState.id){\n\t\t\t\t\t\t\tkeyNav.focus({type:\"taskCell\", id: newState.id, column:newState.columnName});\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(controller.isVisible())\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\telse{\n\n\t\t\t\t\t\t// start editing on character key\n\t\t\t\t\t\tif((keyCode >= 48 && keyCode <= 57) || // [0-9]\n\t\t\t\t\t\t\t(keyCode > 95 && keyCode < 112) || // numpad\n\t\t\t\t\t\t\t(keyCode >= 64 && keyCode <= 91) || // [a-z]\n\t\t\t\t\t\t\t(keyCode > 185 && keyCode < 193) || //;=-,etc\n\t\t\t\t\t\t\t(keyCode > 218 && keyCode < 223)\n\t\t\t\t\t\t){\n\t\t\t\t\t\t\tvar modifiers = command.modifiers;\n\n\t\t\t\t\t\t\tvar anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\n\t\t\t\t\t\t\tif(modifiers.alt){\n\t\t\t\t\t\t\t\t// don't start editing on alt+key\n\t\t\t\t\t\t\t}else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")){\n\t\t\t\t\t\t\t\t// don't start editing if command already have a keyboard shortcut\n\t\t\t\t\t\t\t}else if(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (preventKeyNav){\n\t\t\t\treturn false;\n\t\t\t} else{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t});\n\t},\n\tonShow: function(controller, placeholder, grid){},\n\tonHide: function(controller, placeholder, grid){\n\t\tvar gantt = grid.$gantt;\n\t\tgantt.focus();\n\n\t},\n\tdestroy: function(){}\n};\n\n","module.exports = {\n\tinit: function (controller, grid) {\n\t\tvar gantt = grid.$gantt;\n\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\n\t\t\tif (gantt._is_icon_open_click(e))\n\t\t\t\treturn true;\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\n\t\t\t\tif (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {\n\t\t\t\t\t// do nothing if editor is already active in this cell\n\t\t\t\t} else {\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\n\t\t\tif (controller.isVisible() && controller.isChanged()) {\n\t\t\t\tcontroller.save();\n\t\t\t} else {\n\t\t\t\tcontroller.hide();\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\t\t\tif (cell && controller.isVisible() && cell.columnName == state.columnName) {\n\t\t\t\t//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\t\t\t\t//remove this code later if people don't complain\n\t\t\t\t//controller.hide();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tonShow: function (controller, placeholder, grid) {\n\t\tvar gantt = grid.$gantt;\n\t\t\n\n\t\tif(gantt.ext && gantt.ext.keyboardNavigation){\n\t\t\tvar keyNav = gantt.ext.keyboardNavigation;\n\t\t\tkeyNav.attachEvent(\"onKeyDown\", function(command, e){\n\t\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\t\tvar keyCode = e.keyCode;\n\t\t\t\tvar preventKeyNav = false;\n\n\t\t\t\tswitch (keyCode){\n\t\t\t\t\tcase keyboard.SPACE:\n\t\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (preventKeyNav){\n\t\t\t\t\treturn false;\n\t\t\t\t} else{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tplaceholder.onkeydown = function (e) {\n\t\t\te = e || window.event;\n\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\tif (e.defaultPrevented || (e.shiftKey && e.keyCode != keyboard.TAB)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar shouldPrevent = true;\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase gantt.keys.edit_save:\n\t\t\t\t\tcontroller.save();\n\t\t\t\t\tbreak;\n\t\t\t\tcase gantt.keys.edit_cancel:\n\t\t\t\t\tcontroller.hide();\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.UP:\n\t\t\t\tcase keyboard.DOWN:\n\t\t\t\t\tif (controller.isVisible()) {\n\t\t\t\t\t\tcontroller.hide();\n\t\t\t\t\t\tshouldPrevent = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.TAB:\n\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\tcontroller.editPrevCell(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontroller.editNextCell(true);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tshouldPrevent = false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (shouldPrevent) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t};\n\t},\n\tonHide: function () {\n\n\t},\n\n\tdestroy: function () {\n\n\t}\n};\n\n","var defaultMapping = require(\"./keyboard_mappings/default\");\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function(gantt){\n\n\tvar mapping = null;\n\n\treturn {\n\t\tsetMapping: function(map){\n\t\t\tmapping = map;\n\t\t},\n\t\tgetMapping: function(){\n\n\t\t\tif(mapping){\n\t\t\t\treturn mapping;\n\t\t\t}else if(gantt.config.keyboard_navigation_cells && gantt.ext.keyboardNavigation){\n\t\t\t\treturn keyNavMappings;\n\t\t\t}else{\n\t\t\t\treturn defaultMapping;\n\t\t\t}\n\t\t}\n\t};\n};\n","var getKeyboardMapping = require(\"./keyboard_mappings\");\nvar textEditorFactory = require(\"./editors/text\"),\n\tnumberEditorFactory = require(\"./editors/number\"),\n\tselectEditorFactory = require(\"./editors/select\"),\n\tdateEditorFactory = require(\"./editors/date\"),\n\tpredecessorEditorFactory = require(\"./editors/predecessor\"),\n\tdurationEditorFactory = require(\"./editors/duration\");\nvar utils = require(\"../../../../utils/utils\");\nvar domHelpers = require(\"../../utils/dom_helpers\");\nvar eventable = require(\"../../../../utils/eventable\");\nvar linkedPropertiesProcessor = require(\"./linked_properties\");\n\nfunction initConfigs(gantt){\n\tgantt.config.editor_types = {\n\t\ttext: new (textEditorFactory(gantt))(),\n\t\tnumber: new (numberEditorFactory(gantt))(),\n\t\tselect: new (selectEditorFactory(gantt))(),\n\t\tdate: new (dateEditorFactory(gantt))(),\n\t\tpredecessor: new (predecessorEditorFactory(gantt))(),\n\t\tduration: new (durationEditorFactory(gantt))()\n\t};\n}\n\nfunction create(gantt){\n\tvar keyboardMapping = getKeyboardMapping(gantt);\n\n\tvar eventBus = {};\n\teventable(eventBus);\n\n\tfunction createGridEditors(grid) {\n\n\t\tfunction _getGridCellFromNode(node){\n\t\t\tif(!domHelpers.isChildOf(node, grid.$grid)){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n\t\t\tvar cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\t\t\tif(cell){\n\t\t\t\tvar columnName = cell.getAttribute(\"data-column-name\");\n\t\t\t\tvar id = row.getAttribute(grid.$config.item_attribute);\n\t\t\t\treturn {\n\t\t\t\t\tid: id,\n\t\t\t\t\tcolumnName: columnName\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction _getEditorPosition(itemId, columnName) {\n\t\t\tvar config = grid.$getConfig();\n\t\t\tvar top = grid.getItemTop(itemId);\n\t\t\tvar height = grid.getItemHeight(itemId);\n\t\t\tvar cols = grid.getGridColumns();\n\t\t\tvar left = 0,\n\t\t\t\tright = 0,\n\t\t\t\twidth = 0;\n\n\t\t\tfor (var i = 0; i < cols.length; i++) {\n\t\t\t\tif (cols[i].name == columnName) {\n\t\t\t\t\twidth = cols[i].width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (config.rtl) {\n\t\t\t\t\tright += cols[i].width;\n\t\t\t\t}\telse {\n\t\t\t\t\tleft += cols[i].width;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tif (config.rtl) {\n\t\t\t\treturn {\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: width\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: width\n\t\t\t\t};\n\t\t\t}\n\n\t\t}\n\n\t\tfunction findVisibleIndex(grid, columnName) {\n\t\t\tvar columns = grid.getGridColumns();\n\t\t\tfor (var i = 0; i < columns.length; i++){\n\t\t\t\tif(columns[i].name == columnName){\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\tfunction _createPlaceholder(itemId, columnName) {\n\t\t\tvar config = grid.$getConfig();\n\t\t\tvar pos = _getEditorPosition(itemId, columnName);\n\t\t\tvar el = document.createElement(\"div\");\n\t\t\tel.className = \"gantt_grid_editor_placeholder\";\n\t\t\tel.setAttribute(grid.$config.item_attribute, itemId);\n\t\t\tel.setAttribute(grid.$config.bind + \"_id\", itemId);// for backward compatibility\n\n\t\t\tel.setAttribute(\"data-column-name\", columnName);\n\n\t\t\tvar visibleIndex = findVisibleIndex(grid, columnName);\n\t\t\tel.setAttribute(\"data-column-index\", visibleIndex);\n\n\t\t\tif (config.rtl) {\n\t\t\t\tel.style.cssText = [\n\t\t\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\t\t\"right:\" + pos.right + \"px\",\n\t\t\t\t\t\"width:\" + pos.width + \"px\",\n\t\t\t\t\t\"height:\" + pos.height + \"px\"\n\t\t\t\t].join(\";\");\n\t\t\t} else {\n\t\t\t\tel.style.cssText = [\n\t\t\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\t\t\"width:\" + pos.width + \"px\",\n\t\t\t\t\t\"height:\" + pos.height + \"px\"\n\t\t\t\t].join(\";\");\n\t\t\t}\n\n\t\t\treturn el;\n\t\t}\n\n\t\tvar updateTaskDateProperties = linkedPropertiesProcessor(gantt);\n\n\t\tvar handlers = [];\n\t\tvar ganttHandlers = [];\n\t\tvar store = null;\n\t\tvar controller = {\n\t\t\t_itemId: null,\n\t\t\t_columnName: null,\n\t\t\t_editor: null,\n\t\t\t_editorType: null,\n\t\t\t_placeholder: null,\n\n\t\t\tlocateCell: _getGridCellFromNode,\n\t\t\tgetEditorConfig: function (columnName) {\n\t\t\t\tvar column = grid.getColumn(columnName);\n\t\t\t\treturn column.editor;\n\t\t\t},\n\n\t\t\tinit: function () {\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.init){\n\t\t\t\t\tmapping.init(this, grid);\n\t\t\t\t}\n\n\t\t\t\tstore = grid.$gantt.getDatastore(grid.$config.bind);\n\n\t\t\t\tvar self = this;\n\n\t\t\t\thandlers.push(store.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\t\t\t\tif(self._itemId == oldId){\n\t\t\t\t\t\tself._itemId = newId;\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\thandlers.push(store.attachEvent(\"onStoreUpdated\", function(){\n\t\t\t\t\tif(grid.$gantt.getState(\"batchUpdate\").batch_update){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(self.isVisible() && !store.isVisible(self._itemId)){\n\t\t\t\t\t\tself.hide();\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tganttHandlers.push(gantt.attachEvent(\"onDataRender\", function(){\n\t\t\t\t\tif(self._editor && self._placeholder && !domHelpers.isChildOf(self._placeholder, gantt.$root)){\n\t\t\t\t\t\tgrid.$grid_data.appendChild(self._placeholder);\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tthis.init = function(){};\n\t\t\t},\n\n\t\t\tgetState: function(){\n\t\t\t\treturn {\n\t\t\t\t\teditor: this._editor,\n\t\t\t\t\teditorType: this._editorType,\n\t\t\t\t\tplaceholder: this._placeholder,\n\t\t\t\t\tid: this._itemId,\n\t\t\t\t\tcolumnName: this._columnName\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tstartEdit: function(itemId, columnName) {\n\t\t\t\tif (this.isVisible()) {\n\t\t\t\t\tthis.save();\n\t\t\t\t}\n\n\t\t\t\tif(!store.exists(itemId)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\n\t\t\t\tif (gantt.isReadonly(store.getItem(itemId))) {\n\t\t\t\t\tthis.callEvent(\"onEditPrevent\", [editorState]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\n\t\t\t\t\tthis.callEvent(\"onEditPrevent\", [editorState]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.show(editorState.id, editorState.columnName);\n\t\t\t\tthis.setValue();\n\n\t\t\t\tthis.callEvent(\"onEditStart\", [editorState]);\n\t\t\t},\n\t\t\tisVisible: function(){\n\t\t\t\treturn !!(this._editor && domHelpers.isChildOf(this._placeholder, gantt.$root));\n\t\t\t},\n\t\t\tshow: function (itemId, columnName) {\n\t\t\t\tif (this.isVisible()) {\n\t\t\t\t\tthis.save();\n\t\t\t\t}\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\n\n\t\t\t\tvar column = grid.getColumn(editorState.columnName);\n\t\t\t\tvar editorConfig = this.getEditorConfig(column.name);\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar editor = grid.$getConfig().editor_types[editorConfig.type];\n\n\t\t\t\tvar placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\t\t\t\tgrid.$grid_data.appendChild(placeholder);\n\t\t\t\teditor.show(editorState.id, column, editorConfig, placeholder);\n\t\t\t\tthis._editor = editor;\n\t\t\t\tthis._placeholder = placeholder;\n\t\t\t\tthis._itemId = editorState.id;\n\t\t\t\tthis._columnName = editorState.columnName;\n\t\t\t\tthis._editorType = editorConfig.type;\n\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.onShow){\n\t\t\t\t\tmapping.onShow(this, placeholder, grid);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsetValue: function () {\n\t\t\t\tvar state = this.getState();\n\t\t\t\tvar itemId = state.id,\n\t\t\t\t\tcolumnName = state.columnName;\n\n\t\t\t\tvar column = grid.getColumn(columnName);\n\t\t\t\tvar item = store.getItem(itemId);\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\n\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar value = item[editorConfig.map_to];\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\n\t\t\t\t\tvalue = store.getItem(itemId);\n\t\t\t\t}\n\n\t\t\t\tthis._editor.set_value(value, itemId, column, this._placeholder);\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tfocus: function(){\n\t\t\t\tthis._editor.focus(this._placeholder);\n\t\t\t},\n\n\t\t\tgetValue: function () {\n\t\t\t\tvar column = grid.getColumn(this._columnName);\n\t\t\t\treturn this._editor.get_value(this._itemId, column, this._placeholder);\n\t\t\t},\n\n\t\t\t_getItemValue: function() {\n\t\t\t\tvar editorConfig = this.getEditorConfig(this._columnName);\n\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar item = gantt.getTask(this._itemId);\n\t\t\t\tvar value = item[editorConfig.map_to];\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\n\t\t\t\t\tvalue = store.getItem(this._itemId);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\n\t\t\tisChanged: function(){\n\n\t\t\t\tvar column = grid.getColumn(this._columnName);\n\n\t\t\t\tvar value = this._getItemValue();\n\n\t\t\t\treturn this._editor.is_changed(value, this._itemId, column, this._placeholder);\n\t\t\t},\n\n\t\t\thide: function () {\n\t\t\t\tif(!this._itemId)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar itemId = this._itemId,\n\t\t\t\t\tcolumnName = this._columnName;\n\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.onHide){\n\t\t\t\t\tmapping.onHide(this, this._placeholder, grid);\n\t\t\t\t}\n\n\t\t\t\tthis._itemId = null;\n\t\t\t\tthis._columnName = null;\n\t\t\t\tthis._editorType = null;\n\t\t\t\tif (!this._placeholder) return;\n\n\t\t\t\tif (this._editor && this._editor.hide) {\n\t\t\t\t\tthis._editor.hide(this._placeholder);\n\t\t\t\t}\n\t\t\t\tthis._editor = null;\n\t\t\t\tif (this._placeholder.parentNode) {\n\t\t\t\t\tthis._placeholder.parentNode.removeChild(this._placeholder);\n\t\t\t\t}\n\t\t\t\tthis._placeholder = null;\n\n\t\t\t\tthis.callEvent(\"onEditEnd\", [{id: itemId, columnName: columnName}]);\n\t\t\t},\n\t\t\tsave: function () {\n\t\t\t\tif(!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n\t\t\t\t\tthis.hide();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar itemId = this._itemId,\n\t\t\t\t\tcolumnName = this._columnName;\n\n\t\t\t\tif(!store.exists(itemId)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar item = store.getItem(itemId);\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\n\t\t\t\tvar editorState = {\n\t\t\t\t\tid: itemId,\n\t\t\t\t\tcolumnName: columnName,\n\t\t\t\t\tnewValue: this.getValue(),\n\t\t\t\t\toldValue: this._getItemValue()\n\t\t\t\t};\n\t\t\t\tif (this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n\t\t\t\t\tif (!this._editor.is_valid || this._editor.is_valid(editorState.newValue, editorState.id, editorState.columnName, this._placeholder)) {\n\n\t\t\t\t\t\tvar mapTo = editorConfig.map_to;\n\t\t\t\t\t\tvar value = editorState.newValue;\n\t\t\t\t\t\tif (mapTo != \"auto\") {\n\t\t\t\t\t\t\titem[mapTo] = value;\n\t\t\t\t\t\t\tupdateTaskDateProperties(item, mapTo, gantt.config.inline_editors_date_processing);\n\n\t\t\t\t\t\t\tstore.updateItem(itemId);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.callEvent(\"onSave\", [editorState]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.hide();\n\t\t\t},\n\n\t\t\t_findEditableCell: function findEditableCell(start, direction){\n\t\t\t\tvar nextIndex = start;\n\t\t\t\tvar columns = grid.getGridColumns();\n\t\t\t\tvar nextColumn = columns[nextIndex];\n\n\t\t\t\tvar columnName = nextColumn ? nextColumn.name : null;\n\t\t\t\tif(columnName){\n\t\t\t\t\twhile(columnName && !this.getEditorConfig(columnName)){\n\t\t\t\t\t\tcolumnName = this._findEditableCell(start + direction, direction);\n\t\t\t\t\t}\n\t\t\t\t\treturn columnName;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\n\t\t\tgetNextCell: function moveCell(dir){\n\t\t\t\treturn this._findEditableCell(grid.getColumnIndex(this._columnName) + dir, dir);\n\t\t\t},\n\n\t\t\tgetFirstCell: function getFirstCell(){\n\t\t\t\treturn this._findEditableCell(0, 1);\n\t\t\t},\n\n\t\t\tgetLastCell: function getLastCell(){\n\t\t\t\treturn this._findEditableCell(grid.getGridColumns().length - 1, -1);\n\t\t\t},\n\n\t\t\teditNextCell: function nextCell(canChangeRow){\n\t\t\t\tvar cell = this.getNextCell(1);\n\t\t\t\tif(cell){\n\t\t\t\t\tvar nextColumn = this.getNextCell(1);\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\n\t\t\t\t\t}\n\t\t\t\t}else if(canChangeRow && this.moveRow(1)){\n\t\t\t\t\tvar task = this.moveRow(1);\n\t\t\t\t\tcell = this.getFirstCell();\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\n\t\t\t\t\t\tthis.startEdit(task, cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditPrevCell: function prevCell(canChangeRow){\n\t\t\t\tvar cell = this.getNextCell(-1);\n\t\t\t\tif(cell){\n\t\t\t\t\tvar nextColumn = this.getNextCell(-1);\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\n\t\t\t\t\t}\n\t\t\t\t}else if(canChangeRow && this.moveRow(-1)){\n\t\t\t\t\tvar task = this.moveRow(-1);\n\t\t\t\t\tcell = this.getLastCell();\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\n\t\t\t\t\t\tthis.startEdit(task, cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmoveRow: function moveRow(dir) {\n\t\t\t\tvar moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\n\t\t\t\tmoveTask = gantt.bind(moveTask, gantt);\n\n\t\t\t\tvar nextItem = moveTask(this._itemId);\n\t\t\t\t// skip readonly rows\n\t\t\t\twhile (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\n\t\t\t\t\tnextItem = moveTask(nextItem);\n\t\t\t\t}\n\t\t\t\treturn nextItem;\n\t\t\t},\n\n\t\t\teditNextRow: function nextRow(){\n\t\t\t\tvar row = this.getNextCell(1);\n\t\t\t\tif(row){\n\t\t\t\t\tthis.startEdit(row, this._columnName);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditPrevRow: function prevRow(){\n\t\t\t\tvar row = this.getNextCell(-1);\n\t\t\t\tif(row){\n\t\t\t\t\tthis.startEdit(row, this._columnName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdestructor: function(){\n\t\t\t\thandlers.forEach(function(handlerId){\n\t\t\t\t\tstore.detachEvent(handlerId);\n\t\t\t\t});\n\n\t\t\t\tganttHandlers.forEach(function(handlerId){\n\t\t\t\t\tgantt.detachEvent(handlerId);\n\t\t\t\t});\n\t\t\t\thandlers = [];\n\t\t\t\tganttHandlers = [];\n\n\t\t\t\tstore = null;\n\t\t\t\tthis.hide();\n\t\t\t\tthis.detachAllEvents();\n\t\t\t}\n\t\t};\n\n\t\tutils.mixin(controller, keyboardMapping);\n\t\tutils.mixin(controller, eventBus);\n\n\t\treturn controller;\n\t}\n\n\n\tvar inlineEditController = {\n\t\tinit: initConfigs,\n\t\tcreateEditors: createGridEditors\n\t};\n\n\tutils.mixin(inlineEditController, keyboardMapping);\n\tutils.mixin(inlineEditController, eventBus);\n\n\treturn inlineEditController;\n}\n\n\n\n\nmodule.exports = create;","var createStaticBgHelper = function(){\n\treturn {\n\t\trender: function () { },\n\t\tdestroy: function () { }\n\t};\n};\n\nmodule.exports = {\n\tcreate: function(){\n\t\treturn createStaticBgHelper();\n\t}\n};\n\n","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tenv = require(\"../../../utils/env\"),\n\tCell = require(\"./cell\");\n\nvar ScrollbarCell = (function (_super) {\n\t\"use strict\";\n\n\tvar SCROLL_MODIFIER_KEYS = [\"altKey\", \"shiftKey\", \"metaKey\"]; // it's no way to disable ctrl+wheel\n\t__extends(ScrollbarCell, _super);\n\tfunction ScrollbarCell(parent, config, base_factory, gantt) {\n\n\t\tvar _this = _super.apply(this, arguments) || this;\n\t\tthis.$config = utils.mixin(config, {scroll: \"x\"});\n\t\t_this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\n\t\t_this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\n\t\t_this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\n\t\t_this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\n\t\t_this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\n\n\t\tthis.$config.hidden = true;\n\t\tvar size = gantt.config.scroll_size;\n\n\t\tif(gantt.env.isIE){\n\t\t\t// full element height/width must be bigger than just a browser scrollbar,\n\t\t\t// otherwise the scrollbar element won't be scrolled on click\n\t\t\tsize += 1;\n\t\t}\n\n\t\tif(this._isHorizontal()){\n\t\t\t_this.$config.height = size;\n\t\t\t_this.$parent.$config.height = size;\n\t\t}else{\n\t\t\t_this.$config.width = size;\n\t\t\t_this.$parent.$config.width = size;\n\t\t}\n\n\t\tthis.$config.scrollPosition = 0;\n\n\t\t_this.$name = \"scroller\";\n\t\treturn _this;\n\t}\n\n\tScrollbarCell.prototype.init = function(container){\n\t\tcontainer.innerHTML = this.$toHTML();\n\t\tthis.$view = container.firstChild;\n\n\t\tif(!this.$view){\n\t\t\tthis.init();\n\t\t}\n\t\tif(this._isVertical()){\n\t\t\tthis._initVertical();\n\t\t}else{\n\t\t\tthis._initHorizontal();\n\t\t}\n\t\tthis._initMouseWheel();\n\t\tthis._initLinkedViews();\n\t};\n\n\tScrollbarCell.prototype.$toHTML = function () {\n\t\tvar className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\n\t\treturn \"<div class='gantt_layout_cell \"+className+\"'><div style='\"+(this._isHorizontal() ? \"width:2000px\" : \"height:2000px\")+\"'></div></div>\";\n\t};\n\n\tScrollbarCell.prototype._getRootParent = function(){\n\t\tvar parent = this.$parent;\n\t\twhile(parent && parent.$parent){\n\t\t\tparent = parent.$parent;\n\t\t}\n\t\tif(parent){\n\t\t\treturn parent;\n\t\t}\n\t};\n\n\n\tfunction eachCell(root, res){\n\t\tres.push(root);\n\t\tif(root.$cells){\n\t\t\tfor(var i = 0; i < root.$cells.length; i++){\n\t\t\t\teachCell(root.$cells[i], res);\n\t\t\t}\n\t\t}\n\t}\n\tScrollbarCell.prototype._eachView = function(){\n\t\tvar res = [];\n\t\teachCell(this._getRootParent(), res);\n\t\treturn res;\n\t};\n\n\tScrollbarCell.prototype._getLinkedViews = function(){\n\t\tvar views = this._eachView();\n\t\tvar res = [];\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].$config && ((this._isVertical() && views[i].$config.scrollY == this.$id) || (this._isHorizontal() && views[i].$config.scrollX == this.$id)) ){\n\t\t\t\tres.push(views[i]);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\n\tScrollbarCell.prototype._initHorizontal = function(){\n\t\tthis.$scroll_hor = this.$view;\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\n\n\t};\n\n\tScrollbarCell.prototype._initLinkedViews = function(){\n\t\tvar views = this._getLinkedViews();\n\t\tvar css = this._isVertical() ?\"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\t//views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\n\t\t\tdomHelpers.addClassName(views[i].$view || views[i].getNode(), css);\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._initVertical = function(){\n\t\tthis.$scroll_ver = this.$view;\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\n\t};\n\n\tScrollbarCell.prototype._updateLinkedViews = function(){\n\t};\n\n\tScrollbarCell.prototype._initMouseWheel = function(){\n\t\tvar ff = env.isFF;\n\t\tif (ff)\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler);\n\t\telse\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler);\n\t};\n\n\n\n\n\tScrollbarCell.prototype.scrollHorizontally = function(left){\n\t\tif(this._scrolling) return;\n\t\tthis._scrolling = true;\n\n\t\tthis.$scroll_hor.scrollLeft = left;\n\t\tthis.$config.codeScrollLeft = left;\n\t\tleft = this.$scroll_hor.scrollLeft;\n\n\t\tvar views = this._getLinkedViews();\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].scrollTo){\n\t\t\t\tviews[i].scrollTo(left, undefined);\n\t\t\t}\n\t\t}\n\t\tvar oldSize = this.$config.scrollPosition;\n\t\tthis.$config.scrollPosition = left;\n\t\tthis.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\n\t\tthis._scrolling = false;\n\t};\n\tScrollbarCell.prototype.scrollVertically = function(top){\n\t\tif(this._scrolling) return;\n\t\tthis._scrolling = true;\n\n\t\tthis.$scroll_ver.scrollTop = top;\n\t\ttop = this.$scroll_ver.scrollTop;\n\n\t\tvar views = this._getLinkedViews();\n\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].scrollTo){\n\t\t\t\tviews[i].scrollTo(undefined, top);\n\t\t\t}\n\t\t}\n\t\tvar oldSize = this.$config.scrollPosition;\n\t\tthis.$config.scrollPosition = top;\n\t\tthis.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\n\t\tthis._scrolling = false;\n\t};\n\n\tScrollbarCell.prototype._isVertical = function(){\n\t\treturn this.$config.scroll == \"y\";\n\t};\n\tScrollbarCell.prototype._isHorizontal = function(){\n\t\treturn this.$config.scroll == \"x\";\n\t};\n\tScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\n\t\tif(this._isVertical() || this._scrolling){\n\t\t\treturn;\n\t\t}\n\n\t\t//in safari we can catch previous onscroll after setting new value from mouse-wheel event\n\t\t//set delay to prevent value drifiting\n\t\tif ((new Date()) - ( this._wheel_time || 0 ) < 100) return true;\n\t\t//if (this.$gantt._touch_scroll_active) return;\n\t\tvar left = this.$scroll_hor.scrollLeft;\n\n\t\tthis.scrollHorizontally(left);\n\n\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\n\t};\n\tScrollbarCell.prototype._outerScrollHorizontalHandler = function(e){\n\t\tif(this._isVertical()){\n\t\t\treturn;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.show = function(){\n\t\tthis.$parent.show();\n\t};\n\tScrollbarCell.prototype.hide = function(){\n\t\tthis.$parent.hide();\n\t};\n\n\tScrollbarCell.prototype._getScrollSize = function(){\n\t\tvar scrollSize = 0;\n\t\tvar outerSize = 0;\n\t\tvar isHorizontal = this._isHorizontal();\n\n\t\tvar linked = this._getLinkedViews();\n\t\tvar view;\n\t\tvar scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\n\t\t\tinnerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\n\t\tvar outerProperty = isHorizontal ? \"x\" : \"y\";\n\t\tvar offset = this._getScrollOffset();\n\n\t\tfor(var i = 0; i < linked.length; i++){\n\t\t\tview = linked[i];\n\t\t\tif(!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\n\n\t\t\tvar sizes = view.$content.getSize();\n\t\t\tvar cellScrollSize;\n\t\t\tif(sizes.hasOwnProperty(scrollProperty)){\n\t\t\t\tcellScrollSize = sizes[scrollProperty];\n\t\t\t}else{\n\t\t\t\tcellScrollSize = sizes[innerSizeProperty];\n\t\t\t}\n\n\t\t\tif(offset){\n\t\t\t\t// precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\n\t\t\t\tif(sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && (cellScrollSize > (sizes[outerProperty] - offset + 2))){\n\t\t\t\t\tscrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\n\t\t\t\t\touterSize = sizes[outerProperty];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tvar nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\n\t\t\t\tvar scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\n\t\t\t\tcellScrollSize = cellScrollSize + nonScrollableSize;\n\n\t\t\t\tif(cellScrollSize > scrollableViewPortSize && (cellScrollSize > scrollSize) ){\n\t\t\t\t\t//|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\n\n\t\t\t\t\tscrollSize = cellScrollSize;\n\t\t\t\t\touterSize = sizes[outerProperty];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\touterScroll: outerSize,\n\t\t\tinnerScroll: scrollSize\n\t\t};\n\t};\n\n\tScrollbarCell.prototype.scroll = function(position){\n\t\tif(this._isHorizontal()){\n\t\t\tthis.scrollHorizontally(position);\n\t\t}else{\n\t\t\tthis.scrollVertically(position);\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.getScrollState = function(){\n\t\treturn {\n\t\t\tvisible: this.isVisible(),\n\t\t\tdirection: this.$config.scroll,\n\t\t\tsize: this.$config.outerSize,\n\t\t\tscrollSize: this.$config.scrollSize || 0,\n\t\t\tposition: this.$config.scrollPosition || 0\n\t\t};\n\t};\n\n\tScrollbarCell.prototype.setSize = function(width, height){\n\t\t_super.prototype.setSize.apply(this, arguments);\n\n\t\tvar scrollSizes = this._getScrollSize();\n\n\t\tvar ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\n\n\t\tif(scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll){\n\t\t\tscrollSizes.innerScroll += (ownSize - scrollSizes.outerScroll);\n\t\t}\n\t\tthis.$config.scrollSize = scrollSizes.innerScroll;\n\n\t\tthis.$config.width = width;\n\t\tthis.$config.height = height;\n\t\tthis._setScrollSize(scrollSizes.innerScroll);\n\t};\n\n\tScrollbarCell.prototype.isVisible = function(){\n\t\treturn !!(this.$parent && this.$parent.$view.parentNode);\n\t};\n\n\tScrollbarCell.prototype.shouldShow = function(){\n\t\tvar scrollSizes = this._getScrollSize();\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn false;\n\t\t}else if(scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.shouldHide = function(){\n\t\tvar scrollSizes = this._getScrollSize();\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t};\n\n\n\tScrollbarCell.prototype.toggleVisibility = function(){\n\t\tif(this.shouldHide()){\n\t\t\tthis.hide();\n\t\t}else if(this.shouldShow()){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._getScaleOffset = function(view){\n\t\tvar offset = 0;\n\t\tif(view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")){\n\t\t\toffset = view.$content.$getConfig().scale_height;\n\t\t}\n\t\treturn offset;\n\t};\n\n\tScrollbarCell.prototype._getScrollOffset = function(){\n\t\tvar offset = 0;\n\t\tif(this._isVertical()){\n\t\t\tvar parentLayout = this.$parent.$parent;\n\t\t\toffset = Math.max(\n\t\t\t\tthis._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)),\n\t\t\t\tthis._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id))\n\t\t\t\t);\n\t\t}else{\n\t\t\tvar linked = this._getLinkedViews();\n\n\t\t\tfor (var i = 0; i < linked.length; i++) {\n\t\t\t\tvar view = linked[i],\n\t\t\t\t\tvparent = view.$parent;\n\t\t\t\tvar cells = vparent.$cells;\n\n\t\t\t\tvar last = cells[cells.length - 1];\n\n\t\t\t\tif (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\n\t\t\t\t\toffset = last.$config.width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\treturn offset || 0;\n\t};\n\n\tScrollbarCell.prototype._setScrollSize = function(size){\n\t\tvar property = this._isHorizontal() ? \"width\" : \"height\";\n\t\tvar scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\n\n\t\tvar offset = this._getScrollOffset();\n\n\t\tvar node = scrollbar.firstChild;\n\n\t\tif(offset){\n\t\t\tif(this._isVertical()){\n\n\t\t\t\tthis.$config.outerSize = (this.$config.height - offset + 3);\n\t\t\t\tscrollbar.style.height = this.$config.outerSize + \"px\";\n\t\t\t\tscrollbar.style.top = (offset-1) + \"px\";\n\t\t\t\tdomHelpers.addClassName(scrollbar, this.$parent._borders.top);\n\t\t\t\tdomHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n\t\t\t}else{\n\t\t\t\tthis.$config.outerSize = (this.$config.width - offset + 1);\n\t\t\t\tscrollbar.style.width = this.$config.outerSize + \"px\";\n\t\t\t\t//domHelpers.addClassName(scrollbar, this.$parent._borders.right);\n\t\t\t}\n\t\t}else{\n\t\t\tscrollbar.style.top = \"auto\";\n\t\t\tdomHelpers.removeClassName(scrollbar, this.$parent._borders.top);\n\t\t\tdomHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n\t\t\tthis.$config.outerSize = this.$config.height;\n\t\t}\n\n\t\tnode.style[property] = size + \"px\";\n\t};\n\n\tScrollbarCell.prototype._scrollVerticalHandler = function (e) {\n\t\tif(this._scrollHorizontalHandler() || this._scrolling){\n\t\t\treturn;\n\t\t}\n\n\t\t//if (this.$gantt._touch_scroll_active) return;\n\t\tvar top = this.$scroll_ver.scrollTop;\n\t\tvar prev = this._oldTop;\n\t\tif(top == prev) return;\n\n\t\tthis.scrollVertically(top);\n\n\t\tthis._oldTop = this.$scroll_ver.scrollTop;\n\n\t};\n\tScrollbarCell.prototype._outerScrollVerticalHandler = function(e){\n\t\tif(this._scrollHorizontalHandler()){\n\t\t\treturn;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._checkWheelTarget = function(targetNode){\n\t\tvar connectedViews = this._getLinkedViews().concat(this);\n\n\t\tfor(var i = 0; i < connectedViews.length; i++){\n\t\t\tvar node = connectedViews[i].$view;\n\t\t\tif(domHelpers.isChildOf(targetNode, node)){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tScrollbarCell.prototype._mouseWheelHandler = function(e){\n\t\tvar target = e.target || e.srcElement;\n\n\t\tif(!this._checkWheelTarget(target))\n\t\t\treturn;\n\n\t\tthis._wheel_time = new Date();\n\n\t\tvar res = {};\n\n\t\tvar wheelSpeed = {x: 1, y: 1};\n\t\tvar wheelSpeedConfig = this.$gantt.config.wheel_scroll_sensitivity;\n\n\t\tif (typeof wheelSpeedConfig == \"number\" && !!wheelSpeedConfig) {\n\t\t\twheelSpeed = {x: wheelSpeedConfig, y: wheelSpeedConfig};\n\t\t}\n\t\telse if (({}).toString.apply(wheelSpeedConfig) == \"[object Object]\") {\n\t\t\twheelSpeed = {x: wheelSpeedConfig.x, y: wheelSpeedConfig.y};\n\t\t}\n\n\t\tvar ff = env.isFF;\n\t\tvar wx = ff ? (e.deltaX * -20 * wheelSpeed.x) : e.wheelDeltaX * 2 * wheelSpeed.x;\n\t\tvar wy = ff ? (e.deltaY * -40 * wheelSpeed.y) : e.wheelDelta * wheelSpeed.y;\n\n\t\tvar horizontalScrollModifier = this.$gantt.config.horizontal_scroll_key;\n\n\t\tif (horizontalScrollModifier !== false) {\n\t\t\tif (SCROLL_MODIFIER_KEYS.indexOf(horizontalScrollModifier) >= 0) {\n\t\t\t\tif(e[horizontalScrollModifier] && !(e.deltaX || e.wheelDeltaX)){\n\t\t\t\t\t// shift+mousewheel for horizontal scroll\n\t\t\t\t\twx = wy*2;\n\t\t\t\t\twy = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\tif (wx && Math.abs(wx) > Math.abs(wy)){\n\t\t\tif(this._isVertical()){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(res.x) return true;//no horisontal scroll, must not block scrolling\n\t\t\tif(!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\n\n\t\t\tvar dir = wx/-40;\n\t\t\tvar oldLeft = this._oldLeft;\n\t\t\tvar left = oldLeft+dir*30;\n\t\t\tthis.scrollHorizontally(left);\n\t\t\tthis.$scroll_hor.scrollLeft = left;\n\t\t\t// not block scroll if position hasn't changed\n\t\t\tif(oldLeft == this.$scroll_hor.scrollLeft){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\n\t\t} else {\n\t\t\tif(this._isHorizontal()){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(res.y) return true;//no vertical scroll, must not block scrolling\n\t\t\tif(!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\n\n\t\t\tvar dir = wy/-40;\n\t\t\tif (typeof wy == \"undefined\")\n\t\t\t\tdir = e.detail;\n\n\t\t\tvar oldTop = this._oldTop;\n\t\t\tvar top = this.$scroll_ver.scrollTop+dir*30;\n\n\t\t\t//if(!this.$gantt.config.prevent_default_scroll &&\n\t\t\t//\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\n\t\t\tthis.scrollVertically(top);\n\t\t\tthis.$scroll_ver.scrollTop = top;\n\n\t\t\t// not block scroll if position hasn't changed\n\t\t\tif(oldTop == this.$scroll_ver.scrollTop){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tthis._oldTop = this.$scroll_ver.scrollTop;\n\t\t}\n\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\te.cancelBubble=true;\n\t\treturn false;\n\t};\n\n\treturn ScrollbarCell;\n})(Cell);\n\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\n\tutils = require(\"../../../utils/utils\"),\n\tCell = require(\"./cell\");\n\nvar ViewCell = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ViewCell, _super);\n\tfunction ViewCell(parent, config, base_factory) {\n\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tif(config.view){\n\t\t\tif(config.id){\n\t\t\t\t// pass id to the nested view\n\t\t\t\tthis.$id = utils.uid();\n\t\t\t}\n\t\t\tvar childConfig = utils.copy(config);\n\t\t\tdelete childConfig.config;\n\t\t\tdelete childConfig.templates;\n\n\t\t\tthis.$content = this.$base_factory.createView(config.view, this, childConfig, this);\n\t\t\tif(!this.$content)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t_this.$name = \"viewCell\";\n\t\treturn _this;\n\t}\n\n\tViewCell.prototype.destructor = function(){\n\t\tthis.clear();\n\t\t_super.prototype.destructor.call(this);\n\t};\n\n\tViewCell.prototype.clear = function(){\n\n\t\tthis.$initialized = false;\n\n\t\t// call destructor\n\t\tif (this.$content){\n\t\t\tvar method = this.$content.unload || this.$content.destructor;\n\t\t\tif (method){\n\t\t\t\tmethod.call(this.$content);\n\t\t\t}\n\t\t}\n\n\t\t_super.prototype.clear.call(this);\n\n\t};\n\n\tViewCell.prototype.scrollTo = function(left, top){\n\n\t\tif(this.$content && this.$content.scrollTo){\n\t\t\tthis.$content.scrollTo(left, top);\n\t\t}else{\n\t\t\t_super.prototype.scrollTo.call(this, left, top);\n\t\t}\n\t};\n\n\tViewCell.prototype._setContentSize = function(x, y){\n\t\tvar borders = this._getBorderSizes();\n\t\tif(typeof x === \"number\"){\n\t\t\tvar outerX = x + borders.horizontal;\n\t\t\tthis.$config.width = outerX;\n\t\t}\n\t\tif(typeof y === \"number\"){\n\t\t\tvar outerY = y + borders.vertical;\n\t\t\tthis.$config.height = outerY;\n\t\t}\n\t};\n\n\tViewCell.prototype.setSize = function(x, y){\n\t\t_super.prototype.setSize.call(this, x, y);\n\n\t\tif(!this.$preResize && this.$content) {\n\t\t\tif (!this.$initialized) {\n\t\t\t\tthis.$initialized = true;\n\t\t\t\tvar header = this.$view.childNodes[0];\n\t\t\t\tvar content = this.$view.childNodes[1];\n\t\t\t\tif(!content) content = header;\n\n\t\t\t\t/*if(this.$content.$config){\n\t\t\t\t\tthis.$content.$config.width = this.$lastSize.contentX;\n\t\t\t\t\tthis.$content.$config.height = this.$lastSize.contentY;\n\t\t\t\t}*/\n\t\t\t\tthis.$content.init(content);\n\t\t\t}\n\t\t}\n\t};\n\n\tViewCell.prototype.setContentSize = function(){\n\t\tif(!this.$preResize && this.$content) {\n\t\t\tif (this.$initialized) {\n\t\t\t\tthis.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tViewCell.prototype.getContentSize = function(){\n\t\tvar size = _super.prototype.getContentSize.call(this);\n\n\t\tif(this.$content && this.$initialized){\n\t\t\tvar childSize = this.$content.getSize();\n\t\t\tsize.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\n\t\t\tsize.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\n\t\t}\n\n\t\tvar borders = this._getBorderSizes();\n\t\tsize.width += borders.horizontal;\n\t\tsize.height += borders.vertical;\n\n\t\treturn size;\n\t};\n\n\treturn ViewCell;\n}(Cell));\n\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\n\tLayout = require(\"./layout\"),\n\tCell = require(\"./cell\");\n\nvar ViewLayout = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ViewLayout, _super);\n\tfunction ViewLayout(parent, config, base_factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\t\tfor (var i = 0; i < _this.$cells.length; i++) {\n\t\t\t_this.$cells[i].$config.hidden = (i !== 0);\n\t\t}\n\t\t_this.$cell = _this.$cells[0];\n\t\t_this.$name = \"viewLayout\";\n\n\t\treturn _this;\n\t}\n\tViewLayout.prototype.cell = function (id) {\n\t\tvar cell = _super.prototype.cell.call(this, id);\n\t\tif (!cell.$view) {\n\t\t\tthis.$fill(null, this);\n\t\t}\n\t\treturn cell;\n\t};\n\tViewLayout.prototype.moveView = function (view) {\n\t\tvar body = this.$view;\n\t\tif (this.$cell) {\n\t\t\tthis.$cell.$config.hidden = true;\n\t\t\tbody.removeChild(this.$cell.$view);\n\t\t}\n\t\tthis.$cell = view;\n\t\tbody.appendChild(view.$view);\n\t};\n\tViewLayout.prototype.setSize = function (x, y) {\n\t\tCell.prototype.setSize.call(this, x, y);\n\t};\n\n\tViewLayout.prototype.setContentSize = function(){\n\t\tvar size = this.$lastSize;\n\t\tthis.$cell.setSize(size.contentX, size.contentY);\n\t};\n\n\tViewLayout.prototype.getSize = function () {\n\t\tvar sizes = _super.prototype.getSize.call(this);\n\t\tif (this.$cell) {\n\t\t\tvar cellSize = this.$cell.getSize();\n\t\t\tif (this.$config.byMaxSize) {\n\t\t\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\t\t\tvar otherCell = this.$cells[i].getSize();\n\t\t\t\t\tfor (var cell in cellSize) {\n\t\t\t\t\t\tcellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var size in sizes) {\n\t\t\t\tsizes[size] = sizes[size] || cellSize[size];\n\t\t\t}\n\t\t\tsizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\n\t\t}\n\t\treturn sizes;\n\t};\n\treturn ViewLayout;\n}(Layout));\n\nmodule.exports = ViewLayout;","module.exports = function(viewport, box){\n\tif(!box){\n\t\treturn false;\n\t}\n\n\tif(box.left > viewport.x_end || box.left + box.width < viewport.x){\n\t\treturn false;\n\t}\n\n\tif(box.top > viewport.y_end || box.top + box.height < viewport.y){\n\t\treturn false;\n\t}\n\n\treturn true;\n};","var genericViewPortChecker = require(\"./viewport/is_in_viewport\");\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\nvar basicGetRectangle = require(\"./viewport/get_grid_row_rectangle\");\nvar rendererFactory = function(gantt){\n\n\t//hash of dom elements is needed to redraw single bar/link\n\tvar task_area_pulls = {},\n\t\ttask_area_renderers = {};\n\n\tfunction getView(layer){\n\t\tvar view = null;\n\t\tif (typeof layer.view === \"string\") {\n\t\t\tview = gantt.$ui.getView(layer.view);\n\t\t} else if (layer.view) {\n\t\t\tview = layer.view;\n\t\t}\n\t\treturn view;\n\t}\n\n\tfunction getRenderer(id, layer, node) {\n\n\t\tif (task_area_renderers[id])\n\t\t\treturn task_area_renderers[id];\n\n\t\tif (!layer.renderer)\n\t\t\tgantt.assert(false, \"Invalid renderer call\");\n\n\t\tvar renderMethod = null;\n\t\tvar updateMethod = null;\n\t\tvar getRectangle = null;\n\t\tvar specializedViewPortChecker = null;\n\n\t\tif(typeof layer.renderer === \"function\"){\n\t\t\trenderMethod = layer.renderer;\n\t\t\tgetRectangle = basicGetRectangle;\n\t\t}else{\n\t\t\trenderMethod = layer.renderer.render;\n\t\t\tupdateMethod = layer.renderer.update;\n\t\t\t\n\t\t\tif(layer.renderer.isInViewPort){\n\t\t\t\tspecializedViewPortChecker = layer.renderer.isInViewPort;\n\t\t\t}else{\n\t\t\t\tgetRectangle = layer.renderer.getRectangle;\n\t\t\t}\n\n\t\t\tif (!getRectangle && getRectangle !== null) {\n\t\t\t\tgetRectangle = basicGetRectangle;\n\t\t\t}\n\t\t}\n\n\t\tvar filter = layer.filter;\n\n\t\tif (node)\n\t\t\tnode.setAttribute(gantt.config.layer_attribute, true);\n\n\t\ttask_area_renderers[id] = {\n\t\t\trender_item: function (item, container, viewPort) {\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tif (!filter(item)) {\n\t\t\t\t\t\tthis.remove_item(item.id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar view = getView(layer);\n\t\t\t\tvar rendererViewPort = viewPort;\n\t\t\t\tif(!rendererViewPort && view && view.$getConfig().smart_rendering){\n\t\t\t\t\trendererViewPort = view.getViewPort();\n\t\t\t\t}\n\n\t\t\t\tvar dom = null;\n\t\t\t\tif(!isLegacyRender(gantt) && (getRectangle || specializedViewPortChecker) && rendererViewPort){\n\t\t\t\t\tvar isVisible = false;\n\t\t\t\t\tif(specializedViewPortChecker){\n\t\t\t\t\t\tisVisible = specializedViewPortChecker(item, rendererViewPort, view, gantt);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tisVisible = genericViewPortChecker(rendererViewPort, getRectangle(item, view, gantt));\n\t\t\t\t\t}\n\t\t\t\t\tif(isVisible){\n\t\t\t\t\t\tdom = renderMethod.call(gantt, item, view, rendererViewPort);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tdom = renderMethod.call(gantt, item, view, rendererViewPort);\n\t\t\t\t}\n\t\t\t\tthis.append(item, dom, container);\n\t\t\t},\n\n\t\t\tclear: function (container) {\n\n\t\t\t\tthis.rendered = task_area_pulls[id] = {};\n\t\t\t\tif(!layer.append)\n\t\t\t\t\tthis.clear_container(container);\n\t\t\t},\n\t\t\tclear_container: function (container) {\n\t\t\t\tcontainer = container || node;\n\t\t\t\tif (container)\n\t\t\t\t\tcontainer.innerHTML = \"\";\n\t\t\t},\n\t\t\tget_visible_range: function(datastore){\n\t\t\t\tvar view = getView(layer);\n\t\t\t\tvar viewport;\n\t\t\t\tif(view && view.$getConfig().smart_rendering){\n\t\t\t\t\tviewport = view.getViewPort();\n\t\t\t\t}\n\n\t\t\t\tif(!(view && viewport && layer.renderer && layer.renderer.getVisibleRange)){\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: datastore.count()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn layer.renderer.getVisibleRange(gantt, view, datastore, viewport);\n\t\t\t},\n\t\t\trender_items: function (items, container) {\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tvar buffer = document.createDocumentFragment();\n\t\t\t\tthis.clear(container);\n\n\t\t\t\tvar viewPort = null;\n\t\t\t\tvar view = getView(layer);\n\t\t\t\tif(view && view.$getConfig().smart_rendering){\n\t\t\t\t\tviewPort = view.getViewPort();\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, vis = items.length; i < vis; i++) {\n\t\t\t\t\tthis.render_item(items[i], buffer, viewPort);\n\t\t\t\t}\n\n\t\t\t\tcontainer.appendChild(buffer, container);\n\t\t\t},\n\t\t\tupdate_items: function (items, container) {\n\t\t\t\tvar view = getView(layer);\n\t\t\t\tif(!view || !view.$getConfig().smart_rendering || isLegacyRender(gantt)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!this.rendered){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(getRectangle || specializedViewPortChecker)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tvar buffer = document.createDocumentFragment();\n\n\t\t\t\tvar viewPort = null;\n\t\t\t\tif(view){\n\t\t\t\t\tviewPort = view.getViewPort();\n\t\t\t\t}\n\n\t\t\t\tvar nodesToRemove = {};\n\t\t\t\tfor(var i in this.rendered){\n\t\t\t\t\tnodesToRemove[i] = true;\n\t\t\t\t}\n\t\t\t\tfor (var i = 0, vis = items.length; i < vis; i++) {\n\t\t\t\t\tvar item = items[i];\n\t\t\t\t\tvar itemNode = this.rendered[item.id];\n\t\t\t\t\tnodesToRemove[item.id] = false;\n\t\t\t\t\tif (itemNode && itemNode.parentNode) {\n\t\t\t\t\t\tvar isVisible = false;\n\t\t\t\t\t\tif(specializedViewPortChecker){\n\t\t\t\t\t\t\tisVisible = specializedViewPortChecker(item, viewPort, view, gantt);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tisVisible = genericViewPortChecker(viewPort, getRectangle(item, view, gantt));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!isVisible) {\n\t\t\t\t\t\t\tnodesToRemove[item.id] = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif(updateMethod){\n\t\t\t\t\t\t\t\tupdateMethod.call(gantt, item, itemNode, view, viewPort);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.restore(item, buffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.render_item(items[i], buffer, viewPort);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor(var i in nodesToRemove){\n\t\t\t\t\tif(nodesToRemove[i]){\n\t\t\t\t\t\tthis.hide(i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(buffer.childNodes.length){\n\t\t\t\t\tcontainer.appendChild(buffer, container);\n\t\t\t\t}\n\t\t\t},\n\t\t\tappend: function (item, node, container) {\n\t\t\t\tif(!this.rendered){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!node) {\n\t\t\t\t\tif (this.rendered[item.id]) {\n\t\t\t\t\t\tthis.remove_item(item.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n\t\t\t\t\tthis.replace_item(item.id, node);\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t}\n\t\t\t\tthis.rendered[item.id] = node;\n\n\t\t\t},\n\t\t\treplace_item: function (item_id, newNode) {\n\t\t\t\tvar item = this.rendered[item_id];\n\t\t\t\tif (item && item.parentNode) {\n\t\t\t\t\titem.parentNode.replaceChild(newNode, item);\n\t\t\t\t}\n\t\t\t\tthis.rendered[item_id] = newNode;\n\t\t\t},\n\t\t\tremove_item: function (item_id) {\n\t\t\t\tthis.hide(item_id);\n\t\t\t\tdelete this.rendered[item_id];\n\t\t\t},\n\t\t\thide: function (item_id) {\n\t\t\t\tvar item = this.rendered[item_id];\n\t\t\t\tif (item && item.parentNode) {\n\t\t\t\t\titem.parentNode.removeChild(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\trestore: function (item, container) {\n\t\t\t\tvar dom = this.rendered[item.id];\n\t\t\t\tif (dom) {\n\t\t\t\t\tif (!dom.parentNode) {\n\t\t\t\t\t\tthis.append(item, dom, container || node);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.render_item(item, container || node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tchange_id: function (oldid, newid) {\n\t\t\t\tthis.rendered[newid] = this.rendered[oldid];\n\t\t\t\tdelete this.rendered[oldid];\n\t\t\t},\n\t\t\trendered: task_area_pulls[id],\n\t\t\tnode: node,\n\t\t\tdestructor: function () {\n\t\t\t\tthis.clear();\n\t\t\t\tdelete task_area_renderers[id];\n\t\t\t\tdelete task_area_pulls[id];\n\t\t\t}\n\t\t};\n\n\t\treturn task_area_renderers[id];\n\t}\n\n\n\tfunction clearRenderers() {\n\t\tfor (var i in task_area_renderers) {\n\t\t\tgetRenderer(i).destructor();\n\t\t}\n\t}\n\n\treturn {\n\t\tgetRenderer: getRenderer,\n\t\tclearRenderers: clearRenderers\n\t};\n\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\nvar utils = require(\"../../../utils/utils\"),\n\tdomHelpers = require(\"../utils/dom_helpers\"),\n\tisLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar layerFactory = function(gantt){\n\n\tvar renderFactory = renderFactoryProvider(gantt);\n\treturn {\n\tcreateGroup: function (getContainer, relativeRoot, defaultFilters, initLayer) {\n\n\t\tvar renderGroup = {\n\t\t\ttempCollection: [],\n\t\t\trenderers: {},\n\t\t\tcontainer: getContainer,\n\t\t\tfilters: [],\n\t\t\tgetLayers: function () {\n\t\t\t\tthis._add();// add pending layers\n\n\t\t\t\tvar res = [];\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tres.push(this.renderers[i]);\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\tgetLayer: function (id) {\n\t\t\t\treturn this.renderers[id];\n\t\t\t},\n\t\t\t_add: function (layer) {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.id = layer.id || utils.uid();\n\t\t\t\t\tthis.tempCollection.push(layer);\n\t\t\t\t}\n\n\t\t\t\tvar container = this.container();\n\n\t\t\t\tvar pending = this.tempCollection;\n\t\t\t\tfor (var i = 0; i < pending.length; i++) {\n\t\t\t\t\tlayer = pending[i];\n\n\t\t\t\t\tif (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n\n\t\t\t\t\tvar node = layer.container,\n\t\t\t\t\t\tid = layer.id,\n\t\t\t\t\t\ttopmost = layer.topmost;\n\t\t\t\t\tif (!node.parentNode) {\n\t\t\t\t\t\t//insert on top or below the tasks\n\t\t\t\t\t\tif (topmost) {\n\t\t\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar rel = relativeRoot ? relativeRoot() : container.firstChild;\n\t\t\t\t\t\t\tif (rel)\n\t\t\t\t\t\t\t\tcontainer.insertBefore(node, rel);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderers[id] = renderFactory.getRenderer(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlayer,\n\t\t\t\t\t\tnode\n\t\t\t\t\t);\n\n\t\t\t\t\tif (initLayer) {\n\t\t\t\t\t\tinitLayer(layer, gantt);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.tempCollection.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t},\n\t\t\taddLayer: function (config) {\n\t\t\t\tif(config){\n\t\t\t\t\tif(typeof config == \"function\"){\n\t\t\t\t\t\tconfig = {renderer: config};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(config.filter === undefined){\n\t\t\t\t\t\tconfig.filter = mergeFilters(defaultFilters || []);\n\t\t\t\t\t}else if(config.filter instanceof Array){\n\t\t\t\t\t\tconfig.filter.push(defaultFilters);\n\t\t\t\t\t\tconfig.filter = mergeFilters(config.filter);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!config.container){\n\t\t\t\t\t\tconfig.container = document.createElement(\"div\");\n\t\t\t\t\t}\n\t\t\t\t\tvar self = this;\n\t\t\t\t\tconfig.requestUpdate = function(){\n\t\t\t\t\t\tif(gantt.config.smart_rendering && !isLegacyRender(gantt)){\n\t\t\t\t\t\t\tif(self.renderers[config.id]){\n\t\t\t\t\t\t\t\tself.onUpdateRequest(self.renderers[config.id]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tthis._add(config);\n\t\t\t\treturn (config ? config.id : undefined);\n\t\t\t},\n\t\t\tonUpdateRequest: function(layer){\n\n\t\t\t},\n\n\t\t\teachLayer: function(code){\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tcode(this.renderers[i]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tremoveLayer: function (id) {\n\t\t\t\tif(!this.renderers[id])\n\t\t\t\t\treturn;\n\t\t\t\tthis.renderers[id].destructor();\n\t\t\t\tdelete this.renderers[id];\n\t\t\t},\n\t\t\tclear: function () {\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tthis.renderers[i].destructor();\n\t\t\t\t}\n\t\t\t\tthis.renderers = {};\n\t\t\t}//,\n\t\t\t//prepareConfig: prepareConfig\n\t\t};\n\n\t\tgantt.attachEvent(\"onDestroy\", function(){\n\t\t\trenderGroup.clear();\n\t\t\trenderGroup = null;\n\t\t});\n\n\t\treturn renderGroup;\n\t}\n};};\n\n\nfunction mergeFilters(filter_methods){\n\tif(!(filter_methods instanceof Array)){\n\t\tfilter_methods = Array.prototype.slice.call(arguments, 0);\n\t}\n\n\treturn function(obj){\n\t\tvar res = true;\n\t\tfor(var i = 0, len = filter_methods.length; i < len; i++){\n\t\t\tvar filter_method = filter_methods[i];\n\t\t\tif(filter_method){\n\t\t\t\tres = res && (filter_method(obj.id, obj) !== false);\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t};\n}\n\n\nmodule.exports = layerFactory;\n","var createLayerFactory = require(\"./render/layer_engine\");\nfunction initLayer(layer, gantt){\n\tif(!layer.view){\n\t\treturn;\n\t}\n\n\tvar view = layer.view;\n\tif(typeof view === \"string\"){\n\t\tview = gantt.$ui.getView(view);\n\t}\n\n\tif(view && view.attachEvent){\n\t\tview.attachEvent(\"onScroll\", function(){\n\t\t\tif(layer.requestUpdate){\n\t\t\t\tlayer.requestUpdate();\n\t\t\t}\n\t\t});\n\t}\n}\n\nvar createLayerEngine = function(gantt){\n\tvar base_factory = createLayerFactory(gantt);\n\treturn {\n\t\tgetDataRender: function(name){\n\t\t\treturn gantt.$services.getService(\"layer:\" + name) || null;\n\t\t},\n\t\tcreateDataRender: function(config){\n\t\t\tvar name = config.name,\n\t\t\t\tdefaultContainer = config.defaultContainer,\n\t\t\t\tpreviusSiblingContainer = config.defaultContainerSibling;\n\n\t\t\tvar layers = base_factory.createGroup(\n\t\t\t\tdefaultContainer,\n\t\t\t\tpreviusSiblingContainer,\n\t\t\t\tfunction(itemId, item){\n\t\t\t\t\tif(layers.filters){\n\t\t\t\t\t\tfor(var i = 0; i < layers.filters.length; i++){\n\t\t\t\t\t\t\tif(layers.filters[i](itemId, item) === false){\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tinitLayer\n\t\t\t);\n\n\t\t\tgantt.$services.setService(\"layer:\" + name, function(){\n\t\t\t\treturn layers;\n\t\t\t});\n\n\t\t\tgantt.attachEvent(\"onGanttReady\", function () {\n\t\t\t\tlayers.addLayer();// init layers on start\n\t\t\t});\n\n\t\t\treturn layers;\n\t\t},\n\t\tinit: function(){\n\t\t\tvar taskLayers = this.createDataRender({\n\t\t\t\tname: \"task\",\n\t\t\t\tdefaultContainer: function(){\n\t\t\t\t\tif(gantt.$task_data){\n\t\t\t\t\t\treturn gantt.$task_data;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdefaultContainerSibling: function(){\n\t\t\t\t\tif(gantt.$task_links){\n\t\t\t\t\t\treturn gantt.$task_links;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_links;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfilter: function(item){\n\n\t\t\t\t}\n\t\t\t}, gantt);\n\n\t\t\tvar linkLayers = this.createDataRender({\n\t\t\t\tname: \"link\",\n\t\t\t\tdefaultContainer: function(){\n\t\t\t\t\tif(gantt.$task_data){\n\t\t\t\t\t\treturn gantt.$task_data;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, gantt);\n\n\t\t\treturn {\n\t\t\t\taddTaskLayer: function(config){\n\t\t\t\t\tif(typeof config === \"function\"){\n\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\trenderer: config\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconfig.view = \"timeline\";\n\n\t\t\t\t\treturn taskLayers.addLayer(config);\n\t\t\t\t},\n\n\t\t\t\t_getTaskLayers: function(){\n\t\t\t\t\treturn taskLayers.getLayers();\n\t\t\t\t},\n\t\t\t\tremoveTaskLayer: function(id){\n\t\t\t\t\ttaskLayers.removeLayer(id);\n\t\t\t\t},\n\n\t\t\t\t_clearTaskLayers: function(){\n\t\t\t\t\ttaskLayers.clear();\n\t\t\t\t},\n\t\t\t\taddLinkLayer: function(config){\n\t\t\t\t\tif(typeof config === \"function\"){\n\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\trenderer: config\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconfig.view = \"timeline\";\n\t\t\t\t\treturn linkLayers.addLayer(config);\n\t\t\t\t},\n\n\t\t\t\t_getLinkLayers: function(){\n\t\t\t\t\treturn linkLayers.getLayers();\n\t\t\t\t},\n\t\t\t\tremoveLinkLayer: function(id){\n\t\t\t\t\tlinkLayers.removeLayer(id);\n\t\t\t\t},\n\n\t\t\t\t_clearLinkLayers: function(){\n\t\t\t\t\tlinkLayers.clear();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar createMouseHandler = (function(domHelpers) {\n\treturn function (gantt) {\n\t\tvar eventHandlers = {\n\t\t\t\"click\": {},\n\t\t\t\"doubleclick\": {},\n\t\t\t\"contextMenu\": {}\n\t\t};\n\n\t\tfunction addEventTarget(event, className, handler, root) {\n\t\t\tif(!eventHandlers[event][className]){\n\t\t\t\teventHandlers[event][className] = [];\n\t\t\t}\n\n\t\t\teventHandlers[event][className].push({\n\t\t\t\thandler: handler,\n\t\t\t\troot: root\n\t\t\t});\n\t\t}\n\n\t\tfunction callHandler(eventName, className, root, args) {\n\t\t\tvar handlers = eventHandlers[eventName][className];\n\t\t\tif(handlers){\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\t\tif(!(root || handlers[i].root) || handlers[i].root === root){\n\t\t\t\t\t\thandlers[i].handler.apply(this, args);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\te = e || window.event;\n\t\t\tvar id = gantt.locate(e);\n\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.click);\n\t\t\tvar res = true;\n\t\t\tif (id !== null) {\n\t\t\t\tres = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n\t\t\t} else {\n\t\t\t\tgantt.callEvent(\"onEmptyClick\", [e]);\n\t\t\t}\n\n\t\t\tif (res) {\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\n\t\t\t\tif (!default_action)\n\t\t\t\t\treturn;\n\n\t\t\t\t// GS-1025: if we don't do that, the dropdown or date select will be closed for unselected tasks\n\t\t\t\t// GS-1078: or for the built-in select inline editor\n\t\t\t\tswitch(e.target.nodeName) {\n\t\t\t\t\tcase \"SELECT\":\n\t\t\t\t\tcase 'INPUT':\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//allow task selection when the multiselect plugin is not enabled\n\t\t\t\tif (id && gantt.getTask(id) && !gantt._multiselect && gantt.config.select_task) {\n\t\t\t\t\tgantt.selectTask(id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onContextMenu(e) {\n\t\t\te = e || window.event;\n\t\t\tvar src = e.target || e.srcElement,\n\t\t\t\ttaskId = gantt.locate(src),\n\t\t\t\tlinkId = gantt.locate(src, gantt.config.link_attribute);\n\n\t\t\tvar res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\t\t\tif (!res) {\n\t\t\t\tif (e.preventDefault)\n\t\t\t\t\te.preventDefault();\n\t\t\t\telse\n\t\t\t\t\te.returnValue = false;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tfunction findEventHandlers(e, hash){\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar handlers = [];\n\t\t\twhile (trg) {\n\t\t\t\tvar css = domHelpers.getClassName(trg);\n\t\t\t\tif (css) {\n\t\t\t\t\tcss = css.split(\" \");\n\t\t\t\t\tfor (var i = 0; i < css.length; i++) {\n\t\t\t\t\t\tif (!css[i]) continue;\n\t\t\t\t\t\tif (hash[css[i]]) {\n\t\t\t\t\t\t\tvar delegateHandlers = hash[css[i]];\n\n\t\t\t\t\t\t\tfor(var h = 0; h < delegateHandlers.length; h++){\n\t\t\t\t\t\t\t\tif(delegateHandlers[h].root){\n\t\t\t\t\t\t\t\t\tif(!domHelpers.isChildOf(trg, delegateHandlers[h].root)){\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thandlers.push(delegateHandlers[h].handler);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrg = trg.parentNode;\n\t\t\t}\n\t\t\treturn handlers;\n\t\t}\n\n\t\tfunction callEventHandlers(handlers, e, id){\n\t\t\tvar res = true;\n\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tvar handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n\t\t\t\tres = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\n\n\t\tfunction onDoubleClick(e) {\n\t\t\te = e || window.event;\n\t\t\tvar id = gantt.locate(e);\n\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.doubleclick);\n\t\t\t// when doubleclick fired not on task, id === null\n\t\t\tvar res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\t\t\tif (res) {\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\n\t\t\t\tif (!default_action)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (id !== null && gantt.getTask(id)) {\n\t\t\t\t\tif (res && gantt.config.details_on_dblclick && !gantt.isReadonly()) {\n\t\t\t\t\t\tgantt.showLightbox(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\tif (gantt.checkEvent(\"onMouseMove\")) {\n\t\t\t\tvar id = gantt.locate(e);\n\t\t\t\tgantt._last_move_event = e;\n\t\t\t\tgantt.callEvent(\"onMouseMove\", [id, e]);\n\t\t\t}\n\t\t}\n\n\t\tfunction detach(eventName, className, handler, root) {\n\t\t\tif (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n\t\t\t\tvar handlers = eventHandlers[eventName];\n\t\t\t\tvar elementHandlers = handlers[className];\n\t\t\t\tfor(var i = 0; i < elementHandlers.length; i++){\n\t\t\t\t\tif(elementHandlers[i].root == root){\n\t\t\t\t\t\telementHandlers.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!elementHandlers.length){\n\t\t\t\t\tdelete handlers[className];\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tvar domEvents = gantt._createDomEventScope();\n\n\t\tfunction reset(node){\n\n\t\t\tdomEvents.detachAll();\n\n\t\t\tif(node){\n\t\t\t\tdomEvents.attach(node, \"click\", onClick);\n\t\t\t\tdomEvents.attach(node, \"dblclick\", onDoubleClick);\n\t\t\t\tdomEvents.attach(node, \"mousemove\", onMouseMove);\n\t\t\t\tdomEvents.attach(node, \"contextmenu\", onContextMenu);\n\t\t\t}\n\t\t}\n\n\n\n\t\treturn {\n\t\t\treset: reset,\n\t\t\tglobal: function(event, classname, handler){\n\t\t\t\taddEventTarget(event, classname, handler, null);\n\t\t\t},\n\t\t\tdelegate: addEventTarget,\n\t\t\tdetach: detach,\n\t\t\tcallHandler: callHandler,\n\t\t\tonDoubleClick: onDoubleClick,\n\t\t\tonMouseMove: onMouseMove,\n\t\t\tonContextMenu: onContextMenu,\n\t\t\tonClick: onClick,\n\t\t\tdestructor: function(){\n\t\t\t\treset();\n\t\t\t\teventHandlers = null;\n\t\t\t\tdomEvents = null;\n\t\t\t}\n\n\t\t};\n\t};\n\n})(domHelpers);\n\n\nmodule.exports = {\n\tinit:createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction ViewSettings(config){\n\tutils.mixin(this, config, true);\n}\n\n\nfunction extendSettings (store, parentSettings){\n\tvar own = this.$config[store];\n\n\tif(own){\n\t\tif(own instanceof ViewSettings){\n\t\t\treturn own;\n\t\t}else{\n\t\t\tViewSettings.prototype = parentSettings;\n\t\t\tthis.$config[store] = new ViewSettings(own);\n\t\t\treturn this.$config[store];\n\t\t}\n\t}else{\n\t\treturn parentSettings;\n\t}\n}\n\nvar configurable = function(parentView){\n\tvar parentConfig,\n\t\tparentTemplates;\n\n\treturn {\n\t\t$getConfig: function(){\n\t\t\tif(!parentConfig){\n\t\t\t\tparentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n\t\t\t}\n\t\t\tif(!this.$config.config){\n\t\t\t\treturn parentConfig;\n\t\t\t}else{\n\t\t\t\treturn extendSettings.call(this, \"config\", parentConfig);\n\t\t\t}\n\t\t},\n\t\t$getTemplates: function(){\n\t\t\tif(!parentTemplates){\n\t\t\t\tparentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n\t\t\t}\n\t\t\tif(!this.$config.templates){\n\t\t\t\treturn parentTemplates;\n\t\t\t}else{\n\t\t\t\treturn extendSettings.call(this, \"templates\", parentTemplates);\n\t\t\t}\n\t\t}\n\t};\n};\n\nmodule.exports = function(obj, parent){\n\tutils.mixin(obj, configurable(parent));\n};","var utils = require(\"../../utils/utils\"),\n\tconfigurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt){\n\tvar views = {};\n\n\tfunction ui(cell, parentView) {\n\t\tvar content;\n\t\tvar view = \"cell\";\n\t\tif (cell.view){\n\t\t\tview = \"viewcell\";\n\t\t}else if (cell.resizer) {\n\t\t\tview = \"resizer\";\n\t\t}\n\t\telse if (cell.rows || cell.cols) {\n\t\t\tview = \"layout\";\n\t\t}\n\t\telse if (cell.views) {\n\t\t\tview = \"multiview\";\n\t\t}\n\n\t\tcontent = createView.call(this, view, null, cell, parentView);\n\t\treturn content;\n\t}\n\t\n\tvar createdViews = {};\n\n\tfunction createView(name, parent, config, parentView) {\n\t\tvar creator = views[name];\n\n\t\tif(!creator || !creator.create)\n\t\t\treturn false;\n\n\t\tif(name == \"resizer\" && !config.mode){\n\t\t\tif(parentView.$config.cols){\n\t\t\t\tconfig.mode = \"x\";\n\t\t\t}else{\n\t\t\t\tconfig.mode = \"y\";\n\t\t\t}\n\t\t}\n\n\t\tif(name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll){\n\t\t\tif(parentView.$config.cols){\n\t\t\t\tconfig.scroll = \"y\";\n\t\t\t}else{\n\t\t\t\tconfig.scroll = \"x\";\n\t\t\t}\n\t\t}\n\n\t\tvar config = utils.copy(config);\n\n\t\tif(!config.id && !createdViews[config.view]){\n\t\t\tconfig.id = config.view;\n\t\t}\n\n\t\tif(config.id && !config.css){\n\t\t\tconfig.css = config.id+\"_cell\";\n\t\t}\n\n\t\tvar view = new creator.create(parent, config, this, gantt);\n\n\t\tif(creator.configure){\n\t\t\tcreator.configure(view);\n\t\t}\n\n\t\tconfigurable(view, parentView);\n\t\tif(!view.$id){\n\t\t\tview.$id = config.id || gantt.uid();\n\t\t}\n\n\t\tif(!view.$parent && typeof parent == \"object\"){\n\t\t\tview.$parent = parent;\n\t\t}\n\t\tif(!view.$config){\n\t\t\tview.$config = config;\n\t\t}\n\n\t\tif(createdViews[view.$id]){\n\t\t\tview.$id = gantt.uid();\n\t\t}\n\n\t\tcreatedViews[view.$id] = view;\n\n\t\treturn view;\n\t}\n\n\tfunction reset(){\n\t\tcreatedViews = {};\n\t}\n\n\tfunction register(name, viewConstructor, configure){\n\t\tviews[name] = {create: viewConstructor, configure: configure};\n\t}\n\n\tfunction getView(id){\n\t\treturn createdViews[id];\n\t}\n\n\tvar base_factory = {\n\t\tinitUI:ui,\n\t\treset: reset,\n\t\tregisterView: register,\n\t\tcreateView: createView,\n\t\tgetView: getView\n\t};\n\n\treturn base_factory;\n};\n\nmodule.exports = {\n\tcreateFactory: uiFactory\n};\n\n","var uiFactory = require(\"./ui_factory\"),\n\tmouseEvents = require(\"./mouse\"),\n\tcreateLayers = require(\"./gantt_layers\"),\n\tCell = require(\"./layout/cell\"),\n\tLayout = require(\"./layout/layout\"),\n\tViewLayout = require(\"./layout/view_layout\"),\n\tViewCell = require(\"./layout/view_cell\"),\n\tResizer = require(\"./layout/resizer_cell\"),\n\tScrollbar = require(\"./layout/scrollbar_cell\"),\n\tTimeline = require(\"./timeline/timeline\"),\n\tGrid = require(\"./grid/grid\"),\n\tResourceGrid = require(\"./grid/resource_grid\"),\n\tResourceTimeline = require(\"./timeline/resource_timeline\"),\n\tResourceHistogram = require(\"./timeline/resource_histogram\");\n\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\n\nvar renderTaskBar = require(\"./render/task_bar_smart_render\"),\n\trenderSplitTaskBar = require(\"./render/task_split_render\"),\n\trenderTaskBg = require(\"./render/task_bg_render\"),\n\trenderLink = require(\"./render/link_render\"),\n\tgridRenderer = require(\"./render/task_grid_line_render\"),\n\tresourceMatrixRenderer = require(\"./render/resource_matrix_render\"),\n\tresourceHistogramRenderer = require(\"./render/resource_histogram_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt){\n\tfunction attachInitializer(view, initializer){\n\t\tvar ext = initializer(gantt);\n\t\tif(ext.onCreated)\n\t\t\text.onCreated(view);\n\t\tview.attachEvent(\"onReady\", function(){\n\t\t\tif(ext.onInitialized)\n\t\t\t\text.onInitialized(view);\n\t\t});\n\t\tview.attachEvent(\"onDestroy\", function(){\n\t\t\tif(ext.onDestroyed)\n\t\t\t\text.onDestroyed(view);\n\t\t});\n\t}\n\n\tvar base_factory = uiFactory.createFactory(gantt);\n\tfactory.registerView(\"cell\", Cell);\n\tfactory.registerView(\"resizer\", Resizer);\n\tfactory.registerView(\"scrollbar\", Scrollbar);\n\tfactory.registerView(\"layout\", Layout, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"main\"){\n\t\t\tattachInitializer(view, mainLayoutInitializer);\n\t\t}\n\t});\n\tfactory.registerView(\"viewcell\", ViewCell);\n\tfactory.registerView(\"multiview\", ViewLayout);\n\tfactory.registerView(\"timeline\", Timeline, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"timeline\" || view.$config.bind == \"task\"){\n\t\t\tattachInitializer(view, mainTimelineInitializer);\n\t\t}\n\t});\n\tfactory.registerView(\"grid\", Grid, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"grid\" || view.$config.bind == \"task\"){\n\t\t\tattachInitializer(view, mainGridInitializer);\n\t\t}\n\t});\n\n\tfactory.registerView(\"resourceGrid\", ResourceGrid);\n\tfactory.registerView(\"resourceTimeline\", ResourceTimeline);\n\tfactory.registerView(\"resourceHistogram\", ResourceHistogram);\n\n\tvar layersEngine = createLayers(gantt);\n\n\tvar inlineEditors = gridEditorsFactory(gantt);\n\n\tgantt.ext.inlineEditors = inlineEditors;\n\tgantt.ext._inlineEditors = inlineEditors;\n\tinlineEditors.init(gantt);\n\n\treturn {\n\t\tfactory:base_factory,\n\t\tmouseEvents: mouseEvents.init(gantt),\n\t\tlayersApi: layersEngine.init(),\n\t\trender:{\n\t\t\tgridLine: function(){\n\t\t\t\treturn gridRenderer(gantt);\n\t\t\t},\n\t\t\ttaskBg: function(){\n\t\t\t\treturn renderTaskBg(gantt);\n\t\t\t},\n\t\t\ttaskBar: function(){\n\t\t\t\treturn renderTaskBar(gantt);\n\t\t\t},\n\t\t\ttaskSplitBar: function(){\n\t\t\t\treturn renderSplitTaskBar(gantt);\n\t\t\t},\n\t\t\tlink: function(){\n\t\t\t\treturn renderLink(gantt);\n\t\t\t},\n\t\t\tresourceRow: function(){\n\t\t\t\treturn resourceMatrixRenderer(gantt);\n\t\t\t},\n\t\t\tresourceHistogram: function(){\n\t\t\t\treturn resourceHistogramRenderer(gantt);\n\t\t\t}\n\t\t},\n\t\tlayersService: {\n\t\t\tgetDataRender: function(name){\n\t\t\t\treturn layersEngine.getDataRender(name, gantt);\n\t\t\t},\n\t\t\tcreateDataRender: function(config){\n\t\t\t\treturn layersEngine.createDataRender(config, gantt);\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = {\n\tinit: initUI\n};","var utils = require(\"../../utils/utils\");\nvar domHelpers = require(\"./utils/dom_helpers\");\n\nmodule.exports = function(gantt) {\n\n\tvar boxAttribute = \"data-dhxbox\";\n\n\tvar _dhx_msg_cfg = null;\n\n\tfunction callback(config, result) {\n\t\tvar usercall = config.callback;\n\t\tmodalBox.hide(config.box);\n\n\t\t_dhx_msg_cfg = config.box = null;\n\t\tif (usercall)\n\t\t\tusercall(result);\n\t}\n\n\tfunction modal_key(event) {\n\t\tif (_dhx_msg_cfg) {\n\n\t\t\tvar code = event.which || event.keyCode;\n\t\t\tvar preventDefault = false;\n\n\t\t\tif (messageBox.keyboard) {\n\t\t\t\tif (code == 13 || code == 32) {\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\n\t\t\t\t\tvar target = event.target || event.srcElement;\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\n\t\t\t\t\t\tpreventDefault = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (code == 27) {\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\n\t\t\t\t\tpreventDefault = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (preventDefault) {\n\t\t\t\tif (event.preventDefault){\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\treturn !(event.cancelBubble = true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tgantt.event(document, \"keydown\", modal_key, true);\n\n\tfunction modality(mode) {\n\t\tif (!modality.cover) {\n\t\t\tmodality.cover = document.createElement(\"div\");\n\t\t\t//necessary for IE only\n\t\t\tmodality.cover.onkeydown = modal_key;\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\n\t\t\tdocument.body.appendChild(modality.cover);\n\t\t}\n\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\n\t}\n\n\tfunction button(text, className, result) {\n\t\tvar buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\t\tvar name = className.toLowerCase().replace(/ /g, \"_\");\n\t\tvar button_css = \"gantt_\" + name + \"_button\" + \" dhtmlx_\" + name + \"_button\"; // dhtmlx_ok_button, dhtmlx_click_me_button\n\t\treturn \"<div \" + buttonAriaAttrs + \" class='gantt_popup_button dhtmlx_popup_button \" + button_css + \"' data-result='\" + result + \"' result='\" + result + \"' ><div>\" + text + \"</div></div>\";\n\t}\n\n\tfunction info(text) {\n\t\tif (!messageBox.area) {\n\t\t\tmessageBox.area = document.createElement(\"div\");\n\t\t\tmessageBox.area.className = \"gantt_message_area dhtmlx_message_area\";\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\n\t\t\tdocument.body.appendChild(messageBox.area);\n\t\t}\n\n\t\tmessageBox.hide(text.id);\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.innerHTML = \"<div>\" + text.text + \"</div>\";\n\t\tmessage.className = \"gantt-info dhtmlx-info gantt-\" + text.type + \" dhtmlx-\" + text.type;\n\t\tmessage.onclick = function () {\n\t\t\tmessageBox.hide(text.id);\n\t\t\ttext = null;\n\t\t};\n\n\t\tgantt._waiAria.messageInfoAttr(message);\n\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\n\t\telse\n\t\t\tmessageBox.area.appendChild(message);\n\n\t\tif (text.expire > 0)\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\n\t\t\t\tmessageBox.hide(text.id);\n\t\t\t}, text.expire);\n\n\t\tmessageBox.pull[text.id] = message;\n\t\tmessage = null;\n\n\t\treturn text.id;\n\t}\n\n\tfunction getFirstDefined() {\n\t\tvar values = [].slice.apply(arguments, [0]);\n\n\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\tif (values[i]) {\n\t\t\t\treturn values[i];\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction _boxStructure(config, ok, cancel) {\n\t\tvar box = document.createElement(\"div\");\n\n\t\tvar contentId = utils.uid();\n\t\tgantt._waiAria.messageModalAttr(box, contentId);\n\n\n\t\tbox.className = \" gantt_modal_box dhtmlx_modal_box gantt-\" + config.type + \" dhtmlx-\" + config.type;\n\t\tbox.setAttribute(boxAttribute, 1);\n\n\t\tvar inner = '';\n\n\t\tif (config.width)\n\t\t\tbox.style.width = config.width;\n\t\tif (config.height)\n\t\t\tbox.style.height = config.height;\n\t\tif (config.title)\n\t\t\tinner += '<div class=\"gantt_popup_title dhtmlx_popup_title\">' + config.title + '</div>';\n\t\tinner += '<div class=\"gantt_popup_text dhtmlx_popup_text\" id=\"' + contentId + '\"><span>' + (config.content ? '' : config.text) + '</span></div><div class=\"gantt_popup_controls dhtmlx_popup_controls\">';\n\t\tif (ok)\n\t\t\tinner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n\t\tif (cancel)\n\t\t\tinner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n\t\tif (config.buttons) {\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\n\t\t\t\tvar btn = config.buttons[i];\n\t\t\t\tif (typeof btn == \"object\") {\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n\t\t\t\t\tvar label = btn.label;\n\t\t\t\t\tvar css = btn.css || (\"gantt_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\n\t\t\t\t\tvar value = btn.value || i;\n\t\t\t\t\tinner += button(label, css, value);\n\t\t\t\t} else {\n\t\t\t\t\tinner += button(btn, btn, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinner += '</div>';\n\t\tbox.innerHTML = inner;\n\n\t\tif (config.content) {\n\t\t\tvar node = config.content;\n\t\t\tif (typeof node == \"string\")\n\t\t\t\tnode = document.getElementById(node);\n\t\t\tif (node.style.display == 'none')\n\t\t\t\tnode.style.display = \"\";\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\n\t\t}\n\n\t\tbox.onclick = function (event) {\n\t\t\tvar source = event.target || event.srcElement;\n\t\t\tif (!source.className) source = source.parentNode;\n\t\t\tif (domHelpers.closest(source, \".gantt_popup_button\")) {\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\n\t\t\t\tcallback(config, result);\n\t\t\t}\n\t\t};\n\t\tconfig.box = box;\n\t\tif (ok || cancel)\n\t\t\t_dhx_msg_cfg = config;\n\n\t\treturn box;\n\t}\n\n\tfunction _createBox(config, ok, cancel) {\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\n\n\t\tif (!config.hidden)\n\t\t\tmodality(true);\n\t\tdocument.body.appendChild(box);\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n\t\tif (config.position == \"top\")\n\t\t\tbox.style.top = \"-3px\";\n\t\telse\n\t\t\tbox.style.top = y + 'px';\n\t\tbox.style.left = x + 'px';\n\t\t//necessary for IE only\n\t\tbox.onkeydown = modal_key;\n\n\t\tmodalBox.focus(box);\n\n\t\tif (config.hidden)\n\t\t\tmodalBox.hide(box);\n\n\t\tgantt.callEvent(\"onMessagePopup\", [box]);\n\t\treturn box;\n\t}\n\n\tfunction alertPopup(config) {\n\t\treturn _createBox(config, true, false);\n\t}\n\n\tfunction confirmPopup(config) {\n\t\treturn _createBox(config, true, true);\n\t}\n\n\tfunction boxPopup(config) {\n\t\treturn _createBox(config);\n\t}\n\n\tfunction box_params(text, type, callback) {\n\t\tif (typeof text != \"object\") {\n\t\t\tif (typeof type == \"function\") {\n\t\t\t\tcallback = type;\n\t\t\t\ttype = \"\";\n\t\t\t}\n\t\t\ttext = {text: text, type: type, callback: callback};\n\t\t}\n\t\treturn text;\n\t}\n\n\tfunction params(text, type, expire, id) {\n\t\tif (typeof text != \"object\")\n\t\t\ttext = {text: text, type: type, expire: expire, id: id};\n\t\ttext.id = text.id || utils.uid();\n\t\ttext.expire = text.expire || messageBox.expire;\n\t\treturn text;\n\t}\n\n\tvar alertBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"confirm\";\n\t\treturn alertPopup(text);\n\t};\n\tvar confirmBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn confirmPopup(text);\n\t};\n\tvar modalBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn boxPopup(text);\n\t};\n\tmodalBox.hide = function (node) {\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\n\t\t\tnode = node.parentNode;\n\t\tif (node) {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t\tmodality(false);\n\n\t\t\tgantt.callEvent(\"onAfterMessagePopup\", [node]);\n\t\t}\n\t};\n\n\tmodalBox.focus = function (node) {\n\t\tsetTimeout(function () {\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\n\t\t\tif (focusable.length) {\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\n\t\t\t}\n\t\t}, 1);\n\t};\n\n\tvar messageBox = function (text, type, expire, id) {\n\t\ttext = params.apply(this, arguments);\n\t\ttext.type = text.type || \"info\";\n\n\t\tvar subtype = text.type.split(\"-\")[0];\n\t\tswitch (subtype) {\n\t\t\tcase \"alert\":\n\t\t\t\treturn alertPopup(text);\n\t\t\tcase \"confirm\":\n\t\t\t\treturn confirmPopup(text);\n\t\t\tcase \"modalbox\":\n\t\t\t\treturn boxPopup(text);\n\t\t\tdefault:\n\t\t\t\treturn info(text);\n\t\t}\n\t};\n\n\tmessageBox.seed = (new Date()).valueOf();\n\tmessageBox.uid = utils.uid;\n\tmessageBox.expire = 4000;\n\tmessageBox.keyboard = true;\n\tmessageBox.position = \"top\";\n\tmessageBox.pull = {};\n\tmessageBox.timers = {};\n\n\tmessageBox.hideAll = function () {\n\t\tfor (var key in messageBox.pull)\n\t\t\tmessageBox.hide(key);\n\t};\n\tmessageBox.hide = function (id) {\n\t\tvar obj = messageBox.pull[id];\n\t\tif (obj && obj.parentNode) {\n\t\t\twindow.setTimeout(function () {\n\t\t\t\tobj.parentNode.removeChild(obj);\n\t\t\t\tobj = null;\n\t\t\t}, 2000);\n\t\t\tobj.className += \" hidden\";\n\n\t\t\tif (messageBox.timers[id])\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\n\t\t\tdelete messageBox.pull[id];\n\t\t}\n\t};\n\n\tvar popups = [];\n\tgantt.attachEvent(\"onMessagePopup\", function(box){\n\t\tpopups.push(box);\n\t});\n\tgantt.attachEvent(\"onAfterMessagePopup\", function(box){\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i] === box){\n\t\t\t\tpopups.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t});\n\n\tgantt.attachEvent(\"onDestroy\", function(){\n\t\tif(modality.cover && modality.cover.parentNode){\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\n\t\t}\n\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i].parentNode){\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\n\t\t\t}\n\t\t}\n\t\tpopups = null;\n\n\t\tif(messageBox.area && messageBox.area.parentNode){\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\n\t\t}\n\t\tmessageBox = null;\n\t});\n\n\treturn {\n\t\talert: alertBox,\n\t\tconfirm: confirmBox,\n\t\tmessage: messageBox,\n\t\tmodalbox: modalBox\n\t};\n};","module.exports = function(gantt) {\n\tvar utils = require(\"../utils/utils\");\n\tvar env = require(\"../utils/env\");\n\tvar isHeadless = require(\"../utils/is_headless\");\n\n\tif(!env.isNode){\n\t\tvar domHelpers = require(\"./ui/utils/dom_helpers\");\n\n\t\tvar codeHelpers = require(\"../utils/helpers\");\n\t\tgantt.utils = {\n\t\t\tarrayFind: codeHelpers.arrayFind,\n\t\t\tdom: {\n\t\t\t\tgetNodePosition: domHelpers.getNodePosition,\n\t\t\t\tgetRelativeEventPosition: domHelpers.getRelativeEventPosition,\n\t\t\t\tisChildOf: domHelpers.isChildOf,\n\t\t\t\thasClass: domHelpers.hasClass,\n\t\t\t\tclosest: domHelpers.closest\n\t\t\t}\n\t\t};\n\n\t\tvar domEvents = require(\"./ui/utils/dom_event_scope\")();\n\t\tgantt.event = domEvents.attach;\n\t\tgantt.eventRemove = domEvents.detach;\n\t\tgantt._eventRemoveAll = domEvents.detachAll;\n\t\tgantt._createDomEventScope = domEvents.extend;\n\n\t\tutils.mixin(gantt, require(\"./ui/message\")(gantt));\n\t\tvar uiApi = require(\"./ui/index\").init(gantt);\n\t\tgantt.$ui = uiApi.base_factory;\n\t\tgantt.$ui.layers = uiApi.render;\n\t\tgantt.$mouseEvents = uiApi.mouseEvents;\n\t\tgantt.$services.setService(\"mouseEvents\", function () {\n\t\t\treturn gantt.$mouseEvents;\n\t\t});\n\t\tgantt.mixin(gantt, uiApi.layersApi);\n\n\t\trequire(\"./data_task_layers\")(gantt);\n\n\t\tgantt.$services.setService(\"layers\", function () {\n\t\t\treturn uiApi.layersService;\n\t\t});\n\n\t\tvar createLayoutFacade = require(\"./facades/layout\");\n\t\tgantt.mixin(gantt, createLayoutFacade());\n\t\trequire(\"./ui/skin\")(gantt);\n\t\trequire(\"../css/skins/skyblue\")(gantt);\n\t\trequire(\"../css/skins/meadow\")(gantt);\n\t\trequire(\"../css/skins/terrace\")(gantt);\n\t\trequire(\"../css/skins/broadway\")(gantt);\n\t\trequire(\"../css/skins/material\")(gantt);\n\t\trequire(\"../css/skins/contrast_black\")(gantt);\n\t\trequire(\"../css/skins/contrast_white\")(gantt);\n\t\trequire(\"./ui/plugins\")(gantt);\n\t\trequire(\"./ui/touch\")(gantt);\n\t\trequire(\"./ui/lightbox\")(gantt);\n\t\trequire(\"./ui/lightbox/lightbox_optional_time\")(gantt);\n\t\trequire(\"./ui/wai_aria\")(gantt);\n\n\t\tgantt.locate = function(e) {\n\t\t\tvar trg = domHelpers.getTargetNode(e);\n\n\t\t\t// ignore empty rows/cells of the timeline\n\t\t\tif(domHelpers.closest(trg, \".gantt_task_row\")){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar targetAttribute = arguments[1] || this.config.task_attribute;\n\n\t\t\tvar node = domHelpers.locateAttribute(trg, targetAttribute);\n\t\t\tif(node){\n\t\t\t\treturn node.getAttribute(targetAttribute);\n\t\t\t}else{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tgantt._locate_css = function(e, classname, strict){\n\t\t\treturn domHelpers.locateClassName(e, classname, strict);\n\t\t};\n\n\t\tgantt._locateHTML = function(e, attribute) {\n\t\t\treturn domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n\t\t};\n\t}\n\n\tgantt.attachEvent(\"onParse\", function(){\n\t\tif(!isHeadless(gantt)){\n\t\t\tgantt.attachEvent(\"onGanttRender\", function(){\n\t\t\t\tif(gantt.config.initial_scroll){\n\t\t\t\t\tvar firstTask = gantt.getTaskByIndex(0);\n\t\t\t\t\tvar id = firstTask ? firstTask.id : gantt.config.root_id;\n\t\t\t\t\tif(gantt.isTaskExists(id))\n\t\t\t\t\tgantt.showTask(id);\n\t\t\t\t}\n\t\t\t}, {once: true});\n\t\t}\n\n\t});\n\n\tgantt.attachEvent(\"onBeforeGanttReady\", function(){\n\t\tif (!this.config.scroll_size)\n\t\t\tthis.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n\t\tif(!isHeadless(gantt)){\n\t\t\t// detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\n\t\t\tthis._eventRemoveAll();\n\t\t\tthis.$mouseEvents.reset();\n\n\t\t\tthis.resetLightbox();\n\t\t}\n\n\t});\n};","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Нове завдання\",\n\t\ticon_save: \"Зберегти\",\n\t\ticon_cancel: \"Відміна\",\n\t\ticon_details: \"Деталі\",\n\t\ticon_edit: \"Редагувати\",\n\t\ticon_delete: \"Вилучити\",\n\t\tconfirm_closing: \"\", // Ваші зміни втратяться. Ви впевнені ?\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\n\t\tsection_description: \"Опис\",\n\t\tsection_time: \"Часовий проміжок\",\n\t\tsection_type: \"Тип\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Відміна\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n * updated by @levkar at https://github.com/DHTMLX/gantt/pull/10\n */\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n\t\tmonth_short: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\n\t\tday_full: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\n\t\tday_short: [\"Paz\", \"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Yeni görev\",\n\t\ticon_save: \"Kaydet\",\n\t\ticon_cancel: \"İptal\",\n\t\ticon_details: \"Detaylar\",\n\t\ticon_edit: \"Düzenle\",\n\t\ticon_delete: \"Sil\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Görev silinecek, emin misiniz?\",\n\t\tsection_description: \"Açıklama\",\n\t\tsection_time: \"Zaman Aralığı\",\n\t\tsection_type: \"Tip\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Görev Adı\",\n\t\tcolumn_start_date: \"Başlangıç\",\n\t\tcolumn_duration: \"Süre\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Bağlantı\",\n\t\tconfirm_link_deleting: \"silinecek\",\n\t\tlink_start: \" (başlangıç)\",\n\t\tlink_end: \" (bitiş)\",\n\n\t\ttype_task: \"Görev\",\n\t\ttype_project: \"Proje\",\n\t\ttype_milestone: \"Kilometretaşı\",\n\n\n\t\tminutes: \"Dakika\",\n\t\thours: \"Saat\",\n\t\tdays: \"Gün\",\n\t\tweeks: \"Hafta\",\n\t\tmonths: \"Ay\",\n\t\tyears: \"Yıl\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Ýptal\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n\tTranslation by Peter Eriksson\n */\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Ny uppgift\",\n\t\ticon_save: \"Spara\",\n\t\ticon_cancel: \"Avbryt\",\n\t\ticon_details: \"Detajer\",\n\t\ticon_edit: \"Ändra\",\n\t\ticon_delete: \"Ta bort\",\n\t\tconfirm_closing: \"\",\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\n\t\tsection_description: \"Beskrivning\",\n\t\tsection_time: \"Tid\",\n\t\tsection_type: \"Typ\",\n\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Uppgiftsnamn\",\n\t\tcolumn_start_date: \"Starttid\",\n\t\tcolumn_duration: \"Varaktighet\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\n\t\tlink: \"Länk\",\n\t\tconfirm_link_deleting: \"kommer tas bort\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (slut)\",\n\t\ttype_task: \"Uppgift\",\n\t\ttype_project: \"Projekt\",\n\t\ttype_milestone: \"Milstolpe\",\n\n\t\tminutes: \"Minuter\",\n\t\thours: \"Timmar\",\n\t\tdays: \"Dagar\",\n\t\tweeks: \"Veckor\",\n\t\tmonths: \"Månader\",\n\t\tyears: \"År\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Avbryt\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nová úloha\",\n\t\ticon_save: \"Uložiť\",\n\t\ticon_cancel: \"Späť\",\n\t\ticon_details: \"Detail\",\n\t\ticon_edit: \"Edituj\",\n\t\ticon_delete: \"Zmazať\",\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", // Vaše změny budou ztraceny, opravdu ?\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\n\t\tsection_description: \"Poznámky\",\n\t\tsection_time: \"Doba platnosti\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Späť\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nova naloga\",\n\t\ticon_save: \"Shrani\",\n\t\ticon_cancel: \"Prekliči\",\n\t\ticon_details: \"Podrobnosti\",\n\t\ticon_edit: \"Uredi\",\n\t\ticon_delete: \"Izbriši\",\n\t\tconfirm_closing: \"\", // Spremembe ne bodo shranjene. Želite nadaljevati ?\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\n\t\tsection_description: \"Opis\",\n\t\tsection_time: \"Časovni okvir\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Prekliči\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n\t\tday_full: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Новое задание\",\n\t\ticon_save: \"Сохранить\",\n\t\ticon_cancel: \"Отменить\",\n\t\ticon_details: \"Детали\",\n\t\ticon_edit: \"Изменить\",\n\t\ticon_delete: \"Удалить\",\n\t\tconfirm_closing: \"\", // Ваши изменения будут потеряны, продолжить?\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\n\t\tsection_description: \"Описание\",\n\t\tsection_time: \"Период времени\",\n\t\tsection_type: \"Тип\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"ИСР\",\n\t\tcolumn_text: \"Задача\",\n\t\tcolumn_start_date: \"Начало\",\n\t\tcolumn_duration: \"Длительность\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Связь\",\n\t\tconfirm_link_deleting: \"будет удалена\",\n\t\tlink_start: \" (начало)\",\n\t\tlink_end: \" (конец)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Минута\",\n\t\thours: \"Час\",\n\t\tdays: \"День\",\n\t\tweeks: \"Неделя\",\n\t\tmonths: \"Месяц\",\n\t\tyears: \"Год\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Отменить\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"начните вводить слово для фильтрации\",\n\t\tresources_filter_label: \"спрятать не установленные\"\n\t}\n};\n\nexport default locale;","/*\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\n\t\tmonth_short: [\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\n\t\tday_short: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Sarcina noua\",\n\t\ticon_save: \"Salveaza\",\n\t\ticon_cancel: \"Anuleaza\",\n\t\ticon_details: \"Detalii\",\n\t\ticon_edit: \"Editeaza\",\n\t\ticon_delete: \"Sterge\",\n\t\tconfirm_closing: \"Schimbarile nu vor fi salvate, esti sigur?\",// Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Evenimentul va fi sters permanent, esti sigur?\",\n\t\tsection_description: \"Descriere\",\n\t\tsection_time: \"Interval\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Anuleaza\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\n\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\n\n www.atrixian.com.br\n\n\n Updated by Jorge Albernaz Martins\n\n jorgefox@hotmail.com\n\n www.redfox.inf.br\n\n JorgeFox\n\n*/\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nova tarefa\",\n\t\ticon_save: \"Salvar\",\n\t\ticon_cancel: \"Cancelar\",\n\t\ticon_details: \"Detalhes\",\n\t\ticon_edit: \"Editar\",\n\t\ticon_delete: \"Excluir\",\n\t\tconfirm_closing: \"\",// Suas alterações serão perdidas, confirme?\n\t\tconfirm_deleting: \"As tarefas serão excluidas permanentemente, confirme?\",\n\t\tsection_description: \"Descrição\",\n\t\tsection_time: \"Período\",\n\t\tsection_type: \"Tipo\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"EAP\",\n\t\tcolumn_text: \"Nome tarefa\",\n\t\tcolumn_start_date: \"Data início\",\n\t\tcolumn_duration: \"Duração\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"Será excluído!\",\n\t\tlink_start: \" (início)\",\n\t\tlink_end: \" (fim)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Projeto\",\n\t\ttype_milestone: \"Marco\",\n\n\n\t\tminutes: \"Minutos\",\n\t\thours: \"Horas\",\n\t\tdays: \"Dias\",\n\t\tweeks: \"Semanas\",\n\t\tmonths: \"Meses\",\n\t\tyears: \"Anos\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancelar\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Restrição\",\n\t\tconstraint_type: \"Tipo Restrição\",\n\t\tconstraint_date: \"Data restrição\",\n\t\tasap: \"Mais breve possível\",\n\t\talap: \"Mais tarde possível\",\n\t\tsnet: \"Não começar antes de\",\n\t\tsnlt: \"Não começar depois de\",\n\t\tfnet: \"Não terminar antes de\",\n\t\tfnlt: \"Não terminar depois de\",\n\t\tmso: \"Precisa começar em\",\n\t\tmfo: \"Precisa terminar em\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"Tipo de filtros\",\n\t\tresources_filter_label: \"Ocultar vazios\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nowe zadanie\",\n\t\ticon_save: \"Zapisz\",\n\t\ticon_cancel: \"Anuluj\",\n\t\ticon_details: \"Szczegóły\",\n\t\ticon_edit: \"Edytuj\",\n\t\ticon_delete: \"Usuń\",\n\t\tconfirm_closing: \"\", // Zmiany zostaną usunięte, jesteś pewien?\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\n\t\tsection_description: \"Opis\",\n\t\tsection_time: \"Okres czasu\",\n\t\tsection_type: \"Typ\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Nazwa zadania\",\n\t\tcolumn_start_date: \"Początek\",\n\t\tcolumn_duration: \"Czas trwania\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"zostanie usunięty\",\n\t\tlink_start: \" (początek)\",\n\t\tlink_end: \" (koniec)\",\n\n\t\ttype_task: \"Zadanie\",\n\t\ttype_project: \"Projekt\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minuty\",\n\t\thours: \"Godziny\",\n\t\tdays: \"Dni\",\n\t\tweeks: \"Tydzień\",\n\t\tmonths: \"Miesiące\",\n\t\tyears: \"Lata\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Anuluj\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Ny oppgave\",\n\t\ticon_save: \"Lagre\",\n\t\ticon_cancel: \"Avbryt\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Endre\",\n\t\ticon_delete: \"Slett\",\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", // Endringer blir ikke lagret, er du sikker?\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\n\t\tsection_description: \"Beskrivelse\",\n\t\tsection_time: \"Tidsperiode\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Avbryt\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nieuwe taak\",\n\t\ticon_save: \"Opslaan\",\n\t\ticon_cancel: \"Annuleren\",\n\t\ticon_details: \"Details\",\n\t\ticon_edit: \"Bewerken\",\n\t\ticon_delete: \"Verwijderen\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\n\t\tsection_description: \"Beschrijving\",\n\t\tsection_time: \"Tijd periode\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Taak omschrijving\",\n\t\tcolumn_start_date: \"Startdatum\",\n\t\tcolumn_duration: \"Duur\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Koppeling\",\n\t\tconfirm_link_deleting: \"zal worden verwijderd\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (eind)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"minuten\",\n\t\thours: \"uren\",\n\t\tdays: \"dagen\",\n\t\tweeks: \"weken\",\n\t\tmonths: \"maanden\",\n\t\tyears: \"jaren\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Annuleren\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Ny oppgave\",\n\t\ticon_save: \"Lagre\",\n\t\ticon_cancel: \"Avbryt\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Rediger\",\n\t\ticon_delete: \"Slett\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\n\t\tsection_description: \"Beskrivelse\",\n\t\tsection_time: \"Tidsperiode\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Avbryt\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","export default class LocaleManager{\n\tprivate _locales:{[key:string]: IGanttLocale };\n\n\tconstructor(config: {[key:string]: IGanttLocale }){\n\t\tthis._locales = {};\n\t\tfor(const i in config){\n\t\t\tthis._locales[i] = config[i];\n\t\t}\n\t}\n\n\taddLocale = (name: string, locale: IGanttLocale) => {\n\t\tthis._locales[name] = locale;\n\t}\n\n\tgetLocale = (name: string): IGanttLocale => {\n\t\treturn this._locales[name];\n\t}\n}","/*\n\tTranslated by cjkim@dbvalley.com\n*/\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tmonth_short: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tday_full: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n\t\tday_short: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"이름없는 작업\",\n\t\ticon_save: \"저장\",\n\t\ticon_cancel: \"취소\",\n\t\ticon_details: \"세부 사항\",\n\t\ticon_edit: \"수정\",\n\t\ticon_delete: \"삭제\",\n\t\tconfirm_closing: \"\",\n\t\tconfirm_deleting: \"작업을 삭제하시겠습니까?\",\n\t\tsection_description: \"설명\",\n\t\tsection_time: \"기간\",\n\t\tsection_type: \"Type\",\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"작업명\",\n\t\tcolumn_start_date: \"시작일\",\n\t\tcolumn_duration: \"기간\",\n\t\tcolumn_add: \"\",\n\t\tlink: \"전제\",\n\t\tconfirm_link_deleting: \"삭제 하시겠습니까?\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\t\ttype_task: \"작업\",\n\t\ttype_project: \"프로젝트\",\n\t\ttype_milestone: \"마일스톤\",\n\t\tminutes: \"분\",\n\t\thours: \"시간\",\n\t\tdays: \"일\",\n\t\tweeks: \"주\",\n\t\tmonths: \"달\",\n\t\tyears: \"년\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"취소\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n Translation by Genexus Japan Inc.\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"新しい仕事\",\n\t\ticon_save: \"保存\",\n\t\ticon_cancel: \"キャンセル\",\n\t\ticon_details: \"詳細\",\n\t\ticon_edit: \"編集\",\n\t\ticon_delete: \"削除\",\n\t\tconfirm_closing: \"\", // 変更が取り消されます、宜しいですか?\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\n\t\tsection_description: \"デスクリプション\",\n\t\tsection_time: \"期間\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"キャンセル\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n Update 29/12/2015:\n New labels translation by ARCANGELI CLAUDIO\n\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nuovo compito\",\n\t\ticon_save: \"Salva\",\n\t\ticon_cancel: \"Chiudi\",\n\t\ticon_details: \"Dettagli\",\n\t\ticon_edit: \"Modifica\",\n\t\ticon_delete: \"Elimina\",\n\t\tconfirm_closing: \"\",// \"Sei sicuro di confermare la chiusura?\",\n\t\tconfirm_deleting: \"Sei sicuro di confermare l'eliminazione?\",\n\t\tsection_description: \"Descrizione\",\n\t\tsection_time: \"Periodo di tempo\",\n\t\tsection_type: \"Tipo\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Nome Attività\",\n\t\tcolumn_start_date: \"Inizio\",\n\t\tcolumn_duration: \"Durata\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"sarà eliminato\",\n\t\tlink_start: \" (inizio)\",\n\t\tlink_end: \" (fine)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minuti\",\n\t\thours: \"Ore\",\n\t\tdays: \"Giorni\",\n\t\tweeks: \"Settimane\",\n\t\tmonths: \"Mesi\",\n\t\tyears: \"Anni\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Chiudi\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Tugas baru\",\n\t\ticon_save: \"Simpan\",\n\t\ticon_cancel: \"Batal\",\n\t\ticon_details: \"Detail\",\n\t\ticon_edit: \"Edit\",\n\t\ticon_delete: \"Hapus\",\n\t\tconfirm_closing: \"\", /* Perubahan tidak akan disimpan ? */\n\t\tconfirm_deleting: \"Acara akan dihapus\",\n\t\tsection_description: \"Keterangan\",\n\t\tsection_time: \"Periode\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Batal\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Új feladat\",\n\t\ticon_save: \"Mentés\",\n\t\ticon_cancel: \"Mégse\",\n\t\ticon_details: \"Részletek\",\n\t\ticon_edit: \"Szerkesztés\",\n\t\ticon_delete: \"Törlés\",\n\t\tconfirm_closing: \"\", // A változások elvesznek, biztosan folytatja? \"\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\n\t\tsection_description: \"Leírás\",\n\t\tsection_time: \"Idõszak\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Mégse\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n Translation by Davor\n http://docs.dhtmlx.com/gantt/desktop__localization.html#comment-2569116291\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\n\t\tmonth_short: [\"Sij\", \"Velj\", \"Ožu\", \"Tra\", \"Svi\", \"Lip\", \"Srp\", \"Kol\", \"Ruj\", \"Lis\", \"Stu\", \"Pro\"],\n\t\tday_full: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"Četvrtak\", \"Petak\", \"Subota\"],\n\t\tday_short: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Novi Zadatak\",\n\t\ticon_save: \"Spremi\",\n\t\ticon_cancel: \"Odustani\",\n\t\ticon_details: \"Detalji\",\n\t\ticon_edit: \"Izmjeni\",\n\t\ticon_delete: \"Obriši\",\n\t\tconfirm_closing: \"\",\n\t\tconfirm_deleting: \"Zadatak će biti trajno izbrisan, jeste li sigurni?\",\n\t\tsection_description: \"Opis\",\n\t\tsection_time: \"Vremenski Period\",\n\t\tsection_type: \"Tip\",\n\n\t\t/* grid columns */\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Naziv Zadatka\",\n\t\tcolumn_start_date: \"Početno Vrijeme\",\n\t\tcolumn_duration: \"Trajanje\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Poveznica\",\n\t\tconfirm_link_deleting: \"će biti izbrisan\",\n\t\tlink_start: \" (početak)\",\n\t\tlink_end: \" (kraj)\",\n\n\t\ttype_task: \"Zadatak\",\n\t\ttype_project: \"Projekt\",\n\t\ttype_milestone: \"Milestone\",\n\n\t\tminutes: \"Minute\",\n\t\thours: \"Sati\",\n\t\tdays: \"Dani\",\n\t\tweeks: \"Tjedni\",\n\t\tmonths: \"Mjeseci\",\n\t\tyears: \"Godine\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Odustani\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"משימה חדש\",\n\t\ticon_save: \"שמור\",\n\t\ticon_cancel: \"בטל\",\n\t\ticon_details: \"פרטים\",\n\t\ticon_edit: \"ערוך\",\n\t\ticon_delete: \"מחק\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\n\t\tsection_description: \"הסבר\",\n\t\tsection_time: \"תקופה\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"בטל\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nouvelle tâche\",\n\t\ticon_save: \"Enregistrer\",\n\t\ticon_cancel: \"Annuler\",\n\t\ticon_details: \"Détails\",\n\t\ticon_edit: \"Modifier\",\n\t\ticon_delete: \"Effacer\",\n\t\tconfirm_closing: \"\",// Vos modifications seront perdus, êtes-vous sûr ?\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\n\n\t\tsection_description: \"Description\",\n\t\tsection_time: \"Période\",\n\t\tsection_type: \"Type\",\n\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"OTP\",\n\t\tcolumn_text: \"Nom de la tâche\",\n\t\tcolumn_start_date: \"Date initiale\",\n\t\tcolumn_duration: \"Durée\",\n\t\tcolumn_add: \"\",\n\n\n\t\t/* link confirmation */\n\t\tlink: \"Le lien\",\n\t\tconfirm_link_deleting: \"sera supprimé\",\n\t\tlink_start: \"(début)\",\n\t\tlink_end: \"(fin)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Heures\",\n\t\tdays: \"Jours\",\n\t\tweeks: \"Semaines\",\n\t\tmonths: \"Mois\",\n\t\tyears: \"Années\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Annuler\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Uusi tehtävä\",\n\t\ticon_save: \"Tallenna\",\n\t\ticon_cancel: \"Peru\",\n\t\ticon_details: \"Tiedot\",\n\t\ticon_edit: \"Muokkaa\",\n\t\ticon_delete: \"Poista\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\n\t\tsection_description: \"Kuvaus\",\n\t\tsection_time: \"Aikajakso\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Peru\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n dhtmlxGantt Persian (Farsi, fa_IR) locale by Mohammad Shokri http://slashsbin.com/\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\n\t\t\t\"ژانویه\",\n\t\t\t\"فوریه\",\n\t\t\t\"مارس\",\n\t\t\t\"آوریل\",\n\t\t\t\"مه\",\n\t\t\t\"ژوئن\",\n\t\t\t\"ژوئیه\",\n\t\t\t\"اوت\",\n\t\t\t\"سپتامبر\",\n\t\t\t\"اکتبر\",\n\t\t\t\"نوامبر\",\n\t\t\t\"دسامبر\"\n\t\t],\n\t\tmonth_short: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"],\n\t\tday_full: [\n\t\t\t\"يکشنبه\",\n\t\t\t\"دوشنبه\",\n\t\t\t\"سهشنبه\",\n\t\t\t\"چهارشنبه\",\n\t\t\t\"پنجشنبه\",\n\t\t\t\"جمعه\",\n\t\t\t\"شنبه\"\n\t\t],\n\t\tday_short: [\n\t\t\t\"ی\",\n\t\t\t\"د\",\n\t\t\t\"س\",\n\t\t\t\"چ\",\n\t\t\t\"پ\",\n\t\t\t\"ج\",\n\t\t\t\"ش\"\n\t\t]\n\t},\n\tlabels: {\n\t\tnew_task: \"وظیفه جدید\",\n\t\ticon_save: \"ذخیره\",\n\t\ticon_cancel: \"لغو\",\n\t\ticon_details: \"جزییات\",\n\t\ticon_edit: \"ویرایش\",\n\t\ticon_delete: \"حذف\",\n\t\tconfirm_closing: \"تغییرات شما ازدست خواهد رفت، آیا مطمئن هستید؟\",\n\t\tconfirm_deleting: \"این مورد برای همیشه حذف خواهد شد، آیا مطمئن هستید؟\",\n\t\tsection_description: \"توضیحات\",\n\t\tsection_time: \"مدت زمان\",\n\t\tsection_type: \"نوع\",\n\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"عنوان\",\n\t\tcolumn_start_date: \"زمان شروع\",\n\t\tcolumn_duration: \"مدت\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"ارتباط\",\n\t\tconfirm_link_deleting: \"حذف خواهد شد\",\n\t\tlink_start: \" (آغاز)\",\n\t\tlink_end: \" (پایان)\",\n\n\t\ttype_task: \"وظیفه\",\n\t\ttype_project: \"پروژه\",\n\t\ttype_milestone: \"نگارش\",\n\n\t\tminutes: \"دقایق\",\n\t\thours: \"ساعات\",\n\t\tdays: \"روزها\",\n\t\tweeks: \"هفته\",\n\t\tmonths: \"ماهها\",\n\t\tyears: \"سالها\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"تایید\",\n\t\tmessage_cancel: \"لغو\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\n\t}\n};\n\nexport default locale;","/*\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\n\n Update 30/10/2015:\n Translation of new labels by Jorge Macias\n https://disqus.com/by/disqus_bTuZk1voC7/\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nueva tarea\",\n\t\ticon_save: \"Guardar\",\n\t\ticon_cancel: \"Cancelar\",\n\t\ticon_details: \"Detalles\",\n\t\ticon_edit: \"Editar\",\n\t\ticon_delete: \"Eliminar\",\n\t\tconfirm_closing: \"\", // \"Sus cambios se perderán, continuar ?\"\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\n\t\tsection_description: \"Descripción\",\n\t\tsection_time: \"Período\",\n\t\tsection_type: \"Tipo\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"EDT\",\n\t\tcolumn_text: \"Tarea\",\n\t\tcolumn_start_date: \"Inicio\",\n\t\tcolumn_duration: \"Duración\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Enlace\",\n\t\tconfirm_link_deleting: \"será borrada\",\n\t\tlink_start: \" (inicio)\",\n\t\tlink_end: \" (fin)\",\n\n\t\ttype_task: \"Tarea\",\n\t\ttype_project: \"Proyecto\",\n\t\ttype_milestone: \"Hito\",\n\n\n\t\tminutes: \"Minutos\",\n\t\thours: \"Horas\",\n\t\tdays: \"Días\",\n\t\tweeks: \"Semanas\",\n\t\tmonths: \"Meses\",\n\t\tyears: \"Años\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancelar\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tday_short: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"New task\",\n\t\ticon_save: \"Save\",\n\t\ticon_cancel: \"Cancel\",\n\t\ticon_details: \"Details\",\n\t\ticon_edit: \"Edit\",\n\t\ticon_delete: \"Delete\",\n\t\tconfirm_closing: \"\",// Your changes will be lost, are you sure?\n\t\tconfirm_deleting: \"Task will be deleted permanently, are you sure?\",\n\t\tsection_description: \"Description\",\n\t\tsection_time: \"Time period\",\n\t\tsection_type: \"Type\",\n\n\t\t/* grid columns */\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancel\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Κυριακή\"],\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Νέα εργασία\",\n\t\ticon_save: \"Αποθήκευση\",\n\t\ticon_cancel: \"Άκυρο\",\n\t\ticon_details: \"Λεπτομέρειες\",\n\t\ticon_edit: \"Επεξεργασία\",\n\t\ticon_delete: \"Διαγραφή\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\n\t\tsection_description: \"Περιγραφή\",\n\t\tsection_time: \"Χρονική περίοδος\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Άκυρο\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n\t\tday_full: [\"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Neue Aufgabe\",\n\t\ticon_save: \"Speichern\",\n\t\ticon_cancel: \"Abbrechen\",\n\t\ticon_details: \"Details\",\n\t\ticon_edit: \"Ändern\",\n\t\ticon_delete: \"Löschen\",\n\t\tconfirm_closing: \"\", // \"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\n\t\tsection_description: \"Beschreibung\",\n\t\tsection_time: \"Zeitspanne\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"PSP\",\n\t\tcolumn_text: \"Task-Namen\",\n\t\tcolumn_start_date: \"Startzeit\",\n\t\tcolumn_duration: \"Dauer\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"werden gelöscht\",\n\t\tlink_start: \"(starten)\",\n\t\tlink_end: \"(ende)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minuten\",\n\t\thours: \"Stunden\",\n\t\tdays: \"Tage\",\n\t\tweeks: \"Wochen\",\n\t\tmonths: \"Monate\",\n\t\tyears: \"Jahre\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Abbrechen\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Ny opgave\",\n\t\ticon_save: \"Gem\",\n\t\ticon_cancel: \"Fortryd\",\n\t\ticon_details: \"Detaljer\",\n\t\ticon_edit: \"Tilret\",\n\t\ticon_delete: \"Slet\",\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\n\t\tsection_description: \"Beskrivelse\",\n\t\tsection_time: \"Tidsperiode\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Fortryd\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nová práce\",\n\t\ticon_save: \"Uložit\",\n\t\ticon_cancel: \"Zpět\",\n\t\ticon_details: \"Detail\",\n\t\ticon_edit: \"Edituj\",\n\t\ticon_delete: \"Smazat\",\n\t\tconfirm_closing: \"\", // Vaše změny budou ztraceny, opravdu ?\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\n\t\tsection_description: \"Poznámky\",\n\t\tsection_time: \"Doba platnosti\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Zpět\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\nTranslation by FreezeSoul\n\nUpdate 26/10/2015:\nTranslation of new labels by zwh8800\n https://github.com/DHTMLX/gantt/pull/7\n\n*/\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"新任務\",\n\t\ticon_save: \"保存\",\n\t\ticon_cancel: \"关闭\",\n\t\ticon_details: \"详细\",\n\t\ticon_edit: \"编辑\",\n\t\ticon_delete: \"删除\",\n\t\tconfirm_closing: \"请确认是否撤销修改!\", // Your changes will be lost, are your sure?\n\t\tconfirm_deleting: \"是否删除日程?\",\n\t\tsection_description: \"描述\",\n\t\tsection_time: \"时间范围\",\n\t\tsection_type: \"类型\",\n\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"工作分解结构\",\n\t\tcolumn_text: \"任务名\",\n\t\tcolumn_start_date: \"开始时间\",\n\t\tcolumn_duration: \"持续时间\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\n\t\tlink: \"关联\",\n\t\tconfirm_link_deleting: \"将被删除\",\n\t\tlink_start: \" (开始)\",\n\t\tlink_end: \" (结束)\",\n\n\t\ttype_task: \"任务\",\n\t\ttype_project: \"项目\",\n\t\ttype_milestone: \"里程碑\",\n\n\t\tminutes: \"分钟\",\n\t\thours: \"小时\",\n\t\tdays: \"天\",\n\t\tweeks: \"周\",\n\t\tmonths: \"月\",\n\t\tyears: \"年\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"关闭\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","/*\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\n */\n\nconst locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Nova tasca\",\n\t\ticon_save: \"Guardar\",\n\t\ticon_cancel: \"Cancel·lar\",\n\t\ticon_details: \"Detalls\",\n\t\ticon_edit: \"Editar\",\n\t\ticon_delete: \"Esborrar\",\n\t\tconfirm_closing: \"\", // \"Els seus canvis es perdràn, continuar ?\"\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\n\t\tsection_description: \"Descripció\",\n\t\tsection_time: \"Periode de temps\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Cancel·lar\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\n\t\tday_full: [\"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Новае заданне\",\n\t\ticon_save: \"Захаваць\",\n\t\ticon_cancel: \"Адмяніць\",\n\t\ticon_details: \"Дэталі\",\n\t\ticon_edit: \"Змяніць\",\n\t\ticon_delete: \"Выдаліць\",\n\t\tconfirm_closing: \"\", // Унесеныя змены будуць страчаны, працягнуць?\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\n\t\tsection_description: \"Апісанне\",\n\t\tsection_time: \"Перыяд часу\",\n\t\tsection_type: \"Тып\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"ІСР\",\n\t\tcolumn_text: \"Задача\",\n\t\tcolumn_start_date: \"Пачатак\",\n\t\tcolumn_duration: \"Працяг\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Сувязь\",\n\t\tconfirm_link_deleting: \"будзе выдалена\",\n\t\tlink_start: \"(пачатак)\",\n\t\tlink_end: \"(канец)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Хвiлiна\",\n\t\thours: \"Гадзiна\",\n\t\tdays: \"Дзень\",\n\t\tweeks: \"Тыдзень\",\n\t\tmonths: \"Месяц\",\n\t\tyears: \"Год\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Адмяніць\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"مهمة جديد\",\n\t\ticon_save: \"اخزن\",\n\t\ticon_cancel: \"الغاء\",\n\t\ticon_details: \"تفاصيل\",\n\t\ticon_edit: \"تحرير\",\n\t\ticon_delete: \"حذف\",\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\n\t\tsection_description: \"الوصف\",\n\t\tsection_time: \"الفترة الزمنية\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"الغاء\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\"\n\t}\n};\n\nexport default locale;","import ar from \"./locale_ar\";\nimport be from \"./locale_be\";\nimport ca from \"./locale_ca\";\nimport cn from \"./locale_cn\";\nimport cs from \"./locale_cs\";\nimport da from \"./locale_da\";\nimport de from \"./locale_de\";\nimport el from \"./locale_el\";\nimport en from \"./locale_en\";\nimport es from \"./locale_es\";\nimport fa from \"./locale_fa\";\nimport fi from \"./locale_fi\";\nimport fr from \"./locale_fr\";\nimport he from \"./locale_he\";\nimport hr from \"./locale_hr\";\nimport hu from \"./locale_hu\";\nimport id from \"./locale_id\";\nimport it from \"./locale_it\";\nimport jp from \"./locale_jp\";\nimport kr from \"./locale_kr\";\n\nimport LocaleManager from \"./locale_manager\";\n\nimport nb from \"./locale_nb\";\nimport nl from \"./locale_nl\";\nimport no from \"./locale_no\";\nimport pl from \"./locale_pl\";\nimport pt from \"./locale_pt\";\nimport ro from \"./locale_ro\";\nimport ru from \"./locale_ru\";\nimport si from \"./locale_si\";\nimport sk from \"./locale_sk\";\nimport sv from \"./locale_sv\";\nimport tr from \"./locale_tr\";\nimport ua from \"./locale_ua\";\n\nexport default function(){\n\treturn new LocaleManager({\n\t\ten,\n\t\tar,\n\t\tbe,\n\t\tca,\n\t\tcn,\n\t\tcs,\n\t\tda,\n\t\tde,\n\t\tel,\n\t\tes,\n\t\tfa,\n\t\tfi,\n\t\tfr,\n\t\the,\n\t\thr,\n\t\thu,\n\t\tid,\n\t\tit,\n\t\tjp,\n\t\tkr,\n\t\tnb,\n\t\tnl,\n\t\tno,\n\t\tpl,\n\t\tpt,\n\t\tro,\n\t\tru,\n\t\tsi,\n\t\tsk,\n\t\tsv,\n\t\ttr,\n\t\tua\n\t});\n}","// all builds except for evaluation version get this mockup\n// the evaluation build gets actual codes\nexport default () => {};","function extend(gantt){\n\n\tgantt.destructor = function(){\n\t\tgantt.callEvent(\"onDestroy\", []);\n\t\tthis.clearAll();\n\n\t\tif(this.$root){\n\t\t\tdelete this.$root.gantt;\n\t\t}\n\n\t\tif(this._eventRemoveAll){\n\t\t\tthis._eventRemoveAll();\n\t\t}\n\n\t\tif(this.$layout){\n\t\t\tthis.$layout.destructor();\n\t\t}\n\n\t\tif(this.resetLightbox){\n\t\t\tthis.resetLightbox();\n\t\t}\n\n\n\t\tif(this._dp && this._dp.destructor){\n\t\t\tthis._dp.destructor();\n\t\t}\n\t\tthis.$services.destructor();\n\n\t\t// detachAllEvents should be called last, because in components may be attached events\n\t\tthis.detachAllEvents();\n\n\t\tfor(var i in this){\n\t\t\tif(i.indexOf(\"$\") === 0){\n\t\t\t\tdelete this[i];\n\t\t\t}\n\t\t}\n\t\tgantt.$destroyed = true;\n\t};\n}\n\nmodule.exports = extend;\n","/*\n \tasserts will be removed in final code, so you can place them anythere\n\twithout caring about performance impacts\n*/\n\nmodule.exports = function(gantt){\n\treturn function assert(check, message){\n\t\tif (!check){\n\t\t\tif(gantt.config.show_errors && gantt.callEvent(\"onError\",[message]) !== false) {\n\t\t\t\tif (gantt.message) {\n\t\t\t\t\tgantt.message({type: \"error\", text: message, expire: -1});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\tconsole.log(message);\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-debugger\n\t\t\t\tdebugger;\n\t\t\t}\n\t\t}\n\t};\n};","function addResizeListener(gantt){\n\tvar containerStyles = window.getComputedStyle(gantt.$root);\n\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\n\t\tgantt.$root.style.position = \"relative\";\n\t}\n\n\tvar resizeWatcher = document.createElement('iframe');\n\tresizeWatcher.className = \"gantt_container_resize_watcher\";\n\tresizeWatcher.tabIndex = -1;\n\tif(gantt.config.wai_aria_attributes){\n\t\tresizeWatcher.setAttribute(\"role\", \"none\");\n\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\n\t}\n\n\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\n\tgantt.$root.appendChild(resizeWatcher);\n\tif (resizeWatcher.contentWindow) {\n\t\tlistenWindowResize(gantt, resizeWatcher.contentWindow);\n\t} else {\n\t\t// if so - ditch the iframe and fallback to listening the main window resize\n\t\tgantt.$root.removeChild(resizeWatcher);\n\t\tlistenWindowResize(gantt, window);\n\t}\n}\n\nfunction listenWindowResize(gantt, window){\n\tvar resizeTimeout = gantt.config.container_resize_timeout || 20;\n\tvar resizeDelay;\n\n\ttry{\n\t\tgantt.event(window, \"resize\", function(){\n\t\t\tif (gantt.$scrollbarRepaint) {\n\t\t\t\tgantt.$scrollbarRepaint = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\trepaintGantt();\n\t\t\t}\n\t\t});\n\t}\n\tcatch(e){\n\t\tlowlevelResizeWatcher();\n\t}\n\n\tfunction repaintGantt(){\n\t\tclearTimeout(resizeDelay);\n\t\tresizeDelay = setTimeout(function(){\n\t\t\tgantt.render();\n\t\t}, resizeTimeout);\n\t}\n\n\tvar previousHeight = gantt.$root.offsetHeight;\n\tvar previousWidth = gantt.$root.offsetWidth;\t\n\n\tfunction lowlevelResizeWatcher(){\n\t\tif (gantt.$root.offsetHeight != previousHeight ||\n\t\t\t\tgantt.$root.offsetWidth != previousWidth){\n\t\t\t\trepaintGantt();\n\t\t}\n\n\t\tpreviousHeight = gantt.$root.offsetHeight;\n\t\tpreviousWidth = gantt.$root.offsetWidth;\n\n\t\tsetTimeout(lowlevelResizeWatcher, resizeTimeout);\n\t}\n}\n\nmodule.exports = addResizeListener;","var domHelpers = require(\"./ui/utils/dom_helpers\"),\n\thelpers = require(\"../utils/helpers\");\nvar isHeadless = require(\"../utils/is_headless\");\nvar addResizeListener = require(\"./ui/resize_listener\");\n\nmodule.exports = function(gantt){\n\tvar calculateScaleRange = require(\"./gantt_data_range\");\n\n\tgantt.assert = require(\"./common/assert\")(gantt);\n\n\tfunction isHTMLElement(node){\n\t\ttry {\n\t\t\tnode.cloneNode(false);\n\t\t}\n\t\tcatch (e){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tvar invalidContainerMessage = \"Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).\" +\n\t\"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\tfunction validateNode(node){\n\t\tif (!node || (typeof node == 'string' && document.getElementById(node))) return true;\n\t\tif (isHTMLElement(node)) return true;\n\n\t\tgantt.assert(false, invalidContainerMessage);\n\t\tthrow new Error(invalidContainerMessage);\n\t}\n\n//initial initialization\n\tgantt.init = function(node, from, to){\n\t\tif (gantt.env.isNode) { \n\t\t\tnode = null; // for the nodejs version\n\t\t} else {\n\t\t\tvalidateNode(node); // for the web version\n\t\t}\n\n\t\tif(from && to){\n\t\t\tthis.config.start_date = this._min_date = new Date(from);\n\t\t\tthis.config.end_date = this._max_date = new Date(to);\n\t\t}\n\t\tthis.date.init();\n\n\t\t//can be called only once\n\t\tthis.init = function(node){\n\t\t\tif (gantt.env.isNode) { \n\t\t\t\tnode = null; // for the nodejs version\n\t\t\t} else {\n\t\t\t\tvalidateNode(node); // for the web version\n\t\t\t}\n\n\t\t\tif (this.$container && this.$container.parentNode){\n\t\t\t\tthis.$container.parentNode.removeChild(this.$container);\n\t\t\t\tthis.$container = null;\n\t\t\t}\n\n\t\t\tif(this.$layout){\n\t\t\t\tthis.$layout.clear();\n\t\t\t}\n\t\t\tthis._reinit(node);\n\t\t};\n\n\t\tthis._reinit(node);\n\t};\n\n\n\tvar dropLayout = (function dropLayout(){\n\t\tif(this._clearTaskLayers){\n\t\t\tthis._clearTaskLayers();\n\t\t}\n\n\t\tif(this._clearLinkLayers){\n\t\t\tthis._clearLinkLayers();\n\t\t}\n\n\t\tif(this.$layout){\n\t\t\tthis.$layout.destructor();\n\t\t\tthis.$layout = null;\n\t\t\tthis.$ui.reset();\n\t\t}\n\t}).bind(gantt);\n\n\tvar rebuildLayout = (function rebuildLayout(){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$root.innerHTML = \"\";\n\t\t\n\t\tthis.$root.gantt = this;\n\t\tcalculateScaleRange(this);\n\t\tthis.config.layout.id = \"main\";\n\t\tthis.$layout = this.$ui.createView(\"layout\", this.$root, this.config.layout);\n\n\t\tthis.$layout.attachEvent(\"onBeforeResize\", function(){\n\t\t\tvar storeNames = gantt.$services.getService(\"datastores\");\n\t\t\tfor(var i = 0; i < storeNames.length; i++){\n\t\t\t\tgantt.getDatastore(storeNames[i]).filter();\n\t\t\t}\n\t\t});\n\n\t\tthis.$layout.attachEvent(\"onResize\", function(){\n\t\t\tgantt.refreshData();\n\t\t});\n\n\t\tthis.callEvent(\"onGanttLayoutReady\", []);\n\t\tthis.$layout.render();\n\n\t\tthis.$container = this.$layout.$container.firstChild;\n\n\t\taddResizeListener(this);\n\t}).bind(gantt);\n\n\tgantt.resetLayout = function(){\n\t\tdropLayout();\n\t\trebuildLayout();\n\t\tthis.render();\n\t};\n\n\tgantt._reinit = function(node){\n\t\tthis.callEvent(\"onBeforeGanttReady\", []);\n\t\tthis._update_flags();\n\n\t\tvar config = this.$services.getService(\"templateLoader\");\n\t\tconfig.initTemplates(this);\n\n\t\tdropLayout();\n\n\t\tthis.$root = null;\n\t\tif(node){\n\t\t\tthis.$root = domHelpers.toNode(node);\n\t\t\trebuildLayout();\n\t\t\tthis.$mouseEvents.reset(this.$root);\n\t\t}\n\n\t\tthis.callEvent(\"onTemplatesReady\",[]);\n\t\n\t\tthis.callEvent(\"onGanttReady\", []);\n\n\t\tthis.render();\n\t};\n\n\tgantt.$click={\n\t\tbuttons:{\n\t\t\t\"edit\": function(id) {\n\t\t\t\tif (gantt.isReadonly(gantt.getTask(id))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tgantt.showLightbox(id);\n\t\t\t},\n\t\t\t\"delete\": function(id) {\n\t\t\t\tvar task = gantt.getTask(id);\n\t\t\t\tif (gantt.isReadonly(task)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar question = gantt.locale.labels.confirm_deleting;\n\t\t\t\tvar title = gantt.locale.labels.confirm_deleting_title;\n\n\t\t\t\tgantt._dhtmlx_confirm(question, title, function(){\n\t\t\t\t\tif(!gantt.isTaskExists(id)){\n\t\t\t\t\t\tgantt.hideLightbox();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(task.$new){\n\t\t\t\t\t\tgantt.silent(function(){\n\t\t\t\t\t\t\tgantt.deleteTask(id, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tgantt.refreshData();\n\t\t\t\t\t}else{\n\t\t\t\t\t\tgantt.deleteTask(id);\n\t\t\t\t\t}\n\n\t\t\t\t\tgantt.hideLightbox();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n//renders self\n\tgantt.render = function(){\n\t\tthis.callEvent(\"onBeforeGanttRender\", []);\n\n\t\tvar visibleDate;\n\t\tif(!isHeadless(gantt)){\n\t\t\tif (!this.config.sort && this._sort) {\n\t\t\t\tthis._sort = undefined;\n\t\t\t}\n\n\t\t\tif(this.$root){\n\t\t\t\tif(this.config.rtl){\n\t\t\t\t\tthis.$root.classList.add(\"gantt_rtl\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.$root.classList.remove(\"gantt_rtl\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar pos = this.getScrollState();\n\t\t\tvar posX = pos ? pos.x : 0;\n\t\t\tif(this._getHorizontalScrollbar()){\n\t\t\t\tvar scrollbar = this._getHorizontalScrollbar();\n\t\t\t\tposX = scrollbar.$config.codeScrollLeft || posX || 0;\n\t\t\t}\n\n\n\t\t\tvisibleDate = null;\n\t\t\tif(posX){\n\t\t\t\tvisibleDate = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n\t\t\t}\n\t\t}\n\n\t\tcalculateScaleRange(this);\n\n\t\tif(!isHeadless(gantt)){\n\t\t\tthis.$layout.$config.autosize = this.config.autosize;\n\t\t\tthis.$layout.resize();\n\n\t\t\tif(this.config.preserve_scroll && pos){\n\n\t\t\t\tif(posX){\n\t\t\t\t\tvar new_pos = gantt.getScrollState();\n\t\t\t\t\tvar new_date = gantt.dateFromPos(new_pos.x);\n\t\t\t\t\tif(!(+visibleDate == +new_date && new_pos.y == pos.y)){\n\t\t\t\t\t\tif(visibleDate){\n\t\t\t\t\t\t\tthis.showDate(visibleDate);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(pos.y)\n\t\t\t\t\t\t\tgantt.scrollTo(undefined, pos.y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else{\n\t\t\tgantt.refreshData();\n\t\t}\n\t\tthis.callEvent(\"onGanttRender\", []);\n\t};\n\n\t//TODO: add layout.resize method that wouldn't trigger data repaint\n\tgantt.setSizes = gantt.render;\n\n\n\tgantt.getTaskRowNode = function(id) {\n\t\tvar els = this.$grid_data.childNodes;\n\t\tvar attribute = this.config.task_attribute;\n\t\tfor (var i = 0; i < els.length; i++) {\n\t\t\tif (els[i].getAttribute) {\n\t\t\t\tvar value = els[i].getAttribute(attribute);\n\t\t\t\tif (value == id) return els[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tgantt.changeLightboxType = function(type){\n\t\tif(this.getLightboxType() == type)\n\t\t\treturn true;\n\t\tgantt._silent_redraw_lightbox(type);\n\t};\n\n\tgantt._get_link_type = function (from_start, to_start) {\n\t\tvar type = null;\n\t\tif (from_start && to_start) {\n\t\t\ttype = gantt.config.links.start_to_start;\n\t\t} else if (!from_start && to_start) {\n\t\t\ttype = gantt.config.links.finish_to_start;\n\t\t} else if (!from_start && !to_start) {\n\t\t\ttype = gantt.config.links.finish_to_finish;\n\t\t} else if (from_start && !to_start) {\n\t\t\ttype = gantt.config.links.start_to_finish;\n\t\t}\n\t\treturn type;\n\t};\n\n\tgantt.isLinkAllowed = function (from, to, from_start, to_start) {\n\t\tvar link = null;\n\t\tif (typeof(from) == \"object\") {\n\t\t\tlink = from;\n\t\t} else {\n\t\t\tlink = {source: from, target: to, type: this._get_link_type(from_start, to_start)};\n\t\t}\n\n\t\tif (!link) return false;\n\t\tif (!(link.source && link.target && link.type)) return false;\n\t\tif (link.source == link.target) return false;\n\n\t\tvar res = true;\n\t\t//any custom rules\n\t\tif (this.checkEvent(\"onLinkValidation\"))\n\t\t\tres = this.callEvent(\"onLinkValidation\", [link]);\n\n\t\treturn res;\n\t};\n\n\n\tgantt._correct_dst_change = function(date, prevOffset, step, unit){\n\t\tvar time_unit = helpers.getSecondsInUnit(unit) * step;\n\t\tif(time_unit > 60*60 && time_unit < 60*60*24){\n\t\t\t//correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n\t\t\tvar offsetChanged = date.getTimezoneOffset() - prevOffset;\n\t\t\tif(offsetChanged){\n\t\t\t\tdate = gantt.date.add(date, offsetChanged, \"minute\");\n\t\t\t}\n\t\t}\n\t\treturn date;\n\t};\n\n\tgantt.isSplitTask = function(task){\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\"+task+\" of gantt.isSplitTask. Task object was expected\");\n\t\treturn this.$data.tasksStore._isSplitItem(task);\n\t};\n\n\tgantt._is_icon_open_click = function(e) {\n\t\tif (!e)\n\t\t\treturn false;\n\t\tvar target = e.target || e.srcElement;\n\t\tif (!(target && target.className))\n\t\t\treturn false;\n\t\tvar className = domHelpers.getClassName(target);\n\t\tif (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1))\n\t\t\treturn true;\n\t\treturn false;\n\t};\n\n};","/*\n reuse results of functions that can be recalculated during rendering\n greatly increases the rendering speed when critical path enabled\n Sample - 94_dev/critical_path.html\n\n */\nmodule.exports = function(gantt){\n\ngantt._cached_functions = {\n\tcache: {},\n\tmode: false,\n\tcritical_path_mode: false,\n\twrap_methods : function(methods, object){\n\t\tif(object._prefetch_originals){\n\t\t\tfor(var i in object._prefetch_originals){\n\t\t\t\tobject[i] = object._prefetch_originals[i];\n\t\t\t}\n\t\t}\n\t\tobject._prefetch_originals = {};\n\t\tfor(var i = 0; i < methods.length; i++)\n\t\t\tthis.prefetch(methods[i], object);\n\n\t},\n\tprefetch : function(methodname, host){\n\t\tvar original = host[methodname];\n\t\tif(original){\n\t\t\tvar optimizer = this;\n\n\t\t\thost._prefetch_originals[methodname] = original;\n\t\t\thost[methodname] = function get_prefetched_value(){\n\n\t\t\t\tvar argumentsArray = new Array(arguments.length);\n\t\t\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\t\t\targumentsArray[i] = arguments[i];\n\t\t\t\t}\n\n\t\t\t\tif(optimizer.active){\n\t\t\t\t\tvar args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\n\t\t\t\t\tif(!optimizer.cache[methodname]){\n\t\t\t\t\t\toptimizer.cache[methodname] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tvar cached_values = optimizer.cache[methodname];\n\n\t\t\t\t\tif(optimizer.has_cached_value(cached_values, args)){\n\t\t\t\t\t\treturn optimizer.get_cached_value(cached_values, args);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar value = original.apply(this, argumentsArray);\n\t\t\t\t\t\toptimizer.cache_value(cached_values, args, value);\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn original.apply(this, argumentsArray);\n\t\t\t};\n\t\t}\n\t\treturn original;\n\t},\n\tcache_value: function(cache, arguments_hash, value){\n\t\tif(this.is_date(value))\n\t\t\tvalue = new Date(value);\n\t\tcache[arguments_hash] = value;\n\t},\n\thas_cached_value: function(cache, arguments_hash){\n\t\treturn cache.hasOwnProperty(arguments_hash);\n\t},\n\tget_cached_value: function(cache, arguments_hash){\n\t\tvar data = cache[arguments_hash];\n\n\t\t//for cached dates - return copy\n\t\tif(this.is_date(data)){\n\t\t\tdata = new Date(data);\n\t\t}\n\t\treturn data;\n\t},\n\tis_date: function(value){\n\t\treturn (value && value.getUTCDate);\n\t},\n\tget_arguments_hash:function(args){\n\t\tvar values = [];\n\t\tfor(var i = 0; i < args.length; i++){\n\t\t\tvalues.push(this.stringify_argument(args[i]));\n\t\t}\n\t\treturn \"(\" + values.join(\";\") + \")\";\n\t},\n\tstringify_argument: function(value){\n\t\t//expecting task or link, or any other data entries, dates and primitive values\n\t\tvar ret = \"\";\n\t\tif(value.id){\n\t\t\tret = value.id;\n\t\t}else if(this.is_date(value)){\n\t\t\tret = value.valueOf();\n\t\t}else{\n\t\t\tret = value;\n\t\t}\n\t\treturn ret + \"\";\n\t},\n\tactivate: function(){\n\t\tthis.clear();\n\t\tthis.active = true;\n\t},\n\tdeactivate: function(){\n\t\tthis.clear();\n\t\tthis.active = false;\n\t},\n\tclear: function(){\n\t\tthis.cache = {};\n\t},\n\n\tsetup: function(gantt){\n\t\tvar override_gantt = [];\n\n\t\tvar gantt_methods = [\n\t\t\t'_isProjectEnd',\n\t\t\t'_getProjectEnd',\n\t\t\t'_getSlack'\n\t\t];\n\n\n\n\t\tif(this.mode == 'auto'){\n\t\t\tif(gantt.config.highlight_critical_path){\n\t\t\t\toverride_gantt = gantt_methods;\n\t\t\t}\n\t\t}else if(this.mode === true){\n\t\t\toverride_gantt = gantt_methods;\n\t\t}\n\n\t\tthis.wrap_methods(override_gantt, gantt);\n\n\t},\n\tupdate_if_changed: function(gantt){\n\t\tvar changed = (this.critical_path_mode != gantt.config.highlight_critical_path ||\n\t\t\t\t\t\tthis.mode !== gantt.config.optimize_render);\n\t\tif(changed){\n\t\t\tthis.critical_path_mode = gantt.config.highlight_critical_path;\n\t\t\tthis.mode = gantt.config.optimize_render;\n\t\t\tthis.setup(gantt);\n\t\t}\n\t}\n};\n\nfunction activate(){\n\tgantt._cached_functions.update_if_changed(gantt);\n\tif(!gantt._cached_functions.active){\n\t\tgantt._cached_functions.activate();\n\t}\n\treturn true;\n}\ngantt.attachEvent(\"onBeforeGanttRender\", activate);\ngantt.attachEvent(\"onBeforeDataRender\", activate);\ngantt.attachEvent(\"onBeforeSmartRender\", function(){\n\tactivate();\n});\ngantt.attachEvent(\"onBeforeParse\", activate);\ngantt.attachEvent(\"onDataRender\", function(){\n\tgantt._cached_functions.deactivate();\n});\nvar deactivTimeout = null;\ngantt.attachEvent(\"onSmartRender\", function(){\n\tif(deactivTimeout)\n\t\tclearTimeout(deactivTimeout);\n\tdeactivTimeout = setTimeout(function(){\n\t\tgantt._cached_functions.deactivate();\n\t}, 1000);\n});\n\ngantt.attachEvent(\"onBeforeGanttReady\", function(){\n\tgantt._cached_functions.update_if_changed(gantt);\n\treturn true;\n});\n\n};","module.exports = function(gantt) {\n\tgantt.getTaskType = function (type) {\n\t\tvar checkType = type;\n\t\tif(type && typeof type == \"object\"){\n\t\t\tcheckType = type.type;\n\t\t}\n\n\t\tfor (var i in this.config.types) {\n\t\t\tif (this.config.types[i] == checkType) {\n\t\t\t\treturn checkType;\n\t\t\t}\n\t\t}\n\t\treturn gantt.config.types.task;\n\t};\n};","// all builds except for evaluation version get this mockup\n// the evaluation build gets actual codes\nexport default () => {};","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.isUnscheduledTask = function (task) {\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\"+task+\" of gantt.isUnscheduledTask. Task object was expected\");\n\t\treturn (!!task.unscheduled || !task.start_date);\n\t};\n\n\tgantt._isAllowedUnscheduledTask = function (task) {\n\t\treturn !!(task.unscheduled && gantt.config.show_unscheduled);\n\t};\n\n\tgantt._isTaskInTimelineLimits = function(task) {\n\t\tvar taskStart = task.start_date ? task.start_date.valueOf() : null;\n\t\tvar taskEnd = task.end_date ? task.end_date.valueOf() : null;\n\t\treturn !!(taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf());\n\t};\n\tgantt.isTaskVisible = function (id) {\n\t\tif (!this.isTaskExists(id)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar task = this.getTask(id);\n\t\tif (!(this._isAllowedUnscheduledTask(task) || this._isTaskInTimelineLimits(task))) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!(this.getGlobalTaskIndex(id) >= 0);\n\t};\n\n\tgantt._getProjectEnd = function() {\n\t\tif(gantt.config.project_end){\n\t\t\treturn gantt.config.project_end;\n\t\t}else{\n\t\t\tvar tasks = gantt.getTaskByTime();\n\t\t\ttasks = tasks.sort(function (a, b) {\n\t\t\t\treturn +a.end_date > +b.end_date ? 1 : -1;\n\t\t\t});\n\t\t\treturn tasks.length ? tasks[tasks.length - 1].end_date : null;\n\t\t}\n\t};\n\tgantt._getProjectStart = function() {\n\t\tif (gantt.config.project_start) {\n\t\t\treturn gantt.config.project_start;\n\t\t}\n\n\t\t// use timeline start if project start is not specified\n\t\tif (gantt.config.start_date) {\n\t\t\treturn gantt.config.start_date;\n\t\t}\n\t\tif (gantt.getState().min_date) {\n\t\t\treturn gantt.getState().min_date;\n\t\t}\n\n\t\t// earliest task start if neither project start nor timeline are specified\n\t\tvar tasks = gantt.getTaskByTime();\n\t\ttasks = tasks.sort(function (a, b) {\n\t\t\treturn +a.start_date > +b.start_date ? 1 : -1;\n\t\t});\n\t\treturn tasks.length ? tasks[0].start_date : null;\n\t};\n\n\tvar getDefaultTaskDate = function (item, parent_id) {\n\t\tvar parent = (parent_id && parent_id != gantt.config.root_id) ? gantt.getTask(parent_id) : false,\n\t\t\tstartDate = null;\n\t\tif (parent) {\n\t\t\tif(gantt.config.schedule_from_end){\n\t\t\t\tstartDate = gantt.calculateEndDate({\n\t\t\t\t\tstart_date: parent.end_date,\n\t\t\t\t\tduration: - gantt.config.duration_step,\n\t\t\t\t\ttask:item\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tstartDate = parent.start_date;\n\t\t\t}\n\n\t\t} else if(gantt.config.schedule_from_end) {\n\t\t\tstartDate = gantt.calculateEndDate({\n\t\t\t\tstart_date: gantt._getProjectEnd(),\n\t\t\t\tduration: - gantt.config.duration_step,\n\t\t\t\ttask:item\n\t\t\t});\n\t\t} else {\n\t\t\tvar first = gantt.getTaskByIndex(0);\n\t\t\tstartDate = first ? (first.start_date ? first.start_date : (first.end_date ? gantt.calculateEndDate({\n\t\t\t\tstart_date: first.end_date,\n\t\t\t\tduration: -gantt.config.duration_step,\n\t\t\t\ttask:item\n\t\t\t}) : null)) : gantt.config.start_date || gantt.getState().min_date;\n\t\t}\n\t\tgantt.assert(startDate, \"Invalid dates\");\n\t\treturn new Date(startDate);\n\t};\n\n\tgantt._set_default_task_timing = function (task) {\n\t\ttask.start_date = task.start_date || getDefaultTaskDate(task, gantt.getParent(task));\n\t\ttask.duration = task.duration || gantt.config.duration_step;\n\t\ttask.end_date = task.end_date || gantt.calculateEndDate(task);\n\t};\n\n\tgantt.createTask = function (item, parent, index) {\n\t\titem = item || {};\n\n\t\tif (!gantt.defined(item.id))\n\t\t\titem.id = gantt.uid();\n\n\t\tif (!item.start_date) {\n\t\t\titem.start_date = getDefaultTaskDate(item, parent);\n\t\t}\n\t\tif (item.text === undefined) {\n\t\t\titem.text = gantt.locale.labels.new_task;\n\t\t}\n\t\tif (item.duration === undefined) {\n\t\t\titem.duration = 1;\n\t\t}\n\n\t\tif (this.isTaskExists(parent)) {\n\t\t\tthis.setParent(item, parent, true);\n\t\t\tvar parentObj = this.getTask(parent);\n\t\t\tparentObj.$open = true;\n\t\t}\n\n\t\tif (!this.callEvent(\"onTaskCreated\", [item])) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.config.details_on_create) {\n\t\t\titem.$new = true;\n\t\t\tthis.silent(function(){\n\t\t\t\tgantt.$data.tasksStore.addItem(item, index);\n\t\t\t});\n\t\t\tthis.selectTask(item.id);\n\t\t\tthis.refreshData();\n\t\t\tthis.showLightbox(item.id);\n\t\t} else {\n\t\t\tif (this.addTask(item, parent, index)) {\n\t\t\t\tthis.showTask(item.id);\n\t\t\t\tthis.selectTask(item.id);\n\t\t\t}\n\t\t}\n\t\treturn item.id;\n\t};\n\n\tgantt._update_flags = function (oldid, newid) {\n\t\t// TODO: need a proper way to update all possible flags\n\t\tvar store = gantt.$data.tasksStore;\n\t\tif (oldid === undefined) {\n\t\t\tthis._lightbox_id = null;\n\n\t\t\tstore.silent(function(){\n\t\t\t\tstore.unselect();\n\t\t\t});\n\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag) {\n\t\t\t\tthis._tasks_dnd.drag.id = null;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._lightbox_id == oldid)\n\t\t\t\tthis._lightbox_id = newid;\n\n\t\t\t// TODO: probably can be removed\n\t\t\tif (store.getSelectedId() == oldid) {\n\t\t\t\tstore.silent(function(){\n\t\t\t\t\tstore.unselect(oldid);\n\t\t\t\t\tstore.select(newid);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n\t\t\t\tthis._tasks_dnd.drag.id = newid;\n\t\t\t}\n\t\t}\n\t};\n\n\tvar getTaskTimingMode = function (task, force) {\n\t\tvar task_type = gantt.getTaskType(task.type);\n\n\t\tvar state = {\n\t\t\ttype: task_type,\n\t\t\t$no_start: false,\n\t\t\t$no_end: false\n\t\t};\n\n\t\tif (!force && task_type == task.$rendered_type) {\n\t\t\tstate.$no_start = task.$no_start;\n\t\t\tstate.$no_end = task.$no_end;\n\t\t\treturn state;\n\t\t}\n\n\t\tif (task_type == gantt.config.types.project) {\n\t\t\t//project duration is always defined by children duration\n\t\t\tstate.$no_end = state.$no_start = true;\n\t\t} else if (task_type != gantt.config.types.milestone) {\n\t\t\t//tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n\t\t\tstate.$no_end = !(task.end_date || task.duration);\n\t\t\tstate.$no_start = !task.start_date;\n\n\t\t\tif (gantt._isAllowedUnscheduledTask(task)) {\n\t\t\t\tstate.$no_end = state.$no_start = false;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t};\n\n\tgantt._init_task_timing = function (task) {\n\t\tvar task_mode = getTaskTimingMode(task, true);\n\n\t\tvar dirty = task.$rendered_type != task_mode.type;\n\n\t\tvar task_type = task_mode.type;\n\n\t\tif (dirty) {\n\t\t\ttask.$no_start = task_mode.$no_start;\n\t\t\ttask.$no_end = task_mode.$no_end;\n\t\t\ttask.$rendered_type = task_mode.type;\n\t\t}\n\n\t\tif (dirty && task_type != this.config.types.milestone) {\n\t\t\tif (task_type == this.config.types.project) {\n\t\t\t\t//project duration is always defined by children duration\n\t\t\t\tthis._set_default_task_timing(task);\n\t\t\t}\n\t\t}\n\n\t\tif (task_type == this.config.types.milestone) {\n\t\t\ttask.end_date = task.start_date;\n\t\t}\n\t\tif (task.start_date && task.end_date) {\n\t\t\ttask.duration = this.calculateDuration(task);\n\t\t}\n\n\t\tif (!task.end_date) {\n\t\t\ttask.end_date = task.start_date;\n\t\t}\n\n\t\ttask.duration = task.duration || 0;\n\n\t\t// work calendar of task has changed\n\t\tvar effectiveCalendar = this.getTaskCalendar(task);\n\t\tif(task.$effective_calendar && task.$effective_calendar !== effectiveCalendar.id){\n\t\t\tupdateTaskTiming(task);\n\t\t\tif(this.config.inherit_calendar && this.isSummaryTask(task)){\n\t\t\t\tthis.eachTask(function(child){\n\t\t\t\t\tupdateTaskTiming(child);\n\t\t\t\t}, task.id);\n\t\t\t}\n\t\t}\n\n\t\ttask.$effective_calendar = effectiveCalendar.id;\n\t};\n\n\tfunction updateTaskTiming(task) {\n\t\ttask.$effective_calendar = gantt.getTaskCalendar(task).id;\n\t\ttask.start_date = gantt.getClosestWorkTime({\n\t\t\tdir: \"future\",\n\t\t\tdate: task.start_date,\n\t\t\tunit: gantt.config.duration_unit,\n\t\t\ttask: task\n\t\t});\n\t\ttask.end_date = gantt.calculateEndDate(task);\n\t}\n\n\tgantt.isSummaryTask = function (task) {\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\"+task+\" of gantt.isSummaryTask. Task object was expected\");\n\n\t\tvar mode = getTaskTimingMode(task);\n\n\t\treturn !!(mode.$no_end || mode.$no_start);\n\t};\n\n// downward calculation of project duration\n\tgantt.resetProjectDates = function (task) {\n\t\tvar taskMode = getTaskTimingMode(task);\n\t\tif (taskMode.$no_end || taskMode.$no_start) {\n\t\t\tvar dates = this.getSubtaskDates(task.id);\n\t\t\tassignProjectDates.call(this, task, dates.start_date, dates.end_date);\n\t\t}\n\t};\n\n\tfunction assignProjectDates(task, from, to) {\n\t\tvar taskTiming = getTaskTimingMode(task);\n\t\tif (taskTiming.$no_start) {\n\t\t\tif (from && from != Infinity) {\n\t\t\t\ttask.start_date = new Date(from);\n\t\t\t} else {\n\t\t\t\ttask.start_date = getDefaultTaskDate(task, this.getParent(task));\n\t\t\t}\n\t\t}\n\n\t\tif (taskTiming.$no_end) {\n\t\t\tif (to && to != -Infinity) {\n\t\t\t\ttask.end_date = new Date(to);\n\t\t\t} else {\n\t\t\t\ttask.end_date = this.calculateEndDate({\n\t\t\t\t\tstart_date: task.start_date,\n\t\t\t\t\tduration: this.config.duration_step,\n\t\t\t\t\ttask: task\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\n\t\t\tthis._init_task_timing(task);\n\t\t}\n\t}\n\n\tgantt.getSubtaskDuration = function (task_id) {\n\t\tvar res = 0,\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\n\n\t\tthis.eachTask(function (child) {\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\n\t\t\t\treturn;\n\n\t\t\tres += child.duration;\n\t\t}, root);\n\n\t\treturn res;\n\t};\n\n\tgantt.getSubtaskDates = function (task_id) {\n\t\tvar min = null,\n\t\t\tmax = null,\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\n\n\t\tthis.eachTask(function (child) {\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\n\t\t\t\treturn;\n\n\t\t\tif ((child.start_date && !child.$no_start) && (!min || min > child.start_date.valueOf()))\n\t\t\t\tmin = child.start_date.valueOf();\n\t\t\tif ((child.end_date && !child.$no_end) && (!max || max < child.end_date.valueOf()))\n\t\t\t\tmax = child.end_date.valueOf();\n\t\t}, root);\n\n\t\treturn {\n\t\t\tstart_date: min ? new Date(min) : null,\n\t\t\tend_date: max ? new Date(max) : null\n\t\t};\n\t};\n\n\n// upward calculation of project duration\n\tgantt._update_parents = function (taskId, silent) {\n\t\tif (!taskId) return;\n\n\t\tvar task = this.getTask(taskId);\n\t\tvar pid = this.getParent(task);\n\n\t\tvar taskTiming = getTaskTimingMode(task);\n\n\t\tvar has_changed = true;\n\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\n\t\t\tvar oldStart = task.start_date.valueOf(),\n\t\t\t\toldEnd = task.end_date.valueOf();\n\n\t\t\tgantt.resetProjectDates(task);\n\t\t\t\n\t\t\t// not refresh parent projects if dates hasn't changed\n\t\t\tif (oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\n\t\t\t\thas_changed = false;\n\t\t\t}\n\n\t\t\tif (has_changed && !silent) {\n\t\t\t\tthis.refreshTask(task.id, true);\n\t\t\t}\n\t\t}\n\n\n\t\tif (has_changed && pid && this.isTaskExists(pid)) {\n\t\t\tthis._update_parents(pid, silent);\n\t\t}\n\t};\n\n\tgantt.roundDate = function (config) {\n\t\tvar scale = gantt.getScale();\n\n\t\tif (helpers.isDate(config)) {\n\t\t\tconfig = {\n\t\t\t\tdate: config,\n\t\t\t\tunit: scale ? scale.unit : gantt.config.duration_unit,\n\t\t\t\tstep: scale ? scale.step : gantt.config.duration_step\n\t\t\t};\n\t\t}\n\t\tvar date = config.date,\n\t\t\tsteps = config.step,\n\t\t\tunit = config.unit;\n\n\t\tif(!scale){\n\t\t\treturn date;\n\t\t}\n\n\t\tvar upper, lower, colIndex;\n\t\tif (unit == scale.unit && steps == scale.step &&\n\t\t\t+date >= +scale.min_date && +date <= +scale.max_date) {\n\t\t\t//find date in time scale config\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\tif (!scale.trace_x[colIndex]) {\n\t\t\t\tcolIndex -= 1;// end of time scale\n\t\t\t\tif(scale.rtl){\n\t\t\t\t\tcolIndex = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlower = new Date(scale.trace_x[colIndex]);\n\t\t\tupper = gantt.date.add(lower, steps, unit);\n\t\t} else {\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\tupper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\n\t\t\tif (scale.trace_x[colIndex]) {\n\t\t\t\tupper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]);// end of time scale\n\t\t\t}\n\n\t\t\twhile (+upper < +date) {\n\t\t\t\tupper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\n\n\t\t\t\tvar tzOffset = upper.getTimezoneOffset();\n\n\t\t\t\tupper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\n\t\t\t\tif (gantt.date[unit + '_start'])\n\t\t\t\t\tupper = gantt.date[unit + '_start'](upper);\n\t\t\t}\n\n\t\t\tlower = gantt.date.add(upper, -1 * steps, unit);\n\n\t\t}\n\t\tif (config.dir && config.dir == 'future')\n\t\t\treturn upper;\n\t\tif (config.dir && config.dir == 'past')\n\t\t\treturn lower;\n\n\t\tif (Math.abs(date - lower) < Math.abs(upper - date)) {\n\t\t\treturn lower;\n\t\t} else {\n\t\t\treturn upper;\n\t\t}\n\n\t};\n\n\tgantt.correctTaskWorkTime = function (task) {\n\t\tif (gantt.config.work_time && gantt.config.correct_work_time) {\n\t\t\tif (!this.isWorkTime(task.start_date, undefined, task)) {\n\t\t\t\ttask.start_date = this.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t} else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t}\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\n\t\tgantt._init_task_timing(task);\n\t\treturn true;\n\t});\n\tgantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\n\t\tgantt._init_task_timing(task);\n\t\treturn true;\n\t});\n\n\tgantt.attachEvent(\"onAfterTaskMove\", function (id, parent, tindex) {\n\t\tgantt._init_task_timing(gantt.getTask(id));\n\t\treturn true;\n\t});\n\n};","// TODO: rework public api for date methods\nvar utils = require(\"../../utils/utils\");\n\nvar createWorkTimeFacade = function(calendarManager, timeCalculator){\n\treturn {\n\t\tgetWorkHours: function (date) {\n\t\t\treturn timeCalculator.getWorkHours(date);\n\t\t},\n\n\t\tsetWorkTime: function (config) {\n\t\t\treturn timeCalculator.setWorkTime(config);\n\t\t},\n\n\t\tunsetWorkTime: function (config) {\n\t\t\ttimeCalculator.unsetWorkTime(config);\n\t\t},\n\n\t\tisWorkTime: function (date, unit, task) {\n\t\t\treturn timeCalculator.isWorkTime(date, unit, task);\n\t\t},\n\n\t\tgetClosestWorkTime: function (config) {\n\t\t\treturn timeCalculator.getClosestWorkTime(config);\n\t\t},\n\n\t\tcalculateDuration: function (start_date, end_date, task) {\n\t\t\treturn timeCalculator.calculateDuration(start_date, end_date, task);\n\t\t},\n\t\t_hasDuration: function (start_date, end_date, task) {\n\t\t\treturn timeCalculator.hasDuration(start_date, end_date, task);\n\t\t},\n\n\t\tcalculateEndDate: function (start, duration, unit, task) {\n\t\t\treturn timeCalculator.calculateEndDate(start, duration, unit, task);\n\t\t},\n\n\t\tmergeCalendars: utils.bind(calendarManager.mergeCalendars, calendarManager),\n\t\tcreateCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\n\t\taddCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\n\t\tgetCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\n\t\tgetCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\n\t\tgetResourceCalendar: utils.bind(calendarManager.getResourceCalendar, calendarManager),\n\t\tgetTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\n\t\tdeleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\n\t};\n};\n\n\nmodule.exports = { create: createWorkTimeFacade };","function CalendarDisabledTimeStrategy(gantt, argumentsHelper){\n\tthis.argumentsHelper = argumentsHelper;\n\tthis.$gantt = gantt;\n}\n\nCalendarDisabledTimeStrategy.prototype = {\n\tgetWorkHours: function () {\n\t\treturn [0, 24];\n\t},\n\tsetWorkTime: function () {\n\t\treturn true;\n\t},\n\tunsetWorkTime: function () {\n\t\treturn true;\n\t},\n\tisWorkTime: function () {\n\t\treturn true;\n\t},\n\tgetClosestWorkTime: function (config) {\n\t\tvar config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\t\treturn config.date;\n\t},\n\n\tcalculateDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\treturn this._calculateDuration(from, to, unit, step);\n\t},\n\t_calculateDuration: function (start, end, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\tvar fixedUnits = {\n\t\t\t\"week\": 1000 * 60 * 60 * 24 * 7,\n\t\t\t\"day\": 1000 * 60 * 60 * 24,\n\t\t\t\"hour\": 1000 * 60 * 60,\n\t\t\t\"minute\": 1000 * 60\n\t\t};\n\n\t\tvar res = 0;\n\t\tif (fixedUnits[unit]) {\n\t\t\tres = Math.round((end - start) / (step * fixedUnits[unit]));\n\t\t} else {\n\t\t\tvar from = new Date(start),\n\t\t\t\tto = new Date(end);\n\t\t\twhile (from.valueOf() < to.valueOf()) {\n\t\t\t\tres += 1;\n\t\t\t\tfrom = dateHelper.add(from, step, unit);\n\t\t\t}\n\n\t\t\tif (from.valueOf() != end.valueOf()) {\n\t\t\t\tres += (to - from) / (dateHelper.add(from, step, unit) - from);\n\t\t\t}\n\t\t}\n\n\t\treturn Math.round(res);\n\t},\n\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit;\n\n\t\tif (!unit) {\n\t\t\treturn false;\n\t\t}\n\t\tfrom = new Date(from);\n\t\tto = new Date(to);\n\n\t\treturn (from.valueOf() < to.valueOf());\n\t},\n\n\thasWorkTime: function() {\n\t\treturn true;\n\t},\n\n\tequals: function(calendar) {\n\t\tif(!(calendar instanceof CalendarDisabledTimeStrategy)){\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tcalculateEndDate: function () {\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar start = config.start_date,\n\t\t\tduration = config.duration,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\treturn this.$gantt.date.add(start, step * duration, unit);\n\t}\n};\n\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\n\tNoWorkTimeCalendar = require(\"./strategy/no_work_time\");\n\nfunction TimeCalculator(calendarManager){\n\n\tthis.$gantt = calendarManager.$gantt;\n\tthis.argumentsHelper = createArgumentsHelper(this.$gantt);\n\tthis.calendarManager = calendarManager;\n\tthis.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\n}\n\nTimeCalculator.prototype = {\n\t_getCalendar: function (config) {\n\t\tvar calendar;\n\t\tif (!this.$gantt.config.work_time) {\n\t\t\tcalendar = this.$disabledCalendar;\n\t\t} else {\n\t\t\tvar manager = this.calendarManager;\n\t\t\tif (config.task) {\n\t\t\t\tcalendar = manager.getTaskCalendar(config.task);\n\t\t\t} else if (config.id) {\n\t\t\t\tcalendar = manager.getTaskCalendar(config);\n\t\t\t} else if (config.calendar) {\n\t\t\t\tcalendar = config.calendar;\n\t\t\t}\n\t\t\tif (!calendar) {\n\t\t\t\tcalendar = manager.getTaskCalendar();\n\t\t\t}\n\t\t}\n\t\treturn calendar;\n\t},\n\n\tgetWorkHours: function (config) {\n\t\tconfig = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.getWorkHours(config.date);\n\t},\n\n\tsetWorkTime: function (config, calendar) {\n\t\tconfig = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tif (!calendar)\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\n\t\treturn calendar.setWorkTime(config);\n\t},\n\n\tunsetWorkTime: function (config, calendar) {\n\t\tconfig = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tif (!calendar)\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\n\t\treturn calendar.unsetWorkTime(config);\n\t},\n\tisWorkTime: function (date, unit, task, calendar) {\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tcalendar = this._getCalendar(config);\n\t\treturn calendar.isWorkTime(config);\n\t},\n\tgetClosestWorkTime: function (config) {\n\t\tconfig = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.getClosestWorkTime(config);\n\t},\n\n\tcalculateDuration: function () { // start_date_date, end_date, task\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n\n\t\tvar calendar = this._getCalendar(config);\n\t\treturn calendar.calculateDuration(config);\n\t},\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.hasDuration(config);\n\t},\n\tcalculateEndDate: function (config) { // start_date, duration, unit, task\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\t\treturn calendar.calculateEndDate(config);\n\t}\n};\n\nmodule.exports = TimeCalculator;\n\n","module.exports = function() {\n\tfunction getResourcesCalendarKey(resourceAssignments){\n\t\treturn resourceAssignments.map(function(res){\n\t\t\tif(res && res.resource_id){\n\t\t\t\treturn res.resource_id;\n\t\t\t} else {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}).sort().join(\"-\");\n\t}\n\n\tvar dynamicCalendars = {};\n\n\tfunction mergeResourceCalendars(resourceAssignments, manager){\n\t\treturn manager.mergeCalendars(resourceAssignments.map(function(assignment){\n\t\t\tvar resourceId = (assignment && assignment.resource_id) ? assignment.resource_id : assignment;\n\t\t\treturn manager.getResourceCalendar(resourceId);\n\t\t}));\n\t}\n\tfunction getCalendarIdFromMultipleResources(resourceAssignments, manager){\n\t\tvar key = getResourcesCalendarKey(resourceAssignments);\n\t\tif(!resourceAssignments.length){\n\t\t\treturn null;\n\t\t}else if(resourceAssignments.length === 1){\n\t\t\treturn manager.getResourceCalendar(key).id;\n\t\t}else if (dynamicCalendars[key]){\n\t\t\treturn dynamicCalendars[key].id;\n\t\t} else {\n\t\t\tvar tempCalendar = mergeResourceCalendars(resourceAssignments, manager);\n\n\t\t\tdynamicCalendars[key] = tempCalendar;\n\t\t\treturn manager.addCalendar(tempCalendar);\n\t\t}\n\t}\n\n\treturn {\n\t\tgetCalendarIdFromMultipleResources: getCalendarIdFromMultipleResources\n\t};\n};","module.exports = {\n\tisLegacyResourceCalendarFormat: function(resourceCalendarsProperty){\n\t\t// modern format:\n\t\t//gantt.config.resource_calendars = {\n\t\t//\tresourceId: calendarId,\n\t\t//\tresourceId: calendarId,\n\t\t//\tresourceId: calendarId\n\t\t//\t};\n\t\t\n\t\t// legacy format:\n\t\t// gantt.config.resource_calendars = {\n\t\t//\t\"resourceProperty\": {\n\t\t//\t\tresourceId: calendarId,\n\t\t//\t\tresourceId: calendarId,\n\t\t//\t\tresourceId: calendarId\n\t\t//\t\t}\n\t\t//\t};\n\n\t\tif(!resourceCalendarsProperty){\n\t\t\treturn false;\n\t\t}\n\t\tfor(var i in resourceCalendarsProperty){\n\t\t\tif(resourceCalendarsProperty[i] && typeof resourceCalendarsProperty[i] === \"object\"){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetResourceProperty: function(config){\n\t\tvar resourceCalendarsConfig = config.resource_calendars;\n\t\tvar propertyName = config.resource_property;\n\t\tif(this.isLegacyResourceCalendarFormat(resourceCalendarsConfig)){\n\t\t\tfor(var i in config){\n\t\t\t\tpropertyName = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn propertyName;\n\t},\n\tgetCalendarIdFromLegacyConfig: function(task, config){\n\t\tif (config) {\n\t\t\tfor (var field in config) {\n\t\t\t\tvar resource = config[field];\n\t\t\t\tif (task[field]) {\n\t\t\t\t\tvar calendarId = resource[task[field]];\n\t\t\t\t\tif (calendarId) {\n\t\t\t\t\t\treturn calendarId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};","\n\nexport class LargerUnitsCache {\n\tprivate _weekCache: Map<number, number>;\n\tprivate _monthCache: Map<number, number>;\n\tprivate _calendar: any;\n\tconstructor(calendar) {\n\t\tthis.clear();\n\t\tthis._calendar = calendar;\n\t}\n\n\tgetMinutesPerWeek = (weekStart: Date) => {\n\t\tconst key = weekStart.valueOf();\n\n\t\tif(this._weekCache.has(key)){\n\t\t\treturn this._weekCache.get(key);\n\t\t}\n\n\t\tconst calendar = this._calendar;\n\t\tconst gantt = this._calendar.$gantt;\n\n\t\tlet minutesPerWeek = 0;\n\t\tlet start = gantt.date.week_start(new Date(weekStart));\n\t\tfor(let i = 0; i < 7; i++){\n\t\t\tminutesPerWeek += calendar.getHoursPerDay(start) * 60;\n\t\t\tstart = gantt.date.add(start, 1, \"day\");\n\t\t}\n\n\t\tthis._weekCache.set(key, minutesPerWeek);\n\t\treturn minutesPerWeek;\n\t}\n\n\tgetMinutesPerMonth = (monthStart: Date) => {\n\t\tconst key = monthStart.valueOf();\n\n\t\tif(this._monthCache.has(key)){\n\t\t\treturn this._monthCache.get(key);\n\t\t}\n\n\t\tconst calendar = this._calendar;\n\t\tconst gantt = this._calendar.$gantt;\n\n\t\tlet minutesPerMonth = 0;\n\t\tlet start = gantt.date.week_start(new Date(monthStart));\n\t\tconst nextMonth = gantt.date.add(start, 1, \"month\").valueOf();\n\t\twhile(start.valueOf() < nextMonth){\n\t\t\tminutesPerMonth += calendar.getHoursPerDay(start) * 60;\n\t\t\tstart = gantt.date.add(start, 1, \"day\");\n\t\t}\n\n\t\tthis._monthCache.set(key, minutesPerMonth);\n\t\treturn minutesPerMonth;\n\t}\n\n\tclear = (): void => {\n\t\tthis._weekCache = new Map<number, number>();\n\t\tthis._monthCache = new Map<number, number>();\n\t}\n}","import { IWorkUnitCache } from \"./workunit_cache_interface\";\n\nexport class WorkUnitsObjectCache implements IWorkUnitCache {\n\tprivate _cache: any;\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tgetItem(unit: string, timestamp: string): number|boolean {\n\t\tconst cache = this._cache;\n\t\tif (cache && cache[unit]) {\n\t\t\tconst units = cache[unit];\n\n\t\t\tif (units[timestamp] !== undefined) {\n\t\t\t\treturn units[timestamp];\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\tsetItem(unit: string, timestamp: string, value: boolean): void {\n\t\tif (!unit || !timestamp) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this._cache;\n\n\t\tif (!cache) {\n\t\t\treturn;\n\t\t}\n\t\tif (!cache[unit]) {\n\t\t\tcache[unit] = {};\n\t\t}\n\t\tcache[unit][timestamp] = value;\n\t}\n\tclear(): void{\n\t\tthis._cache = {};\n\t}\n}","\n\nimport { IWorkUnitCache } from \"./workunit_cache_interface\";\n\nexport class WorkUnitsMapCache implements IWorkUnitCache {\n\tprivate _cache: Map<string, Map<string, boolean>>;\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tgetItem(unit: string, timestamp: string): number|boolean {\n\t\tif (this._cache.has(unit)) {\n\t\t\tconst unitCache = this._cache.get(unit);\n\t\t\tif (unitCache.has(timestamp)) {\n\t\t\t\treturn unitCache.get(timestamp);\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\tsetItem(unit: string, timestamp: string, value: boolean): void {\n\t\tif (!unit || !timestamp) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this._cache;\n\n\t\tlet unitCache;\n\t\tif (!cache.has(unit)) {\n\t\t\tunitCache = new Map<string, boolean>();\n\t\t\tcache.set(unit, unitCache);\n\t\t} else {\n\t\t\tunitCache = cache.get(unit);\n\t\t}\n\t\tunitCache.set(timestamp, value);\n\t}\n\tclear(): void{\n\t\tthis._cache = new Map<string, Map<string, boolean>>();\n\t}\n}","var createCacheObject = require(\"./work_unit_cache\").createCacheObject;\nvar LargerUnitsCache = require(\"./work_unit_cache\").LargerUnitsCache;\nvar utils = require(\"../../../utils/utils\");\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper) {\n\tthis.argumentsHelper = argumentsHelper;\n\tthis.$gantt = gantt;\n\tthis._workingUnitsCache = createCacheObject();\n\tthis._largeUnitsCache = new LargerUnitsCache(this);\n\tthis._worktime = null;\n\tthis._cached_timestamps = {};\n\tthis._cached_timestamps_count = 0;\n}\n\nCalendarWorkTimeStrategy.prototype = {\n\tunits: [\n\t\t\"year\",\n\t\t\"month\",\n\t\t\"week\",\n\t\t\"day\",\n\t\t\"hour\",\n\t\t\"minute\"\n\t],\n\t// cache previously calculated worktime\n\t_getUnitOrder: function (unit) {\n\t\tfor (var i = 0, len = this.units.length; i < len; i++) {\n\t\t\tif (this.units[i] == unit)\n\t\t\t\treturn i;\n\t\t}\n\t},\n\t_resetTimestampCache: function(){\n\t\tthis._cached_timestamps = {};\n\t\tthis._cached_timestamps_count = 0;\n\t},\n\t_timestamp: function (settings) {\n\t\t// minor optimization, store calculated timestamps to reduce computations\n\t\t// reset cache when number of keys exceeds large number where key lookup may became more expensive than the recalculation\n\t\tif(this._cached_timestamps_count > 1000000){\n\t\t\tthis._resetTimestampCache();\n\t\t}\n\n\t\tvar timestamp = null;\n\t\tif ((settings.day || settings.day === 0)) {\n\t\t\ttimestamp = settings.day;\n\t\t} else if (settings.date) {\n\t\t\tvar value = String(settings.date.valueOf());\n\t\t\tif(this._cached_timestamps[value]){\n\t\t\t\ttimestamp = this._cached_timestamps[value];\n\t\t\t}else{\n\t\t\t\t// 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\t\t\t\ttimestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n\t\t\t\tthis._cached_timestamps[value] = timestamp;\n\t\t\t\tthis._cached_timestamps_count++;\n\t\t\t}\n\n\t\t}\n\t\treturn timestamp;\n\t},\n\t_checkIfWorkingUnit: function (date, unit, order, skipLookup) {\n\t\tif(!skipLookup){\n\t\t\tif (order === undefined) {\n\t\t\t\torder = this._getUnitOrder(unit);\n\t\t\t}\n\n\t\t\t// disable worktime check for custom time units\n\t\t\tif (order === undefined) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (order) {\n\t\t\t\t//check if bigger time unit is a work time (hour < day < month...)\n\t\t\t\t//i.e. don't check particular hour if the whole day is marked as not working\n\t\t\t\tif (!this._isWorkTime(date, this.units[order - 1], order - 1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!this[\"_is_work_\" + unit])\n\t\t\treturn true;\n\t\treturn this[\"_is_work_\" + unit](date);\n\t},\n\t//checkings for particular time units\n\t//methods for month-year-week can be defined, otherwise always return 'true'\n\t_is_work_day: function (date) {\n\t\tvar val = this._getWorkHours(date);\n\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.length > 0;\n\t\t}\n\t\treturn false;\n\t},\n\t_is_work_hour: function (date) {\n\t\tvar hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\t\tvar value = date.getHours();\n\t\tfor (var i = 0; i < hours.length; i++) {\n\t\t\tif(value >= hours[i].startHour && value < hours[i].endHour){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_getTimeOfDayStamp: function(date, dayEnd) {\n\t\tvar hours = date.getHours();\n\t\tif(!date.getHours() && !date.getMinutes() && dayEnd){\n\t\t\thours = 24;\n\t\t}\n\t\treturn hours * 60 * 60 + date.getMinutes() * 60;\n\t},\n\n\t_is_work_minute: function(date){\n\t\tvar hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\t\tvar checkTime = this._getTimeOfDayStamp(date);\n\t\tfor (var i = 0; i < hours.length; i++) {\n\t\t\tif(checkTime >= hours[i].start && checkTime < hours[i].end){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t_internDatesPull: {},\n\t_nextDate: function (start, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\treturn dateHelper.add(start, step, unit);\n\n\t\t/*var start_value = +start,\n\t\t\tkey = unit + \"_\" + step;\n\t\tvar interned = this._internDatesPull[key];\n\t\tif(!interned){\n\t\t\tinterned = this._internDatesPull[key] = {};\n\t\t}\n\t\tvar calculated;\n\t\tif(!interned[start_value]){\n\t\t\tinterned[start_value] = calculated = dateHelper.add(start, step, unit);\n\t\t\t//interned[start_value] = dateHelper.add(start, step, unit);\n\t\t}\n\t\treturn calculated || interned[start_value];*/\n\t},\n\t_getWorkUnitsBetweenGeneric: function (from, to, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\t\tvar units = 0;\n\n\n\t\tvar next = null;\n\t\tvar stepStart,\n\t\t\tstepEnd;\n\n\t\t// calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n\t\t// and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n\t\t// durations must be rounded later\n\t\tvar checkFirst = false;\n\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\n\t\tif (stepStart.valueOf() != start.valueOf()) {\n\t\t\tcheckFirst = true;\n\t\t}\n\t\tvar checkLast = false;\n\t\tstepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\t\tif (stepEnd.valueOf() != to.valueOf()) {\n\t\t\tcheckLast = true;\n\t\t}\n\n\t\tvar isLastStep = false;\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tnext = this._nextDate(start, unit, step);\n\t\t\tisLastStep = (next.valueOf() > end.valueOf());\n\n\t\t\tif (this._isWorkTime(start, unit)) {\n\t\t\t\tif (checkFirst || (checkLast && isLastStep)) {\n\t\t\t\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\n\t\t\t\t\tstepEnd = dateHelper.add(stepStart, step, unit);\n\t\t\t\t}\n\n\t\t\t\tif (checkFirst) {\n\t\t\t\t\tcheckFirst = false;\n\t\t\t\t\tnext = this._nextDate(stepStart, unit, step);\n\t\t\t\t\tunits += ((stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\n\t\t\t\t} else if (checkLast && isLastStep) {\n\t\t\t\t\tcheckLast = false;\n\t\t\t\t\tunits += ((end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\n\n\t\t\t\t} else {\n\t\t\t\t\tunits++;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tvar unitOrder = this._getUnitOrder(unit);\n\t\t\t\tvar biggerTimeUnit = this.units[unitOrder - 1];\n\t\t\t\tif(biggerTimeUnit && !this._isWorkTime(start, biggerTimeUnit)){\n\t\t\t\t\tnext = this._getClosestWorkTimeFuture(start, biggerTimeUnit);\n\t\t\t\t}\n\t\t\t}\n\t\t\tstart = next;\n\t\t}\n\t\treturn units;\n\t},\n\n\t_getMinutesPerHour: function (date) {\n\t\tvar hourStart = this._getTimeOfDayStamp(date);\n\t\tvar hourEnd = this._getTimeOfDayStamp(this._nextDate(date, \"hour\", 1));\n\t\tif (hourEnd === 0){\n\t\t\thourEnd = 24 * 60 * 60;\n\t\t}\n\t\tvar worktimes = this._getWorkHours(date);\n\n\t\tfor(var i = 0; i < worktimes.length; i++){\n\t\t\tvar interval = worktimes[i];\n\t\t\tif(hourStart >= interval.start && hourEnd <= interval.end){\n\t\t\t\treturn 60;// hour inside a working interval, all hour is a work hour\n\t\t\t}else if(hourStart < interval.end && hourEnd > interval.start){\n\t\t\t\t// hour is partially work time\n\t\t\t\tvar duration = Math.min(hourEnd, interval.end) - Math.max(hourStart, interval.start);\n\t\t\t\treturn duration / 60;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\n\t_getMinutesPerDay: function (date) {\n\t\tvar hours = this._getWorkHours(date);\n\t\tvar res = 0;\n\t\thours.forEach(function(interval){\n\t\t\tres+= interval.durationMinutes;\n\t\t});\n\t\treturn res;\n\t},\n\tgetHoursPerDay: function (date) {\n\t\tvar hours = this._getWorkHours(date);\n\t\tvar res = 0;\n\t\thours.forEach(function(interval){\n\t\t\tres+= interval.durationHours;\n\t\t});\n\t\treturn res;\n\t},\n\t_getWorkUnitsForRange: function (from, to, unit, step) {\n\t\tvar total = 0;\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\n\t\tvar getUnitsPerDay;\n\t\tif (unit == \"minute\") {\n\t\t\tgetUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\n\t\t} else {\n\t\t\tgetUnitsPerDay = utils.bind(this.getHoursPerDay, this);\n\t\t}\n\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tif(end - start > 1000*60*60*24*32 && start.getDate() === 0) {\n\t\t\t\tvar units = this._largeUnitsCache.getMinutesPerMonth(start);\n\t\t\t\tif(unit == \"hour\"){\n\t\t\t\t\tunits = units / 60;\n\t\t\t\t}\n\t\t\t\ttotal += units;\n\t\t\t\tstart = this.$gantt.date.add(start, 1, \"month\");\n\t\t\t\tcontinue;\n\t\t\t}else if(end - start > 1000*60*60*24*16) {\n\t\t\t\tvar weekStart = this.$gantt.date.week_start(new Date(start));\n\t\t\t\tif(start.valueOf() === weekStart.valueOf()){\n\t\t\t\t\tvar units = this._largeUnitsCache.getMinutesPerWeek(start);\n\t\t\t\t\tif(unit == \"hour\"){\n\t\t\t\t\t\tunits = units / 60;\n\t\t\t\t\t}\n\t\t\t\t\ttotal += units;\n\t\t\t\t\tstart = this.$gantt.date.add(start, 7, \"day\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t//\tif (this._isWorkTime(start, \"day\")) {\n\t\t\ttotal += getUnitsPerDay(start);\n\t\t//\t}\n\t\t\tstart = this._nextDate(start, \"day\", 1);\n\t\t}\n\n\t\treturn total / step;\n\t},\n\n\n\t_getMinutesBetweenSingleDay: function(from, to){\n\t\tvar range = this._getIntervalTimestamp(from, to);\n\t\tvar worktimes = this._getWorkHours(from);\n\t\tvar result = 0;\n\n\t\tfor(var i = 0; i < worktimes.length; i++){\n\t\t\tvar interval = worktimes[i];\n\t\t\tif(range.end >= interval.start && range.start <= interval.end){\n\t\t\t\tvar minuteFrom = Math.max(interval.start, range.start);\n\t\t\t\tvar minuteTo = Math.min(interval.end, range.end);\n\n\t\t\t\tresult += (minuteTo - minuteFrom) / 60;\n\t\t\t\trange.start = minuteTo;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.floor(result);\n\t},\n\n\t_getMinutesBetween: function(from, to, unit, step){\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\tvar firstDayStart = new Date(start);\n\t\tvar firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n\t\tif (end.valueOf() <= firstDayEnd.valueOf()) {\n\t\t\treturn this._getMinutesBetweenSingleDay(from, to);\n\t\t} else {\n\n\t\t\tvar lastDayStart = this.$gantt.date.day_start(new Date(end));\n\t\t\tvar lastDayEnd = end;\n\n\t\t\tvar startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd);\n\t\t\tvar endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd);\n\n\t\t\tvar rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\t\t\tvar total = startPart + rangePart + endPart;\n\n\t\t\treturn total;\n\t\t}\n\t},\n\t// optimized method for calculating work units duration of large time spans\n\t// implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\n\t_getHoursBetween: function (from, to, unit, step) {\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\tvar firstDayStart = new Date(start);\n\t\tvar firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n\t\tif (end.valueOf() <= firstDayEnd.valueOf()) {\n\t\t\treturn Math.round(this._getMinutesBetweenSingleDay(from, to) / 60);\n\t\t} else {\n\n\t\t\tvar lastDayStart = this.$gantt.date.day_start(new Date(end));\n\t\t\tvar lastDayEnd = end;\n\n\t\t\tvar startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd, unit, step) / 60;\n\t\t\tvar endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd, unit, step) / 60;\n\n\t\t\tvar rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\t\t\tvar total = startPart + rangePart + endPart;\n\n\t\t\treturn Math.round(total);\n\t\t}\n\t},\n\n\tgetConfig: function () {\n\t\treturn this._worktime;\n\t},\n\t_setConfig: function (settings) {\n\t\tthis._worktime = settings;\n\t\tthis._parseSettings();\n\t\tthis._workingUnitsCache.clear();\n\t\tthis._largeUnitsCache.clear();\n\t},\n\t_parseSettings: function() {\n\t\tvar settings = this.getConfig();\n\t\tsettings.parsed = {\n\t\t\tdates: {},\n\t\t\thours: null\n\t\t};\n\n\t\tsettings.parsed.hours = this._parseHours(settings.hours);\n\t\tfor(var i in settings.dates){\n\t\t\tsettings.parsed.dates[i] = this._parseHours(settings.dates[i]);\n\t\t}\n\t},\n\n\t_tryChangeCalendarSettings: function (payload) {\n\t\tvar backup = JSON.stringify(this.getConfig());\n\t\tpayload();\n\t\tif (!this.hasWorkTime()) {\n\t\t//\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n\t\t\tthis._setConfig(JSON.parse(backup));\n\t\t\tthis._workingUnitsCache.clear();\n\t\t\tthis._largeUnitsCache.clear();\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\n\t},\n\n\t_arraysEqual: function(a, b){\n\t\tif (a === b) return true;\n\t\tif (!a || !b) return false;\n\t\tif (a.length != b.length) return false;\n\n\t\tfor (var i = 0; i < a.length; ++i) {\n\t\t\tif (a[i] !== b[i]) return false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tequals: function (calendar) {\n\t\tif(!(calendar instanceof CalendarWorkTimeStrategy)){\n\t\t\treturn false;\n\t\t}\n\n\t\tvar mySettings = this.getConfig();\n\t\tvar thatSettings = calendar.getConfig();\n\n\t\tif (!this._arraysEqual(mySettings.hours, thatSettings.hours)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar myDays = Object.keys(mySettings.dates);\n\t\tvar otherDates = Object.keys(thatSettings.dates);\n\t\tmyDays.sort();\n\t\totherDates.sort();\n\n\t\tif (!this._arraysEqual(myDays, otherDates)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor(var i = 0; i < myDays.length; i++){\n\t\t\tvar timestamp = myDays[i];\n\t\t\tvar myHours = mySettings.dates[timestamp];\n\t\t\tvar otherHours = mySettings.dates[timestamp];\n\n\t\t\t// day settings not equal\n\t\t\tif(myHours !== otherHours &&\n\t\t\t\t// but still can be two arrays with the equivalent hour settings\n\t\t\t\t!(Array.isArray(myHours) && Array.isArray(otherHours) && this._arraysEqual(myHours, otherHours))\n\t\t\t\t){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\tgetWorkHours: function () {\n\t\tvar config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\t\treturn this._getWorkHours(config.date, false);\n\t},\n\t_getWorkHours: function (date, parsed) {\n\t\tvar calendar = this.getConfig();\n\t\tif(parsed !== false){\n\t\t\tcalendar = calendar.parsed;\n\t\t}\n\n\t\tif(!date){\n\t\t\treturn calendar.hours;\n\t\t}\n\n\t\tvar t = this._timestamp({date: date});\n\t\tvar hours = true;\n\n\t\tif (calendar.dates[t] !== undefined) {\n\t\t\thours = calendar.dates[t];//custom day\n\t\t} else if (calendar.dates[date.getDay()] !== undefined) {\n\t\t\thours = calendar.dates[date.getDay()];//week day\n\t\t}\n\t\tif (hours === true) {\n\t\t\treturn calendar.hours;\n\t\t} else if (hours) {\n\t\t\treturn hours;\n\t\t}\n\t\treturn [];\n\t},\n\n\t_getIntervalTimestamp: function(from, to){\n\t\tvar res = {\n\t\t\tstart: 0,\n\t\t\tend: 0\n\t\t};\n\n\t\tres.start = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\t\tvar endHours = to.getHours();\n\t\tif(!endHours && !to.getMinutes() && !to.getSeconds() && from.valueOf() < to.valueOf()){\n\t\t\tendHours = 24;\n\t\t}\n\t\tres.end = endHours * 60 * 60 + to.getMinutes() * 60 + to.getSeconds();\n\t\treturn res;\n\t},\n\n\t_parseHours: function(hours) {\n\t\tif(Array.isArray(hours)){\n\n\t\t\tvar timestampRanges = [];// worktime as seconds range\n\t\t\thours.forEach(function(hour){\n\t\t\t\tif(typeof hour === \"number\"){\n\t\t\t\t\ttimestampRanges.push(hour*60*60);\n\t\t\t\t}else if(typeof hour === \"string\") {\n\t\t\t\t\t// \"12-13\", or \"12:00-13:00\", or \"12:00:00-13:00:00\"\n\t\t\t\t\thour.split(\"-\").map(function(time){\n\t\t\t\t\t\treturn time.trim();\n\t\t\t\t\t}).forEach(function(part){\n\t\t\t\t\t\tvar parsed = part.split(\":\").map(function(time){\n\t\t\t\t\t\t\treturn time.trim();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tvar value = parseInt(parsed[0]*60*60);\n\t\t\t\t\t\tif(parsed[1]){\n\t\t\t\t\t\t\tvalue += parseInt(parsed[1]*60);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(parsed[2]){\n\t\t\t\t\t\t\tvalue += parseInt(parsed[2]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttimestampRanges.push(value);\n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar timerangeConfig = [];\n\t\t\tfor (var i = 0; i < timestampRanges.length; i += 2) {\n\t\t\t\tvar start = timestampRanges[i];\n\t\t\t\tvar end = timestampRanges[i + 1];\n\t\t\t\tvar duration = end - start;\n\n\t\t\t\ttimerangeConfig.push({\n\t\t\t\t\tstart: start,\n\t\t\t\t\tend: end,\n\t\t\t\t\tstartHour: Math.floor(start / (60*60)),\n\t\t\t\t\tstartMinute: Math.floor(start / (60)),\n\t\t\t\t\tendHour: Math.ceil(end / (60*60)),\n\t\t\t\t\tendMinute: Math.ceil(end / (60)),\n\t\t\t\t\tdurationSeconds: duration,\n\t\t\t\t\tdurationMinutes: duration/60,\n\t\t\t\t\tdurationHours: duration/(60 * 60)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn timerangeConfig;\n\t\t} else {\n\t\t\treturn hours;\n\t\t}\n\t},\n\n\tsetWorkTime: function (settings) {\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\n\t\t\tvar hours = settings.hours !== undefined ? settings.hours : true;\n\t\t\tvar timestamp = this._timestamp(settings);\n\t\t\tvar calendarConfig = this.getConfig();\n\t\t\tif (timestamp !== null) {\n\t\t\t\tcalendarConfig.dates[timestamp] = hours;\n\t\t\t} else {\n\t\t\t\tcalendarConfig.hours = hours;\n\t\t\t}\n\n\t\t\tthis._parseSettings();\n\t\t\tthis._workingUnitsCache.clear();\n\t\t\tthis._largeUnitsCache.clear();\n\t\t}, this));\n\t},\n\n\tunsetWorkTime: function (settings) {\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\n\t\t\tif (!settings) {\n\t\t\t\tthis.reset_calendar();\n\t\t\t} else {\n\n\t\t\t\tvar timestamp = this._timestamp(settings);\n\n\t\t\t\tif (timestamp !== null) {\n\t\t\t\t\tdelete this.getConfig().dates[timestamp];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Clear work units cache\n\t\t\tthis._workingUnitsCache.clear();\n\t\t\tthis._largeUnitsCache.clear();\n\t\t}, this));\n\t},\n\n\t_isWorkTime: function (date, unit, order) {\n\t\t// Check if this item has in the cache\n\n\t\t// use string keys\n\t\tvar dateKey = String(date.valueOf());\n\t\tvar is_work_unit = -1;this._workingUnitsCache.getItem(unit, dateKey);\n\n\t\tif (is_work_unit == -1) {\n\t\t\t// calculate if not cached\n\t\t\tis_work_unit = this._checkIfWorkingUnit(date, unit, order);\n\t\t//\tthis._workingUnitsCache.setItem(unit, dateKey, is_work_unit);\n\t\t}\n\n\t\treturn is_work_unit;\n\t},\n\n\tisWorkTime: function () {\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply( this.argumentsHelper, arguments);\n\t\treturn this._isWorkTime(config.date, config.unit);\n\t},\n\n\tcalculateDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\n\n\t\tif (!config.unit) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n\t},\n\n\t_calculateDuration: function (from, to, unit, step) {\n\t\tvar res = 0;\n\n\t\tvar sign = 1;\n\t\tif(from.valueOf() > to.valueOf()){\n\t\t\tvar tmp = to;\n\t\t\tto = from;\n\t\t\tfrom = tmp;\n\t\t\tsign = -1;\n\t\t}\n\n\t\tif (unit == \"hour\" && step == 1) {\n\t\t\tres = this._getHoursBetween(from, to, unit, step);\n\t\t} else if(unit == \"minute\" && step == 1){\n\t\t\t// quick calculation for minutes with 1 minute step\n\t\t\tres = this._getMinutesBetween(from, to, unit, step);\n\t\t} else {\n\t\t\tres = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n\t\t}\n\n\t\t// getWorkUnits.. returns decimal durations\n\t\treturn sign * Math.round(res);\n\t},\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\n\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tif (!unit) {\n\t\t\treturn false;\n\t\t}\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tif (this._isWorkTime(start, unit))\n\t\t\t\treturn true;\n\t\t\tstart = this._nextDate(start, unit, step);\n\t\t}\n\t\treturn false;\n\t},\n\n\tcalculateEndDate: function () {\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply( this.argumentsHelper, arguments);\n\n\t\tvar from = config.start_date,\n\t\t\tduration = config.duration,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tif (!unit)\n\t\t\treturn false;\n\n\t\tvar mult = (config.duration >= 0) ? 1 : -1;\n\t\tduration = Math.abs(duration * 1);\n\t\treturn this._calculateEndDate(from, duration, unit, step * mult);\n\t},\n\n\t_calculateEndDate: function (from, duration, unit, step) {\n\t\tif (!unit)\n\t\t\treturn false;\n\n\t\tif (step == 1 && unit == \"minute\") {\n\t\t\treturn this._calculateMinuteEndDate(from, duration, step);\n\t\t} else if(step == -1 && unit == \"minute\") {\n\t\t\treturn this._subtractMinuteDate(from, duration, step);\n\t\t} else if (step == 1 && unit == \"hour\") {\n\t\t\treturn this._calculateHourEndDate(from, duration, step);\n\t\t} else {\n\t\t\tvar interval = this._addInterval(from, duration, unit, step, null);\n\t\t\treturn interval.end;\n\t\t}\n\t},\n\n\t_addInterval: function (start, duration, unit, step, stopAction) {\n\t\tvar added = 0;\n\t\tvar current = start;\n\t\twhile (added < duration && !(stopAction && stopAction(current))) {\n\t\t\tvar next = this._nextDate(current, unit, step);\n\t\t\tif (this._isWorkTime(step > 0 ? new Date(next.valueOf() - 1) : new Date(next.valueOf() + 1), unit)) {\n\t\t\t\tadded++;\n\t\t\t}\n\t\t\tcurrent = next;\n\t\t}\n\t\treturn {\n\t\t\tend: current,\n\t\t\tstart: start,\n\t\t\tadded: added\n\t\t};\n\t},\n\n\t_addHoursUntilDayEnd: function(from, duration) {\n\t\tvar dayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(from)), 1, \"day\");\n\t\tvar added = 0;\n\t\tvar left = duration;\n\n\t\tvar range = this._getIntervalTimestamp(from, dayEnd);\n\t\tvar worktimes = this._getWorkHours(from);\n\t\tfor(var i = 0; i < worktimes.length && added < duration; i++){\n\t\t\tvar interval = worktimes[i];\n\t\t\tif(range.end >= interval.start && range.start <= interval.end){\n\t\t\t\tvar minuteFrom = Math.max(interval.start, range.start);\n\t\t\t\tvar minuteTo = Math.min(interval.end, range.end);\n\t\t\t\tvar rangeHours = (minuteTo - minuteFrom) / (60 * 60);\n\t\t\t\tif(rangeHours > left){\n\t\t\t\t\trangeHours = left;\n\t\t\t\t\tminuteTo = minuteFrom + (left * 60 * 60);\n\t\t\t\t}\n\n\t\t\t\tvar addHours = Math.round((minuteTo - minuteFrom) / (60 * 60));\n\t\t\t\tadded += addHours;\n\t\t\t\tleft -= addHours;\n\t\t\t\trange.start = minuteTo;\n\t\t\t}\n\t\t}\n\n\t\tvar intervalEnd = dayEnd;\n\t\tif(added === duration){\n\t\t\tintervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n\t\t}\n\t\treturn {\n\t\t\tadded: added,\n\t\t\tend: intervalEnd\n\t\t};\n\t},\n\n\t_calculateHourEndDate: function (from, duration, step) {\n\t\tvar start = new Date(from),\n\t\tadded = 0;\n\t\tstep = step || 1;\n\t\tduration = Math.abs(duration * 1);\n\n\t\tvar interval = this._addHoursUntilDayEnd(start, duration);\n\t\tadded = interval.added;\n\t\tstart = interval.end;\n\n\t\tvar durationLeft = duration - added;\n\n\t\tif (durationLeft) {\n\t\t\tvar current = start;\n\t\t\twhile (added < duration) {\n\t\t\t\tvar next = this._nextDate(current, \"day\", step);\n\t\t\t\t// reset to day start in case DST switch happens in the process\n\t\t\t\tnext.setHours(0);\n\t\t\t\tnext.setMinutes(0);\n\t\t\t\tnext.setSeconds(0);\n\n\t\t\t\tvar hoursPerDay = 0;\n\t\t\t\tif(step > 0){\n\t\t\t\t\thoursPerDay = this.getHoursPerDay(new Date(next.valueOf() - 1));\n\t\t\t\t}else{\n\t\t\t\t\thoursPerDay = this.getHoursPerDay(new Date(next.valueOf() + 1));\n\t\t\t\t}\n\n\t\t\t\tif (added + hoursPerDay >= duration) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tadded += hoursPerDay;\n\t\t\t\t}\n\n\t\t\t\tcurrent = next;\n\t\t\t}\n\t\t\tstart = current;\n\t\t}\n\n\t\tif (added < duration) {\n\t\t\tvar durationLeft = duration - added;\n\t\t\tinterval = this._addHoursUntilDayEnd(start, durationLeft);\n\t\t\tstart = interval.end;\n\t\t}\n\n\t\treturn start;\n\t},\n\n\t_addMinutesUntilHourEnd: function(from, duration){\n\t\tif(from.getMinutes() === 0) {\n\t\t\t// already at hour end\n\t\t\treturn {\n\t\t\t\tadded: 0,\n\t\t\t\tend: new Date(from)\n\t\t\t};\n\t\t}\n\t\tvar hourEnd = this.$gantt.date.add(this.$gantt.date.hour_start(new Date(from)), 1, \"hour\");\n\t\tvar added = 0;\n\t\tvar left = duration;\n\n\t\tvar range = this._getIntervalTimestamp(from, hourEnd);\n\t\tvar worktimes = this._getWorkHours(from);\n\t\tfor(var i = 0; i < worktimes.length && added < duration; i++){\n\t\t\tvar interval = worktimes[i];\n\t\t\tif(range.end >= interval.start && range.start <= interval.end){\n\t\t\t\tvar minuteFrom = Math.max(interval.start, range.start);\n\t\t\t\tvar minuteTo = Math.min(interval.end, range.end);\n\t\t\t\tvar rangeMinutes = (minuteTo - minuteFrom) / 60;\n\t\t\t\tif(rangeMinutes > left){\n\t\t\t\t\trangeMinutes = left;\n\t\t\t\t\tminuteTo = minuteFrom + (left * 60);\n\t\t\t\t}\n\t\t\t\tvar addMinutes = Math.round((minuteTo - minuteFrom) / 60);\n\t\t\t\tleft -= addMinutes;\n\t\t\t\tadded += addMinutes;\n\t\t\t\trange.start = minuteTo;\n\t\t\t}\n\t\t}\n\n\t\tvar intervalEnd = hourEnd;\n\t\tif(added === duration){\n\t\t\tintervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n\t\t}\n\t\treturn {\n\t\t\tadded: added,\n\t\t\tend: intervalEnd\n\t\t};\n\t},\n\n\t_subtractMinutesUntilHourStart: function(from, duration){\n\t\tvar hourStart = this.$gantt.date.hour_start(new Date(from));\n\t\tvar added = 0;\n\t\tvar left = duration;\n\n\t\tvar hourStartTimestamp = hourStart.getHours() * 60 * 60 + hourStart.getMinutes() * 60 + hourStart.getSeconds();\n\t\tvar initialDateTimestamp = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\n\t\tvar worktimes = this._getWorkHours(from);\n\t\tfor(var i = worktimes.length - 1; i >= 0 && added < duration; i--){\n\t\t\tvar interval = worktimes[i];\n\t\t\tif(initialDateTimestamp > interval.start && hourStartTimestamp <= interval.end){\n\t\t\t\tvar minuteFrom = Math.min(initialDateTimestamp, interval.end);\n\t\t\t\tvar minuteTo = Math.max(hourStartTimestamp, interval.start);\n\n\t\t\t//\tvar minuteFrom = Math.max(interval.start, currentHour.start);\n\t\t\t//\tvar minuteTo = Math.min(interval.end, currentHour.end);\n\t\t\t\tvar rangeMinutes = (minuteFrom - minuteTo) / 60;\n\t\t\t\tif(rangeMinutes > left){\n\t\t\t\t\trangeMinutes = left;\n\t\t\t\t\tminuteTo = minuteFrom - (left * 60);\n\t\t\t\t}\n\t\t\t\tvar addMinutes = Math.abs(Math.round((minuteFrom - minuteTo) / 60));\n\t\t\t\tleft -= addMinutes;\n\t\t\t\tadded += addMinutes;\n\t\t\t\tinitialDateTimestamp = minuteTo;\n\t\t\t}\n\t\t}\n\n\t\tvar intervalEnd = hourStart;\n\t\tif(added === duration){\n\t\t\tintervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, initialDateTimestamp);\n\t\t}\n\t\treturn {\n\t\t\tadded: added,\n\t\t\tend: intervalEnd\n\t\t};\n\t},\n\n\t_subtractMinuteDate: function (from, duration, step) {\n\t\tvar start = new Date(from),\n\t\t\tadded = 0;\n\t\tstep = step || -1;\n\t\tduration = Math.abs(duration * 1);\n\t\tduration = Math.round(duration);\n\n\t\tvar addedInterval = this._subtractMinutesUntilHourStart(start, duration);\n\t\tadded += addedInterval.added;\n\n\t\tstart = addedInterval.end;\n\n\t\tvar calculatedDay = 0;\n\t\tvar daySchedule = [];\n\t\tvar minutesInDay = 0;\n\n\t\twhile (added < duration) {\n\t\t\tvar dayStart = this.$gantt.date.day_start(new Date(start));\n\n\t\t\t//var dayStartTimestamp = this.$gantt.date.day_start(new Date(start)).valueOf();\n\t\t\tvar dayEnd = new Date(dayStart.getFullYear(), dayStart.getMonth(), dayStart.getDate(), 23, 59,59,999).valueOf();\n\n\t\t\tif(dayEnd !== calculatedDay){\n\t\t\t\tdaySchedule = this._getWorkHours(start);\n\t\t\t\tminutesInDay = this._getMinutesPerDay(start);\n\t\t\t\tcalculatedDay = dayEnd;\n\t\t\t}\n\n\t\t\tvar left = duration - added;\n\t\t\tvar timestamp = this._getTimeOfDayStamp(start);\n\n\t\t\tif(!daySchedule.length || !minutesInDay){\n\t\t\t\tstart = this.$gantt.date.add(start, -1, \"day\");\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(daySchedule[daySchedule.length - 1].end <= timestamp){\n\t\t\t\tif(left > minutesInDay){\n\t\t\t\t\tadded += minutesInDay;\n\t\t\t\t\tstart = this.$gantt.date.add(start, -1, \"day\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar isWorkHour = false;\n\t\t\tvar workInterval = null;\n\t\t\tfor(var i = daySchedule.length - 1; i >= 0; i--){\n\t\t\t\tif(daySchedule[i].start < timestamp - 1 && daySchedule[i].end >= timestamp - 1){\n\t\t\t\t\tisWorkHour = true;\n\t\t\t\t\tworkInterval = daySchedule[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(isWorkHour){\n\n\t\t\t\tif(timestamp === workInterval.end && left >= workInterval.durationMinutes){\n\t\t\t\t\tadded += workInterval.durationMinutes;\n\t\t\t\t\tstart = this.$gantt.date.add(start, -workInterval.durationMinutes, \"minute\");\n\t\t\t\t}else if(left <= (timestamp/60 - workInterval.startMinute)){\n\t\t\t\t\tadded += left;\n\t\t\t\t\tstart = this.$gantt.date.add(start, -left, \"minute\");\n\t\t\t\t}else{\n\t\t\t\t\tvar minutesInHour = this._getMinutesPerHour(start);\n\t\t\t\t\tif(minutesInHour <= left){\n\t\t\t\t\t\tadded += minutesInHour;\n\t\t\t\t\t\tstart = this._nextDate(start, \"hour\", step);\n\t\t\t\t\t}else{\n\t\t\t\t\t\taddedInterval = this._subtractMinutesUntilHourStart(start, left);\n\t\t\t\t\t\tadded += addedInterval.added;\n\t\t\t\t\t\tstart = addedInterval.end;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstart = this._getClosestWorkTimePast(new Date(start - 1), \"hour\");\n\t\t\t}\n\t\t}\n\n\t\tif (added < duration) {\n\t\t\tvar durationLeft = duration - added;\n\t\t\taddedInterval = this._subtractMinutesUntilHourStart(start, durationLeft);\n\t\t\tadded += addedInterval.added;\n\t\t\tstart = addedInterval.end;\n\t\t}\n\n\t\treturn start;\n\t},\n\t_calculateMinuteEndDate: function (from, duration, step) {\n\t\tvar start = new Date(from),\n\t\t\tadded = 0;\n\t\tstep = step || 1;\n\t\tduration = Math.abs(duration * 1);\n\t\tduration = Math.round(duration);\n\n\t\tvar addedInterval = this._addMinutesUntilHourEnd(start, duration);\n\t\tadded += addedInterval.added;\n\n\t\tstart = addedInterval.end;\n\n\t\tvar calculatedDay = 0;\n\t\tvar daySchedule = [];\n\t\tvar minutesInDay = 0;\n\n\t\twhile (added < duration) {\n\t\t\tvar dayStart = this.$gantt.date.day_start(new Date(start)).valueOf();\n\t\t\tif(dayStart !== calculatedDay){\n\t\t\t\tdaySchedule = this._getWorkHours(start);\n\t\t\t\tminutesInDay = this._getMinutesPerDay(start);\n\t\t\t\tcalculatedDay = dayStart;\n\t\t\t}\n\n\t\t\tvar left = duration - added;\n\t\t\tvar timestamp = this._getTimeOfDayStamp(start);\n\n\t\t\tif(!daySchedule.length || !minutesInDay){\n\t\t\t\tstart = this.$gantt.date.add(this.$gantt.date.day_start(start), 1, \"day\");\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(daySchedule[0].start >= timestamp){\n\t\t\t\tif(left >= minutesInDay){\n\t\t\t\t\tadded += minutesInDay;\n\t\t\t\t\tif (left == minutesInDay) {\n\t\t\t\t\t\tstart = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, daySchedule[daySchedule.length - 1].end);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tstart = this.$gantt.date.add(start, 1, \"day\");\n\t\t\t\t\t\tstart = this.$gantt.date.day_start(start);\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar isWorkHour = false;\n\t\t\tvar workInterval = null;\n\t\t\tfor(var i = 0; i < daySchedule.length; i++){\n\t\t\t\tif(daySchedule[i].start <= timestamp && daySchedule[i].end > timestamp){\n\t\t\t\t\tisWorkHour = true;\n\t\t\t\t\tworkInterval = daySchedule[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(isWorkHour){\n\n\t\t\t\tif(timestamp === workInterval.start && left >= workInterval.durationMinutes){\n\t\t\t\t\tadded += workInterval.durationMinutes;\n\t\t\t\t\tstart = this.$gantt.date.add(start, workInterval.durationMinutes, \"minute\");\n\t\t\t\t}else if(left <= (workInterval.endMinute - timestamp/60)){\n\t\t\t\t\tadded += left;\n\t\t\t\t\tstart = this.$gantt.date.add(start, left, \"minute\");\n\t\t\t\t}else{\n\t\t\t\t\tvar minutesInHour = this._getMinutesPerHour(start);\n\t\t\t\t\tif(minutesInHour <= left){\n\t\t\t\t\t\tadded += minutesInHour;\n\t\t\t\t\t\tstart = this._nextDate(start, \"hour\", step);\n\t\t\t\t\t}else{\n\t\t\t\t\t\taddedInterval = this._addMinutesUntilHourEnd(start, left);\n\t\t\t\t\t\tadded += addedInterval.added;\n\t\t\t\t\t\tstart = addedInterval.end;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstart = this._getClosestWorkTimeFuture(start, \"hour\");\n\t\t\t}\n\t\t}\n\n\t\tif (added < duration) {\n\t\t\tvar durationLeft = duration - added;\n\t\t\taddedInterval = this._addMinutesUntilHourEnd(start, durationLeft);\n\t\t\tadded += addedInterval.added;\n\t\t\tstart = addedInterval.end;\n\t\t}\n\n\t\treturn start;\n\t},\n\n\tgetClosestWorkTime: function () {\n\t\tvar settings = this.argumentsHelper.getClosestWorkTimeArguments.apply( this.argumentsHelper, arguments);\n\t\treturn this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\n\t},\n\n\t_getClosestWorkTime: function (inputDate, unit, direction) {\n\t\tvar result = new Date(inputDate);\n\n\t\tif (this._isWorkTime(result, unit)) {\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this.$gantt.date[unit + '_start'](result);\n\n\t\tif (direction == 'any' || !direction) {\n\t\t\tvar closestFuture = this._getClosestWorkTimeFuture(result, unit);\n\t\t\tvar closestPast = this._getClosestWorkTimePast(result, unit);\n\t\t\tif (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\n\t\t\t\tresult = closestFuture;\n\t\t\t} else {\n\t\t\t\tresult = closestPast;\n\t\t\t}\n\t\t} else if (direction == \"past\") {\n\t\t\tresult = this._getClosestWorkTimePast(result, unit);\n\t\t} else {\n\t\t\tresult = this._getClosestWorkTimeFuture(result, unit);\n\t\t}\n\t\treturn result;\n\t},\n\n\t_getClosestWorkTimeFuture: function (date, unit) {\n\t\treturn this._getClosestWorkTimeGeneric(date, unit, 1);\n\t},\n\n\t_getClosestWorkTimePast: function (date, unit) {\n\t\tvar result = this._getClosestWorkTimeGeneric(date, unit, -1);\n\t\t// should return the end of the closest work interval\n\t\treturn this.$gantt.date.add(result, 1, unit);\n\t},\n\n\t_findClosestTimeInDay: function(date, direction, worktimes) {\n\t\tvar start = new Date(date);\n\t\tvar resultDate = null;\n\t\tvar fromDayEnd = false;\n\t\tif(!this._getWorkHours(start).length){\n\t\t\tstart = this._getClosestWorkTime(start, \"day\", direction < 0 ? \"past\" : \"future\");\n\t\t\tif(direction < 0){\n\t\t\t\tstart = new Date(start.valueOf() - 1);\n\t\t\t\tfromDayEnd = true;\n\t\t\t}\n\t\t\tworktimes = this._getWorkHours(start);\n\t\t}\n\n\t\tvar value = this._getTimeOfDayStamp(start);\n\t\tif(fromDayEnd){\n\t\t\tvalue = this._getTimeOfDayStamp(new Date(start.valueOf() + 1), fromDayEnd);\n\t\t}\n\t\tif(direction > 0){\n\t\t\tfor(var i = 0; i < worktimes.length; i++){\n\t\t\t\tif(worktimes[i].start >= value){\n\t\t\t\t\tresultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].start);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tfor(var i = worktimes.length - 1; i >= 0; i--){\n\t\t\t\tif(worktimes[i].end <= value){\n\t\t\t\t\tresultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].end);\n\t\t\t\t\tbreak;\n\t\t\t\t}else if(worktimes[i].end > value && worktimes[i].start <= value) {\n\t\t\t\t\tresultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, value);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn resultDate;\n\t},\n\t_getClosestWorkMinute: function(date, unit, direction) {\n\t\tvar start = new Date(date);\n\t\tvar worktimes = this._getWorkHours(start);\n\t\tvar resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n\t\tif(!resultDate){\n\t\t\tstart = this.calculateEndDate(start, direction, \"day\");\n\t\t\tif(direction > 0){\n\t\t\t\tstart = this.$gantt.date.day_start(start);\n\t\t\t}else{\n\t\t\t\tstart = this.$gantt.date.day_start(start);\n\t\t\t\tstart = this.$gantt.date.add(start, 1, \"day\");\n\t\t\t\tstart = new Date(start.valueOf() - 1);\n\t\t\t}\n\t\t\tworktimes = this._getWorkHours(start);\n\t\t\tresultDate = this._findClosestTimeInDay(start, direction, worktimes);\n\t\t}\n\t\tif(direction < 0){\n\t\t\t// getClosestWorkTimePast adds one time unit to the result date after this\n\t\t\tresultDate = this.$gantt.date.add(resultDate, -1, unit);\n\t\t}\n\t\treturn resultDate;\n\t},\n\n\t_getClosestWorkTimeGeneric: function (date, unit, increment) {\n\t\tif(unit === \"hour\" || unit === \"minute\"){\n\t\t\treturn this._getClosestWorkMinute(date, unit, increment);\n\t\t}\n\n\t\tvar unitOrder = this._getUnitOrder(unit),\n\t\t\tbiggerTimeUnit = this.units[unitOrder - 1];\n\n\t\tvar result = date;\n\n\t\t// be extra sure we won't fall into infinite loop, 3k seems big enough\n\t\tvar maximumLoop = 3000,\n\t\t\tcount = 0;\n\n\t\twhile (!this._isWorkTime(result, unit)) {\n\t\t\tif (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\n\t\t\t\t// if we look for closest work hour and detect a week-end - first find the closest work day,\n\t\t\t\t// and continue iterations after that\n\t\t\t\tif (increment > 0) {\n\t\t\t\t\tresult = this._getClosestWorkTimeFuture(result, biggerTimeUnit);\n\t\t\t\t} else {\n\t\t\t\t\tresult = this._getClosestWorkTimePast(result, biggerTimeUnit);\n\t\t\t\t}\n\n\t\t\t\tif (this._isWorkTime(result, unit)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcount++;\n\t\t\tif (count > maximumLoop) {\n\t\t\t\tthis.$gantt.assert(false, \"Invalid working time check\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar tzOffset = result.getTimezoneOffset();\n\t\t\tresult = this.$gantt.date.add(result, increment, unit);\n\n\t\t\tresult = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\n\t\t\tif (this.$gantt.date[unit + '_start']) {\n\t\t\t\tresult = this.$gantt.date[unit + '_start'](result);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\n\t/**\n\t * Check whether this calendar has working time. Calendar has working time only if there are regular working days of week\n\t *\n\t */\n\thasWorkTime: function () {\n\t\tvar worktime = this.getConfig();\n\t\tvar dates = worktime.dates;\n\n\t\tvar daysOfWeek = [0, 1, 2, 3, 4, 5, 6];\n\t\tvar exceptions = [];\n\t\tfor(var i in worktime.dates){\n\t\t\tif(Number(i) > 6){\n\t\t\t\texceptions.push(Number(i));\n\t\t\t}\n\t\t}\n\n\t\tvar hasRegularHours = this._checkWorkHours(worktime.hours);\n\n\t\tvar result = false;\n\t\tdaysOfWeek.forEach((function(day){\n\t\t\tif(result){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar dayConfig = dates[day];\n\t\t\tif(dayConfig === true){\n\t\t\t\t// workday uses global hours\n\t\t\t\tresult = hasRegularHours;\n\t\t\t}else if(Array.isArray(dayConfig)){\n\t\t\t\t// workday uses custom hours\n\t\t\t\tresult = this._checkWorkHours(dayConfig);\n\t\t\t}\n\t\t}).bind(this));\n\n\t\treturn result;\n\n\t},\n\n\t_checkWorkHours: function(hoursArray) {\n\t\tif (hoursArray.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tvar result = false;\n\t\tfor (var i = 0; i < hoursArray.length; i += 2) {\n\t\t\tif (hoursArray[i] !== hoursArray[i + 1]) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n};\n\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../../utils/utils\");\nfunction WorkTimeCalendarMerger(){\n}\n\nWorkTimeCalendarMerger.prototype = {\n\n\n\t/**\n\t * convert hours array items into objects, e.g. [8, 12, 17, 18] -> [{start: 8, end: 12}, {start:17, end:18}]\n\t * @param {Array} hoursArray \n\t */\n\t_getIntervals: function(hoursArray){\n\t\tvar result = [];\n\t\tfor(var i = 0; i < hoursArray.length; i += 2){\n\t\t\t\n\t\t\tresult.push({\n\t\t\t\tstart: hoursArray[i], \n\t\t\t\tend: hoursArray[i+1]\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t},\n\n\t/**\n\t * Convert ranges config into hours array\n\t * [{start: 8, end: 12}, {start:17, end:18}] --> [8, 12, 17, 18]\n\t * @param {*} intervalsArray \n\t */\n\t_toHoursArray: function(intervalsArray){\n\t\tvar result = [];\n\n\t\tfunction toFixed(value){\n\t\t\tvar str = String(value);\n\t\t\tif(str.length < 2){\n\t\t\t\tstr = \"0\" + str;\n\t\t\t}\n\t\t\treturn str;\n\t\t}\n\t\tfunction formatHHMM(secondsValue){\n\t\t\tvar hours = Math.floor(secondsValue / (60*60));\n\t\t\tvar minutePart = secondsValue - hours * 60 * 60;\n\n\t\t\tvar minutes = Math.floor(minutePart / (60));\n\t\t\treturn hours + \":\" + toFixed(minutes);\n\t\t}\n\t\tfor(var i = 0; i < intervalsArray.length; i++){\n\t\t\tresult.push(\n\t\t\t\tformatHHMM(intervalsArray[i].start) + \n\t\t\t\t\"-\" + \n\t\t\t\tformatHHMM(intervalsArray[i].end)\n\t\t\t);\n\t\t}\n\t\treturn result;\n\t},\n\n\t/**\n\t * Build intersection of hour intervals. e.g.\n\t * first: [{start: 8, end: 12}, {start:13, end:18}]\n\t * second: [{start: 10, end: 15}]\n\t * result: [{start: 10, end: 12}, {start: 13, end: 15}]\n\t * @param {Array} first \n\t * @param {Array} second \n\t */\n\t_intersectHourRanges: function(first, second){\n\t\tvar result = [];\n\n\t\tvar baseArray = first.length > second.length ? first : second;\n\t\tvar overridesArray = first === baseArray ? second: first;\n\t\tbaseArray = baseArray.slice();\n\t\toverridesArray = overridesArray.slice();\n\n\t\tvar result = [];\n\t\tfor(var i = 0; i < baseArray.length; i++){\n\t\t\tvar base = baseArray[i];\n\t\t\t\n\t\t\tfor(var j = 0; j < overridesArray.length; j++){\n\t\t\t\tvar current = overridesArray[j];\n\t\t\t\tif(current.start < base.end && current.end > base.start){\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\tstart: Math.max(base.start, current.start),\n\t\t\t\t\t\tend: Math.min(base.end, current.end)\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t\tif(base.end > current.end){\n\t\t\t\t\t\toverridesArray.splice(j, 1);\n\t\t\t\t\t\tj--;\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\n\t/**\n\t * Reduce the number of ranges in config when possible,\n\t * joins ranges that can be merged\n\t * parts: [{start: 8, end: 12}, {start:12, end:13}, {start: 15, end: 17}]\n\t * result: [{start: 8, end: 13}, {start: 15, end: 17}]\n\t * @param {Array} parts \n\t */\n\t_mergeAdjacentIntervals: function(parts){\n\t\tvar result = parts.slice();\n\t\tresult.sort(function(a, b){\n\t\t\treturn a.start - b.start;\n\t\t});\n\t\tvar base = result[0];\n\t\tfor(var i = 1; i < result.length; i++){\n\t\t\tvar current = result[i];\n\t\t\tif(current.start <= base.end){\n\t\t\t\tif(current.end > base.end){\n\t\t\t\t\tbase.end = current.end;\n\t\t\t\t}\n\t\t\t\tresult.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}else{\n\t\t\t\tbase = current;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t},\n\n\t_mergeHoursConfig: function(firstHours, secondHours){\n\t\t//var firstIntervals = this._getIntervals(firstHours);\n\t\t//var secondIntervals = this._getIntervals(secondHours);\n\n\t\treturn this._mergeAdjacentIntervals(\n\t\t\tthis._intersectHourRanges(firstHours, secondHours)\n\t\t);\n\t},\n\n\tmerge: function(first, second){\n\t\tvar firstConfig = utils.copy(first.getConfig().parsed);\n\n\t\tvar secondConfig = utils.copy(second.getConfig().parsed);\n\n\t\tvar mergedSettings = {\n\t\t\thours: this._toHoursArray(this._mergeHoursConfig(firstConfig.hours, secondConfig.hours)),\n\t\t\tdates: {}\n\t\t};\n\n\t\tfor(var i in firstConfig.dates){\n\t\t\tvar firstDate = firstConfig.dates[i];\n\t\t\tvar secondDate = secondConfig.dates[i];\n\n\t\t\t// if this key is a working date in both calendars\n\t\t\tif(firstDate && secondDate){\n\t\t\t\t// if at least one of working date is set by hours config - build intersection\n\t\t\t\tif(Array.isArray(firstDate) || Array.isArray(secondDate)){\n\t\t\t\t\tvar firstHours = Array.isArray(firstDate) ? firstDate : firstConfig.hours;\n\t\t\t\t\tvar secondHours = Array.isArray(secondDate) ? secondDate : secondConfig.hours;\n\t\t\t\t\tmergedSettings.dates[i] = this._toHoursArray(this._mergeHoursConfig(firstHours, secondHours));\n\t\t\t\t}else{\n\t\t\t\t\t// date will use global hours\n\t\t\t\t\tmergedSettings.dates[i] = true;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tmergedSettings.dates[i] = false;\n\t\t\t}\n\t\t}\n\n\n\t\treturn mergedSettings;\n\n\t}\n\n};\n\nmodule.exports = WorkTimeCalendarMerger;","var utils = require(\"../../utils/utils\");\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\nvar CalendarMergeHelper = require(\"./strategy/work_calendar_merger\");\nvar CalendarWorkTimeStrategy = require(\"./strategy/calendar_strategy\");\nvar legacyResourceCalendarConfig = require(\"./legacy_resource_config\");\nvar dynamicResourceCalendars = require(\"./dynamic_resource_calendars\")();\n\nfunction CalendarManager (gantt){\n\tthis.$gantt = gantt;\n\tthis._calendars = {};\n}\n\nCalendarManager.prototype = {\n\t_calendars: {},\n\t_convertWorkTimeSettings: function (settings) {\n\t\tvar days = settings.days;\n\t\tif (days && !settings.dates) {\n\t\t\tsettings.dates = settings.dates || {};\n\t\t\tfor (var i = 0; i < days.length; i++) {\n\t\t\t\tsettings.dates[i] = days[i];\n\t\t\t\tif (!(days[i] instanceof Array)) {\n\t\t\t\t\tsettings.dates[i] = !!days[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdelete settings.days;\n\t\treturn settings;\n\t},\n\tmergeCalendars: function(){\n\t\tvar calendars = [];\n\t\tvar args = arguments;\n\t\tif(Array.isArray(args[0])){\n\t\t\tcalendars = args[0].slice();\n\t\t}else{\n\t\t\tfor(var i = 0; i < arguments.length; i++){\n\t\t\t\tcalendars.push(arguments[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar mergeHelper = new CalendarMergeHelper();\n\n\t\tvar result;\n\t\tcalendars.forEach(function(calendar){\n\t\t\tif(!result){\n\t\t\t\tresult = calendar;\n\t\t\t} else{\n\t\t\t\tresult = this._createCalendarFromConfig(mergeHelper.merge(result, calendar));\n\t\t\t}\n\t\t\t\n\t\t}.bind(this));\n\t\treturn this.createCalendar(result);\n\t},\n\n\t_createCalendarFromConfig: function(config){\n\t\tvar apiCore = new CalendarWorkTimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\n\t\tapiCore.id = String(utils.uid());\n\t\tapiCore._setConfig(this._convertWorkTimeSettings(config));\n\n\t\treturn apiCore;\n\t},\n\n\tcreateCalendar: function (parentCalendar) {\n\t\tvar settings;\n\n\t\tif (!parentCalendar) {\n\t\t\tparentCalendar = {};\n\t\t}\n\n\t\tif (parentCalendar.getConfig){\n\t\t\tsettings = utils.copy(parentCalendar.getConfig());\n\t\t} else if (parentCalendar.worktime) {\n\t\t\tsettings = utils.copy(parentCalendar.worktime);\n\t\t} else {\n\t\t\tsettings = utils.copy(parentCalendar);\n\t\t}\n\n\t\tvar defaults = utils.copy(this.defaults.fulltime.worktime);\n\t\tutils.mixin(settings, defaults);\n\n\t\treturn this._createCalendarFromConfig(settings);\n\t},\n\n\tgetCalendar: function (id) {\n\t\tid = id || \"global\";\n\t\tthis.createDefaultCalendars();\n\t\treturn this._calendars[id];\n\t},\n\n\tgetCalendars: function () {\n\t\tvar res = [];\n\t\tfor (var i in this._calendars) {\n\t\t\tres.push(this.getCalendar(i));\n\t\t}\n\t\treturn res;\n\t},\n\n\t_getOwnCalendar: function(task){\n\t\tvar config = this.$gantt.config;\n\t\tif (task[config.calendar_property]) {\n\t\t\treturn this.getCalendar(task[config.calendar_property]);\n\t\t}\n\n\t\tif (config.resource_calendars) {\n\t\t\tvar calendar;\n\t\t\tvar calendarId;\n\t\t\tvar resourceProperty = legacyResourceCalendarConfig.getResourceProperty(config);\n\t\t\tif(Array.isArray(task[resourceProperty])){\n\t\t\t\t// if multiple resources are attached to the task - merge their calendars\n\t\t\t\tif(config.dynamic_resource_calendars){\n\t\t\t\t\tcalendarId = dynamicResourceCalendars.getCalendarIdFromMultipleResources(task[resourceProperty], this);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars)){\n\t\t\t\t\tvar calendarId = legacyResourceCalendarConfig.getCalendarIdFromLegacyConfig(task, config.resource_calendars);\n\t\t\t\t}else if(resourceProperty && task[resourceProperty] && config.resource_calendars[task[resourceProperty]]){\n\t\t\t\t\tvar calendar = this.getResourceCalendar(task[resourceProperty]);\n\t\t\t\t}\n\t\t\t} \n\n\t\t\tif(calendarId){\n\t\t\t\tcalendar = this.getCalendar(calendarId);\n\t\t\t}\n\n\t\t\tif(calendar){\n\t\t\t\treturn calendar;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\t/**\n\t * Returns calendar assigned to the specified resource.\n\t * Returns the global calendar if no custom calendar is associated with the resource.\n\t * @param {(string|number|Object)} resource - resource object or resource id \n\t * @returns {object} Calendar object\n\t */\n\tgetResourceCalendar: function(resource) {\n\t\tif (resource === null || resource === undefined) {\n\t\t\treturn this.getCalendar();\n\t\t}\n\n\t\tvar resourceId = null;\n\t\t// if task id is provided\n\t\tif((typeof resource === \"number\" || typeof resource === \"string\")){\n\t\t\tresourceId = resource;\n\t\t}else{\n\t\t\tresourceId = resource.id || resource.key;\n\t\t}\n\n\t\tvar config = this.$gantt.config;\n\t\tvar calendarsConfig = config.resource_calendars;\n\t\tvar calendarId = null;\n\t\tif (calendarsConfig) {\n\t\t\tif(legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(calendarsConfig)){\n\t\t\t\tfor(var field in calendarsConfig){\n\t\t\t\t\tif(calendarsConfig[field][resourceId]){\n\t\t\t\t\t\tcalendarId = calendarsConfig[field][resourceId];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tvar calendarId = calendarsConfig[resourceId];\n\t\t\t}\n\n\t\t\tif(calendarId){\n\t\t\t\treturn this.getCalendar(calendarId);\n\t\t\t}\n\t\t\t\n\t\t}\n\t\treturn this.getCalendar();\n\t},\n\n\t/**\n\t * Returns the calendar assigned to a task.\n\t * - Returns a calendar assigned via task[gantt.config.calendar_property] if specified.\n\t * - Returns a calendar assigned to the task resource if specified.\n\t * - Returns the global calendar otherwise.\n\t * @param {(string|number|Object)} task - task object or task id \n\t * @returns {object} Calendar object\n\t */\n\tgetTaskCalendar: function (task) {\n\t\tvar gantt = this.$gantt;\n\t\tvar taskObject;\n\t\tif (task === null || task === undefined) {\n\t\t\treturn this.getCalendar();\n\t\t}\n\n\t\t// if task id is provided\n\t\tif((typeof task === \"number\" || typeof task === \"string\") && gantt.isTaskExists(task)){\n\t\t\ttaskObject = gantt.getTask(task);\n\t\t}else{\n\t\t\ttaskObject = task;\n\t\t}\n\n\t\tif(!taskObject){\n\t\t\treturn this.getCalendar();\n\t\t}\n\n\t\tvar calendar = this._getOwnCalendar(taskObject);\n\t\tif (!calendar && gantt.config.inherit_calendar && gantt.isTaskExists(taskObject.parent)){\n\t\t\tvar stop = false;\n\t\t\tgantt.eachParent(function(parent){\n\t\t\t\tif(stop) return;\n\t\t\t\tif(gantt.isSummaryTask(parent)){\n\t\t\t\t\tcalendar = this._getOwnCalendar(parent);\n\t\t\t\t\tif(calendar){\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, taskObject.id, this);\n\t\t}\n\n\t\treturn calendar || this.getCalendar();\n\t},\n\n\taddCalendar: function(calendar) { // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\n\t\tif (!(this.isCalendar(calendar))) {\n\t\t\tvar id = calendar.id;\n\t\t\tcalendar = this.createCalendar(calendar);\n\t\t\tcalendar.id = id;\n\t\t}\n\n\t\t// validate/check if empty calendar\n\t\tif (!calendar._tryChangeCalendarSettings(function () {\n\t\t\t})) {\n\n\t\t\tthis.$gantt.callEvent(\"onCalendarError\", [{message: \"Invalid calendar settings, no worktime available\"}, calendar]);\n\t\t\treturn null;\n\t\t} else {\n\t\t\tvar config = this.$gantt.config;\n\n\t\t\tcalendar.id = calendar.id || utils.uid();\n\t\t\tthis._calendars[calendar.id] = calendar;\n\t\t\tif (!config.worktimes)\n\t\t\t\tconfig.worktimes = {};\n\t\t\tconfig.worktimes[calendar.id] = calendar.getConfig();\n\t\t\treturn calendar.id;\n\t\t}\n\t},\n\n\tdeleteCalendar: function (calendar) {\n\t\tvar config = this.$gantt.config;\n\t\tif (!calendar) return false;\n\t\tif (this._calendars[calendar]) {\n\t\t\tdelete this._calendars[calendar];\n\t\t\tif (config.worktimes && config.worktimes[calendar])\n\t\t\t\tdelete config.worktimes[calendar];\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t},\n\n\trestoreConfigCalendars: function (configs) {\n\t\tfor (var i in configs) {\n\t\t\tif (this._calendars[i])\n\t\t\t\tcontinue;\n\n\t\t\tvar settings = configs[i];\n\t\t\tvar calendar = this.createCalendar(settings);\n\t\t\tcalendar.id = i;\n\t\t\tthis.addCalendar(calendar);\n\t\t}\n\t},\n\n\tdefaults: {\n\t\tglobal: {\n\t\t\tid: \"global\",\n\t\t\tworktime: {\n\t\t\t\thours: [8, 12, 13, 17],\n\t\t\t\tdays: [0, 1, 1, 1, 1, 1, 0]\n\t\t\t}\n\t\t},\n\t\tfulltime: {\n\t\t\tid: \"fulltime\",\n\t\t\tworktime: {\n\t\t\t\thours: [0, 24],\n\t\t\t\tdays: [1, 1, 1, 1, 1, 1, 1]\n\t\t\t}\n\t\t}\n\t},\n\n\tcreateDefaultCalendars: function () {\n\t\tvar config = this.$gantt.config;\n\t\tthis.restoreConfigCalendars(this.defaults);\n\t\tthis.restoreConfigCalendars(config.worktimes);\n\t},\n\n\tisCalendar: function(possibleCalendar) {\n\t\t// because we don't have any way to check without dependency to CalendarWorkTimeStrategy\n\t\tvar props = [\n\t\t\tpossibleCalendar.isWorkTime,\n\t\t\tpossibleCalendar.setWorkTime,\n\t\t\tpossibleCalendar.getWorkHours,\n\t\t\tpossibleCalendar.unsetWorkTime,\n\t\t\tpossibleCalendar.getClosestWorkTime,\n\t\t\tpossibleCalendar.calculateDuration,\n\t\t\tpossibleCalendar.hasDuration,\n\t\t\tpossibleCalendar.calculateEndDate\n\t\t];\n\t\treturn props.every(function(entry) {\n\t\t\treturn entry instanceof Function;\n\t\t});\n\t}\n};\n\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\n\tTimeCalculator = require(\"./time_calculator\"),\n\tworktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\n\tutils = require(\"../../utils/utils\");\n\nmodule.exports = function (gantt) {\n\tvar manager = new CalendarManager(gantt),\n\ttimeCalculator = new TimeCalculator(manager);\n\tvar facade = worktimeFacadeFactory.create(manager, timeCalculator);\n\tutils.mixin(gantt, facade);\n};\n","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.load = function (url, type, callback) {\n\t\tthis._load_url = url;\n\t\tthis.assert(arguments.length, \"Invalid load arguments\");\n\n\t\tvar tp = 'json', cl = null;\n\t\tif (arguments.length >= 3) {\n\t\t\ttp = type;\n\t\t\tcl = callback;\n\t\t} else {\n\t\t\tif (typeof arguments[1] == \"string\")\n\t\t\t\ttp = arguments[1];\n\t\t\telse if (typeof arguments[1] == \"function\")\n\t\t\t\tcl = arguments[1];\n\t\t}\n\n\t\tthis._load_type = tp;\n\n\t\tthis.callEvent(\"onLoadStart\", [url, tp]);\n\n\t\treturn this.ajax.get(url, gantt.bind(function (l) {\n\t\t\tthis.on_load(l, tp);\n\t\t\tthis.callEvent(\"onLoadEnd\", [url, tp]);\n\t\t\tif (typeof cl == \"function\")\n\t\t\t\tcl.call(this);\n\t\t}, this));\n\t};\n\tgantt.parse = function (data, type) {\n\t\tthis.on_load({xmlDoc: {responseText: data}}, type);\n\t};\n\n\tgantt.serialize = function (type) {\n\t\ttype = type || \"json\";\n\t\treturn this[type].serialize();\n\t};\n\n\t/*\n\ttasks and relations\n\t{\n\tdata:[\n\t\t{\n\t\t\t\"id\":\"string\",\n\t\t\t\"text\":\"...\",\n\t\t\t\"start_date\":\"Date or string\",\n\t\t\t\"end_date\":\"Date or string\",\n\t\t\t\"duration\":\"number\",\n\t\t\t\"progress\":\"0..1\",\n\t\t\t\"parent_id\":\"string\",\n\t\t\t\"order\":\"number\"\n\t\t},...],\n\tlinks:[\n\t\t{\n\t\t\tid:\"string\",\n\t\t\tsource:\"string\",\n\t\t\ttarget:\"string\",\n\t\t\ttype:\"string\"\n\t\t},...],\n\tcollections:{\n\t\t\tcollectionName:[\n\t\t\t\t{key:, label:, optional:...},...\n\t\t\t],...\n\t\t}\n\t}\n\n\t* */\n\n\tgantt.on_load = function (resp, type) {\n\t\tif(resp.xmlDoc && resp.xmlDoc.status === 404){ // work if we don't have a file at current url\n\t\t\tthis.assert(false, \"Failed to load the data from <a href='\" + resp.xmlDoc.responseURL + \"' target='_blank'>\" \n\t\t\t\t+ resp.xmlDoc.responseURL + \"</a>, server returns 404\");\n\t\t\treturn;\n\t\t}\n\t\tthis.callEvent(\"onBeforeParse\", []);\n\t\tif (!type)\n\t\t\ttype = \"json\";\n\t\tthis.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n\n\t\tvar raw = resp.xmlDoc.responseText;\n\n\t\tvar data = this[type].parse(raw, resp);\n\t\tthis._process_loading(data);\n\t};\n\n\tgantt._process_loading = function (data) {\n\t\tif(data.collections)\n\t\t\tthis._load_collections(data.collections);\n\n\t\tthis.$data.tasksStore.parse(data.data || data.tasks);\n\t\tvar links = data.links || (data.collections ? data.collections.links : []);\n\t\tthis.$data.linksStore.parse(links);\n\n\t\t//this._sync_links();\n\t\tthis.callEvent(\"onParse\", []);\n\t\tthis.render();\n\t};\n\n\tgantt._load_collections = function (collections) {\n\t\tvar collections_loaded = false;\n\t\tfor (var key in collections) {\n\t\t\tif (collections.hasOwnProperty(key)) {\n\t\t\t\tcollections_loaded = true;\n\t\t\t\tvar collection = collections[key];\n\t\t\t\tvar arr = this.serverList[key];\n\t\t\t\tif (!arr) continue;\n\t\t\t\tarr.splice(0, arr.length); //clear old options\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\n\t\t\t\t\tvar option = collection[j];\n\t\t\t\t\tvar obj = this.copy(option);\n\t\t\t\t\tobj.key = obj.value;// resulting option object\n\n\t\t\t\t\tfor (var option_key in option) {\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (collections_loaded)\n\t\t\tthis.callEvent(\"onOptionsLoad\", []);\n\t};\n\n\tgantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n\t\treturn !task.$ignore;\n\t});\n\n\tfunction jsonParseError(data){\n\t\tgantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \"\n\t\t\t+ \"Actual argument value: \" + JSON.stringify(data));\n\t\tthrow 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: \"\n\t\t\t+ JSON.stringify(data));\n\t}\n\n\tgantt.json = {\n\t\tparse: function (data) {\n\t\t\tif(!data){\n\t\t\t\tjsonParseError(data);\n\t\t\t}\n\n\t\t\tif (typeof data == \"string\") {\n\t\t\t\tif (typeof JSON != undefined){\n\t\t\t\t\ttry{\n\t\t\t\t\t\tdata = JSON.parse(data);\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {\n\t\t\t\t\t\tjsonParseError(data);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tgantt.assert(false, \"JSON is not supported\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!data.data && !data.tasks){\n\t\t\t\tjsonParseError(data);\n\t\t\t}\n\n\t\t\tif (data.dhx_security)\n\t\t\t\tgantt.security_key = data.dhx_security;\n\t\t\treturn data;\n\t\t},\n\t\tserializeTask: function (task) {\n\t\t\treturn this._copyObject(task);\n\t\t},\n\t\tserializeLink: function (link) {\n\t\t\treturn this._copyLink(link);\n\t\t},\n\t\t_copyLink: function (obj) {\n\t\t\tvar copy = {};\n\t\t\tfor (var key in obj)\n\t\t\t\tcopy[key] = obj[key];\n\t\t\treturn copy;\n\t\t},\n\t\t_copyObject: function (obj) {\n\t\t\tvar copy = {};\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (key.charAt(0) == \"$\")\n\t\t\t\t\tcontinue;\n\t\t\t\tcopy[key] = obj[key];\n\n\t\t\t\tif (helpers.isDate(copy[key])) {\n\t\t\t\t\tcopy[key] = gantt.defined(gantt.templates.xml_format) ? gantt.templates.xml_format(copy[key]) : gantt.templates.format_date(copy[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn copy;\n\t\t},\n\t\tserialize: function () {\n\t\t\tvar tasks = [];\n\t\t\tvar links = [];\n\n\t\t\tgantt.eachTask(function (obj) {\n\t\t\t\tgantt.resetProjectDates(obj);\n\t\t\t\ttasks.push(this.serializeTask(obj));\n\t\t\t}, gantt.config.root_id, this);\n\n\t\t\tvar rawLinks = gantt.getLinks();\n\t\t\tfor (var i = 0; i < rawLinks.length; i++) {\n\t\t\t\tlinks.push(this.serializeLink(rawLinks[i]));\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: tasks,\n\t\t\t\tlinks: links\n\t\t\t};\n\t\t}\n\t};\n\n\t/*\n\t<data>\n\t\t<task id:\"some\" parent_id=\"0\" progress=\"0.5\">\n\t\t\t<text>My task 1</text>\n\t\t\t<start_date>16.08.2013</start_date>\n\t\t\t<end_date>22.08.2013</end_date>\n\t\t</task>\n\t\t<coll_options>\n\t\t\t<links>\n\t\t\t\t<link source='a1' target='b2' type='c3' />\n\t\t\t</links>\n\t\t</coll_options>\n\t</data>\n\t*/\n\n\tfunction xmlParseError(data){\n\t\tgantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \"\n\t\t\t+ \"Actual argument value: \" + JSON.stringify(data));\n\t\tthrow 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: \"\n\t\t\t+ JSON.stringify(data));\n\t}\n\n\tgantt.xml = {\n\t\t_xmlNodeToJSON: function (node, attrs_only) {\n\t\t\tvar t = {};\n\t\t\tfor (var i = 0; i < node.attributes.length; i++)\n\t\t\t\tt[node.attributes[i].name] = node.attributes[i].value;\n\n\t\t\tif (!attrs_only) {\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\t\t\t\tvar child = node.childNodes[i];\n\t\t\t\t\tif (child.nodeType == 1)\n\t\t\t\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n\t\t\t\t}\n\n\t\t\t\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n\t\t\t}\n\n\t\t\treturn t;\n\t\t},\n\t\t_getCollections: function (loader) {\n\t\t\tvar collection = {};\n\t\t\tvar opts = gantt.ajax.xpath(\"//coll_options\", loader);\n\t\t\tfor (var i = 0; i < opts.length; i++) {\n\t\t\t\tvar bind = opts[i].getAttribute(\"for\");\n\t\t\t\tvar arr = collection[bind] = [];\n\t\t\t\tvar itms = gantt.ajax.xpath(\".//item\", opts[i]);\n\t\t\t\tfor (var j = 0; j < itms.length; j++) {\n\t\t\t\t\tvar itm = itms[j];\n\t\t\t\t\tvar attrs = itm.attributes;\n\t\t\t\t\tvar obj = {key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\n\t\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\n\t\t\t\t\t\tvar attr = attrs[k];\n\t\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn collection;\n\t\t},\n\t\t_getXML: function (text, loader, toptag) {\n\t\t\ttoptag = toptag || \"data\";\n\t\t\tif (!loader.getXMLTopNode) {\n\t\t\t\tloader = gantt.ajax.parse(loader);\n\t\t\t}\n\n\t\t\tvar xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\n\t\t\tif (!xml || xml.tagName != toptag) {\n\t\t\t\txmlParseError(text);\n\t\t\t}\n\n\t\t\tvar skey = xml.getAttribute(\"dhx_security\");\n\t\t\tif (skey)\n\t\t\t\tgantt.security_key = skey;\n\n\t\t\treturn xml;\n\t\t},\n\t\tparse: function (text, loader) {\n\t\t\tloader = this._getXML(text, loader);\n\t\t\tvar data = {};\n\n\t\t\tvar evs = data.data = [];\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\n\n\t\t\tfor (var i = 0; i < xml.length; i++)\n\t\t\t\tevs[i] = this._xmlNodeToJSON(xml[i]);\n\n\t\t\tdata.collections = this._getCollections(loader);\n\t\t\treturn data;\n\t\t},\n\t\t_copyLink: function (obj) {\n\t\t\treturn \"<item id='\" + obj.id + \"' source='\" + obj.source + \"' target='\" + obj.target + \"' type='\" + obj.type + \"' />\";\n\t\t},\n\t\t_copyObject: function (obj) {\n\t\t\treturn \"<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\t\t},\n\t\tserialize: function () {\n\t\t\tvar tasks = [];\n\t\t\tvar links = [];\n\n\t\t\tvar json = gantt.json.serialize();\n\t\t\tfor (var i = 0, len = json.data.length; i < len; i++) {\n\t\t\t\ttasks.push(this._copyObject(json.data[i]));\n\t\t\t}\n\t\t\tfor (var i = 0, len = json.links.length; i < len; i++) {\n\t\t\t\tlinks.push(this._copyLink(json.links[i]));\n\t\t\t}\n\t\t\treturn \"<data>\" + tasks.join(\"\") + \"<coll_options for='links'>\" + links.join(\"\") + \"</coll_options></data>\";\n\t\t}\n\t};\n\n\n\tgantt.oldxml = {\n\t\tparse: function (text, loader) {\n\t\t\tloader = gantt.xml._getXML(text, loader, \"projects\");\n\t\t\tvar data = {collections: {links: []}};\n\n\t\t\tvar evs = data.data = [];\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\n\n\t\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\t\tevs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\n\t\t\t\tvar parent = xml[i].parentNode;\n\n\t\t\t\tif (parent.tagName == \"project\")\n\t\t\t\t\tevs[i].parent = \"project-\" + parent.getAttribute(\"id\");\n\t\t\t\telse\n\t\t\t\t\tevs[i].parent = parent.parentNode.getAttribute(\"id\");\n\t\t\t}\n\n\t\t\txml = gantt.ajax.xpath(\"//project\", loader);\n\t\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\t\tvar ev = gantt.xml._xmlNodeToJSON(xml[i], true);\n\t\t\t\tev.id = \"project-\" + ev.id;\n\t\t\t\tevs.push(ev);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tvar ev = evs[i];\n\t\t\t\tev.start_date = ev.startdate || ev.est;\n\t\t\t\tev.end_date = ev.enddate;\n\t\t\t\tev.text = ev.name;\n\t\t\t\tev.duration = ev.duration / 8;\n\t\t\t\tev.open = 1;\n\t\t\t\tif (!ev.duration && !ev.end_date) ev.duration = 1;\n\t\t\t\tif (ev.predecessortasks)\n\t\t\t\t\tdata.collections.links.push({\n\t\t\t\t\t\ttarget: ev.id,\n\t\t\t\t\t\tsource: ev.predecessortasks,\n\t\t\t\t\t\ttype: gantt.config.links.finish_to_start\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t\tserialize: function () {\n\t\t\tgantt.message(\"Serialization to 'old XML' is not implemented\");\n\t\t}\n\t};\n\n\tgantt.serverList = function (name, array) {\n\t\tif (array) {\n\t\t\tthis.serverList[name] = array.slice(0);\n\t\t} else if (!this.serverList[name]) {\n\t\t\tthis.serverList[name] = [];\n\t\t}\n\t\treturn this.serverList[name];\n\t};\n\n};","module.exports = function(gantt) {\n\tgantt.isReadonly = function (item) {\n\t\tif (item && item[this.config.editable_property]) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn (item && item[this.config.readonly_property]) || this.config.readonly;\n\t\t}\n\t};\n};","module.exports = function(gantt) {\n\tgantt.getGridColumn = function(name) {\n\t\tvar columns = gantt.config.columns;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].name == name)\n\t\t\t\treturn columns[i];\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tgantt.getGridColumns = function() {\n\t\treturn gantt.config.columns.slice();\n\t};\n};","const SENSITIVITY = 20;\nconst TIMEOUT = 50;\nconst SCROLLSTEP = 10;\n\nexport default class ScrollableGrid {\n\tpublic getCurrentX;\n\tprivate $gantt;\n\tprivate $grid;\n\tprivate _dnd;\n\tprivate _scrollView;\n\tprivate _scrollOrder: 0 | 1 | -1 = 0;\n\n\tconstructor(params) {\n\t\tconst {gantt, grid, dnd, getCurrentX} = params;\n\t\tthis.$gantt = gantt;\n\t\tthis.$grid = grid;\n\t\tthis._dnd = dnd;\n\t\tthis.getCurrentX = getCurrentX;\n\t\tthis._scrollView = this.$gantt.$ui.getView(this.$grid.$config.scrollX);\n\t\tthis.attachEvents();\n\t}\n\tattachEvents() {\n\t\tif (this.isScrollable()) {\n\t\t\tthis._dnd.attachEvent(\"onDragMove\", (obj, e) => {\n\t\t\t\tconst gridBoundingRect = this.$grid.$grid.getBoundingClientRect();\n\t\t\t\tconst maxLeft = gridBoundingRect.right;\n\t\t\t\tconst minLeft = gridBoundingRect.left;\n\t\t\t\tconst currentX = this.getCurrentX(e.clientX);\n\n\t\t\t\tif (currentX >= maxLeft - SENSITIVITY) {\n\t\t\t\t\tthis.autoscrollRight();\n\t\t\t\t\tthis.autoscrollStart();\n\t\t\t\t}\n\t\t\t\tif (currentX <= minLeft + SENSITIVITY) {\n\t\t\t\t\tthis.autoscrollLeft();\n\t\t\t\t\tthis.autoscrollStart();\n\t\t\t\t}\n\t\t\t\tif (currentX < maxLeft - SENSITIVITY && currentX > minLeft + SENSITIVITY) {\n\t\t\t\t\tthis.autoscrollStop();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tthis._dnd.attachEvent(\"onDragEnd\", () => {\n\t\t\t\tthis.autoscrollStop();\n\t\t\t});\n\t\t}\n\t}\n\tautoscrollStart() {\n\t\tif (this._scrollOrder === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst scrollStep = SCROLLSTEP * this._scrollOrder;\n\t\tconst scrollState = this._scrollView.getScrollState();\n\t\tthis._scrollView.scrollTo(scrollState.position + scrollStep);\n\t\tsetTimeout(() => { this.autoscrollStart(); }, TIMEOUT);\n\t}\n\tautoscrollRight() {\n\t\tthis._scrollOrder = 1;\n\t}\n\tautoscrollLeft() {\n\t\tthis._scrollOrder = -1;\n\t}\n\tautoscrollStop() {\n\t\tthis._scrollOrder = 0;\n\t}\n\tgetCorrection() {\n\t\tif (!this.isScrollable()) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this._scrollView.getScrollState().position;\n\t}\n\tisScrollable() {\n\t\treturn !!this.$grid.$config.scrollable;\n\t}\n}","import * as domHelpers from \"../../utils/dom_helpers\";\nimport ScrollableGrid from \"./scrollable_grid\";\n\nconst COLUMN_ID_ATTR_NAME = \"data-column-id\";\n\nexport class ColumnsGridDnd {\n\tprivate $gantt;\n\tprivate $grid;\n\tprivate _dragX;\n\tprivate _dnd;\n\tprivate _originAutoscroll;\n\tprivate _scrollableGrid: ScrollableGrid;\n\tprivate _draggedCell;\n\tprivate _targetMarker = null;\n\tprivate _gridConfig;\n\tconstructor(gantt, grid) {\n\t\tthis.$gantt = gantt;\n\t\tthis.$grid = grid;\n\t}\n\tinit() {\n\t\tconst DND = this.$gantt.$services.getService(\"dnd\");\n\t\tthis._dnd = new DND(this.$grid.$grid_scale, { updates_per_second: 60 });\n\t\tthis._scrollableGrid = new ScrollableGrid({\n\t\t\tgantt: this.$gantt,\n\t\t\tgrid: this.$grid,\n\t\t\tdnd: this._dnd,\n\t\t\tgetCurrentX: this.calculateCurrentPosition\n\t\t});\n\t\tthis.attachEvents();\n\t}\n\tattachEvents() {\n\t\tthis._dnd.attachEvent(\"onBeforeDragStart\", (obj, e) => {\n\t\t\tthis._draggedCell = this.$gantt.utils.dom.closest(e.target, \".gantt_grid_head_cell\");\n\t\t\tif(!this._draggedCell){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst columns = this.$grid.$getConfig().columns;\n\t\t\tconst columnName = this._draggedCell.getAttribute(COLUMN_ID_ATTR_NAME);\n\t\t\tlet draggedColumn;\n\t\t\tlet draggedIndex;\n\t\t\tcolumns.map(function(column, index){\n\t\t\t\tif(column.name === columnName){\n\t\t\t\t\tdraggedColumn = column;\n\t\t\t\t\tdraggedIndex = index;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.$grid.callEvent(\"onBeforeColumnDragStart\", [{ draggedColumn, draggedIndex}]) === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this._draggedCell || !draggedColumn) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._gridConfig = this.$grid.$getConfig();\n\t\t\tthis._originAutoscroll = this.$gantt.config.autoscroll;\n\t\t\tthis.$gantt.config.autoscroll = false;\n\t\t\treturn true;\n\t\t});\n\n\t\tthis._dnd.attachEvent(\"onAfterDragStart\", (obj, e) => {\n\t\t\tthis._dnd.config.column = this._draggedCell.getAttribute(COLUMN_ID_ATTR_NAME);\n\t\t\tthis._dnd.config.marker.innerHTML = this._draggedCell.outerHTML;\n\t\t\tthis._dnd.config.marker.classList.add(\"gantt_column_drag_marker\");\n\t\t\tthis._dnd.config.marker.style.height = this._gridConfig.scale_height + \"px\";\n\t\t\tthis._dnd.config.marker.style.lineHeight = this._gridConfig.scale_height + \"px\";\n\t\t\tthis._draggedCell.classList.add(\"gantt_grid_head_cell_dragged\");\n\t\t});\n\n\t\tthis._dnd.attachEvent(\"onDragMove\", (obj, e) => {\n\t\t\tif(!this._draggedCell){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._dragX = e.clientX;\n\t\t\tconst x = this.calculateCurrentPosition(e.clientX);\n\t\t\tconst columnIndexes = this.findColumnsIndexes();\n\t\t\tconst targetIndex = columnIndexes.targetIndex;\n\t\t\tconst draggedIndex = columnIndexes.draggedIndex;\n\t\t\tconst columns = this.$grid.$getConfig().columns;\n\n\t\t\tconst draggedColumn = columns[draggedIndex];\n\t\t\tconst targetColumn = columns[targetIndex];\n\t\t\tif (this.$grid.callEvent(\"onColumnDragMove\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]) === false) {\n\t\t\t\tthis.cleanTargetMarker();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.setMarkerPosition(x);\n\t\t\tthis.drawTargetMarker(columnIndexes);\n\t\t\treturn true;\n\t\t});\n\n\t\tthis._dnd.attachEvent(\"onDragEnd\", () => {\n\t\t\tif (!this._draggedCell) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$gantt.config.autoscroll = this._originAutoscroll;\n\t\t\tthis._draggedCell.classList.remove(\"gantt_grid_head_cell_dragged\");\n\t\t\tthis.cleanTargetMarker();\n\t\t\tthis.reorderColumns();\n\t\t});\n\n\t}\n\treorderColumns() {\n\t\tconst { targetIndex, draggedIndex } = this.findColumnsIndexes();\n\n\t\tconst columns = this.$grid.$getConfig().columns;\n\t\tconst draggedColumn = columns[draggedIndex];\n\t\tconst targetColumn = columns[targetIndex];\n\n\t\tif (this.$grid.callEvent(\"onBeforeColumnReorder\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]) === false) {\n\t\t\treturn;\n\t\t}\n\t\tif (targetIndex === draggedIndex) {\n\t\t\treturn;\n\t\t}\n\t\tcolumns.splice(draggedIndex, 1);\n\t\tcolumns.splice(targetIndex, 0, draggedColumn);\n\t\tthis.$gantt.render();\n\t\tthis.$grid.callEvent(\"onAfterColumnReorder\", [{ draggedColumn, targetColumn, draggedIndex, targetIndex }]);\n\t}\n\tfindColumnsIndexes() {\n\t\tconst draggedId = this._dnd.config.column;\n\t\tconst columns = this.$grid.$getConfig().columns;\n\t\tlet targetIndex: number;\n\t\tlet draggedIndex: number;\n\t\tlet xBefore: number;\n\t\tlet xAfter: number;\n\t\tconst currentColumn = { startX: 0, endX: 0 };\n\n\t\tlet start = 0;\n\t\tlet end = columns.length - 1;\n\t\tlet compare = (a, b) => a <= b;\n\t\tlet next = (index) => ++index;\n\t\tif (this.$gantt.config.rtl) {\n\t\t\tstart = columns.length - 1;\n\t\t\tend = 0;\n\t\t\tcompare = (a, b) => a >= b;\n\t\t\tnext = (index) => --index;\n\t\t}\n\n\t\tlet columnRelativePos: number;\n\n\t\tconst relativeX = this._dragX - this.$grid.$grid.getBoundingClientRect().left + this._scrollableGrid.getCorrection();\n\t\tfor (let i = start; compare(i, end); i = next(i)) {\n\t\t\tif (targetIndex !== undefined && draggedIndex !== undefined) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(!columns[i].hide) {\n\t\t\t\tcurrentColumn.startX = currentColumn.endX;\n\t\t\t\tcurrentColumn.endX += columns[i].width;\n\n\t\t\t\t// if drop on a column or drop after the last column\n\t\t\t\tif (relativeX >= currentColumn.startX && (relativeX <= currentColumn.endX || !compare(next(i), end))) {\n\t\t\t\t\ttargetIndex = i;\n\t\t\t\t\txBefore = currentColumn.startX;\n\t\t\t\t\txAfter = currentColumn.endX;\n\t\t\t\t\tcolumnRelativePos = (relativeX - currentColumn.startX) / (currentColumn.endX - currentColumn.startX);\n\t\t\t\t}\n\t\t\t\tif (draggedId === columns[i].name) {\n\t\t\t\t\tdraggedIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttargetIndex,\n\t\t\tdraggedIndex,\n\t\t\txBefore,\n\t\t\txAfter,\n\t\t\tcolumnRelativePos\n\t\t};\n\t}\n\tsetMarkerPosition(x: number, y: number = 10) {\n\t\tconst { marker } = this._dnd.config;\n\t\tconst gridOffset = this._dnd._obj.getBoundingClientRect();\n\t\tmarker.style.top = `${gridOffset.y + y}px`;\n\t\tmarker.style.left = `${x}px`;\n\t}\n\tcalculateCurrentPosition = (eventX: number) => {\n\t\tconst gridBoundingRect = this.$grid.$grid.getBoundingClientRect();\n\t\tconst maxLeft = gridBoundingRect.right;\n\t\tconst minLeft = gridBoundingRect.left;\n\t\tlet x = eventX;\n\t\tif (x > maxLeft) {\n\t\t\tx = maxLeft;\n\t\t}\n\t\tif (x < minLeft) {\n\t\t\tx = minLeft;\n\t\t}\n\t\treturn x;\n\t}\n\tdrawTargetMarker({ targetIndex, draggedIndex, xBefore, xAfter, columnRelativePos }) {\n\t\tif (!this._targetMarker) {\n\t\t\tthis._targetMarker = document.createElement(\"div\");\n\t\t\tdomHelpers.addClassName(this._targetMarker, \"gantt_grid_target_marker\");\n\t\t\tthis._targetMarker.style.display = \"none\";\n\t\t\tthis._targetMarker.style.height = `${this._gridConfig.scale_height}px`;\n\t\t}\n\n\t\t// marker can be detached after gantt.render\n\t\tif(!this._targetMarker.parentNode){\n\t\t\tthis.$grid.$grid_scale.appendChild(this._targetMarker);\n\t\t}\n\n\t\tlet nextPosition: number;\n\t\tif (targetIndex > draggedIndex) {\n\t\t\tnextPosition = xAfter;\n\t\t} else if (targetIndex < draggedIndex) {\n\t\t\tnextPosition = xBefore;\n\t\t} else {\n\t\t\tif(columnRelativePos > 0.5){\n\t\t\t\tnextPosition = xAfter;\n\t\t\t}else{\n\t\t\t\tnextPosition = xBefore;\n\t\t\t}\n\t\t}\n\n\t\tthis._targetMarker.style.left = `${nextPosition}px`;\n\t\tthis._targetMarker.style.display = \"block\";\n\t}\n\tcleanTargetMarker() {\n\t\tif (this._targetMarker && this._targetMarker.parentNode) {\n\t\t\tthis.$grid.$grid_scale.removeChild(this._targetMarker);\n\t\t}\n\t\tthis._targetMarker = null;\n\t}\n}","import {ColumnsGridDnd} from \"./column_grid_dnd\";\nexport default ColumnsGridDnd;","function createResizer(gantt, grid){\n\treturn {\n\t\tinit: function(){},\n\t\tdoOnRender: function(){}\n\t};\n}\n\nmodule.exports = createResizer;","var Grid = require(\"./ui/grid/grid\");\n\nmodule.exports = function(gantt) {\n\trequire(\"./grid_column_api.gpl\")(gantt);\n\tGrid.prototype.getGridColumns = function () {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = config.columns,\n\t\t\tvisibleColumns = [];\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (!columns[i].hide)\n\t\t\t\tvisibleColumns.push(columns[i]);\n\t\t}\n\n\t\treturn visibleColumns;\n\t};\n};","module.exports = function(gantt) {\n\tvar TreeDataStore = require(\"./datastore/treedatastore\");\n\n\tvar loadedBranches = {};\n\tgantt.attachEvent(\"onClearAll\", function(){\n\t\tloadedBranches = {};\n\t});\n\n\tvar old_has_children = TreeDataStore.prototype.hasChild;\n\tgantt.$data.tasksStore.hasChild = function (id) {\n\t\tif (old_has_children.apply(this, arguments))\n\t\t\treturn true;\n\t\tif (this.exists(id)) {\n\t\t\treturn this.getItem(id)[gantt.config.branch_loading_property];\n\t\t}\n\t\treturn false;\n\t};\n\n\tfunction needLoading(id) {\n\t\tif (gantt.config.branch_loading && gantt._load_url) {\n\t\t\tvar alreadyLoaded = !!loadedBranches[id];\n\t\t\t// call ajax only if branch has children\n\t\t\tif (!alreadyLoaded && (!gantt.getChildren(id).length && gantt.hasChild(id))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgantt.attachEvent(\"onTaskOpened\", function (id) {\n\t\tif (gantt.config.branch_loading && gantt._load_url) {\n\t\t\t// call ajax only if branch has children\n\t\t\tif (needLoading(id)) {\n\t\t\t\tvar url = gantt._load_url;\n\t\t\t\turl = url.replace(/(\\?|&)?parent_id=.+&?/, \"\");\n\t\t\t\tvar param = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n\t\t\t\tvar y = gantt.getScrollState().y || 0;\n\n\t\t\t\tvar requestData = {\n\t\t\t\t\ttaskId: id,\n\t\t\t\t\turl: url + param + \"parent_id=\" + encodeURIComponent(id)\n\t\t\t\t};\n\n\t\t\t\tif(gantt.callEvent(\"onBeforeBranchLoading\", [requestData]) === false){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tgantt.load(requestData.url, this._load_type, function () {\n\t\t\t\t\tif (y) {\n\t\t\t\t\t\tgantt.scrollTo(null, y);\n\t\t\t\t\t}\n\t\t\t\t\tgantt.callEvent(\"onAfterBranchLoading\", [requestData]);\n\t\t\t\t});\n\t\t\t\tloadedBranches[id] = true;\n\t\t\t}\n\t\t}\n\t});\n\n};","export default class LinkFormatterSimple implements ILinkFormatter {\n\tstatic create = (settings: ILinkFormatterConfig = null, gantt: any): LinkFormatterSimple => {\n\t\treturn new LinkFormatterSimple(gantt);\n\t}\n\tprotected _linkReg: RegExp;\n\tprotected _gantt: any;\n\n\tconstructor(gantt: any) {\n\t\tthis._linkReg = /^[0-9\\.]+/;\n\t\tthis._gantt = gantt;\n\t}\n\n\tformat = (link: ILink) : string => {\n\t\tconst wbs = this._getWBSCode(link.source);\n\t\treturn wbs;\n\t}\n\n\tcanParse = (value: string) : boolean => {\n\t\treturn this._linkReg.test(value);\n\t}\n\tparse = (value: string) : ILink => {\n\t\tif(!this.canParse(value)){\n\t\t\treturn null;\n\t\t}\n\n\t\tconst linkPart = this._linkReg.exec(value)[0].trim();\n\n\t\tconst source = this._findSource(linkPart) || null;\n\n\t\treturn {\n\t\t\tid: undefined,\n\t\t\tsource,\n\t\t\ttarget: null,\n\t\t\ttype: this._gantt.config.links.finish_to_start,\n\t\t\tlag: 0\n\t\t};\n\t}\n\n\tprotected _getWBSCode = (source: number | string) => {\n\t\tconst pred = this._gantt.getTask(source);\n\t\treturn this._gantt.getWBSCode(pred);\n\t}\n\n\tprotected _findSource = (value: string) => {\n\t\tconst reqTemplate = new RegExp(\"^[0-9\\.]+\", \"i\");\n\t\tif(reqTemplate.exec(value)){\n\t\t\tconst wbs = reqTemplate.exec(value)[0];\n\t\t\tconst task = this._gantt.getTaskByWBSCode(wbs);\n\t\t\tif(task){\n\t\t\t\treturn task.id;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n}","\nvar DurationFormatter = require(\"../common/duration_formatter\").default;\nvar LinkFormatter = require(\"../common/link_formatter\").default;\n\nmodule.exports = function(gantt){\n\tgantt.ext.formatters = {\n\t\tdurationFormatter: function(settings){\n\t\t\tif(!settings){\n\t\t\t\tsettings = {};\n\t\t\t}\n\t\t\tif(!settings.store){\n\t\t\t\tsettings.store = gantt.config.duration_unit;\n\t\t\t}\n\t\t\tif(!settings.enter){\n\t\t\t\tsettings.enter = gantt.config.duration_unit;\n\t\t\t}\n\t\t\treturn DurationFormatter.create(settings, gantt);\n\t\t},\n\t\tlinkFormatter: function(settings){\n\t\t\treturn LinkFormatter.create(settings, gantt);\n\t\t}\n\t};\n};","module.exports = function(gantt) {\n\tfunction isEnabled() {\n\t\treturn gantt.config.auto_types && // if enabled\n\t\t\t(gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project);// and supported\n\t}\n\n\tfunction callIfEnabled(callback) {\n\t\treturn function() {\n\t\t\tif (!isEnabled()) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn callback.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction updateParents(childId) {\n\t\tgantt.batchUpdate(function() {\n\t\t\tcheckParent(childId);\n\t\t});\n\t}\n\n\tvar delTaskParent;\n\n\tfunction checkParent(id) {\n\t\tsetTaskType(id);\n\t\tvar parent = gantt.getParent(id);\n\n\t\tif (parent != gantt.config.root_id) {\n\t\t\tcheckParent(parent);\n\t\t}\n\t}\n\n\tfunction setTaskType(id) {\n\t\tid = id.id || id;\n\t\tvar task = gantt.getTask(id);\n\t\tvar targetType = getTaskTypeToUpdate(task);\n\n\t\tif (targetType !== false) {\n\t\t\tupdateTaskType(task, targetType);\n\t\t}\n\t}\n\n\tfunction updateTaskType(task, targetType) {\n\t\tif(!gantt.getState().group_mode){\n\t\t\ttask.type = targetType;\n\t\t\tgantt.updateTask(task.id);\n\t\t}\n\t}\n\n\tfunction getTaskTypeToUpdate(task) {\n\t\tvar allTypes = gantt.config.types;\n\t\tvar hasChildren = gantt.hasChild(task.id);\n\t\tvar taskType = gantt.getTaskType(task.type);\n\n\t\tif (hasChildren && taskType === allTypes.task) {\n\t\t\treturn allTypes.project;\n\t\t}\n\n\t\tif (!hasChildren && taskType === allTypes.project) {\n\t\t\treturn allTypes.task;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tvar isParsingDone = true;\n\n\tgantt.attachEvent(\"onParse\", callIfEnabled(function() {\n\t\tisParsingDone = false;\n\n\t\tgantt.batchUpdate(function() {\n\t\t\tgantt.eachTask(function(task) {\n\t\t\t\tvar targetType = getTaskTypeToUpdate(task);\n\t\t\t\tif (targetType !== false) {\n\t\t\t\t\tupdateTaskType(task, targetType);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tisParsingDone = true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id) {\n\t\tif (isParsingDone) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(function(id) {\n\t\tif (isParsingDone) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}));\n\n\tfunction updateAfterRemoveChild(id){\n\t\tif (id != gantt.config.root_id && gantt.isTaskExists(id)) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}\n\n\tgantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function(id, task) {\n\t\tdelTaskParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function(id, task) {\n\t\tupdateAfterRemoveChild(delTaskParent);\n\t}));\n\n\n\tvar originalRowDndParent;\n\n\tgantt.attachEvent(\"onRowDragStart\", callIfEnabled(function(id, target, e) {\n\t\toriginalRowDndParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function(id, target) {\n\t\tupdateAfterRemoveChild(originalRowDndParent);\n\t\tupdateParents(id);\n\t}));\n\n\tvar originalMoveTaskParent;\n\n\tgantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function(sid, parent, tindex) {\n\t\toriginalMoveTaskParent = gantt.getParent(sid);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function(id, parent, tindex) {\n\t\tif (document.querySelector(\".gantt_drag_marker\")) {\n\t\t\t// vertical dnd in progress\n\t\t\treturn;\n\t\t}\n\t\tupdateAfterRemoveChild(originalMoveTaskParent);\n\t\tupdateParents(id);\n\t}));\n};","module.exports = function addPlaceholder(gantt){\n\tfunction isEnabled(){\n\t\treturn gantt.config.placeholder_task;\n\t}\n\n\tfunction callIfEnabled(callback){\n\t\treturn function(){\n\t\t\tif(!isEnabled()){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn callback.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction silenceDataProcessor(dataProcessor){\n\t\tif(dataProcessor && !dataProcessor._silencedPlaceholder){\n\t\t\tdataProcessor._silencedPlaceholder = true;\n\t\t\tdataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function(id, state, data){\n\t\t\t\tif(data.type == gantt.config.types.placeholder){\n\t\t\t\t\tdataProcessor.setUpdated(id, false);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}));\n\t\t}\n\t}\n\n\tfunction insertPlaceholder(){\n\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\t\tif(!placeholders.length || !gantt.isTaskExists(placeholders[0].id)){\n\t\t\tvar placeholder = {\n\t\t\t\tunscheduled: true,\n\t\t\t\ttype: gantt.config.types.placeholder,\n\t\t\t\tduration:0,\n\t\t\t\ttext: gantt.locale.labels.new_task\n\t\t\t};\n\t\t\tif(gantt.callEvent(\"onTaskCreated\", [placeholder]) === false){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgantt.addTask(placeholder);\n\t\t\t\n\t\t}\n\t}\n\n\tfunction afterEdit(id){\n\t\tvar item = gantt.getTask(id);\n\t\tif(item.type == gantt.config.types.placeholder) {\n\t\t\tif(item.start_date && item.end_date && item.unscheduled){\n\t\t\t\titem.unscheduled = false;\n\t\t\t}\n\n\t\t\tgantt.batchUpdate(function(){\n\t\t\t\tvar newTask = gantt.copy(item);\n\t\t\t\tgantt.silent(function(){\n\t\t\t\t\tgantt.deleteTask(item.id);\n\t\t\t\t});\n\n\t\t\t\tdelete newTask[\"!nativeeditor_status\"];\n\t\t\t\tnewTask.type = gantt.config.types.task;\n\t\t\t\tnewTask.id = gantt.uid();\n\t\t\t\tgantt.addTask(newTask);\n\n\t\t\t\t//insertPlaceholder();\n\t\t\t});\n\n\t\t}\n\t}\n\n\tgantt.config.types.placeholder = \"placeholder\";\n\tgantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\n\n\tvar ready = false;\n\tgantt.attachEvent(\"onGanttReady\", function(){\n\t\tif(ready){\n\t\t\treturn;\n\t\t}\n\t\tready = true;\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id, task){\n\t\t\tif(task.type != gantt.config.types.placeholder){\n\t\t\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\t\t\t\tplaceholders.forEach(function(p){\n\t\t\t\t\tgantt.silent(function(){\n\t\t\t\t\t\tif(gantt.isTaskExists(p.id))\n\t\t\t\t\t\t\tgantt.deleteTask(p.id);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tinsertPlaceholder();\n\t\t\t}\n\t\t}));\n\t\tgantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\n\t});\n\n\tfunction isPlaceholderTask(taskId){\n\t\tif(gantt.config.types.placeholder && gantt.isTaskExists(taskId)){\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\tif(task.type == gantt.config.types.placeholder){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tfunction isPlaceholderLink(link){\n\t\tif(isPlaceholderTask(link.source) || isPlaceholderTask(link.target)){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tgantt.attachEvent(\"onLinkValidation\", function(link){\n\t\tif(isPlaceholderLink(link)){\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\tgantt.attachEvent(\"onBeforeLinkAdd\", function(id,link){\n\t\tif(isPlaceholderLink(link)){\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\tgantt.attachEvent(\"onBeforeUndoStack\", function(action){\n\t\tfor(var i = 0; i < action.commands.length; i++){\n\t\t\tvar command = action.commands[i];\n\t\t\tif(command.entity === \"task\" && command.value.type === gantt.config.types.placeholder){\n\t\t\t\taction.commands.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt){\n\n\tvar resourceTaskCache = {};\n\n\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(){\n\t\tresourceTaskCache = {};\n\t});\n\n\tfunction getTaskBy(propertyName, propertyValue) {\n\t\tif (typeof propertyName == \"function\") {\n\t\t\treturn filterResourceTasks(propertyName);\n\t\t} else {\n\t\t\tif (helpers.isArray(propertyValue)) {\n\t\t\t\treturn getResourceTasks(propertyName, propertyValue);\n\t\t\t} else {\n\t\t\t\treturn getResourceTasks(propertyName, [propertyValue]);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction filterResourceTasks(filter) {\n\t\tvar res = [];\n\t\tgantt.eachTask(function (task) {\n\t\t\tif (filter(task)) {\n\t\t\t\tres.push(task);\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t}\n\n\tvar falsyValuePrefix = String(Math.random());\n\tfunction resourceHashFunction(value){\n\t\tif (value === null){\n\t\t\treturn falsyValuePrefix + String(value);\n\t\t}\n\t\treturn String(value);\n\t}\n\n\tfunction getResourceTasks(property, resourceIds) {\n\t\tvar res;\n\t\tvar cacheKey = resourceIds.join(\"_\") + \"_\" + property;\n\t\tvar resourceHash = {};\n\t\thelpers.forEach(resourceIds, function(resourceId) {\n\t\t\tresourceHash[resourceHashFunction(resourceId)] = true;\n\t\t});\n\n\t\tif (!resourceTaskCache[cacheKey]) {\n\t\t\tres = resourceTaskCache[cacheKey] = [];\n\t\t\tgantt.eachTask(function (task) {\n\t\t\t\tif (task.type == gantt.config.types.project) return;\n\t\t\t\tif (property in task) {\n\t\t\t\t\tvar resourceValue;\n\t\t\t\t\tif (!helpers.isArray(task[property])) {\n\t\t\t\t\t\tresourceValue = [task[property]];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresourceValue = task[property];\n\t\t\t\t\t}\n\t\t\t\t\thelpers.forEach(resourceValue, function(value) {\n\t\t\t\t\t\tif (resourceHash[resourceHashFunction(value)] || (value && resourceHash[resourceHashFunction(value.resource_id)])) {\n\t\t\t\t\t\t\tres.push(task);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tres = resourceTaskCache[cacheKey];\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tfunction selectAssignments(resourceId, taskId, result){\n\t\tvar property = gantt.config.resource_property;\n\t\tvar owners = [];\n\t\tif (gantt.getDatastore(\"task\").exists(taskId)) {\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\towners = task[property] || [];\n\t\t}\n\n\t\tif (!Array.isArray(owners)) {\n\t\t\towners = [owners];\n\t\t}\n\t\tfor (var i = 0; i < owners.length; i++) {\n\t\t\tif (owners[i].resource_id == resourceId) {\n\t\t\t\tresult.push({task_id: task.id, resource_id:owners[i].resource_id, value:owners[i].value});\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getResourceAssignments(resourceId, taskId){\n\t\t// resource assignment as an independent module:\n\t\t// {taskId:, resourceId, value}\n\t\t// TODO: probably should add a separate datastore for these\n\t\tvar assignments = [];\n\t\tvar property = gantt.config.resource_property;\n\t\tif(taskId !== undefined){\n\t\t\tselectAssignments(resourceId, taskId, assignments);\n\t\t}else{\n\t\t\tvar tasks = gantt.getTaskBy(property, resourceId);\n\t\t\ttasks.forEach(function(task){\n\t\t\t\tselectAssignments(resourceId, task.id, assignments);\n\t\t\t});\n\t\t}\n\t\treturn assignments;\n\t}\n\n\treturn {\n\t\tfilterTasks: getTaskBy,\n\t\tgetResourceAssignments: getResourceAssignments\n\t};\n}\n\nmodule.exports = function(gantt){\n\tvar methods = createResourceMethods(gantt);\n\n\tgantt.getTaskBy = methods.filterTasks;\n\tgantt.getResourceAssignments = methods.getResourceAssignments;\n\tgantt.config.resource_property = \"owner_id\";\n\tgantt.config.resource_store = \"resource\";\n\tgantt.config.resource_render_empty_cells = false;\n\n\t/**\n\t * these are placeholder functions that should be redefined by the user\n\t*/\n\tgantt.templates.histogram_cell_class = function(start_date, end_date, resource, tasks) {};\n\tgantt.templates.histogram_cell_label = function(start_date, end_date, resource, tasks) {\n\t\treturn tasks.length + \"/3\";\n\t};\n\tgantt.templates.histogram_cell_allocated = function(start_date, end_date, resource, tasks) {\n\t\treturn tasks.length / 3;\n\t};\n\tgantt.templates.histogram_cell_capacity = function(start_date, end_date, resource, tasks) {\n\t\treturn 0;\n\t};\n\n\n\n\tgantt.templates.resource_cell_class = function(start, end, resource, tasks) {\n\t\tvar css = \"\";\n\t\tif (tasks.length <= 1) {\n\t\t\tcss = \"gantt_resource_marker_ok\";\n\t\t} else {\n\t\t\tcss = \"gantt_resource_marker_overtime\";\n\t\t}\n\t\treturn css;\n\t};\n\n\tgantt.templates.resource_cell_value = function(start, end, resource, tasks) {\n\t\treturn tasks.length * 8;\n\t};\n};\n\n\n","var createWbs = (function(gantt){\n\treturn {\n\t_needRecalc: true,\n\treset: function(){\n\t\tthis._needRecalc = true;\n\t},\n\t_isRecalcNeeded: function(){\n\t\treturn (!this._isGroupSort() && this._needRecalc);\n\t},\n\t_isGroupSort: function() {\n\t\treturn !!(gantt.getState().group_mode);\n\t},\n\t_getWBSCode: function(task) {\n\t\tif(!task) return \"\";\n\n\t\tif(this._isRecalcNeeded()){\n\t\t\tthis._calcWBS();\n\t\t}\n\n\t\tif(task.$virtual) return \"\";\n\t\tif(this._isGroupSort()) return task.$wbs || \"\";\n\n\t\tif(!task.$wbs) {\n\t\t\tthis.reset();\n\t\t\tthis._calcWBS();\n\t\t}\n\t\treturn task.$wbs;\n\t},\n\t_setWBSCode: function(task, value) {\n\t\ttask.$wbs = value;\n\t},\n\tgetWBSCode: function(task) {\n\t\treturn this._getWBSCode(task);\n\t},\n\tgetByWBSCode: function(code){\n\t\tvar parts = code.split(\".\");\n\t\tvar currentNode = gantt.config.root_id;\n\t\tfor(var i = 0; i < parts.length; i++){\n\t\t\tvar children = gantt.getChildren(currentNode);\n\t\t\tvar index = parts[i]*1 - 1;\n\t\t\tif(gantt.isTaskExists(children[index])){\n\t\t\t\tcurrentNode = children[index];\n\t\t\t}else{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tif(gantt.isTaskExists(currentNode)){\n\t\t\treturn gantt.getTask(currentNode);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t},\n\t_calcWBS: function() {\n\t\tif(!this._isRecalcNeeded()) return;\n\n\t\tvar _isFirst = true;\n\t\tgantt.eachTask(function(ch) {\n\t\t\tif(_isFirst) {\n\t\t\t\t_isFirst = false;\n\t\t\t\tthis._setWBSCode(ch, \"1\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar _prevSibling = gantt.getPrevSibling(ch.id);\n\t\t\tif (_prevSibling !== null) {\n\t\t\t\tvar _wbs = gantt.getTask(_prevSibling).$wbs;\n\t\t\t\tif(_wbs) {\n\t\t\t\t\t_wbs = _wbs.split(\".\");\n\t\t\t\t\t_wbs[_wbs.length-1]++;\n\t\t\t\t\tthis._setWBSCode(ch, _wbs.join(\".\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar _parent = gantt.getParent(ch.id);\n\t\t\t\tthis._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n\t\t\t}\n\t\t}, gantt.config.root_id, this);\n\n\t\tthis._needRecalc = false;\n\t}\n};\n});\n\nmodule.exports = function(gantt){\n\tvar wbs = createWbs(gantt);\n\tgantt.getWBSCode = function getWBSCode(task) {\n\t\treturn wbs.getWBSCode(task);\n\t};\n\n\tgantt.getTaskByWBSCode = function(code) {\n\t\treturn wbs.getByWBSCode(code);\n\t};\n\n\tfunction resetCache(){\n\t\twbs.reset();\n\t\treturn true;\n\t}\n\n\tgantt.attachEvent(\"onAfterTaskMove\", resetCache);\n\tgantt.attachEvent(\"onBeforeParse\", resetCache);\n\tgantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n\tgantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n\tgantt.attachEvent(\"onAfterSort\", resetCache);\n\n};\n","var global = require(\"../../utils/global\");\n\nfunction createMethod(gantt){\n\tvar methods = {};\n\tvar isActive = false;\n\tfunction disableMethod(methodName, dummyMethod){\n\t\tdummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function(){};\n\n\t\tif(!methods[methodName]){\n\t\t\tmethods[methodName] = this[methodName];\n\t\t\tthis[methodName] = dummyMethod;\n\t\t}\n\t}\n\tfunction restoreMethod(methodName){\n\t\tif(methods[methodName]){\n\t\t\tthis[methodName] = methods[methodName];\n\t\t\tmethods[methodName] = null;\n\t\t}\n\t}\n\tfunction disableMethods(methodsHash){\n\t\tfor(var i in methodsHash){\n\t\t\tdisableMethod.call(this, i, methodsHash[i]);\n\t\t}\n\t}\n\tfunction restoreMethods(){\n\t\tfor(var i in methods){\n\t\t\trestoreMethod.call(this, i);\n\t\t}\n\t}\n\n\tfunction batchUpdatePayload(callback){\n\t\ttry{\n\t\t\tcallback();\n\t\t}catch(e){\n\t\t\tglobal.console.error(e);\n\t\t}\n\t}\n\n\tvar state = gantt.$services.getService(\"state\");\n\tstate.registerProvider(\"batchUpdate\", function(){\n\t\treturn {\n\t\t\tbatch_update: isActive\n\t\t};\n\t}, false);\n\n\treturn function batchUpdate(callback, noRedraw) {\n\t\tif(isActive){\n\t\t\t// batch mode is already active\n\t\t\tbatchUpdatePayload(callback);\n\t\t\treturn;\n\t\t}\n\n\t\tvar call_dp = (this._dp && this._dp.updateMode != \"off\");\n\t\tvar dp_mode;\n\t\tif (call_dp){\n\t\t\tdp_mode = this._dp.updateMode;\n\t\t\tthis._dp.setUpdateMode(\"off\");\n\t\t}\n\n\t\t// temporary disable some methods while updating multiple tasks\n\t\tvar resetProjects = {};\n\t\tvar methods = {\n\t\t\t\"render\":true,\n\t\t\t\"refreshData\":true,\n\t\t\t\"refreshTask\":true,\n\t\t\t\"refreshLink\":true,\n\t\t\t\"resetProjectDates\":function(task){\n\t\t\t\tresetProjects[task.id] = task;\n\t\t\t}\n\t\t};\n\n\t\tdisableMethods.call(this, methods);\n\n\t\tisActive = true;\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\n\n\t\tbatchUpdatePayload(callback);\n\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\n\n\t\trestoreMethods.call(this);\n\n\t\t// do required updates after changes applied\n\t\tfor(var i in resetProjects){\n\t\t\tthis.resetProjectDates(resetProjects[i]);\n\t\t}\n\n\t\tisActive = false;\n\n\t\tif(!noRedraw){\n\t\t\tthis.render();\n\t\t}\n\n\t\tif (call_dp) {\n\t\t\tthis._dp.setUpdateMode(dp_mode);\n\t\t\tthis._dp.setGanttMode(\"task\");\n\t\t\tthis._dp.sendData();\n\t\t\tthis._dp.setGanttMode(\"link\");\n\t\t\tthis._dp.sendData();\n\t\t}\n\t};\n\n\n\n}\n\nmodule.exports = function(gantt){\n\tgantt.batchUpdate = createMethod(gantt);\n};","module.exports = function(gantt){\n\tif(!gantt.ext){\n\t\tgantt.ext = {};\n\t}\n\n\tvar modules = [\n\t\trequire(\"./batch_update\"),\n\t\trequire(\"./wbs\"),\n\t\trequire(\"./resources\"),\n\t\trequire(\"./new_task_placeholder\"),\n\t\trequire(\"./auto_task_types\"),\n\t\trequire(\"./formatters\")\n\t];\n\n\tfor(var i = 0; i < modules.length; i++){\n\t\tif(modules[i])\n\t\t\tmodules[i](gantt);\n\t}\n};","import * as utils from \"../../utils/utils\";\n\nexport default class SimpleStorage {\n\tpublic static create = () : SimpleStorage => {\n\t\treturn new SimpleStorage();\n\t}\n\n\tprotected _storage: { [id: string]: any; };\n\n\tprotected constructor() {\n\t\tthis._storage = {};\n\t}\n\n\tpublic clear = (): void => {\n\t\tthis._storage = {};\n\t}\n\n\tpublic storeItem = (item: any): void => {\n\t\tthis._storage[item.id] = utils.copy(item);\n\t}\n\n\tpublic getStoredItem = (id: string): any => {\n\t\treturn this._storage[id] || null;\n\t}\n}","\nexport default function extendGantt(gantt: any, dp: any) {\n\tgantt.getUserData = function(id, name) {\n\t\tif (!this.userdata) {\n\t\t\tthis.userdata = {};\n\t\t}\n\t\tif (this.userdata[id] && this.userdata[id][name]) {\n\t\t\treturn this.userdata[id][name];\n\t\t}\n\t\treturn \"\";\n\t};\n\tgantt.setUserData = function(id, name, value) {\n\t\tif (!this.userdata) {\n\t\t\tthis.userdata = {};\n\t\t}\n\t\tif (!this.userdata[id]) {\n\t\t\tthis.userdata[id] = {};\n\t\t}\n\t\tthis.userdata[id][name] = value;\n\t};\n\n\tgantt._change_id = function(oldId, newId) {\n\t\tif (this._dp._ganttMode !== \"task\") {\n\t\t\tthis.changeLinkId(oldId, newId);\n\t\t} else {\n\t\t\tthis.changeTaskId(oldId, newId);\n\t\t}\n\t};\n\n\tgantt._row_style = function(rowId, classname){\n\t\tif (this._dp._ganttMode !== \"task\") {\n\t\t\treturn;\n\t\t}\n\t\tif (!gantt.isTaskExists(rowId)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst task = gantt.getTask(rowId);\n\t\ttask.$dataprocessor_class = classname;\n\t\tgantt.refreshTask(rowId);\n\t};\n\n\t// fake method for dataprocessor\n\tgantt._delete_task = function(rowId, node) {}; // tslint:disable-line\n\n\tgantt._sendTaskOrder = function(id, item){\n\t\tif (item.$drop_target) {\n\t\t\tthis._dp.setGanttMode(\"task\");\n\t\t\tthis.getTask(id).target = item.$drop_target;\n\t\t\tthis._dp.setUpdated(id, true,\"order\");\n\t\t\tdelete this.getTask(id).$drop_target;\n\t\t}\n\t};\n\n\tgantt.setDp = function() {\n\t\tthis._dp = dp;\n\t};\n\n\tgantt.setDp();\n}","import * as helpers from \"../../utils/helpers\";\n\nexport default class DataProcessorEvents {\n\tprotected _dataProcessorHandlers: any[];\n\tprotected $gantt: any;\n\tprotected $dp: any;\n\n\tconstructor(gantt: any, dp: any) {\n\t\tthis.$gantt = gantt;\n\t\tthis.$dp = dp;\n\t\tthis._dataProcessorHandlers = [];\n\t}\n\n\tattach() {\n\t\tconst dp = this.$dp;\n\t\tconst gantt = this.$gantt;\n\t\tconst treeHelper = require(\"../../utils/task_tree_helpers\");\n\t\tconst cascadeDelete = {};\n\n\t\tfunction clientSideDelete(id) {\n\t\t\tconst updated = dp.updatedRows.slice();\n\t\t\tlet clientOnly = false;\n\n\t\t\tfor (let i = 0; i < updated.length && !dp._in_progress[id]; i++) {\n\t\t\t\tif (updated[i] === id) {\n\t\t\t\t\tif (gantt.getUserData(id, \"!nativeeditor_status\") === \"inserted\") {\n\t\t\t\t\t\tclientOnly = true;\n\t\t\t\t\t}\n\t\t\t\t\tdp.setUpdated(id,false);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn clientOnly;\n\t\t}\n\n\t\tfunction getTaskLinks(task) {\n\t\t\tlet _links = [];\n\n\t\t\tif (task.$source) {\n\t\t\t\t_links = _links.concat(task.$source);\n\t\t\t}\n\t\t\tif (task.$target) {\n\t\t\t\t_links = _links.concat(task.$target);\n\t\t\t}\n\n\t\t\treturn _links;\n\t\t}\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskAdd\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id, true, \"inserted\");\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskUpdate\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id, true);\n\n\t\t\t\t// gantt can be destroyed/reinitialized after dp.setUpdated\n\t\t\t\tif(gantt._sendTaskOrder){\n\t\t\t\t\tgantt._sendTaskOrder(id, item);\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onBeforeTaskDelete\", function(id, item) { // tslint:disable-line\n\t\t\tif (!gantt.config.cascade_delete) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcascadeDelete[id] = {\n\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\n\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\n\t\t\t};\n\t\t\treturn true;\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterTaskDelete\", function(id, item) { // tslint:disable-line\n\t\t\tdp.setGanttMode(\"tasks\");\n\n\t\t\t// not send delete request if item is not inserted into the db - just remove it from the client\n\t\t\tconst needDbDelete = !clientSideDelete(id);\n\t\t\tif (!needDbDelete) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (gantt.config.cascade_delete && cascadeDelete[id]) {\n\t\t\t\tconst dpMode = dp.updateMode;\n\t\t\t\tdp.setUpdateMode(\"off\");\n\n\t\t\t\tconst cascade = cascadeDelete[id];\n\t\t\t\tfor (const i in cascade.tasks) {\n\t\t\t\t\tif (!clientSideDelete(i)) {\n\t\t\t\t\t\tdp.storeItem(cascade.tasks[i]);\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tfor (const i in cascade.links) {\n\t\t\t\t\tif (!clientSideDelete(i)) {\n\t\t\t\t\t\tdp.storeItem(cascade.links[i]);\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcascadeDelete[id] = null;\n\n\t\t\t\tif (dpMode !== \"off\") {\n\t\t\t\t\tdp.sendAllData();\n\t\t\t\t}\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdateMode(dpMode);\n\t\t\t}\n\n\t\t\tdp.storeItem(item);\n\t\t\tdp.setUpdated(id, true, \"deleted\");\n\n\t\t\tif (dp.updateMode !== \"off\" && !dp._tSend) {\n\t\t\t\tdp.sendAllData();\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkUpdate\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isLinkExists(id)) {\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tdp.setUpdated(id, true);\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkAdd\", function(id, item) { // tslint:disable-line\n\t\t\tif (gantt.isLinkExists(id)) {\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\n\t\t\t}\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onAfterLinkDelete\", function(id, item) { // tslint:disable-line\n\t\t\tdp.setGanttMode(\"links\");\n\n\t\t\tconst needDbDelete = !clientSideDelete(id);\n\t\t\tif (!needDbDelete) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdp.storeItem(item);\n\t\t\tdp.setUpdated(id, true,\"deleted\");\n\t\t}));\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onRowDragEnd\", function(id, target) { // tslint:disable-line\n\t\t\tgantt._sendTaskOrder(id, gantt.getTask(id));\n\t\t}));\n\n\t\tlet tasks = null;\n\t\tlet links = null;\n\n\t\tthis._dataProcessorHandlers.push(gantt.attachEvent(\"onTaskIdChange\", function(oldId, newId) { // tslint:disable-line\n\t\t\tif (!dp._waitMode) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst children = gantt.getChildren(newId);\n\t\t\tif (children.length) {\n\t\t\t\ttasks = tasks || {};\n\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tconst ch = this.getTask(children[i]);\n\t\t\t\t\ttasks[ch.id] = ch;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst item = this.getTask(newId);\n\t\t\tconst itemLinks = getTaskLinks(item);\n\n\t\t\tif (itemLinks.length) {\n\t\t\t\tlinks = links || {};\n\n\t\t\t\tfor (let i = 0; i < itemLinks.length; i++) {\n\t\t\t\t\tconst link = this.getLink(itemLinks[i]);\n\t\t\t\t\tlinks[link.id] = link;\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tdp.attachEvent(\"onAfterUpdateFinish\", function() {\n\t\t\tif (tasks || links) {\n\t\t\t\tgantt.batchUpdate(function() {\n\t\t\t\t\tfor (const id in tasks) {\n\t\t\t\t\t\tgantt.updateTask(tasks[id].id);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const id in links) {\n\t\t\t\t\t\tgantt.updateLink(links[id].id);\n\t\t\t\t\t}\n\t\t\t\t\ttasks = null;\n\t\t\t\t\tlinks = null;\n\t\t\t\t});\n\t\t\t\tif (tasks) {\n\t\t\t\t\tgantt._dp.setGanttMode(\"tasks\");\n\t\t\t\t} else {\n\t\t\t\t\tgantt._dp.setGanttMode(\"links\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tdp.attachEvent(\"onBeforeDataSending\", function() {\n\t\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tlet url = this._serverProcessor;\n\t\t\tif (this._tMode === \"REST-JSON\" || this._tMode === \"REST\") {\n\t\t\t\tconst mode = this._ganttMode;\n\n\t\t\t\turl = url.substring(0, url.indexOf(\"?\") > -1 ? url.indexOf(\"?\") : url.length);\n\t\t\t\t// editing=true&\n\t\t\t\tthis.serverProcessor = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + mode;\n\t\t\t} else {\n\t\t\t\tconst pluralizedMode = this._ganttMode + \"s\";\n\t\t\t\tthis.serverProcessor = url + gantt.ajax.urlSeparator(url) + \"gantt_mode=\" + pluralizedMode;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tdp.attachEvent(\"insertCallback\", function insertCallback(upd, id, parent, mode) { // tslint:disable-line\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\n\t\t\tconst methods = {\n\t\t\t\tadd: gantt.addTask,\n\t\t\t\tisExist: gantt.isTaskExists\n\t\t\t};\n\t\t\tif (mode === \"links\") {\n\t\t\t\tmethods.add = gantt.addLink;\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\n\t\t\t}\n\t\t\tif (methods.isExist.call(gantt, id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdata.id = id;\n\t\t\tmethods.add.call(gantt, data);\n\t\t});\n\n\t\tdp.attachEvent(\"updateCallback\", function updateCallback(upd, id) {\n\t\t\tconst data = upd.data || gantt.xml._xmlNodeToJSON(upd.firstChild);\n\t\t\tif (!gantt.isTaskExists(id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst objData = gantt.getTask(id);\n\t\t\tfor (const key in data) {\n\t\t\t\tlet property = data[key];\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"id\":\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"start_date\":\n\t\t\t\t\tcase \"end_date\":\n\t\t\t\t\t\tproperty = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date(property) : gantt.templates.parse_date(property);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"duration\":\n\t\t\t\t\t\tobjData.end_date = gantt.calculateEndDate({start_date: objData.start_date, duration: property, task:objData});\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tobjData[key] = property;\n\t\t\t}\n\t\t\tgantt.updateTask(id);\n\t\t\tgantt.refreshData();\n\t\t});\n\t\tdp.attachEvent(\"deleteCallback\", function deleteCallback(upd, id, parent, mode) { // tslint:disable-line\n\t\t\tconst methods = {\n\t\t\t\tdelete: gantt.deleteTask,\n\t\t\t\tisExist: gantt.isTaskExists\n\t\t\t};\n\t\t\tif (mode === \"links\") {\n\t\t\t\tmethods.delete = gantt.deleteLink;\n\t\t\t\tmethods.isExist = gantt.isLinkExists;\n\t\t\t}\n\t\t\tif (methods.isExist.call(gantt, id)) {\n\t\t\t\tmethods.delete.call(gantt, id);\n\t\t\t}\n\t\t});\n\t}\n\n\tdetach() {\n\t\thelpers.forEach(this._dataProcessorHandlers, (e) => {\n\t\t\tthis.$gantt.detachEvent(e);\n\t\t});\n\t\tthis._dataProcessorHandlers = [];\n\t}\n}\n","import * as eventable from \"../../utils/eventable\";\nimport * as helpers from \"../../utils/helpers\";\nimport * as utils from \"../../utils/utils\";\nimport DataProcessorEvents from \"./data_processor_events\";\nimport extendGantt from \"./extend_gantt\";\nimport SimpleStorage from \"./simple_storage\";\n\nexport interface DataProcessor { // tslint:disable-line\n\t$gantt: any;\n\tdetachAllEvents: any;\n\tattachEvent: any;\n\tcallEvent: any;\n\n\tserverProcessor: string;\n\taction_param: string;\n\tobject: any;\n\tupdatedRows: any[];\n\tautoUpdate: boolean;\n\tupdateMode: string;\n\tmessages: any[];\n\tstyles: object;\n\tdnd: any;\n}\n\nexport function createDataProcessor(config: any) {\n\tlet router;\n\tlet tMode;\n\tif (config instanceof Function) {\n\t\trouter = config;\n\t} else if (config.hasOwnProperty(\"router\")) {\n\t\trouter = config.router;\n\t} else if (config.hasOwnProperty(\"link\") && config.hasOwnProperty(\"task\")) {\n\t\trouter = config;\n\t}\n\tif (router) {\n\t\ttMode = \"CUSTOM\";\n\t} else {\n\t\ttMode = config.mode || \"REST-JSON\";\n\t}\n\tconst gantt = this; // tslint:disable-line\n\tconst dp = new DataProcessor(config.url);\n\tdp.init(gantt);\n\tdp.setTransactionMode({\n\t\tmode: tMode,\n\t\trouter\n\t}, config.batchUpdate);\n\treturn dp;\n}\n\nexport class DataProcessor {\n\tpublic modes: object;\n\tpublic serverProcessor: string;\n\tpublic action_param: string; // tslint:disable-line\n\tpublic object: any;\n\tpublic updatedRows: any[];\n\tpublic autoUpdate: boolean;\n\tpublic updateMode: string;\n\tpublic messages: any[];\n\tpublic styles: object;\n\tpublic dnd: any;\n\n\tprotected _tMode: string;\n\tprotected _headers: any;\n\tprotected _payload: any;\n\tprotected _postDelim: string;\n\tprotected _waitMode: number;\n\tprotected _in_progress: object; // tslint:disable-line\n\tprotected _invalid: object;\n\tprotected _storage: SimpleStorage;\n\tprotected _tSend: boolean;\n\tprotected _endnm: boolean;\n\tprotected _serializeAsJson: boolean;\n\tprotected _router: any;\n\tprotected _utf: boolean;\n\tprotected obj: any;\n\tprotected _columns: any;\n\tprotected _changed: boolean;\n\tprotected _methods: any[];\n\tprotected _user: any;\n\tprotected _uActions: object;\n\tprotected _needUpdate: boolean;\n\tprotected _ganttMode: string;\n\n\tprotected _silent_mode: any; // tslint:disable-line\n\tprotected _updateBusy: any;\n\tprotected _serverProcessor: any;\n\tprotected _initialized: boolean;\n\n\tconstructor(serverProcessorURL?) {\n\t\tthis.serverProcessor = serverProcessorURL;\n\t\tthis.action_param = \"!nativeeditor_status\";\n\n\t\tthis.object = null;\n\t\tthis.updatedRows = []; // ids of updated rows\n\n\t\tthis.autoUpdate = true;\n\t\tthis.updateMode = \"cell\";\n\t\tthis._headers = null;\n\t\tthis._payload = null;\n\t\tthis._postDelim = \"_\";\n\n\t\tthis._waitMode = 0;\n\t\tthis._in_progress = {}; // ?\n\t\tthis._storage = SimpleStorage.create();\n\t\tthis._invalid = {};\n\t\tthis.messages = [];\n\n\t\tthis.styles = {\n\t\t\tupdated: \"font-weight:bold;\",\n\t\t\tinserted: \"font-weight:bold;\",\n\t\t\tdeleted: \"text-decoration : line-through;\",\n\t\t\tinvalid: \"background-color:FFE0E0;\",\n\t\t\tinvalid_cell: \"border-bottom:2px solid red;\",\n\t\t\terror: \"color:red;\",\n\t\t\tclear: \"font-weight:normal;text-decoration:none;\"\n\t\t};\n\t\tthis.enableUTFencoding(true);\n\t\teventable(this);\n\t}\n\n\tsetTransactionMode(mode:any, total?:any) {\n\t\tif (typeof mode === \"object\") {\n\t\t\tthis._tMode = mode.mode || this._tMode;\n\n\t\t\tif (utils.defined(mode.headers)) {\n\t\t\t\tthis._headers = mode.headers;\n\t\t\t}\n\n\t\t\tif (utils.defined(mode.payload)) {\n\t\t\t\tthis._payload = mode.payload;\n\t\t\t}\n\t\t\tthis._tSend = !!total;\n\t\t} else {\n\t\t\tthis._tMode = mode;\n\t\t\tthis._tSend = total;\n\t\t}\n\n\t\tif (this._tMode === \"REST\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t}\n\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._serializeAsJson = true;\n\t\t\tthis._headers = this._headers || {};\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\n\t\t}else{\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\n\t\t\t}\n\t\t}\n\n\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._router = mode.router;\n\t\t}\n\t}\n\n\tescape(data:any) {\n\t\tif (this._utf) {\n\t\t\treturn encodeURIComponent(data);\n\t\t} else {\n\t\t\treturn escape(data);\n\t\t}\n\t}\n\n\t/**\n\t * @desc: allows to set escaping mode\n\t * @param: true - utf based escaping, simple - use current page encoding\n\t * @type: public\n\t */\n\tenableUTFencoding(mode:boolean) {\n\t\tthis._utf = !!mode;\n\t}\n\n\t/**\n\t * @desc: allows to define, which column may trigger update\n\t * @param: val - array or list of true/false values\n\t * @type: public\n\t */\n\tsetDataColumns(val:string|any) {\n\t\tthis._columns = (typeof val === \"string\") ? val.split(\",\") : val;\n\t}\n\n\t/**\n\t * @desc: get state of updating\n\t * @returns: true - all in sync with server, false - some items not updated yet.\n\t * @type: public\n\t */\n\tgetSyncState() {\n\t\treturn !this.updatedRows.length;\n\t}\n\n\t/**\n\t * @desc: enable/disable named field for data syncing, will use column ids for grid\n\t * @param: mode - true/false\n\t * @type: public\n\t */\n\tenableDataNames(mode: boolean) {\n\t\tthis._endnm = !!mode;\n\t}\n\n\t/**\n\t * @desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\n\t * @param: mode - true/false\n\t * @type: public\n\t */\n\tenablePartialDataSend(mode: boolean) {\n\t\tthis._changed = !!mode;\n\t}\n\n\t/**\n\t * @desc: set if rows should be send to server automatically\n\t * @param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\n\t * @type: public\n\t */\n\tsetUpdateMode(mode: string, dnd: any) {\n\t\tthis.autoUpdate = (mode === \"cell\");\n\t\tthis.updateMode = mode;\n\t\tthis.dnd = dnd;\n\t}\n\n\tignore(code: any, master: any) {\n\t\tthis._silent_mode = true;\n\t\tcode.call(master || window);\n\t\tthis._silent_mode = false;\n\t}\n\n\t/**\n\t * @desc: mark row as updated/normal. check mandatory fields, initiate autoupdate (if turned on)\n\t * @param: rowId - id of row to set update-status for\n\t * @param: state - true for \"updated\", false for \"not updated\"\n\t * @param: mode - update mode name\n\t * @type: public\n\t */\n\tsetUpdated(rowId:number|string, state: boolean, mode?: string) {\n\t\tif (this._silent_mode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ind = this.findRow(rowId);\n\n\t\tmode = mode || \"updated\";\n\t\tconst existing = this.$gantt.getUserData(rowId, this.action_param);\n\t\tif (existing && mode === \"updated\") {\n\t\t\tmode = existing;\n\t\t}\n\t\tif (state) {\n\t\t\tthis.set_invalid(rowId, false); // clear previous error flag\n\t\t\tthis.updatedRows[ind] = rowId;\n\t\t\tthis.$gantt.setUserData(rowId, this.action_param, mode);\n\t\t\tif (this._in_progress[rowId]) {\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.is_invalid(rowId)) {\n\t\t\t\tthis.updatedRows.splice(ind, 1);\n\t\t\t\tthis.$gantt.setUserData(rowId, this.action_param, \"\");\n\t\t\t}\n\t\t}\n\n\t\tthis.markRow(rowId, state, mode);\n\t\tif (state && this.autoUpdate) {\n\t\t\tthis.sendData(rowId);\n\t\t}\n\t}\n\n\tmarkRow(id: number | string, state: boolean, mode: string) {\n\t\tlet str = \"\";\n\t\tconst invalid = this.is_invalid(id);\n\t\tif (invalid) {\n\t\t\tstr = this.styles[invalid];\n\t\t\tstate = true;\n\t\t}\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\n\t\t\t// default logic\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + \" \" + str;\n\n\t\t\tthis.$gantt[this._methods[0]](id, str);\n\n\t\t\tif (invalid && invalid.details) {\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\n\t\t\t\tfor (let i = 0; i < invalid.details.length; i++) {\n\t\t\t\t\tif (invalid.details[i]) {\n\t\t\t\t\t\tthis.$gantt[this._methods[1]](id, i, str);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetActionByState(state: string):string {\n\t\tif (state === \"inserted\") {\n\t\t\treturn \"create\";\n\t\t}\n\n\t\tif (state === \"updated\") {\n\t\t\treturn \"update\";\n\t\t}\n\n\t\tif (state === \"deleted\") {\n\t\t\treturn \"delete\";\n\t\t}\n\n\t\t// reorder\n\t\treturn \"update\";\n\t}\n\n\tgetState(id: number | string) {\n\t\treturn this.$gantt.getUserData(id, this.action_param);\n\t}\n\n\tis_invalid(id: number | string) {\n\t\treturn this._invalid[id];\n\t}\n\n\tset_invalid(id: number | string, mode: any, details?) {\n\t\tif (details) {\n\t\t\tmode = {\n\t\t\t\tvalue: mode,\n\t\t\t\tdetails,\n\t\t\t\ttoString: function() { // tslint:disable-line\n\t\t\t\t\treturn this.value.toString();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tthis._invalid[id] = mode;\n\t}\n\n\t/**\n\t * @desc: check mandatory fields and verify values of cells, initiate update (if specified). Can be redefined in order to provide custom validation\n\t * @param: rowId - id of row to set update-status for\n\t * @type: public\n\t */\n\t// tslint:disable-next-line\n\tcheckBeforeUpdate(rowId: number | string) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @desc: send row(s) values to server\n\t * @param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\n\t * @type: public\n\t */\n\tsendData(rowId?: any) {\n\t\tif (this.$gantt.editStop) {\n\t\t\tthis.$gantt.editStop();\n\t\t}\n\n\n\t\tif (typeof rowId === \"undefined\" || this._tSend) {\n\t\t\treturn this.sendAllData();\n\t\t}\n\t\tif (this._in_progress[rowId]) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.messages = [];\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t}\n\n\tserialize(data: any, id: any) {\n\t\tif (this._serializeAsJson) {\n\t\t\treturn this._serializeAsJSON(data);\n\t\t}\n\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\t\tif (typeof id !== \"undefined\") {\n\t\t\treturn this.serialize_one(data, \"\");\n\t\t} else {\n\t\t\tconst stack = [];\n\t\t\tconst keys = [];\n\t\t\tfor (const key in data) {\n\t\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this._postDelim));\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\n\t\t\tif (this.$gantt.security_key) {\n\t\t\t\tstack.push(\"dhx_security=\" + this.$gantt.security_key);\n\t\t\t}\n\t\t\treturn stack.join(\"&\");\n\t\t}\n\t}\n\n\tserialize_one(data: any, pref: string) {\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\t\tconst stack = [];\n\t\tlet serialized = \"\";\n\t\tfor (const key in data)\n\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\tif ((key === \"id\" ||\n\t\t\t\t\tkey == this.action_param) && // tslint:disable-line\n\t\t\t\t\tthis._tMode === \"REST\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\n\t\t\t\t\tserialized = data[key];\n\t\t\t\t} else {\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\n\t\t\t\t}\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\n\t\t\t}\n\t\treturn stack.join(\"&\");\n\t}\n\n\tsendAllData() {\n\t\tif (!this.updatedRows.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.messages = [];\n\t\tlet valid: any = true;\n\n\t\tthis._forEachUpdatedRow(function(rowId) {\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\n\t\t});\n\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this._tSend) {\n\t\t\tthis._sendData(this._getAllData());\n\t\t} else {\n\t\t\t// this.updatedRows can be spliced from onBeforeUpdate via dp.setUpdated false\n\t\t\t// use an iterator instead of for(var i = 0; i < this.updatedRows; i++) then\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\n\t\t\t\tif (!this._in_progress[rowId]) {\n\t\t\t\t\tif (this.is_invalid(rowId)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfindRow(pattern: any) {\n\t\tlet i = 0;\n\t\tfor (i = 0; i < this.updatedRows.length; i++) {\n\t\t\tif (pattern == this.updatedRows[i]) { // tslint:disable-line\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * @desc: define custom actions\n\t * @param: name - name of action, same as value of action attribute\n\t * @param: handler - custom function, which receives a XMl response content for action\n\t * @type: private\n\t */\n\tdefineAction(name: string, handler: any) {\n\t\tif (!this._uActions) {\n\t\t\tthis._uActions = {};\n\t\t}\n\t\tthis._uActions[name] = handler;\n\t}\n\n\t/**\n\t * @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\n\t * @param: sid - id of item before update\n\t * @param: tid - id of item after up0ate\n\t * @param: action - action name\n\t * @type: public\n\t * @topic: 0\n\t */\n\tafterUpdateCallback(sid: number | string, tid: number | string, action: string, btag: any, ganttMode: string) {\n\t\tif(!this.$gantt){\n\t\t\t// destructor has been called before the callback\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setGanttMode(ganttMode);\n\n\t\tconst marker = sid;\n\t\tconst correct = (action !== \"error\" && action !== \"invalid\");\n\t\tif (!correct) {\n\t\t\tthis.set_invalid(sid, action);\n\t\t}\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\n\t\t\treturn (delete this._in_progress[marker]);\n\t\t}\n\n\t\tif (this._in_progress[marker] !== \"wait\") {\n\t\t\tthis.setUpdated(sid, false);\n\t\t}\n\n\t\tconst originalSid = sid;\n\n\t\tswitch (action) {\n\t\t\tcase \"inserted\":\n\t\t\tcase \"insert\":\n\t\t\t\tif (tid != sid) { // tslint:disable-line\n\t\t\t\t\tthis.setUpdated(sid, false);\n\t\t\t\t\tthis.$gantt[this._methods[2]](sid, tid);\n\t\t\t\t\tsid = tid;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"delete\":\n\t\t\tcase \"deleted\":\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\");\n\t\t\t\tthis.$gantt[this._methods[3]](sid);\n\t\t\t\tdelete this._in_progress[marker];\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\n\t\t}\n\n\t\tif (this._in_progress[marker] !== \"wait\") {\n\t\t\tif (correct) {\n\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"\");\n\t\t\t}\n\t\t\tdelete this._in_progress[marker];\n\t\t} else {\n\t\t\tdelete this._in_progress[marker];\n\t\t\tthis.setUpdated(tid, true, this.$gantt.getUserData(sid, this.action_param));\n\t\t}\n\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\n\t}\n\n\t/**\n\t * @desc: response from server\n\t * @param: xml - XMLLoader object with response XML\n\t * @type: private\n\t */\n\tafterUpdate(that: any, xml: any, id?:any) {\n\t\tlet _xml;\n\t\tif (arguments.length === 3) {\n\t\t\t_xml = arguments[1];\n\t\t} else {\n\t\t\t// old dataprocessor\n\t\t\t_xml = arguments[4];\n\t\t}\n\t\tlet mode = this.getGanttMode();\n\t\tconst reqUrl = _xml.filePath || _xml.url;\n\n\t\tif (this._tMode !== \"REST\" && this._tMode !== \"REST-JSON\") {\n\t\t\tif (reqUrl.indexOf(\"gantt_mode=links\") !== -1) {\n\t\t\t\tmode = \"link\";\n\t\t\t} else {\n\t\t\t\tmode = \"task\";\n\t\t\t}\n\t\t} else {\n\t\t\tif (reqUrl.indexOf(\"/link\") > reqUrl.indexOf(\"/task\")) {\n\t\t\t\tmode = \"link\";\n\t\t\t} else {\n\t\t\t\tmode = \"task\";\n\t\t\t}\n\t\t}\n\t\tthis.setGanttMode(mode);\n\n\t\tconst ajax = this.$gantt.ajax;\n\t\t// try to use json first\n\t\tlet tag;\n\n\t\ttry {\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\n\t\t} catch (e) {\n\n\t\t\t// empty response also can be processed by json handler\n\t\t\tif (!xml.xmlDoc.responseText.length) {\n\t\t\t\ttag = {};\n\t\t\t}\n\t\t}\n\n\t\tif (tag) {\n\t\t\tconst action = tag.action || this.getState(id) || \"updated\";\n\t\t\tconst sid = tag.sid || id[0];\n\t\t\tconst tid = tag.tid || id[0];\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag, mode);\n\t\t\tthat.finalizeUpdate();\n\t\t\tthis.setGanttMode(mode);\n\t\t\treturn;\n\t\t}\n\n\t\t// xml response\n\t\tconst top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\n\t\tif (!top) {\n\t\t\treturn this.cleanUpdate(id);\n\t\t}\n\t\tconst atag = ajax.xpath(\"//data/action\", top);\n\t\tif (!atag.length) {\n\t\t\treturn this.cleanUpdate(id);\n\t\t}\n\n\t\tfor (let i = 0; i < atag.length; i++) {\n\t\t\tconst btag = atag[i];\n\t\t\tconst action = btag.getAttribute(\"type\");\n\t\t\tconst sid = btag.getAttribute(\"sid\");\n\t\t\tconst tid = btag.getAttribute(\"tid\");\n\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag, mode);\n\t\t}\n\t\tthat.finalizeUpdate();\n\t}\n\n\tcleanUpdate(id: any[]) {\n\t\tif (id) {\n\t\t\tfor (let i = 0; i < id.length; i++) {\n\t\t\t\tdelete this._in_progress[id[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\tfinalizeUpdate() {\n\t\tif (this._waitMode) {\n\t\t\tthis._waitMode--;\n\t\t}\n\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\n\t\tif (!this.updatedRows.length) {\n\t\t\tthis.callEvent(\"onFullSync\", []);\n\t\t}\n\t}\n\n\t/**\n\t * @desc: initializes data-processor\n\t * @param: gantt - dhtmlxGantt object to attach this data-processor to\n\t * @type: public\n\t */\n\tinit(gantt: any) {\n\t\tif (this._initialized) {\n\t\t\treturn;\n\t\t}\n\t\tthis.$gantt = gantt;\n\t\tif (this.$gantt._dp_init) {\n\t\t\tthis.$gantt._dp_init(this);\n\t\t}\n\n\t\tthis._setDefaultTransactionMode();\n\n\t\tthis.styles = {\n\t\t\tupdated:\"gantt_updated\",\n\t\t\torder:\"gantt_updated\",\n\t\t\tinserted:\"gantt_inserted\",\n\t\t\tdeleted:\"gantt_deleted\",\n\t\t\tinvalid:\"gantt_invalid\",\n\t\t\terror:\"gantt_error\",\n\t\t\tclear:\"\"\n\t\t};\n\n\t\tthis._methods=[\"_row_style\",\"setCellTextStyle\",\"_change_id\",\"_delete_task\"];\n\t\textendGantt(this.$gantt, this);\n\t\tconst dataProcessorEvents = new DataProcessorEvents(this.$gantt, this);\n\t\tdataProcessorEvents.attach();\n\t\tthis.attachEvent(\"onDestroy\", function() {\n\t\t\tdelete this.setGanttMode;\n\t\t\tdelete this._getRowData;\n\n\t\t\tdelete this.$gantt._dp;\n\t\t\tdelete this.$gantt._change_id;\n\t\t\tdelete this.$gantt._row_style;\n\t\t\tdelete this.$gantt._delete_task;\n\t\t\tdelete this.$gantt._sendTaskOrder;\n\t\t\tdelete this.$gantt;\n\n\t\t\tdataProcessorEvents.detach();\n\t\t});\n\t\tthis.$gantt.callEvent(\"onDataProcessorReady\", [this]);\n\t\tthis._initialized = true;\n\t}\n\n\tsetOnAfterUpdate(handler) {\n\t\tthis.attachEvent(\"onAfterUpdate\", handler);\n\t}\n\n\tsetOnBeforeUpdateHandler(handler) {\n\t\tthis.attachEvent(\"onBeforeDataSending\", handler);\n\t}\n\n\t/* starts autoupdate mode\n\t\t@param interval time interval for sending update requests\n\t*/\n\tsetAutoUpdate(interval, user) {\n\t\tinterval = interval || 2000;\n\n\t\tthis._user = user || (new Date()).valueOf();\n\t\tthis._needUpdate = false;\n\n\t\tthis._updateBusy = false;\n\n\t\tthis.attachEvent(\"onAfterUpdate\", this.afterAutoUpdate); // arguments sid, action, tid, xml_node;\n\n\t\tthis.attachEvent(\"onFullSync\", this.fullSync);\n\n\t\tsetInterval(() => {\n\t\t\tthis.loadUpdate();\n\t\t}, interval);\n\t}\n\n\t/* process updating request response\n\t\tif status == collision version is deprecated\n\t\tset flag for autoupdating immediately\n\t*/\n\tafterAutoUpdate(sid, action, tid, xml_node) { // tslint:disable-line\n\t\tif (action === \"collision\") {\n\t\t\tthis._needUpdate = true;\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/* callback function for onFillSync event\n\t\tcall update function if it's need\n\t*/\n\tfullSync() {\n\t\tif (this._needUpdate) {\n\t\t\tthis._needUpdate = false;\n\t\t\tthis.loadUpdate();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/* sends query to the server and call callback function\n\t*/\n\tgetUpdates(url, callback) {\n\t\tconst ajax = this.$gantt.ajax;\n\t\tif (this._updateBusy) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tthis._updateBusy = true;\n\t\t}\n\n\t\tajax.get(url, callback);\n\n\t}\n\n\t/* loads updates and processes them\n\t*/\n\tloadUpdate() {\n\t\tconst ajax = this.$gantt.ajax;\n\t\tconst version = this.$gantt.getUserData(0, \"version\");\n\t\tlet url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\n\t\turl = url.replace(\"editing=true&\", \"\");\n\t\tthis.getUpdates(url, (xml) => {\n\t\t\tconst vers = ajax.xpath(\"//userdata\", xml);\n\t\t\tthis.obj.setUserData(0, \"version\", this._getXmlNodeValue(vers[0]));\n\n\t\t\tconst updates = ajax.xpath(\"//update\", xml);\n\t\t\tif (updates.length) {\n\t\t\t\tthis._silent_mode = true;\n\n\t\t\t\tfor (let i = 0; i < updates.length; i++) {\n\t\t\t\t\tconst status = updates[i].getAttribute(\"status\");\n\t\t\t\t\tconst id = updates[i].getAttribute(\"id\");\n\t\t\t\t\tconst parent = updates[i].getAttribute(\"parent\");\n\t\t\t\t\tswitch (status) {\n\t\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"updated\":\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._silent_mode = false;\n\t\t\t}\n\n\t\t\tthis._updateBusy = false;\n\t\t});\n\t}\n\n\tdestructor() {\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t\tthis.updatedRows = [];\n\t\tthis._in_progress = {}; // ?\n\t\tthis._invalid = {};\n\t\tthis._storage.clear();\n\t\tthis._storage = null;\n\t\tthis._headers = null;\n\t\tthis._payload = null;\n\t\tdelete this._initialized;\n\t}\n\n\tsetGanttMode(mode) {\n\t\tif (mode === \"tasks\") {\n\t\t\tmode = \"task\";\n\t\t} else if (mode === \"links\") {\n\t\t\tmode = \"link\";\n\t\t}\n\n\t\tconst modes = this.modes || {};\n\t\tconst ganttMode = this.getGanttMode();\n\t\tif (ganttMode) {\n\t\t\tmodes[ganttMode] = {\n\t\t\t\t_in_progress : this._in_progress,\n\t\t\t\t_invalid: this._invalid,\n\t\t\t\t_storage: this._storage,\n\t\t\t\tupdatedRows : this.updatedRows\n\t\t\t};\n\t\t}\n\n\t\tlet newState = modes[mode];\n\t\tif (!newState) {\n\t\t\tnewState = modes[mode] = {\n\t\t\t\t_in_progress : {},\n\t\t\t\t_invalid : {},\n\t\t\t\t_storage : SimpleStorage.create(),\n\t\t\t\tupdatedRows : []\n\t\t\t};\n\t\t}\n\t\tthis._in_progress = newState._in_progress;\n\t\tthis._invalid = newState._invalid;\n\t\tthis._storage = newState._storage;\n\t\tthis.updatedRows = newState.updatedRows;\n\t\tthis.modes = modes;\n\t\tthis._ganttMode = mode;\n\t}\n\tgetGanttMode():string {\n\t\treturn this._ganttMode;\n\t}\n\n\tstoreItem(item) {\n\t\tthis._storage.storeItem(item);\n\t}\n\n\turl(url: string) {\n\t\tthis.serverProcessor = this._serverProcessor = url;\n\t}\n\n\tprotected _beforeSendData(data: any, rowId: any) {\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._sendData(data, rowId);\n\t}\n\n\tprotected _serializeAsJSON(data: any) {\n\t\tif (typeof data === \"string\") {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst copy = utils.copy(data);\n\t\tif (this._tMode === \"REST-JSON\") {\n\t\t\tdelete copy.id;\n\t\t\tdelete copy[this.action_param];\n\t\t}\n\n\t\treturn JSON.stringify(copy);\n\t}\n\n\tprotected _applyPayload(url: string) {\n\t\tconst ajax = this.$gantt.ajax;\n\t\tif (this._payload) {\n\t\t\tfor (const key in this._payload) {\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\n\t\t\t}\n\t\t}\n\t\treturn url;\n\t}\n\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\n\t// clear extra info from the data in order not to change the request format\n\tprotected _cleanupArgumentsBeforeSend(dataToSend: any) {\n\t\tlet processedData;\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\n\t\t\tprocessedData = {};\n\t\t\tfor(const i in dataToSend) {\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\n\t\t}\n\t\treturn processedData;\n\t}\n\tprotected _cleanupItemBeforeSend(updatedItem: any) {\n\t\tlet output = null;\n\t\tif(updatedItem){\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\n\t\t\t\toutput = {};\n\t\t\t\toutput.id = updatedItem.id;\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\n\t\t\t}else{\n\t\t\t\toutput = updatedItem;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tprotected _sendData(dataToSend: any, rowId?: any) {\n\t\tif (!dataToSend) {\n\t\t\treturn; // nothing to send\n\t\t}\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (rowId) {\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\n\t\t}\n\n\t\tconst ajax = this.$gantt.ajax;\n\n\t\tif (this._tMode === \"CUSTOM\") {\n\t\t\tconst taskState = this.getState(rowId);\n\t\t\tconst taskAction = this.getActionByState(taskState);\n\t\t\tconst ganttMode = this.getGanttMode();\n\t\t\tconst _onResolvedCreateUpdate = (tag) => {\n\t\t\t\tlet action = taskState || \"updated\";\n\t\t\t\tlet sid = rowId;\n\t\t\t\tlet tid = rowId;\n\n\t\t\t\tif (tag) {\n\t\t\t\t\taction = tag.action || taskState;\n\t\t\t\t\tsid = tag.sid || sid;\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\n\t\t\t\t}\n\t\t\t\tthis.afterUpdateCallback(sid, tid, action, tag, ganttMode);\n\t\t\t};\n\n\t\t\tlet actionPromise;\n\t\t\tif (this._router instanceof Function) {\n\t\t\t\tactionPromise = this._router(ganttMode, taskAction, dataToSend, rowId);\n\t\t\t} else if (this._router[ganttMode] instanceof Function) {\n\t\t\t\tactionPromise = this._router[ganttMode](taskAction, dataToSend, rowId);\n\t\t\t} else {\n\t\t\t\tswitch (taskState) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].create(dataToSend);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].delete(rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tactionPromise = this._router[ganttMode].update(dataToSend, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(actionPromise){\n\t\t\t\t// neither promise nor {tid: newId} response object\n\t\t\t\tif(!actionPromise.then &&\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\n\t\t\t\t}\n\n\t\t\t\tif(actionPromise.then){\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch((error) => {\n\t\t\t\t\t\tif(error && error.action){\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\t// custom method may return a response object in case of sync action\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t_onResolvedCreateUpdate(null);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tlet queryParams: any;\n\t\tqueryParams = {\n\t\t\tcallback: (xml) => {\n\t\t\t\tconst ids = [];\n\n\t\t\t\tif (rowId) {\n\t\t\t\t\tids.push(rowId);\n\t\t\t\t} else if (dataToSend) {\n\t\t\t\t\tfor (const key in dataToSend) {\n\t\t\t\t\t\tids.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.afterUpdate(this, xml, ids);\n\t\t\t},\n\t\t\theaders: this._headers\n\t\t};\n\n\t\tconst urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$gantt.getUserData(0, \"version\")].join(\"&\")) : \"\");\n\t\tlet url: any = this._applyPayload(urlParams);\n\t\tlet data;\n\n\t\tswitch (this._tMode) {\n\t\t\tcase \"GET\":\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\n\t\t\t\tqueryParams.method = \"GET\";\n\t\t\t\tbreak;\n\t\t\tcase \"POST\":\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\n\t\t\t\tqueryParams.url = url;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\n\t\t\t\tbreak;\n\t\t\tcase \"JSON\":\n\t\t\t\tdata = {};\n\t\t\t\tconst preprocessedData = this._cleanupItemBeforeSend(dataToSend);\n\t\t\t\tfor (const key in preprocessedData) {\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdata[key] = preprocessedData[key];\n\t\t\t\t}\n\n\t\t\t\tqueryParams.url = url;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = JSON.stringify({\n\t\t\t\t\tid: rowId,\n\t\t\t\t\taction: dataToSend[this.action_param],\n\t\t\t\t\tdata\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"REST\":\n\t\t\tcase \"REST-JSON\":\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\n\t\t\t\tdata = \"\";\n\n\t\t\t\tswitch (this.getState(rowId)) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tqueryParams.url = this._applyPayload(url);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis._waitMode++;\n\t\treturn ajax.query(queryParams);\n\t}\n\n\tprotected _forEachUpdatedRow(code: any) {\n\t\tconst updatedRows = this.updatedRows.slice();\n\t\tfor (let i = 0; i < updatedRows.length; i++) {\n\t\t\tconst rowId = updatedRows[i];\n\t\t\tif (this.$gantt.getUserData(rowId, this.action_param)) {\n\t\t\t\tcode.call(this, rowId);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _setDefaultTransactionMode() {\n\t\tif (this.serverProcessor) {\n\t\t\tthis.setTransactionMode(\"POST\", true);\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\n\t\t\tthis._serverProcessor = this.serverProcessor;\n\t\t}\n\t}\n\n\t/* returns xml node value\n\t\t@param node\n\t\t\txml node\n\t*/\n\tprotected _getXmlNodeValue(node) {\n\t\tif (node.firstChild) {\n\t\t\treturn node.firstChild.nodeValue;\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tprotected _getAllData() {\n\t\tconst out = {};\n\t\tlet hasOne = false;\n\n\t\tthis._forEachUpdatedRow(function(id) {\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst row = this._getRowData(id);\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tout[id] = row;\n\t\t\thasOne = true;\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\n\t\t});\n\n\t\treturn hasOne ? out : null;\n\t}\n\n\tprotected _prepareDataItem(rawItem: any): any {\n\t\tconst processedItem = {};\n\n\t\tfor (const key in rawItem) {\n\t\t\tif (key.substr(0, 1) === \"$\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst value = rawItem[key];\n\t\t\tif (helpers.isDate(value)) {\n\t\t\t\tprocessedItem[key] = this.$gantt.defined(this.$gantt.templates.xml_format) ? this.$gantt.templates.xml_format(value) : this.$gantt.templates.format_date(value);\n\t\t\t} else if(value === null) {\n\t\t\t\tprocessedItem[key] = \"\";\n\t\t\t} else {\n\t\t\t\tprocessedItem[key] = value;\n\t\t\t}\n\t\t}\n\n\t\tprocessedItem[this.action_param] = this.$gantt.getUserData(rawItem.id, this.action_param);\n\t\treturn processedItem;\n\t}\n\n\tprotected getStoredItem(id){\n\t\treturn this._storage.getStoredItem(id);\n\t}\n\n\tprotected _getRowData(id) {\n\t\tlet dataItem;\n\t\tconst gantt = this.$gantt;\n\t\tif (this.getGanttMode() === \"task\") {\n\t\t\tif(gantt.isTaskExists(id)){\n\t\t\t\tdataItem =this.$gantt.getTask(id);\n\t\t\t}\n\t\t} else {\n\t\t\tif(gantt.isLinkExists(id)){\n\t\t\t\tdataItem =this.$gantt.getLink(id);\n\t\t\t}\n\t\t}\n\n\t\tif (!dataItem) {\n\t\t\tdataItem = this.getStoredItem(id);\n\t\t}\n\n\t\tif (!dataItem) {\n\t\t\tdataItem = { id };\n\t\t}\n\n\t\treturn this._prepareDataItem(dataItem);\n\t}\n}","var DataProcessor = require(\"./data_processor\");\nmodule.exports = {\n\tDEPRECATED_api: function(server) {\n\t\treturn new (DataProcessor.DataProcessor)(server);\n\t},\n\tcreateDataProcessor: DataProcessor.createDataProcessor,\n\tgetDataProcessorModes: DataProcessor.getAvailableModes\n};","var isHeadless = require(\"../../utils/is_headless\");\n\nvar storeRenderCreator = function(name, gantt){\n\t\n\tvar store = gantt.getDatastore(name);\n\n\tvar itemRepainter = {\n\t\trenderItem: function(id, renderer){\n\n\t\t\tvar renders = renderer.getLayers();\n\n\t\t\tvar item = store.getItem(id);\n\t\t\tif(item && store.isVisible(id)) {\n\t\t\t\tfor (var i = 0; i < renders.length; i++)\n\t\t\t\t\trenders[i].render_item(item);\n\t\t\t}\n\t\t},\n\t\trenderItems: function(renderer){\n\t\t\tvar renderers = renderer.getLayers();\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\n\t\t\t\trenderers[i].clear();\n\t\t\t}\n\n\t\t\tvar allData = store.getVisibleItems();\n\n\t\t\tvar loadedRanges = {};\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\n\t\t\t\tvar layer = renderers[i];\n\t\t\t\tvar layerData = allData;\n\t\t\t\tif(layer.get_visible_range){\n\t\t\t\t\tvar range = layer.get_visible_range(store);\n\t\t\t\t\tvar key = range.start + \" - \" + range.end;\n\t\t\t\t\tif(loadedRanges[key]){\n\t\t\t\t\t\tlayerData = loadedRanges[key];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlayerData = store.getIndexRange(range.start, range.end);\n\t\t\t\t\t\tloadedRanges[key] = layerData;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\trenderers[i].render_items(layerData);\n\t\t\t}\n\t\t},\n\t\tupdateItems: function(layer) {\n\t\t\tif(layer.update_items){\n\t\t\t\tvar data;\n\t\t\t\tif(layer.get_visible_range){\n\t\t\t\t\tvar range = layer.get_visible_range(store);\n\t\t\t\t\tdata = store.getIndexRange(range.start, range.end);\n\t\t\t\t}else{\n\t\t\t\t\tdata = store.getVisibleItems();\n\t\t\t\t}\n\t\t\t\tlayer.update_items(data);\n\t\t\t}\n\t\t}\n\t};\n\n\tstore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\t\tif(renderer){\n\t\t\trenderer.onUpdateRequest = function(layer){\n\t\t\t\titemRepainter.updateItems(layer);\n\t\t\t};\n\t\t}\n\t});\n\n\tfunction skipRepaint(gantt){\n\t\tvar state = gantt.$services.getService(\"state\");\n\t\tif(state.getState(\"batchUpdate\").batch_update){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tstore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(skipRepaint(gantt)){\n\t\t\treturn;\n\t\t}\n\t\tif(!id || action == \"move\" || action == \"delete\"){\n\t\t\tstore.callEvent(\"onBeforeRefreshAll\", []);\n\t\t\tstore.callEvent(\"onAfterRefreshAll\", []);\n\t\t}else{\n\t\t\tstore.callEvent(\"onBeforeRefreshItem\", [item.id]);\n\t\t\tstore.callEvent(\"onAfterRefreshItem\", [item.id]);\n\t\t}\n\t});\n\n\tstore.attachEvent(\"onAfterRefreshAll\", function(){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\t\tif(renderer){\n\t\t\titemRepainter.renderItems(renderer);\n\t\t}\n\t});\n\tstore.attachEvent(\"onAfterRefreshItem\", function(id){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\t\t\n\t\tif(renderer){\n\t\t\titemRepainter.renderItem(id, renderer);\n\t\t}\n\t});\n\n\t// TODO: probably can be done more in a more efficient way\n\tstore.attachEvent(\"onItemOpen\", function(){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn true;\n\t\t}\n\n\t\tgantt.render();\n\t});\n\n\tstore.attachEvent(\"onItemClose\", function(){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn true;\n\t\t}\n\n\t\tgantt.render();\n\t});\n\n\tfunction refreshId(renders, oldId, newId, item) {\n\t\tfor (var i = 0; i < renders.length; i++) {\n\t\t\trenders[i].change_id(oldId, newId);\n\t\t}\n\t}\n\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\tif(isHeadless(gantt)){\n\t\t\treturn true;\n\t\t}\n\n\t\t// in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n\t\t// use onBeforeIdChange for this hook.\n\t\t// TODO: use something more reasonable instead\n\t\tstore.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n\t\tif(skipRepaint(gantt)){\n\t\t\treturn;\n\t\t}\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\t\trefreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n\t\titemRepainter.renderItem(newId, renderer);\n\t});\n\n};\n\nmodule.exports = {\n\tbindDataStore: storeRenderCreator\n};","function createDataStoreSelectMixin(store){\n\tvar selectedId = null;\n\n\tvar deleteItem = store._removeItemInner;\n\t\n\tfunction unselect(id){\n\t\tselectedId = null;\n\t\tthis.callEvent(\"onAfterUnselect\", [id]);\n\t}\n\n\tstore._removeItemInner = function(id){\n\t\tif(selectedId == id){\n\t\t\tunselect.call(this, id);\n\t\t}\n\n\t\tif(selectedId && this.eachItem){\n\t\t\tthis.eachItem(function(subItem){\n\t\t\t\tif(subItem.id == selectedId){\n\t\t\t\t\tunselect.call(this, subItem.id);\n\t\t\t\t}\n\t\t\t}, id);\n\t\t}\n\n\t\treturn deleteItem.apply(this, arguments);\n\t};\n\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId) {\n\t\tif (store.getSelectedId() == oldId) {\n\t\t\tstore.silent(function () {\n\t\t\t\tstore.unselect(oldId);\n\t\t\t\tstore.select(newId);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn {\n\t\tselect: function(id){\n\t\t\tif (id){\n\n\t\t\t\tif(selectedId == id)\n\t\t\t\t\treturn selectedId;\n\n\t\t\t\tif(!this._skip_refresh) {\n\t\t\t\t\tif (!this.callEvent(\"onBeforeSelect\", [id])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.unselect();\n\n\t\t\t\tselectedId = id;\n\n\t\t\t\tif(!this._skip_refresh) {\n\t\t\t\t\tthis.refresh(id);\n\t\t\t\t\tthis.callEvent(\"onAfterSelect\", [id]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn selectedId;\n\t\t},\n\t\tgetSelectedId: function(){\n\t\t\treturn selectedId;\n\t\t},\n\t\tisSelected: function(id){\n\t\t\treturn id == selectedId;\n\t\t},\n\t\tunselect: function(id){\n\t\t\tvar id = id || selectedId;\n\t\t\tif(!id)\n\t\t\t\treturn;\n\t\t\tselectedId = null;\n\t\t\tif(!this._skip_refresh){\n\t\t\t\tthis.refresh(id);\n\t\t\t\tunselect.call(this, id);\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = createDataStoreSelectMixin;","var utils = require(\"../../utils/utils\");\n\n\nvar createLinksStoreFacade = function(){\n\treturn {\n\tgetLinkCount: function () {\n\t\treturn this.$data.linksStore.count();\n\t},\n\n\tgetLink : function (id) {\n\t\treturn this.$data.linksStore.getItem(id);\n\t},\n\n\tgetLinks : function () {\n\t\treturn this.$data.linksStore.getItems();\n\t},\n\n\tisLinkExists : function (id) {\n\t\treturn this.$data.linksStore.exists(id);\n\t},\n\n\taddLink : function (link) {\n\t\treturn this.$data.linksStore.addItem(link);\n\t},\n\n\tupdateLink : function (id, data) {\n\t\tif (!utils.defined(data))\n\t\t\tdata = this.getLink(id);\n\t\tthis.$data.linksStore.updateItem(id, data);\n\t},\n\n\tdeleteLink : function (id) {\n\t\treturn this.$data.linksStore.removeItem(id);\n\t},\n\n\tchangeLinkId : function (oldid, newid) {\n\t\treturn this.$data.linksStore.changeId(oldid, newid);\n\t}\n};\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksDatastoreFacade = function(){\n\treturn {\n\tgetTask: function (id) {\n\t\tthis.assert(id, \"Invalid argument for gantt.getTask\");\n\t\tvar task = this.$data.tasksStore.getItem(id);\n\t\tthis.assert(task, \"Task not found id=\" + id);\n\t\treturn task;\n\t},\n\tgetTaskByTime: function (from, to) {\n\t\tvar p = this.$data.tasksStore.getItems();\n\n\t\tvar res = [];\n\n\t\tif (!(from || to)) {\n\t\t\tres = p;\n\t\t} else {\n\t\t\tfrom = +from || -Infinity;\n\t\t\tto = +to || Infinity;\n\t\t\tfor (var t = 0; t < p.length; t++){\n\t\t\t\tvar task = p[t];\n\t\t\t\tif (+task.start_date < to && +task.end_date > from)\n\t\t\t\t\tres.push(task);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\tisTaskExists: function (id) {\n\t\tif(!this.$data || !this.$data.tasksStore){\n\t\t\treturn false;\n\t\t}\n\t\treturn this.$data.tasksStore.exists(id);\n\t},\n\tupdateTask: function (id, item) {\n\t\tif (!utils.defined(item)) item = this.getTask(id);\n\t\tthis.$data.tasksStore.updateItem(id, item);\n\t\tif(this.isTaskExists(id))\n\t\t\tthis.refreshTask(id);\n\t},\n\taddTask: function (item, parent, index) {\n\t\tif (!utils.defined(item.id))\n\t\t\titem.id = utils.uid();\n\n\t\tif (!utils.defined(parent)) parent = this.getParent(item) || 0;\n\t\tif (!this.isTaskExists(parent)) parent = this.config.root_id;\n\t\tthis.setParent(item, parent);\n\n\t\treturn this.$data.tasksStore.addItem(item, index, parent);\n\t},\n\tdeleteTask: function (id) {\n\t\treturn this.$data.tasksStore.removeItem(id);\n\t},\n\tgetTaskCount: function () {\n\t\treturn this.$data.tasksStore.count();\n\t},\n\tgetVisibleTaskCount: function () {\n\t\treturn this.$data.tasksStore.countVisible();\n\t},\n\tgetTaskIndex: function (id) {\n\t\treturn this.$data.tasksStore.getBranchIndex(id);\n\t},\n\tgetGlobalTaskIndex: function (id) {\n\t\tthis.assert(id, \"Invalid argument\");\n\t\treturn this.$data.tasksStore.getIndexById(id);\n\t},\n\teachTask: function (code, parent, master) {\n\t\treturn this.$data.tasksStore.eachItem(utils.bind(code, master||this), parent);\n\t},\n\teachParent: function (callback, startTask, master) {\n\t\treturn this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n\t},\n\tchangeTaskId: function (oldid, newid) {\n\t\tthis.$data.tasksStore.changeId(oldid, newid);\n\t\tvar task = this.$data.tasksStore.getItem(newid);\n\n\t\tvar links = [];\n\n\t\tif (task.$source) {\n\t\t\tlinks = links.concat(task.$source);\n\t\t}\n\t\tif (task.$target) {\n\t\t\tlinks = links.concat(task.$target);\n\t\t}\n\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar link = this.getLink(links[i]);\n\t\t\tif (link.source == oldid) {\n\t\t\t\tlink.source = newid;\n\t\t\t}\n\t\t\tif (link.target == oldid) {\n\t\t\t\tlink.target = newid;\n\t\t\t}\n\t\t}\n\t},\n\tcalculateTaskLevel: function (item) {\n\t\treturn this.$data.tasksStore.calculateItemLevel(item);\n\t},\n\tgetNext: function (id) {\n\t\treturn this.$data.tasksStore.getNext(id);\n\t},\n\tgetPrev: function (id) {\n\t\treturn this.$data.tasksStore.getPrev(id);\n\t},\n\tgetParent: function (id) {\n\t\treturn this.$data.tasksStore.getParent(id);\n\t},\n\tsetParent: function (task, new_pid, silent) {\n\t\treturn this.$data.tasksStore.setParent(task, new_pid, silent);\n\t},\n\tgetSiblings: function (id) {\n\t\treturn this.$data.tasksStore.getSiblings(id).slice();\n\t},\n\tgetNextSibling: function (id) {\n\t\treturn this.$data.tasksStore.getNextSibling(id);\n\t},\n\tgetPrevSibling: function (id) {\n\t\treturn this.$data.tasksStore.getPrevSibling(id);\n\t},\n\tgetTaskByIndex: function(index){\n\t\tvar id = this.$data.tasksStore.getIdByIndex(index);\n\t\tif(this.isTaskExists(id)){\n\t\t\treturn this.getTask(id);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t},\n\tgetChildren: function (id) {\n\t\tif(!this.hasChild(id)){\n\t\t\treturn [];\n\t\t}else{\n\t\t\treturn this.$data.tasksStore.getChildren(id).slice();\n\t\t}\n\t},\n\thasChild: function (id) {\n\t\treturn this.$data.tasksStore.hasChild(id);\n\t},\n\topen: function (id) {\n\t\tthis.$data.tasksStore.open(id);\n\t},\n\tclose: function (id) {\n\t\tthis.$data.tasksStore.close(id);\n\t},\n\tmoveTask: function (sid, tindex, parent) {\n\t\treturn this.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n\t},\n\tsort: function(field, desc, parent, silent) {\n\t\tvar render = !silent;//4th argument to cancel redraw after sorting\n\n\t\tthis.$data.tasksStore.sort(field, desc, parent);\n\t\tthis.callEvent(\"onAfterSort\", [field, desc, parent]);\n\n\t\tif (render) {\n\t\t\tthis.render();\n\t\t}\n\t}\n};\n};\n\nmodule.exports = createTasksDatastoreFacade;\n\n\n","var utils = require(\"../../utils/utils\");\nvar createTasksFacade = require(\"./datastore_tasks\"),\n\tcreateLinksFacade = require(\"./datastore_links\"),\n\tDataStore = require(\"../datastore/datastore\"),\n\tTreeDataStore = require(\"../datastore/treedatastore\"),\n\tcreateDatastoreSelect = require(\"../datastore/select\");\nvar datastoreRender = require(\"../datastore/datastore_render\");\nvar isHeadless = require(\"../../utils/is_headless\");\n\n// TODO: remove workaround for mixup with es5 and ts imports\nif(DataStore.default){\n\tDataStore = DataStore.default;\n}\n\nfunction getDatastores(){\n\tvar storeNames = this.$services.getService(\"datastores\");\n\tvar res = [];\n\tfor(var i = 0; i < storeNames.length; i++){\n\t\tres.push(this.getDatastore(storeNames[i]));\n\t}\n\treturn res;\n}\n\nvar createDatastoreFacade = function(){\n\treturn {\n\tcreateDatastore: function(config){\n\n\t\tvar $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n\t\tif (config) {\n\t\t\tvar self = this;\n\t\t\tconfig.openInitially = function(){ return self.config.open_tree_initially; };\n\t\t}\n\n\t\tvar store = new $StoreType(config);\n\t\tthis.mixin(store, createDatastoreSelect(store));\n\n\t\tif (config.name) {\n\t\t\tvar servicePrefix = \"datastore:\";\n\n\t\t\tthis.$services.dropService(servicePrefix + config.name);\n\t\t\tthis.$services.setService(servicePrefix + config.name, function() { return store; } );\n\n\t\t\tvar storeList = this.$services.getService(\"datastores\");\n\t\t\tif (!storeList) {\n\t\t\t\tstoreList = [];\n\t\t\t\tthis.$services.setService(\"datastores\", function() { return storeList; });\n\t\t\t\tstoreList.push(config.name);\n\t\t\t} else if (storeList.indexOf(config.name) < 0) {\n\t\t\t\tstoreList.push(config.name);\n\t\t\t}\n\n\t\t\tdatastoreRender.bindDataStore(config.name, this);\n\n\t\t}\n\n\t\treturn store;\n\t},\n\tgetDatastore: function(name){\n\t\treturn this.$services.getService(\"datastore:\" + name);\n\t},\n\n\trefreshData: function () {\n\t\tvar scrollState;\n\t\tif(!isHeadless(this)){\n\t\t\tscrollState = this.getScrollState();\n\t\t}\n\n\t\tthis.callEvent(\"onBeforeDataRender\", []);\n\n\t\tvar stores = getDatastores.call(this);\n\t\tfor(var i = 0; i < stores.length; i++){\n\t\t\tstores[i].refresh();\n\t\t}\n\n\t\tif(!isHeadless(this) && (scrollState.x || scrollState.y)){\n\t\t\tthis.scrollTo(scrollState.x, scrollState.y);\n\t\t}\n\t\tthis.callEvent(\"onDataRender\", []);\n\t},\n\n\tisChildOf: function(childId, parentId){\n\t\treturn this.$data.tasksStore.isChildOf(childId, parentId);\n\t},\n\n\trefreshTask: function (taskId, refresh_links) {\n\t\tvar task = this.getTask(taskId);\n\t\tvar self = this;\n\t\tfunction refreshLinks(){\n\t\t\tif (refresh_links !== undefined && !refresh_links)\n\t\t\t\treturn;\n\t\t\tfor (var i = 0; i < task.$source.length; i++) {\n\t\t\t\tself.refreshLink(task.$source[i]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < task.$target.length; i++) {\n\t\t\t\tself.refreshLink(task.$target[i]);\n\t\t\t}\n\t\t}\n\n\t\tif (task && this.isTaskVisible(taskId)) {\n\t\t\tthis.$data.tasksStore.refresh(taskId, !!this.getState(\"tasksDnd\").drag_id || refresh_links === false);// do quick refresh during drag and drop\n\t\t\trefreshLinks();\n\t\t}else if(this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId))){\n\t\t\tthis.refreshTask(this.getParent(taskId));\n\n\t\t\tvar hasSplitParent = false;\n\t\t\tthis.eachParent(function(parent){\n\t\t\t\tif(hasSplitParent || this.isSplitTask(parent)){\n\t\t\t\t\thasSplitParent = true;\n\t\t\t\t}\n\t\t\t}, taskId);\n\t\t\tif(hasSplitParent){\n\t\t\t\trefreshLinks();\n\t\t\t}\n\t\t}\n\n\t},\n\trefreshLink: function (linkId) {\n\t\tthis.$data.linksStore.refresh(linkId, !!this.getState(\"tasksDnd\").drag_id);// do quick refresh during drag and drop\n\t},\n\n\tsilent: function(code){\n\t\tvar gantt = this;\n\t\tgantt.$data.tasksStore.silent(function(){\n\t\t\tgantt.$data.linksStore.silent(function(){\n\t\t\t\tcode();\n\t\t\t});\n\t\t});\n\t},\n\n\tclearAll: function () {\n\t\tvar stores = getDatastores.call(this);\n\t\tfor(var i = 0; i < stores.length; i++){\n\t\t\tstores[i].clearAll();\n\t\t}\n\n\t\tthis._update_flags();\n\t\tthis.userdata = {};\n\t\tthis.callEvent(\"onClear\", []);\n\t\tthis.render();\n\t},\n\t_clear_data: function () {\n\t\tthis.$data.tasksStore.clearAll();\n\t\tthis.$data.linksStore.clearAll();\n\t\tthis._update_flags();\n\t\tthis.userdata = {};\n\t},\n\n\tselectTask: function(id){\n\t\tvar store = this.$data.tasksStore;\n\t\tif(!this.config.select_task)\n\t\t\treturn false;\n\t\tif (id){\n\n\t\t\tstore.select(id);\n\t\t}\n\t\treturn store.getSelectedId();\n\t},\n\tunselectTask: function(id){\n\t\tvar store = this.$data.tasksStore;\n\t\tstore.unselect(id);\n\t},\n\tisSelectedTask: function(id){\n\t\treturn this.$data.tasksStore.isSelected(id);\n\t},\n\tgetSelectedId: function() {\n\t\treturn this.$data.tasksStore.getSelectedId();\n\t}\n};\n};\n\nfunction createFacade(){\n\tvar res = utils.mixin({}, createDatastoreFacade());\n\tutils.mixin(res, createTasksFacade());\n\tutils.mixin(res, createLinksFacade());\n\treturn res;\n}\n\n\n\n\nmodule.exports = {create: createFacade};","var utils = require(\"../../utils/utils\");\nvar facadeFactory = require(\"./../facades/datastore\");\nvar calculateScaleRange = require(\"../gantt_data_range\");\nfunction initDataStores(gantt){\n\n\tvar facade = facadeFactory.create();\n\tutils.mixin(gantt, facade);\n\tvar tasksStore = gantt.createDatastore({\n\t\tname: \"task\",\n\t\ttype: \"treeDatastore\",\n\t\trootId: function() { return gantt.config.root_id; },\n\t\tinitItem: utils.bind(_init_task, gantt),\n\t\tgetConfig: function() { return gantt.config; }\n\t});\n\n\tvar linksStore = gantt.createDatastore({\n\t\tname: \"link\",\n\t\tinitItem: utils.bind(_init_link, gantt)\n\t});\n\n\tgantt.attachEvent(\"onDestroy\", function(){\n\t\ttasksStore.destructor();\n\t\tlinksStore.destructor();\n\t});\n\n\tgantt.attachEvent(\"onLinkValidation\", function(link){\n\t\tif(gantt.isLinkExists(link.id)){\n\t\t\t// link was already added into gantt\n\t\t\treturn true;\n\t\t}\n\t\tvar source = gantt.getTask(link.source);\n\t\tvar taskLinks = source.$source;\n\t\tfor (var i = 0; i < taskLinks.length; i++) {\n\t\t\tvar existingLink = gantt.getLink(taskLinks[i]);\n\n\t\t\tvar sourceMatch = link.source == existingLink.source;\n\t\t\tvar targetMatch = link.target == existingLink.target;\n\t\t\tvar typeMatch = link.type == existingLink.type;\n\n\t\t\t// prevent creating duplicated links from the UI\n\t\t\tif (sourceMatch && targetMatch && typeMatch) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t});\n\n\ttasksStore.attachEvent(\"onBeforeRefreshAll\", function(){\n\n\t\tvar order = tasksStore.getVisibleItems();\n\n\t\tfor(var i=0; i < order.length; i++){\n\t\t\tvar item = order[i];\n\t\t\titem.$index = i;\n\t\t\tgantt.resetProjectDates(item);\n\t\t}\n\n\t});\n\n\ttasksStore.attachEvent(\"onFilterItem\", function(id, task) {\n\t\tif (gantt.config.show_tasks_outside_timescale) {\n\t\t\treturn true;\n\t\t}\n\t\tvar min = null, max = null;\n\t\tif (gantt.config.start_date && gantt.config.end_date) {\n\t\t\tif (gantt._isAllowedUnscheduledTask(task)) return true;\n\t\t\tmin = gantt.config.start_date.valueOf();\n\t\t\tmax = gantt.config.end_date.valueOf();\n\n\t\t\tif (+task.start_date > max || +task.end_date < +min)\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\ttasksStore.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\tgantt._update_flags(oldId, newId);\n\t});\n\n\ttasksStore.attachEvent(\"onAfterUpdate\", function(id){\n\t\tgantt._update_parents(id);\n\t\tif(gantt.getState(\"batchUpdate\").batch_update){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar task = tasksStore.getItem(id);\n\t\tfor (var i = 0; i < task.$source.length; i++) {\n\t\t\tlinksStore.refresh(task.$source[i]);\n\t\t}\n\t\tfor (var i = 0; i < task.$target.length; i++) {\n\t\t\tlinksStore.refresh(task.$target[i]);\n\t\t}\n\t});\n\n\ttasksStore.attachEvent(\"onAfterItemMove\", function(sid, parent, tindex){\n\t\tvar source = gantt.getTask(sid);\n\n\t\tif(this.getNextSibling(sid) !== null){\n\t\t\tsource.$drop_target = this.getNextSibling(sid);\n\t\t} else if(this.getPrevSibling(sid) !== null){\n\t\t\tsource.$drop_target = \"next:\" + this.getPrevSibling(sid);\n\t\t}else{\n\t\t\tsource.$drop_target = \"next:null\";\n\t\t}\n\n\t});\n\n\ttasksStore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(action == \"delete\"){\n\t\t\tgantt._update_flags(id, null);\n\t\t}\n\n\t\tvar state = gantt.$services.getService(\"state\");\n\t\tif(state.getState(\"batchUpdate\").batch_update){\n\t\t\treturn;\n\t\t}\n\n\t\tif(gantt.config.fit_tasks && action !== \"paint\"){\n\t\t\tvar oldState = gantt.getState();\n\t\t\tcalculateScaleRange(gantt);\n\t\t\tvar newState = gantt.getState();\n\n\t\t\t//this._init_tasks_range();\n\t\t\tif (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n\t\t\t\tgantt.render();\n\n\t\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\tif(action == \"add\" || action == \"move\" || action == \"delete\"){\n\t\t\tif(gantt.$layout){\n\t\t\t\tgantt.$layout.resize();\n\t\t\t}\n\n\t\t}else if(!id){\n\t\t\tlinksStore.refresh();\n\t\t}\n\n\t});\n\n\tlinksStore.attachEvent(\"onAfterAdd\", function(id, link){\n\t\tsync_link(link);\n\t});\n\tlinksStore.attachEvent(\"onAfterUpdate\", function(id, link){\n\t\tsync_links();\n\t});\n\tlinksStore.attachEvent(\"onAfterDelete\", function(id, link){\n\t\tsync_link_delete(link);\n\t});\n\tlinksStore.attachEvent(\"onBeforeIdChange\", function(oldId, newId){\n\t\tsync_link_delete(gantt.mixin({id:oldId}, gantt.$data.linksStore.getItem(newId)));\n\t\tsync_link(gantt.$data.linksStore.getItem(newId));\n\t});\n\n\tfunction checkLinkedTaskVisibility(taskId){\n\t\tvar isVisible = gantt.isTaskVisible(taskId);\n\t\tif(!isVisible && gantt.isTaskExists(taskId)){\n\t\t\tvar parent = gantt.getParent(taskId);\n\t\t\tif(gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)){\n\t\t\t\tparent = gantt.getTask(parent);\n\t\t\t\tif(gantt.isSplitTask(parent)){\n\t\t\t\t\tisVisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isVisible;\n\t}\n\n\tlinksStore.attachEvent(\"onFilterItem\", function(id, link){\n\t\tif (!gantt.config.show_links) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar sourceVisible = checkLinkedTaskVisibility(link.source);\n\t\tvar targetVisible = checkLinkedTaskVisibility(link.target);\n\n\t\tif (!(sourceVisible && targetVisible) ||\n\t\t\tgantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target)))\n\t\t\treturn false;\n\n\t\treturn gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n\t});\n\n\n\t(function(){\n\t\t// delete all connected links after task is deleted\n\t\tvar treeHelper = require(\"../../utils/task_tree_helpers\");\n\t\tvar deletedLinks = {};\n\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", function(id, item){\n\t\t\tdeletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", function(id, item) {\n\t\t\tif(deletedLinks[id]){\n\t\t\t\tgantt.$data.linksStore.silent(function(){\n\t\t\t\t\tfor(var i in deletedLinks[id]){\n\t\t\t\t\t\tgantt.$data.linksStore.removeItem(i);\n\t\t\t\t\t\tsync_link_delete(deletedLinks[id][i]);\n\t\t\t\t\t}\n\n\t\t\t\t\tdeletedLinks[id] = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t})();\n\n\tgantt.attachEvent(\"onAfterLinkDelete\", function(id, link) {\n\t\tgantt.refreshTask(link.source);\n\t\tgantt.refreshTask(link.target);\n\t});\n\n\tgantt.attachEvent(\"onParse\", sync_links);\n\n\tmapEvents({\n\t\tsource: linksStore,\n\t\ttarget: gantt,\n\t\tevents:{\n\t\t\t\"onItemLoading\":\"onLinkLoading\",\n\t\t\t\"onBeforeAdd\":\"onBeforeLinkAdd\",\n\t\t\t\"onAfterAdd\":\"onAfterLinkAdd\",\n\t\t\t\"onBeforeUpdate\":\"onBeforeLinkUpdate\",\n\t\t\t\"onAfterUpdate\":\"onAfterLinkUpdate\",\n\t\t\t\"onBeforeDelete\":\"onBeforeLinkDelete\",\n\t\t\t\"onAfterDelete\":\"onAfterLinkDelete\",\n\t\t\t\"onIdChange\":\"onLinkIdChange\"\n\t\t}\n\t});\n\n\tmapEvents({\n\t\tsource: tasksStore,\n\t\ttarget: gantt,\n\t\tevents:{\n\t\t\t\"onItemLoading\":\"onTaskLoading\",\n\t\t\t\"onBeforeAdd\":\"onBeforeTaskAdd\",\n\t\t\t\"onAfterAdd\":\"onAfterTaskAdd\",\n\t\t\t\"onBeforeUpdate\":\"onBeforeTaskUpdate\",\n\t\t\t\"onAfterUpdate\":\"onAfterTaskUpdate\",\n\t\t\t\"onBeforeDelete\":\"onBeforeTaskDelete\",\n\t\t\t\"onAfterDelete\":\"onAfterTaskDelete\",\n\t\t\t\"onIdChange\":\"onTaskIdChange\",\n\t\t\t\"onBeforeItemMove\":\"onBeforeTaskMove\",\n\t\t\t\"onAfterItemMove\":\"onAfterTaskMove\",\n\t\t\t\"onFilterItem\":\"onBeforeTaskDisplay\",\n\t\t\t\"onItemOpen\":\"onTaskOpened\",\n\t\t\t\"onItemClose\":\"onTaskClosed\",\n\t\t\t\"onBeforeSelect\":\"onBeforeTaskSelected\",\n\t\t\t\"onAfterSelect\":\"onTaskSelected\",\n\t\t\t\"onAfterUnselect\":\"onTaskUnselected\"\n\t\t}\n\t});\n\n\tgantt.$data = {\n\t\ttasksStore: tasksStore,\n\t\tlinksStore: linksStore\n\t};\n\n\tfunction sync_link(link){\n\t\tif(gantt.isTaskExists(link.source)){\n\t\t\tvar sourceTask = gantt.getTask(link.source);\n\t\t\tsourceTask.$source = sourceTask.$source || [];\n\t\t\tsourceTask.$source.push(link.id);\n\t\t}\n\t\tif(gantt.isTaskExists(link.target)){\n\t\t\tvar targetTask = gantt.getTask(link.target);\n\t\t\ttargetTask.$target = targetTask.$target || [];\n\t\t\ttargetTask.$target.push(link.id);\n\t\t}\n\t}\n\n\tfunction sync_link_delete(link){\n\t\tif(gantt.isTaskExists(link.source)){\n\t\t\tvar sourceTask = gantt.getTask(link.source);\n\t\t\tfor(var i = 0; i < sourceTask.$source.length; i++){\n\t\t\t\tif(sourceTask.$source[i] == link.id){\n\t\t\t\t\tsourceTask.$source.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(gantt.isTaskExists(link.target)){\n\t\t\tvar targetTask = gantt.getTask(link.target);\n\t\t\tfor(var i = 0; i < targetTask.$target.length; i++){\n\t\t\t\tif(targetTask.$target[i] == link.id){\n\t\t\t\t\ttargetTask.$target.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction sync_links() {\n\t\tvar task = null;\n\t\tvar tasks = gantt.$data.tasksStore.getItems();\n\n\t\tfor(var i = 0, len = tasks.length; i < len; i++){\n\t\t\ttask = tasks[i];\n\t\t\ttask.$source = [];\n\t\t\ttask.$target = [];\n\t\t}\n\n\t\tvar links = gantt.$data.linksStore.getItems();\n\t\tfor (var i = 0, len = links.length; i < len; i++) {\n\n\t\t\tvar link = links[i];\n\t\t\tsync_link(link);\n\t\t}\n\t}\n\n\tfunction mapEvents(conf){\n\t\tvar mapFrom = conf.source;\n\t\tvar mapTo = conf.target;\n\t\tfor(var i in conf.events){\n\t\t\t(function(sourceEvent, targetEvent){\n\t\t\t\tmapFrom.attachEvent(sourceEvent, function(){\n\t\t\t\t\treturn mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n\t\t\t\t}, targetEvent);\n\t\t\t})(i, conf.events[i]);\n\t\t}\n\t}\n\n\tfunction _init_task(task) {\n\t\tif (!this.defined(task.id))\n\t\t\ttask.id = this.uid();\n\n\t\tif (task.start_date)\n\t\t\ttask.start_date = gantt.date.parseDate(task.start_date, \"parse_date\");\n\t\tif (task.end_date)\n\t\t\ttask.end_date = gantt.date.parseDate(task.end_date, \"parse_date\");\n\n\n\t\tvar duration = null;\n\t\tif (task.duration || task.duration === 0) {\n\t\t\ttask.duration = duration = task.duration * 1;\n\t\t}\n\n\t\tif (duration) {\n\t\t\tif (task.start_date && !task.end_date) {\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t} else if (!task.start_date && task.end_date) {\n\t\t\t\ttask.start_date = this.calculateEndDate({\n\t\t\t\t\tstart_date: task.end_date,\n\t\t\t\t\tduration: -task.duration,\n\t\t\t\t\ttask: task\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\ttask.progress = Number(task.progress) || 0;\n\n\t\tif (this._isAllowedUnscheduledTask(task)) {\n\t\t\tthis._set_default_task_timing(task);\n\t\t}\n\t\tthis._init_task_timing(task);\n\t\tif (task.start_date && task.end_date)\n\t\t\tthis.correctTaskWorkTime(task);\n\n\t\ttask.$source = [];\n\t\ttask.$target = [];\n\n\t\tvar originalTask = this.$data.tasksStore.getItem(task.id);\n\t\tif (originalTask && !utils.defined(task.open)) {\n\t\t\t// if a task with the same id is already in the gantt and the new object doesn't specify the `open` state -\n\t\t\t// restore the `open` state we already have in the chart\n\t\t\ttask.$open = originalTask.$open;\n\t\t}\n\n\t\tif (task.parent === undefined) {\n\t\t\ttask.parent = this.config.root_id;\n\t\t}\n\t\treturn task;\n\t}\n\n\tfunction _init_link(link) {\n\t\tif (!this.defined(link.id))\n\t\t\tlink.id = this.uid();\n\t\treturn link;\n\t}\n}\n\n\nmodule.exports = initDataStores;\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 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 }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\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 switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\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 if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\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 global.onmessage = function() {\n postMessageIsAsynchronous = false;\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\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n 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(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(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 script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\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));\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.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}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\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\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// 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.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\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 * 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){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction 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\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction 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 this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\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\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!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\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\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\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.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\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (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\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\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 return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.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 if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (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 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 for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.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 return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.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 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 longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\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 disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\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 Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar 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(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\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\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\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,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar 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 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\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\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 try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\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 if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\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 return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\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\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\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 return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\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\nfunction 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 if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\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 if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\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 if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\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\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction 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 for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction 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}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.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 length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\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 cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.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\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n 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 try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\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,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (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\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.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 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 for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n 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}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!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\nmodule.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,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (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(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 (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\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() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction 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\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction 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 ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction 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()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n 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\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"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),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\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 if (result.done === true) {\n this._cleanup();\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 if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\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,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(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(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(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\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\n\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\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (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 (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\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 if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n 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 if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.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 if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\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 return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction 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 if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\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)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.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}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\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 for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\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 return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((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 this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\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 target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n 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\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.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 var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n 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 if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\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 promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n 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 var promiseCreated = promise._popContext();\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 promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.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 if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\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 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 if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.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 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\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\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 this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\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\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.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 this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.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\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.4\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \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 } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \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\n},{\"./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(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\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 return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\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 values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.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 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 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 if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\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\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\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\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(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 if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n 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\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"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())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n 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 if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\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\nPromise.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\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\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\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar 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\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\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 return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\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 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 this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction 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\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n 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 return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction 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\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\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\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.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\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction 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)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\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 return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\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 this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\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\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\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\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\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() {\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 (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.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};\nSettledPromiseArray.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\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\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 if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\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 obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\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 promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\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 util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\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,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\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 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\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\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 return value.promise();\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 for (var i = 0; i < len; ++i) {\n var item = this[i];\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(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\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 var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\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)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\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 promise._setOnCancel(resources);\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 throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction 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}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction 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\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction 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\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\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 while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\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 if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\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 ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (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 while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(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 return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar 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 &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version;\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 return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","module.exports = require(\"bluebird\");","var utils = require(\"../../utils/utils\");\n\nvar StateService = (function(){\n\tvar stateProviders = {};\n\n\tfunction getState(name){\n\t\tvar provider = stateProviders[name];\n\t\tif(provider){\n\t\t\treturn stateProviders[name].method();\n\t\t}else{\n\t\t\tvar res = {};\n\t\t\tfor(var i in stateProviders){\n\t\t\t\tif(!stateProviders[i].internal)\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t}\n\n\tfunction registerProvider(name, provider, internal){\n\t\tstateProviders[name] = { method: provider, internal: internal};\n\t}\n\n\tfunction unregisterProvider(name){\n\t\tdelete stateProviders[name];\n\t}\n\n\treturn {\n\t\tgetState: getState,\n\t\tregisterProvider: registerProvider,\n\t\tunregisterProvider: unregisterProvider\n\t};\n});\n\nmodule.exports = StateService;\n\n","module.exports = function(gantt) {\n\n\tvar regTemplates = {};\n\n\tfunction initTemplate(name, initial, template_name) {\n\t\ttemplate_name = template_name || name;\n\t\tvar config = gantt.config,\n\t\t\ttemplates = gantt.templates;\n\n\t\tif (gantt.config[name] && regTemplates[template_name] != config[name]) {\n\t\t\tif (!(initial && templates[template_name])) {\n\t\t\t\ttemplates[template_name] = gantt.date.date_to_str(config[name]);\n\t\t\t\tregTemplates[template_name] = config[name];\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction initTemplates() {\n\t\tvar labels = gantt.locale.labels;\n\t\tlabels.gantt_save_btn = labels.icon_save;\n\t\tlabels.gantt_cancel_btn = labels.icon_cancel;\n\t\tlabels.gantt_delete_btn = labels.icon_delete;\n\n\n\t\tvar date = gantt.date;\n\n\t\t//build configuration based templates\n\t\tvar d = date.date_to_str;\n\t\tvar c = gantt.config;\n\t\tvar format_date = d(c.xml_date || c.date_format, c.server_utc);\n\t\tvar parse_date = date.str_to_date(c.xml_date || c.date_format, c.server_utc);\n\n\t\tinitTemplate(\"date_scale\", true, undefined, gantt.config, gantt.templates);\n\t\tinitTemplate(\"date_grid\", true, \"grid_date_format\", gantt.config, gantt.templates);\n\t\tinitTemplate(\"task_date\", true, undefined, gantt.config, gantt.templates);\n\n\t\tgantt.mixin(gantt.templates, {\n\t\t\txml_format: undefined, // deprecated\n\t\t\tformat_date: format_date,\n\n\t\t\txml_date: undefined, // deprecated\n\t\t\tparse_date: parse_date,\n\n\t\t\tprogress_text: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tgrid_header_class: function (column, config) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\n\t\t\ttask_text: function (start, end, task) {\n\t\t\t\treturn task.text;\n\t\t\t},\n\t\t\ttask_class: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\ttask_end_date: function (date) {\n\t\t\t\treturn gantt.templates.task_date(date);\n\t\t\t},\n\t\t\tgrid_row_class: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\ttask_row_class: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\ttimeline_cell_class: function (item, date) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tscale_cell_class: function (date) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tscale_row_class: function (date) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\n\t\t\tgrid_indent: function (item) {\n\t\t\t\treturn \"<div class='gantt_tree_indent'></div>\";\n\t\t\t},\n\t\t\tgrid_folder: function (item) {\n\t\t\t\treturn \"<div class='gantt_tree_icon gantt_folder_\" + (item.$open ? \"open\" : \"closed\") + \"'></div>\";\n\t\t\t},\n\t\t\tgrid_file: function (item) {\n\t\t\t\treturn \"<div class='gantt_tree_icon gantt_file'></div>\";\n\t\t\t},\n\t\t\tgrid_open: function (item) {\n\t\t\t\treturn \"<div class='gantt_tree_icon gantt_\" + (item.$open ? \"close\" : \"open\") + \"'></div>\";\n\t\t\t},\n\t\t\tgrid_blank: function (item) {\n\t\t\t\treturn \"<div class='gantt_tree_icon gantt_blank'></div>\";\n\t\t\t},\n\t\t\tdate_grid: function (date, item, column) {\n\t\t\t\tif (item && gantt.isUnscheduledTask(item) && gantt.config.show_unscheduled) {\n\t\t\t\t\treturn gantt.templates.task_unscheduled_time(item);\n\t\t\t\t} else {\n\t\t\t\t\treturn gantt.templates.grid_date_format(date, column);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\ttask_time: function (start, end, ev) {\n\t\t\t\tif (gantt.isUnscheduledTask(ev) && gantt.config.show_unscheduled) {\n\t\t\t\t\treturn gantt.templates.task_unscheduled_time(ev);\n\t\t\t\t} else {\n\t\t\t\t\treturn gantt.templates.task_date(start) + \" - \" + gantt.templates.task_end_date(end);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\ttask_unscheduled_time: function (task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\n\t\t\ttime_picker: d(c.time_picker),\n\t\t\tlink_class: function (link) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tlink_description: function (link) {\n\t\t\t\tvar from = gantt.getTask(link.source),\n\t\t\t\t\tto = gantt.getTask(link.target);\n\n\t\t\t\treturn \"<b>\" + from.text + \"</b> – <b>\" + to.text + \"</b>\";\n\t\t\t},\n\n\t\t\tdrag_link: function (from, from_start, to, to_start) {\n\t\t\t\tfrom = gantt.getTask(from);\n\t\t\t\tvar labels = gantt.locale.labels;\n\n\t\t\t\tvar text = \"<b>\" + from.text + \"</b> \" + (from_start ? labels.link_start : labels.link_end) + \"<br/>\";\n\t\t\t\tif (to) {\n\t\t\t\t\tto = gantt.getTask(to);\n\t\t\t\t\ttext += \"<b> \" + to.text + \"</b> \" + (to_start ? labels.link_start : labels.link_end) + \"<br/>\";\n\t\t\t\t}\n\t\t\t\treturn text;\n\t\t\t},\n\t\t\tdrag_link_class: function (from, from_start, to, to_start) {\n\t\t\t\tvar add = \"\";\n\n\t\t\t\tif (from && to) {\n\t\t\t\t\tvar allowed = gantt.isLinkAllowed(from, to, from_start, to_start);\n\t\t\t\t\tadd = \" \" + (allowed ? \"gantt_link_allow\" : \"gantt_link_deny\");\n\t\t\t\t}\n\n\t\t\t\treturn \"gantt_link_tooltip\" + add;\n\t\t\t},\n\n\t\t\t/* used for aria-labels of bar elements and for tooltip.js */\n\t\t\ttooltip_date_format: date.date_to_str(\"%Y-%m-%d\"),\n\t\t\ttooltip_text: function (start, end, event) {\n\t\t\t\treturn \"<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\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tinitTemplates: initTemplates,\n\t\tinitTemplate: initTemplate\n\t};\n\n};","\n\nvar eventable = require(\"../../utils/eventable\");\nvar utils = require(\"../../utils/utils\");\nvar timeout = require(\"../../utils/timeout\");\nvar global = require(\"../../utils/global\");\nvar dom_helpers = require(\"../ui/utils/dom_helpers\");\n\nmodule.exports = function(gantt){\n\n\tfunction copyDomEvent(e){\n\t\treturn {\n\t\t\ttarget: e.target || e.srcElement,\n\t\t\tpageX: e.pageX,\n\t\t\tpageY: e.pageY,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\tmetaKey: e.metaKey,\n\t\t\tshiftKey: e.shiftKey,\n\t\t\tctrlKey: e.ctrlKey,\n\t\t\taltKey: e.altKey\n\t\t};\n\t}\n\n\tfunction DnD(obj, config) {\n\t\tthis._obj = obj;\n\t\tthis._settings = config || {};\n\t\teventable(this);\n\n\t\tvar inputMethods = this.getInputMethods();\n\n\t\tthis._drag_start_timer = null;\n\t\tgantt.attachEvent(\"onGanttScroll\", utils.bind(function (left, top) {\n\t\t\tthis.clearDragTimer();\n\t\t}, this));\n\n\t\tvar lastDown = 0;\n\t\tvar eventParams = {passive: false};\n\t\tfor(var i = 0; i < inputMethods.length; i++){\n\t\t\t(utils.bind(function(input){\n\n\t\t\t\tgantt.event(obj, input.down, utils.bind(function (e) {\n\t\t\t\t\tif(!input.accessor(e)){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(config.preventDefault && config.selector && dom_helpers.closest(e.target, config.selector)){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gantt.config.touch && e.timeStamp && e.timeStamp - lastDown < 300) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._settings.original_target = copyDomEvent(e);\n\n\t\t\t\t\tif (gantt.config.touch) {\n\t\t\t\t\t\tthis.clearDragTimer();\n\t\t\t\t\t\tthis._drag_start_timer = setTimeout(utils.bind(function () {\n\t\t\t\t\t\t\tif(gantt.getState().lightbox){\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.dragStart(obj, e, input);\n\t\t\t\t\t\t}, this), gantt.config.touch_drag);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.dragStart(obj, e, input);\n\t\t\t\t\t}\n\t\t\t\t}, this), eventParams);\n\n\t\t\t\tgantt.event(document.body, input.up, utils.bind(function (e) {\n\t\t\t\t\tif(!input.accessor(e)){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.clearDragTimer();\n\t\t\t\t}, this), eventParams);\n\n\t\t\t}, this))(inputMethods[i]);\n\t\t}\n\t}\n\n\tDnD.prototype = {\n\t\ttraceDragEvents: function (domElement, inputMethod) {\n\t\t\tvar mousemove = utils.bind(function (e) {\n\t\t\t\treturn this.dragMove(domElement, e, inputMethod.accessor);\n\t\t\t}, this);\n\t\t\tutils.bind(function (e) {\n\t\t\t\treturn this.dragScroll(domElement, e);\n\t\t\t}, this);\n\n\t\t\tvar limited_mousemove = utils.bind(function (e) {\n\t\t\t\tif (this.config.started && utils.defined(this.config.updates_per_second)) {\n\t\t\t\t\tif (!timeout(this, this.config.updates_per_second))\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar dndActive = mousemove(e);\n\n\t\t\t\tif (dndActive) {\n\t\t\t\t\ttry{\n\t\t\t\t\t\tif (e && e.preventDefault && e.cancelable){//e.cancelable condition - because navigator.vibrate is blocked by Chrome\n\t\t\t\t\t\t\te.preventDefault();//Cancel default action on DND\n\t\t\t\t\t\t} //Cancel default action on DND\n\t\t\t\t\t}catch (e){\n\t\t\t\t\t\t// just suppress the exception, nothing needed to be done here\n\t\t\t\t\t}\n\n\t\t\t\t\t//e.cancelBubble = true;\n\t\t\t\t}\n\n\t\t\t\treturn dndActive;\n\t\t\t}, this);\n\n\t\t\tvar mousemoveContainer = this.config.mousemoveContainer || document.body;\n\n\t\t\tvar eventParams = {passive: false};\n\t\t\tvar mouseup = utils.bind(function (e) {\n\t\t\t\tgantt.eventRemove(mousemoveContainer, inputMethod.move, limited_mousemove, eventParams);\n\t\t\t\tgantt.eventRemove(document.body, inputMethod.up, mouseup, eventParams);\n\t\t\t\treturn this.dragEnd(domElement);\n\t\t\t}, this);\n\n\t\t\tgantt.event(mousemoveContainer, inputMethod.move, limited_mousemove, eventParams);\n\t\t\tgantt.event(document.body, inputMethod.up, mouseup, eventParams);\n\t\t},\n\t\tcheckPositionChange: function (pos) {\n\t\t\tvar diff_x = pos.x - this.config.pos.x;\n\t\t\tvar diff_y = pos.y - this.config.pos.y;\n\t\t\tvar distance = Math.sqrt(Math.pow(Math.abs(diff_x), 2) + Math.pow(Math.abs(diff_y), 2));\n\n\t\t\tif (distance > this.config.sensitivity) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tinitDnDMarker: function () {\n\t\t\t// create dnd placeholder and put it in dom\n\t\t\tvar marker = this.config.marker = document.createElement(\"div\");\n\t\t\tmarker.className = \"gantt_drag_marker\";\n\t\t\tmarker.innerHTML = \"Dragging object\";\n\t\t\tdocument.body.appendChild(marker);\n\t\t},\n\t\tbackupEventTarget: function (domEvent, getEvent) {\n\t\t\tif (!gantt.config.touch) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// keep original event target in DOM in order to keep dnd on touchmove event\n\t\t\tvar e = getEvent(domEvent);\n\n\t\t\tvar el = e.target || e.srcElement;\n\t\t\tvar copy = el.cloneNode(true);\n\t\t\t//this.config.target.target = copy;\n\t\t\tthis.config.original_target = copyDomEvent(e);\n\t\t\tthis.config.original_target.target = copy;\n\t\t\tthis.config.backup_element = el;\n\t\t\tel.parentNode.appendChild(copy);\n\n\t\t\tel.style.display = \"none\";\n\t\t\tvar mousemoveContainer = this.config.mousemoveContainer || document.body;\n\t\t\tmousemoveContainer.appendChild(el);\n\t\t},\n\t\tgetInputMethods: function () {\n\t\t\t// bind actions to browser events\n\t\t\tvar inputMethods = [];\n\n\t\t\tinputMethods.push({\n\t\t\t\t\"move\": \"mousemove\",\n\t\t\t\t\"down\": \"mousedown\",\n\t\t\t\t\"up\": \"mouseup\",\n\t\t\t\t\"accessor\": function (e) {\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (gantt.config.touch) {\n\n\t\t\t\tvar touchEventsSupported = true;\n\t\t\t\ttry{\n\t\t\t\t\tdocument.createEvent(\"TouchEvent\");\n\t\t\t\t}catch (e){\n\t\t\t\t\ttouchEventsSupported = false;\n\t\t\t\t}\n\n\t\t\t\tif(touchEventsSupported){\n\t\t\t\t\tinputMethods.push({\n\t\t\t\t\t\t\"move\": \"touchmove\",\n\t\t\t\t\t\t\"down\": \"touchstart\",\n\t\t\t\t\t\t\"up\": \"touchend\",\n\t\t\t\t\t\t\"accessor\": function (ev) {\n\t\t\t\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\n\t\t\t\t\t\t\tif (ev.touches[0])\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttarget: document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY),\n\t\t\t\t\t\t\t\t\tpageX: ev.touches[0].pageX,\n\t\t\t\t\t\t\t\t\tpageY: ev.touches[0].pageY,\n\t\t\t\t\t\t\t\t\tclientX: ev.touches[0].clientX,\n\t\t\t\t\t\t\t\t\tclientY: ev.touches[0].clientY\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\treturn ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else if(global.navigator.pointerEnabled){\n\t\t\t\t\tinputMethods.push({\n\t\t\t\t\t\t\"move\": \"pointermove\",\n\t\t\t\t\t\t\"down\": \"pointerdown\",\n\t\t\t\t\t\t\"up\": \"pointerup\",\n\t\t\t\t\t\t\"accessor\": function (ev) {\n\t\t\t\t\t\t\tif (ev.pointerType == \"mouse\") return null;\n\t\t\t\t\t\t\treturn ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t}else if (global.navigator.msPointerEnabled){\n\t\t\t\t\tinputMethods.push({\n\t\t\t\t\t\t\"move\": \"MSPointerMove\",\n\t\t\t\t\t\t\"down\": \"MSPointerDown\",\n\t\t\t\t\t\t\"up\": \"MSPointerUp\",\n\t\t\t\t\t\t\"accessor\": function (ev) {\n\t\t\t\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n\t\t\t\t\t\t\treturn ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn inputMethods;\n\t\t},\n\t\tclearDragTimer: function () {\n\t\t\tif (this._drag_start_timer) {\n\t\t\t\tclearTimeout(this._drag_start_timer);\n\t\t\t\tthis._drag_start_timer = null;\n\t\t\t}\n\t\t},\n\t\tdragStart: function (obj, e, inputMethod) {\n\t\t\tif (this.config && this.config.started) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.config = {\n\t\t\t\tobj: obj,\n\t\t\t\tmarker: null,\n\t\t\t\tstarted: false,\n\t\t\t\tpos: this.getPosition(e),\n\t\t\t\tsensitivity: 4\n\t\t\t};\n\t\t\tif (this._settings)\n\t\t\t\tutils.mixin(this.config, this._settings, true);\n\n\n\t\t\tthis.traceDragEvents(obj, inputMethod);\n\n\t\t\tgantt._prevent_touch_scroll = true;\n\t\t\tdocument.body.className += \" gantt_noselect\";\n\n\t\t\tif (gantt.config.touch) {\n\t\t\t\tthis.dragMove(obj, e, inputMethod.accessor);\n\t\t\t}\n\n\t\t},\n\t\tdragMove: function (obj, e, getEvent) {\n\t\t\tvar source = getEvent(e);\n\t\t\tif (!source) return false;\n\n\t\t\tif (!this.config.marker && !this.config.started) {\n\t\t\t\tvar pos = this.getPosition(source);\n\n\t\t\t\tif (gantt.config.touch || this.checkPositionChange(pos)) {\n\t\t\t\t\t// real drag starts here,\n\t\t\t\t\t// when user moves mouse at first time after onmousedown\n\t\t\t\t\tthis.config.started = true;\n\t\t\t\t\tthis.config.ignore = false;\n\t\t\t\t\tif (this.callEvent(\"onBeforeDragStart\", [obj, this.config.original_target]) === false) {\n\t\t\t\t\t\tthis.config.ignore = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.backupEventTarget(e, getEvent);\n\t\t\t\t\tthis.initDnDMarker();\n\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t\tthis.callEvent(\"onAfterDragStart\", [obj, this.config.original_target]);\n\t\t\t\t} else {\n\t\t\t\t\tthis.config.ignore = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this.config.ignore) {\n\t\t\t\t// GS-1279 Gantt crashes on Mobile Firefox after starting to create a link and moving finger outisde the page.\n\t\t\t\tif (e.targetTouches && !source.target) return;\n\t\t\t\t\n\t\t\t\tsource.pos = this.getPosition(source);\n\t\t\t\tthis.config.marker.style.left = source.pos.x + \"px\";\n\t\t\t\tthis.config.marker.style.top = source.pos.y + \"px\";\n\t\t\t\tthis.callEvent(\"onDragMove\", [obj, source]);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tdragEnd: function (obj) {\n\t\t\tvar target = this.config.backup_element;\n\t\t\tif (target && target.parentNode) {\n\t\t\t\ttarget.parentNode.removeChild(target);\n\t\t\t}\n\t\t\tgantt._prevent_touch_scroll = false;\n\t\t\tif (this.config.marker) {\n\t\t\t\tthis.config.marker.parentNode.removeChild(this.config.marker);\n\t\t\t\tthis.config.marker = null;\n\n\t\t\t\tthis.callEvent(\"onDragEnd\", []);\n\t\t\t}\n\t\t\tthis.config.started = false;\n\t\t\tdocument.body.className = document.body.className.replace(\" gantt_noselect\", \"\");\n\t\t},\n\n\t\tgetPosition: function (e) {\n\t\t\tvar x = 0, y = 0;\n\t\t\tif (e.pageX || e.pageY) {\n\t\t\t\tx = e.pageX;\n\t\t\t\ty = e.pageY;\n\t\t\t} else if (e.clientX || e.clientY) {\n\t\t\t\tx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n\t\t\t\ty = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n\t\t\t}\n\t\t\treturn {x: x, y: y};\n\t\t}\n\t};\n\n\treturn DnD;\n};\n","const dateToStr = (format: string, utc: boolean, gantt) => {\n\treturn (date) => {\n\t\treturn format.replace(/%[a-zA-Z]/g, (a) => {\n\t\t\tswitch (a) {\n\t\t\t\tcase \"%d\": return utc ? gantt.date.to_fixed(date.getUTCDate()) : gantt.date.to_fixed(date.getDate());\n\t\t\t\tcase \"%m\": return utc ? gantt.date.to_fixed((date.getUTCMonth() + 1)) : gantt.date.to_fixed((date.getMonth() + 1));\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\n\t\t\t\tcase \"%y\": return utc ? gantt.date.to_fixed(date.getUTCFullYear() % 100) : gantt.date.to_fixed(date.getFullYear() % 100);\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\n\t\t\t\tcase \"%D\": return utc ? gantt.locale.date.day_short[date.getUTCDay()] : gantt.locale.date.day_short[date.getDay()];\n\t\t\t\tcase \"%l\": return utc ? gantt.locale.date.day_full[date.getUTCDay()] : gantt.locale.date.day_full[date.getDay()];\n\t\t\t\tcase \"%M\": return utc ? gantt.locale.date.month_short[date.getUTCMonth()] : gantt.locale.date.month_short[date.getMonth()];\n\t\t\t\tcase \"%F\": return utc ? gantt.locale.date.month_full[date.getUTCMonth()] : gantt.locale.date.month_full[date.getMonth()];\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);\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\n\t\t\t\tcase \"%H\": return utc ? gantt.date.to_fixed(date.getUTCHours()) : gantt.date.to_fixed(date.getHours());\n\t\t\t\tcase \"%i\": return utc ? gantt.date.to_fixed(date.getUTCMinutes()) : gantt.date.to_fixed(date.getMinutes());\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\n\t\t\t\tcase \"%s\": return utc ? gantt.date.to_fixed(date.getUTCSeconds()) : gantt.date.to_fixed(date.getSeconds());\n\t\t\t\tcase \"%W\": return utc ? gantt.date.to_fixed(gantt.date.getUTCISOWeek(date)) : gantt.date.to_fixed(gantt.date.getISOWeek(date));\n\t\t\t\tdefault: return a;\n\t\t\t}\n\t\t});\n\t};\n};\nconst strToDate = (format: string, utc: boolean, gantt:any) => {\n\treturn (date: string) => {\n\t\tconst set: Array<string|number> = [0, 0, 1, 0, 0, 0];\n\t\tconst temp = date.match(/[a-zA-Z]+|[0-9]+/g);\n\t\tconst mask = format.match(/%[a-zA-Z]/g);\n\n\t\tfor (let i = 0; i < mask.length; i++) {\n\t\t\tswitch (mask[i]) {\n\t\t\t\tcase \"%j\":\n\t\t\t\tcase \"%d\":\n\t\t\t\t\tset[2] = temp[i] as unknown as number || 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%n\":\n\t\t\t\tcase \"%m\":\n\t\t\t\t\tset[1] = (temp[i] as unknown as number || 1) - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%y\":\n\t\t\t\t\tset[0] = temp[i] as unknown as number * 1 + ((temp[i] as unknown as number) > 50 ? 1900 : 2000);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%g\":\n\t\t\t\tcase \"%G\":\n\t\t\t\tcase \"%h\":\n\t\t\t\tcase \"%H\":\n\t\t\t\t\tset[3] = temp[i] as unknown as number || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%i\":\n\t\t\t\t\tset[4] = temp[i] as unknown as number || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%Y\":\n\t\t\t\t\tset[0] = temp[i] as unknown as number || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%a\":\n\t\t\t\tcase \"%A\":\n\t\t\t\t\tset[3] = set[3] as number % 12 + ((temp[i] || \"\").toLowerCase() === \"am\" ? 0 : 12);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%s\":\n\t\t\t\t\tset[5] = temp[i] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%M\":\n\t\t\t\t\tset[1] = gantt.locale.date.month_short_hash[temp[i]] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%F\":\n\t\t\t\t\tset[1] = gantt.locale.date.month_full_hash[temp[i]] || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (utc) {\n\t\t\treturn new Date(Date.UTC(\n\t\t\t\tset[0] as number,\n\t\t\t\tset[1] as number,\n\t\t\t\tset[2] as number,\n\t\t\t\tset[3] as number,\n\t\t\t\tset[4] as number,\n\t\t\t\tset[5] as number\n\t\t\t));\n\t\t}\n\t\treturn new Date(\n\t\t\tset[0] as number,\n\t\t\tset[1] as number,\n\t\t\tset[2] as number,\n\t\t\tset[3] as number,\n\t\t\tset[4] as number,\n\t\t\tset[5] as number\n\t\t);\n\t};\n\n};\n\n\nconst cspVersion = {\n\tdate_to_str: dateToStr,\n\tstr_to_date: strToDate\n};\n\nexport default cspVersion;","const dateToStr = (format: string, utc: boolean, gantt) => {\n\tformat = format.replace(/%[a-zA-Z]/g, (a) => {\n\t\tswitch (a) {\n\t\t\tcase \"%d\":\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Date())+\"`;\n\t\t\tcase \"%m\":\n\t\t\t\treturn `\"+to_fixed((date.get${utc?\"UTC\":\"\"}Month()+1))+\"`;\n\t\t\tcase \"%j\":\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}Date()+\"`;\n\t\t\tcase \"%n\":\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Month()+1)+\"`;\n\t\t\tcase \"%y\":\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}FullYear()%100)+\"`;\n\t\t\tcase \"%Y\":\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}FullYear()+\"`;\n\t\t\tcase \"%D\":\n\t\t\t\treturn `\"+locale.date.day_short[date.get${utc?\"UTC\":\"\"}Day()]+\"`;\n\t\t\tcase \"%l\":\n\t\t\t\treturn `\"+locale.date.day_full[date.get${utc?\"UTC\":\"\"}Day()]+\"`;\n\t\t\tcase \"%M\":\n\t\t\t\treturn `\"+locale.date.month_short[date.get${utc?\"UTC\":\"\"}Month()]+\"`;\n\t\t\tcase \"%F\":\n\t\t\t\treturn `\"+locale.date.month_full[date.get${utc?\"UTC\":\"\"}Month()]+\"`;\n\t\t\tcase \"%h\":\n\t\t\t\treturn `\"+to_fixed((date.get${utc?\"UTC\":\"\"}Hours()+11)%12+1)+\"`;\n\t\t\tcase \"%g\":\n\t\t\t\treturn `\"+((date.get${utc?\"UTC\":\"\"}Hours()+11)%12+1)+\"`;\n\t\t\tcase \"%G\":\n\t\t\t\treturn `\"+date.get${utc?\"UTC\":\"\"}Hours()+\"`;\n\t\t\tcase \"%H\":\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Hours())+\"`;\n\t\t\tcase \"%i\":\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Minutes())+\"`;\n\t\t\tcase \"%a\":\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Hours()>11?\"pm\":\"am\")+\"`;\n\t\t\tcase \"%A\":\n\t\t\t\treturn `\"+(date.get${utc?\"UTC\":\"\"}Hours()>11?\"PM\":\"AM\")+\"`;\n\t\t\tcase \"%s\":\n\t\t\t\treturn `\"+to_fixed(date.get${utc?\"UTC\":\"\"}Seconds())+\"`;\n\t\t\tcase \"%W\":\n\t\t\t\treturn `\"+to_fixed(getISOWeek(date))+\"`;\n\t\t\tcase \"%w\":\n\t\t\t\treturn `\"+to_fixed(getWeek(date))+\"`;\n\t\t\tdefault:\n\t\t\t\treturn a;\n\t\t}\n\t});\n\n\t// tslint:disable-next-line: function-constructor\n\tconst dateToStrFn = new Function(\"date\", \"to_fixed\", \"locale\", \"getISOWeek\", \"getWeek\", `return \"${format}\";`);\n\n\treturn (date: Date) => {\n\t\treturn dateToStrFn(date, gantt.date.to_fixed, gantt.locale, gantt.date.getISOWeek, gantt.date.getWeek);\n\t};\n};\n\n\nconst strToDate = (format: string, utc: boolean, gantt:any) => {\n\tlet splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\n\tconst mask = format.match(/%[a-zA-Z]/g);\n\tfor (let i = 0; i < mask.length; i++) {\n\t\tswitch (mask[i]) {\n\t\t\tcase \"%j\":\n\t\t\tcase \"%d\":\n\t\t\t\tsplt += `set[2]=temp[${i}]||1;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%n\":\n\t\t\tcase \"%m\":\n\t\t\t\tsplt += `set[1]=(temp[${i}]||1)-1;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%y\":\n\t\t\t\tsplt += `set[0]=temp[${i}]*1+(temp[${i}]>50?1900:2000);`;\n\t\t\t\tbreak;\n\t\t\tcase \"%g\":\n\t\t\tcase \"%G\":\n\t\t\tcase \"%h\":\n\t\t\tcase \"%H\":\n\t\t\t\tsplt += `set[3]=temp[${i}]||0;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%i\":\n\t\t\t\tsplt += `set[4]=temp[${i}]||0;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%Y\":\n\t\t\t\tsplt += `set[0]=temp[${i}]||0;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%a\":\n\t\t\tcase \"%A\":\n\t\t\t\tsplt += `set[3]=set[3]%12+((temp[${i}]||'').toLowerCase()=='am'?0:12);`;\n\t\t\t\tbreak;\n\t\t\tcase \"%s\":\n\t\t\t\tsplt += `set[5]=temp[${i}]||0;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%M\":\n\t\t\t\tsplt += `set[1]=locale.date.month_short_hash[temp[${i}]]||0;`;\n\t\t\t\tbreak;\n\t\t\tcase \"%F\":\n\t\t\t\tsplt += `set[1]=locale.date.month_full_hash[temp[${i}]]||0;`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tlet code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\n\tif (utc) { code = ` Date.UTC(${code})`; }\n\t// tslint:disable-next-line: function-constructor\n\tconst strToDateFn = new Function(\"date\", \"locale\", `var set=[0,0,1,0,0,0]; ${splt} return new Date(${code});`);\n\n\treturn (dateString) => {\n\t\treturn strToDateFn(dateString, gantt.locale);\n\t};\n};\n\nconst fastVersion = {\n\tdate_to_str: dateToStr,\n\tstr_to_date: strToDate\n};\n\nexport default fastVersion;","/*\n %d - the day as a number with a leading zero ( 01 to 31 );\n %j - the day as a number without a leading zero ( 1 to 31 );\n %D - the day as an abbreviation ( Sun to Sat );\n %l - the day as a full name ( Sunday to Saturday );\n %W - the ISO-8601 week number of the year. Weeks start on Monday; 1)\n %m - the month as a number without a leading zero ( 1 to 12 );\n %n - the month as a number with a leading zero ( 01 to 12);\n %M - the month as an abbreviation ( Jan to Dec );\n %F - the month as a full name ( January to December );\n %y - the year as a two-digit number ( 00 to 99 );\n %Y - the year as a four-digit number ( 1900–9999 );\n %h - the hour based on the 12-hour clock ( 00 to 11 );\n %H - the hour based on the 24-hour clock ( 00 to 23 );\n %i - the minute as a number with a leading zero ( 00 to 59 );\n %s - the second as a number without a leading zero ( 00 to 59 ); 2)\n %a - displays am (for times from midnight until noon) and pm (for times from noon until midnight);\n %A - displays AM (for times from midnight until noon) and PM (for times from noon until midnight).\n*/\n\nvar fastVersion = require(\"./date_parsers/fast_version\").default;\nvar cspCompliantVersion = require(\"./date_parsers/csp_compliant_version\").default;\n\nmodule.exports = function(gantt) {\n\tfunction useCsp() {\n\t\tvar result = false;\n\t\tif (gantt.config.csp === \"auto\") {\n\t\t\ttry {\n\t\t\t\tnew Function(\"result = false;\");\n\t\t\t} catch(e) {\n\t\t\t\tresult = true;\n\t\t\t}\n\t\t} else {\n\t\t\tresult = gantt.config.csp;\n\t\t}\n\t\treturn result;\n\t}\n\n\tvar dateHelper = {\n\t\tinit: function () {\n\t\t\tvar locale = gantt.locale;\n\n\t\t\tvar s = locale.date.month_short;\n\t\t\tvar t = locale.date.month_short_hash = {};\n\t\t\tfor (var i = 0; i < s.length; i++)\n\t\t\t\tt[s[i]] = i;\n\n\t\t\tvar s = locale.date.month_full;\n\t\t\tvar t = locale.date.month_full_hash = {};\n\t\t\tfor (var i = 0; i < s.length; i++)\n\t\t\t\tt[s[i]] = i;\n\t\t},\n\t\tdate_part: function (date) {\n\t\t\tvar old = new Date(date);\n\t\t\tdate.setHours(0);\n\t\t\tthis.hour_start(date);\n\t\t\tif (date.getHours() && //shift to yesterday on dst\n\t\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()))\n\t\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\n\t\t\treturn date;\n\t\t},\n\t\ttime_part: function (date) {\n\t\t\treturn (date.valueOf() / 1000 - date.getTimezoneOffset() * 60) % 86400;\n\t\t},\n\t\tweek_start: function (date) {\n\t\t\tvar shift = date.getDay();\n\t\t\tif (gantt.config.start_on_monday) {\n\t\t\t\tif (shift === 0) shift = 6;\n\t\t\t\telse shift--;\n\t\t\t}\n\t\t\treturn this.date_part(this.add(date, -1 * shift, \"day\"));\n\t\t},\n\t\tmonth_start: function (date) {\n\t\t\tdate.setDate(1);\n\t\t\treturn this.date_part(date);\n\t\t},\n\t\tquarter_start: function (date) {\n\t\t\tthis.month_start(date);\n\t\t\tvar m = date.getMonth(),\n\t\t\t\tres_month;\n\n\t\t\tif (m >= 9) {\n\t\t\t\tres_month = 9;\n\t\t\t} else if (m >= 6) {\n\t\t\t\tres_month = 6;\n\t\t\t} else if (m >= 3) {\n\t\t\t\tres_month = 3;\n\t\t\t} else {\n\t\t\t\tres_month = 0;\n\t\t\t}\n\n\t\t\tdate.setMonth(res_month);\n\t\t\treturn date;\n\t\t},\n\t\tyear_start: function (date) {\n\t\t\tdate.setMonth(0);\n\t\t\treturn this.month_start(date);\n\t\t},\n\t\tday_start: function (date) {\n\t\t\treturn this.date_part(date);\n\t\t},\n\t\thour_start: function (date) {\n\t\t\tif (date.getMinutes())\n\t\t\t\tdate.setMinutes(0);\n\t\t\tthis.minute_start(date);\n\n\t\t\treturn date;\n\t\t},\n\t\tminute_start: function (date) {\n\t\t\tif (date.getSeconds())\n\t\t\t\tdate.setSeconds(0);\n\t\t\tif (date.getMilliseconds())\n\t\t\t\tdate.setMilliseconds(0);\n\t\t\treturn date;\n\t\t},\n\t\t_add_days: function (date, inc) {\n\t\t\tvar ndate = new Date(date.valueOf());\n\n\t\t\tndate.setDate(ndate.getDate() + inc);\n\t\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\n\t\t\t\t(ndate.getDate() <= date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()))\n\t\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\n\t\t\treturn ndate;\n\t\t},\n\n\t\tadd: function (date, inc, mode) {\n\t\t\t/*jsl:ignore*/\n\t\t\tvar ndate = new Date(date.valueOf());\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"day\":\n\t\t\t\t\tndate = this._add_days(ndate, inc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"week\":\n\t\t\t\t\tndate = this._add_days(ndate, inc * 7);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"month\":\n\t\t\t\t\tndate.setMonth(ndate.getMonth() + inc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"year\":\n\t\t\t\t\tndate.setYear(ndate.getFullYear() + inc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"hour\":\n\t\t\t\t\t/*\n\t\t\t\t\t\tadding hours/minutes via setHour(getHour() + inc) gives weird result when\n\t\t\t\t\t\tadding one hour to the time before switch to a Daylight Saving time\n\n\t\t\t\t\t\texample: //Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\n\t\t\t\t\t\tnew Date(2014, 02, 30, 1).setHours(2)\n\t\t\t\t\t\t>>Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\n\n\t\t\t\t\t\tsetTime seems working as expected\n\t\t\t\t\t */\n\t\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"minute\":\n\n\t\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn this[\"add_\" + mode](date, inc, mode);\n\t\t\t}\n\t\t\treturn ndate;\n\t\t\t/*jsl:end*/\n\t\t},\n\t\tadd_quarter: function (date, inc) {\n\t\t\treturn this.add(date, inc * 3, \"month\");\n\t\t},\n\n\t\tto_fixed: function (num) {\n\t\t\tif (num < 10) return \"0\" + num;\n\t\t\treturn num;\n\t\t},\n\t\tcopy: function (date) {\n\t\t\treturn new Date(date.valueOf());\n\t\t},\n\t\tdate_to_str: function (format, utc) {\n\t\t\tvar result = fastVersion;\n\t\t\tif (useCsp()) {\n\t\t\t\tresult = cspCompliantVersion;\n\t\t\t}\n\t\t\treturn result.date_to_str(format, utc, gantt);\n\t\t},\n\t\tstr_to_date: function (format, utc) {\n\t\t\tvar result = fastVersion;\n\t\t\tif (useCsp()) {\n\t\t\t\tresult = cspCompliantVersion;\n\t\t\t}\n\t\t\treturn result.str_to_date(format, utc, gantt);\n\t\t},\n\t\tgetISOWeek: function (ndate) {\n\t\t\treturn gantt.date._getWeekNumber(ndate, true);\n\t\t},\n\t\t_getWeekNumber: function(ndate, isoWeek){\n\t\t\tif (!ndate) return false;\n\t\t\tvar nday = ndate.getDay();\n\t\t\tif(isoWeek){\n\t\t\t\tif (nday === 0) {\n\t\t\t\t\tnday = 7;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar first_thursday = new Date(ndate.valueOf());\n\t\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\n\t\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\n\t\t\tvar 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\t\t\tvar week_number = 1 + Math.floor(ordinal_date / 7);\n\t\t\treturn week_number;\n\t\t},\n\n\t\tgetWeek: function(ndate){\n\t\t\treturn gantt.date._getWeekNumber(ndate, gantt.config.start_on_monday);\n\t\t},\n\t\tgetUTCISOWeek: function (ndate) {\n\t\t\treturn gantt.date.getISOWeek(ndate);\n\t\t},\n\t\tconvert_to_utc: function (date) {\n\t\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n\t\t},\n\t\tparseDate: function (date, format) {\n\t\t\t// raw date may be of type string, number (timestamp) or something else\n\t\t\t// do not check for instanceof Date explicitly, since we may swap native date with different date implementation at some point\n\t\t\tif (date && !date.getFullYear) {\n\t\t\t\tif (typeof(format) !== \"function\") {\n\t\t\t\t\tif (typeof(format) === \"string\") {\n\t\t\t\t\t\tif (format === \"parse_date\" || format === \"xml_date\") {\n\t\t\t\t\t\t\tformat = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tformat = gantt.defined(gantt.templates[format]) ? gantt.templates[format] : gantt.date.str_to_date(format);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tformat = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (date) {\n\t\t\t\t\tdate = format(date);\n\t\t\t\t} else {\n\t\t\t\t\tdate = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}\n\t};\n\treturn dateHelper;\n};","export default function serialize(data: object | string) {\n\tif (typeof data === \"string\" || typeof data === \"number\") {\n\t\treturn data;\n\t}\n\n\tlet result = \"\";\n\n\tfor (const key in data) {\n\t\tlet serialized = \"\";\n\t\tif (data.hasOwnProperty(key)) {\n\t\t\tif (typeof data[key] === \"string\") {\n\t\t\t\tserialized = encodeURIComponent(data[key]);\n\t\t\t} else if (typeof data[key] === \"number\") {\n\t\t\t\tserialized = data[key];\n\t\t\t} else {\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\n\t\t\t}\n\t\t\tserialized = key + \"=\" + serialized;\n\n\t\t\tif (result.length) {\n\t\t\t\tserialized = \"&\" + serialized;\n\t\t\t}\n\t\t\tresult += serialized;\n\t\t}\n\t}\n\treturn result;\n}\n","var env = require(\"../../utils/env\");\nvar global = require(\"../../utils/global\");\nvar serialize = require(\"./serialize\").default;\n\nfunction createConfig(method, args) {\n\tvar result = {\n\t\tmethod: method\n\t};\n\n\tif (args.length === 0) {\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\n\t}\n\tif (args.length === 1) {\n\t\tif (typeof args[0] === \"string\") {\n\t\t\tresult.url = args[0];\n\t\t\tresult.async = true;\n\t\t} else {\n\t\t\tresult.url = args[0].url;\n\t\t\tresult.async = (args[0].async || true);\n\t\t\tresult.callback = args[0].callback;\n\t\t\tresult.headers = args[0].headers;\n\t\t}\n\t\tif (method === \"POST\" || \"PUT\") {\n\t\t\tif (args[0].data) {\n\t\t\t\tif (typeof args[0].data !== \"string\") {\n\t\t\t\t\tresult.data = serialize(args[0].data);\n\t\t\t\t} else {\n\t\t\t\t\tresult.data = args[0].data;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.data = \"\";\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tresult.url = args[0];\n\tswitch(method) {\n\t\tcase \"GET\":\n\t\tcase \"DELETE\":\n\t\t\tresult.callback = args[1];\n\t\t\tresult.headers = args[2];\n\t\tbreak;\n\t\tcase \"POST\":\n\t\tcase \"PUT\":\n\t\t\tif (args[1]) {\n\t\t\t\tif (typeof args[1] !== \"string\") {\n\t\t\t\t\tresult.data = serialize(args[1]);\n\t\t\t\t} else {\n\t\t\t\t\tresult.data = args[1];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.data = \"\";\n\t\t\t}\n\t\t\tresult.callback = args[2];\n\t\t\tresult.headers = args[3];\n\t\tbreak;\n\t}\n\treturn result;\n}\n\nmodule.exports = function(gantt) {\n\treturn {\n\n\t\t// if false - dhxr param will added to prevent caching on client side (default),\n\t\t// if true - do not add extra params\n\t\tcache: true,\n\n\t\t// default method for load/loadStruct, post/get allowed\n\t\t// get - since 4.1.1, this should fix 412 error for macos safari\n\t\tmethod: \"get\",\n\n\t\tparse: function(data) {\n\t\t\tif (typeof data !== \"string\") return data;\n\n\t\t\tvar obj;\n\t\t\tdata = data.replace(/^[\\s]+/,\"\");\n\t\t\tif (typeof DOMParser !== \"undefined\" && !env.isIE) { // ff,ie9\n\t\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\n\t\t\t} else if (typeof global.ActiveXObject !== \"undefined\") {\n\t\t\t\tobj = new global.ActiveXObject(\"Microsoft.XMLDOM\");\n\t\t\t\tobj.async = \"false\";\n\t\t\t\tobj.loadXML(data);\n\t\t\t}\n\t\t\treturn obj;\n\t\t},\n\t\txmltop: function(tagname, xhr, obj) {\n\t\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\n\t\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\n\t\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\n\t\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (obj !== -1) gantt.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\n\t\t\treturn document.createElement(\"DIV\");\n\t\t},\n\t\txpath: function(xpathExp, docObj) {\n\t\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\n\t\t\tif (env.isIE) {\n\t\t\t\treturn docObj.selectNodes(xpathExp)||[];\n\t\t\t} else {\n\t\t\t\tvar rows = [];\n\t\t\t\tvar first;\n\t\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\n\n\t\t\t\twhile (true){\n\t\t\t\t\tfirst = col.iterateNext();\n\t\t\t\t\tif(first){\n\t\t\t\t\t\trows.push(first);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn rows;\n\t\t\t}\n\t\t},\n\t\tquery: function(config) {\n\t\t\treturn this._call(\n\t\t\t\t(config.method || \"GET\"),\n\t\t\t\tconfig.url,\n\t\t\t\tconfig.data || \"\",\n\t\t\t\t(config.async || true),\n\t\t\t\tconfig.callback,\n\t\t\t\tconfig.headers\n\t\t\t);\n\t\t},\n\t\tget: function(url, onLoad, headers) {\n\t\t\tvar config = createConfig(\"GET\", arguments);\n\t\t\treturn this.query(config);\n\t\t},\n\t\tgetSync: function(url, headers) {\n\t\t\tvar config = createConfig(\"GET\", arguments);\n\t\t\tconfig.async = false;\n\t\t\treturn this.query(config);\n\t\t},\n\t\tput: function(url, postData, onLoad, headers) {\n\t\t\tvar config = createConfig(\"PUT\", arguments);\n\t\t\treturn this.query(config);\n\t\t},\n\t\tdel: function(url, onLoad, headers) {\n\t\t\t/**\n\t\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\n\t\t\t * A payload within a DELETE request message has no defined semantics;\n\t\t\t * sending a payload body on a DELETE request might cause some existing\n\t\t\t * implementations to reject the request.\n\t\t\t */\n\t\t\tvar config = createConfig(\"DELETE\", arguments);\n\t\t\treturn this.query(config);\n\t\t},\n\t\tpost: function(url, postData, onLoad, headers) {\n\t\t\tif (arguments.length == 1) {\n\t\t\t\tpostData = \"\";\n\t\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\n\t\t\t\tonLoad = postData;\n\t\t\t\tpostData = \"\";\n\t\t\t}\n\t\t\tvar config = createConfig(\"POST\", arguments);\n\t\t\treturn this.query(config);\n\t\t},\n\t\tpostSync: function(url, postData, headers) {\n\t\t\tpostData = (postData === null ? \"\" : String(postData));\n\n\t\t\tvar config = createConfig(\"POST\", arguments);\n\t\t\tconfig.async = false;\n\t\t\treturn this.query(config);\n\t\t},\n\t\t_call: function(method, url, postData, async, onLoad, headers) {\n\t\t\treturn new gantt.Promise(function(resolve, reject) {\n\t\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !env.isIE ? new XMLHttpRequest() : new global.ActiveXObject(\"Microsoft.XMLHTTP\"));\n\t\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\n\n\t\t\t\tif (!!async) {\n\t\t\t\t\tt.onreadystatechange = function() {\n\t\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\n\t\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\n\t\t\t\t\t\t\t\tif (!gantt.callEvent(\"onAjaxError\", [t])) return;\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\n\t\t\t\t\t\t\t\t\tonLoad.apply(global, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresolve(t);\n\t\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\n\t\t\t\t\t\t\t\t\tonLoad = null;\n\t\t\t\t\t\t\t\t\tt = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (method == \"GET\" && !this.cache) {\n\t\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\n\t\t\t\t}\n\n\t\t\t\tt.open(method, url, async);\n\n\t\t\t\tif (headers){\n\t\t\t\t\tfor (var key in headers)\n\t\t\t\t\t\tt.setRequestHeader(key, headers[key]);\n\t\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n\t\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\t\t\t} else if (method == \"GET\") {\n\t\t\t\t\tpostData = null;\n\t\t\t\t}\n\n\t\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\t\tt.send(postData);\n\n\t\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n\t\t\t});\n\t\t},\n\t\turlSeparator: function(str){\n\t\t\tif (str.indexOf(\"?\") != -1)\n\t\t\t\treturn \"&\";\n\t\t\telse\n\t\t\t\treturn \"?\";\n\t\t}\n\t};\n};\n","type DurationUnits = \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\ntype Align = \"left\" | \"center\" | \"right\";\ntype SectionType = \"textarea\"\n\t\t\t\t\t| \"time\"\n\t\t\t\t\t| \"duration\"\n\t\t\t\t\t| \"select\"\n\t\t\t\t\t| \"typeselect\"\n\t\t\t\t\t| \"parent\"\n\t\t\t\t\t| \"template\"\n\t\t\t\t\t| \"checkbox\"\n\t\t\t\t\t| \"radio\"\n\t\t\t\t\t| \"resources\"\n\t\t\t\t\t| \"constraint\";\n\ntype LightboxSection = Array<ILightboxSection\n\t| ILightboxTimeAndDurationSection\n\t| ILightboxInputControl\n\t| ILightboxSelectControl\n\t| ILightboxParentControl\n\t| ILightboxTypeselectControl>;\n\ntype LayoutView = \"grid\"\n\t| \"timeline\"\n\t| \"resizer\"\n\t| \"scrollbar\"\n\t| \"resourceGrid\"\n\t| \"resourceTimeline\";\n\ninterface IColumnItem {\n\tname: string;\n\tlabel?: string;\n\ttree?: boolean;\n\talign?: Align;\n\thide?: boolean;\n\tmax_width?: number;\n\tmin_width?: number;\n\tresize?: boolean;\n\ttemplate?: (obj: any) => string;\n\twidth?: number | \"*\";\n}\n\nexport type TModifierKeys = \"metaKey\" | \"ctrlKey\" | \"altKey\" | \"shiftKey\" | false | undefined;\n\nexport interface IScale {\n\tcss?: () => string;\n\tdate?: string;\n\tstep: number;\n\ttemplate?: (date: Date) => string;\n\tunit: DurationUnits;\n}\n\ninterface ILightboxSection {\n\tname: string;\n\tmap_to: string;\n\ttype: SectionType;\n\theight?: number;\n\tfocus?: boolean;\n}\n\ninterface ILightboxTimeAndDurationSection extends ILightboxSection {\n\treadonly: boolean;\n\tyear_range: number[] | number;\n\tsingle_date: boolean;\n\ttime_format: string;\n}\n\ninterface ILightboxInputControl extends ILightboxSection {\n\tdefault_value?: any;\n\toptions?: Array<{key: string, label: string}>;\n}\n\ninterface ILightboxSelectControl extends ILightboxInputControl {\n\tonchange: () => boolean | undefined;\n}\n\ninterface ILightboxParentControl extends ILightboxSection {\n\tallow_root: boolean;\n\troot_label: string;\n\tsort?: (a: any, b: any) => -1 | 0 | 1;\n\tfilter?: (task: string | number | object) => boolean;\n\ttemplate?: (start: Date, end: Date, ev: object) => string;\n}\n\ninterface ILightboxTypeselectControl extends ILightboxSection {\n\tfilter?: (typeName: string) => boolean;\n}\n\n\ninterface ILayoutScrollbar {\n\tview: \"scrollbar\";\n\tscroll?: \"x\" | \"y\";\n\tid: string;\n\theight?: number;\n\twidth?: number;\n}\n\ninterface ILayoutView {\n\tview: LayoutView;\n\tid?: string;\n\tscrollX?: string;\n\tscrollY?: string;\n\tconfig?: object;\n}\n\ninterface ILayoutGrid extends ILayoutView {\n\tview: \"grid\";\n\tbind?: string;\n}\n\ninterface ILayoutTimeline extends ILayoutView {\n\tview: \"timeline\";\n\tbindLinks?: string;\n\tlayers?: any[];\n}\n\ninterface ILayoutResizer {\n\tview?: undefined;\n\tresizer: boolean;\n\twidth: number;\n}\n\ninterface ILayoutResourceGrid extends ILayoutView {\n\tview: \"resourceGrid\";\n\twidth: number;\n\tgroup: \"string\";\n}\n\ninterface ILayoutResourceTimeline extends ILayoutView {\n\tview: \"resourceTimeline\";\n\twidth: number;\n\tgroup: \"string\";\n}\n\ninterface ILayoutHtml {\n\thtml: string;\n\tcss: string;\n\twidth: number;\n}\n\ntype LayoutRow = ILayoutGrid\n\t| ILayoutTimeline\n\t| ILayoutResizer\n\t| ILayoutResourceGrid\n\t| ILayoutResourceTimeline\n\t| ILayoutHtml\n\t| ILayoutScrollbar\n\t| { cols: LayoutCol[] };\n\ntype LayoutCol = ILayoutGrid\n\t| ILayoutTimeline\n\t| ILayoutResizer\n\t| ILayoutResourceGrid\n\t| ILayoutResourceTimeline\n\t| ILayoutHtml\n\t| ILayoutScrollbar\n\t| { rows: LayoutRow[] };\n\ninterface ILayout {\n\tcss: string;\n\trows?: LayoutRow[];\n\tcols?: LayoutCol[];\n}\n\ntype TCsp = boolean | \"auto\";\n\ninterface IGanttConfig {\n\tlayout: ILayout;\n\tlinks: {\n\t\tfinish_to_start: \"0\";\n\t\tstart_to_start: \"1\";\n\t\tfinish_to_finish: \"2\";\n\t\tstart_to_finish: \"3\";\n\t};\n\ttypes: {\n\t\ttask: string;\n\t\tproject: string;\n\t\tmilestone: string;\n\t};\n\tauto_types: boolean;\n\tduration_unit: DurationUnits;\n\twork_time: boolean;\n\tcorrect_work_time: boolean;\n\tskip_off_time: boolean;\n\tcascade_delete: boolean;\n\tautosize: boolean | string;\n\tautoscroll: boolean;\n\tshow_links: boolean;\n\tshow_task_cells: boolean;\n\tautosize_min_width: number;\n\tautoscroll_speed: number;\n\n\tstatic_background: boolean;\n\tstatic_background_cells: boolean;\n\tbranch_loading: boolean;\n\tbranch_loading_property: string;\n\tshow_loading: boolean;\n\tshow_chart: boolean;\n\tshow_grid: boolean;\n\tmin_duration: number;\n\tdate_format: string; // use instead xml_date\n\txml_date?: string; // deprecated\n\tstart_on_monday: boolean;\n\tserver_utc: boolean;\n\tshow_progress: boolean;\n\tfit_tasks: boolean;\n\tselect_task: boolean;\n\tscroll_on_click: boolean;\n\tsmart_rendering: boolean;\n\tpreserve_scroll: boolean;\n\treadonly: boolean;\n\tcontainer_resize_timeout: number;\n\n\t/*grid */\n\tdate_grid: string;\n\n\tdrag_links: boolean;\n\tdrag_progress: boolean;\n\tdrag_resize: boolean;\n\tdrag_project: boolean;\n\tdrag_move: boolean;\n\tdrag_mode: {\n\t\tresize: \"resize\",\n\t\tprogress: \"progress\",\n\t\tmove: \"move\",\n\t\tignore: \"ignore\"\n\t};\n\tround_dnd_dates: boolean;\n\tlink_wrapper_width: number;\n\troot_id: string | number;\n\n\tautofit: boolean;\n\tcolumns: IColumnItem[];\n\n\t/* scale*/\n\t/* it will be deprecated */\n\tdate_scale?: string;\n\tstep?: number;\n\tscale_unit?: DurationUnits;\n\tsubscales?: IScale[];\n\t/* it will be deprecated end */\n\n\tscales: IScale[];\n\n\tscale_offset_minimal: boolean;\n\n\tinherit_scale_class: boolean;\n\n\n\ttime_step: number;\n\tduration_step: number;\n\n\n\ttask_date: string;\n\ttime_picker: string;\n\ttask_attribute: string;\n\tlink_attribute: string;\n\tlayer_attribute: string;\n\tbuttons_left: string[];\n\t_migrate_buttons: {\n\t\tdhx_save_btn: \"gantt_save_btn\",\n\t\tdhx_cancel_btn: \"gantt_cancel_btn\",\n\t\tdhx_delete_btn: \"gantt_delete_btn\"\n\t};\n\n\tbuttons_right: string[];\n\n\n\tlightbox: {\n\t\tsections?: LightboxSection,\n\t\tproject_sections?: LightboxSection,\n\t\tmilestone_sections?: LightboxSection\n\t};\n\tdrag_lightbox: boolean;\n\tsort: boolean;\n\tdetails_on_create: boolean;\n\tdetails_on_dblclick: boolean;\n\tinitial_scroll: boolean;\n\ttask_scroll_offset: number;\n\n\torder_branch: boolean;\n\torder_branch_free: boolean;\n\n\ttask_height: number | \"full\";\n\tmin_column_width: number;\n\n\t// min width for grid column (when resizing)\n\tmin_grid_column_width: number;\n\t// name of the attribute with column index for resize element\n\tgrid_resizer_column_attribute: string;\n\t// name of the attribute with column index for resize element\n\t// grid_resizer_attribute: string; // usage of this parameter is not found\n\n\t// grid width can be increased after the column has been resized\n\tkeep_grid_width: boolean;\n\n\t// grid width can be adjusted\n\tgrid_resize: boolean;\n\tgrid_elastic_columns: boolean;\n\tshow_tasks_outside_timescale: boolean;\n\tshow_unscheduled: boolean;\n\treadonly_property: string;\n\teditable_property: string;\n\tcalendar_property: string;\n\tresource_calendars: object;\n\tdynamic_resource_calendars: boolean;\n\tinherit_calendar: boolean;\n\ttype_renderers: object;\n\n\topen_tree_initially: boolean;\n\toptimize_render: boolean;\n\tprevent_default_scroll: boolean;\n\tshow_errors: boolean;\n\twai_aria_attributes: boolean;\n\tsmart_scales: boolean;\n\trtl: boolean;\n\tplaceholder_task: boolean;\n\thorizontal_scroll_key: TModifierKeys;\n\tdrag_timeline: {\n\t\tuseKey: TModifierKeys;\n\t\tignore: string;\n\t};\n\tdrag_multiple: boolean;\n\tcsp: TCsp;\n}\n\nmodule.exports = () => {\n\tconst result: IGanttConfig = {\n\t\tlayout: {\n\t\t\tcss: \"gantt_container\",\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tcols: [\n\t\t\t\t\t\t{view: \"grid\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\n\t\t\t\t\t\t{resizer: true, width: 1},\n\t\t\t\t\t\t{view: \"timeline\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\n\t\t\t\t\t\t{view: \"scrollbar\", id: \"scrollVer\"}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{view: \"scrollbar\", id: \"scrollHor\", height: 20}\n\t\t\t]\n\t\t},\n\t\tlinks: {\n\t\t\tfinish_to_start: \"0\",\n\t\t\tstart_to_start: \"1\",\n\t\t\tfinish_to_finish: \"2\",\n\t\t\tstart_to_finish: \"3\"\n\t\t},\n\t\ttypes: {\n\t\t\ttask: \"task\",\n\t\t\tproject: \"project\",\n\t\t\tmilestone: \"milestone\"\n\t\t},\n\t\tauto_types: false,\n\t\tduration_unit: \"day\",\n\t\twork_time: false,\n\t\tcorrect_work_time: false,\n\t\tskip_off_time: false,\n\n\t\tcascade_delete: true,\n\n\t\tautosize: false,\n\t\tautosize_min_width: 0,\n\t\tautoscroll: true,\n\t\tautoscroll_speed: 30,\n\n\t\tshow_links: true,\n\t\tshow_task_cells: true,\n\t\t// replace backgroung of the task area with a canvas img\n\t\tstatic_background: false,\n\t\tstatic_background_cells: true,\n\t\tbranch_loading: false,\n\t\tbranch_loading_property: \"$has_child\",\n\t\tshow_loading: false,\n\t\tshow_chart: true,\n\t\tshow_grid: true,\n\t\tmin_duration: 60 * 60 * 1000,\n\t\tdate_format: \"%d-%m-%Y %H:%i\", // use instead xml_date\n\t\txml_date: undefined, // \"%d-%m-%Y %H:%i\", // deprecated\n\t\tstart_on_monday: true,\n\t\tserver_utc: false,\n\t\tshow_progress: true,\n\t\tfit_tasks: false,\n\t\tselect_task: true,\n\t\tscroll_on_click: true,\n\t\tsmart_rendering: true,\n\t\tpreserve_scroll: true,\n\t\treadonly: false,\n\t\tcontainer_resize_timeout: 20,\n\n\t\t/*grid */\n\t\tdate_grid: \"%Y-%m-%d\",\n\n\t\tdrag_links: true,\n\t\tdrag_progress: true,\n\t\tdrag_resize: true,\n\t\tdrag_project: false,\n\t\tdrag_move: true,\n\t\tdrag_mode: {\n\t\t\tresize: \"resize\",\n\t\t\tprogress: \"progress\",\n\t\t\tmove: \"move\",\n\t\t\tignore: \"ignore\"\n\t\t},\n\t\tround_dnd_dates: true,\n\t\tlink_wrapper_width: 20,\n\t\troot_id: 0,\n\n\t\tautofit: false, // grid column automatic fit grid_width config\n\t\tcolumns: [\n\t\t\t{name: \"text\", tree: true, width: \"*\", resize: true},\n\t\t\t{name: \"start_date\", align: \"center\", resize: true},\n\t\t\t{name: \"duration\", align: \"center\"},\n\t\t\t{name: \"add\", width: 44}\n\t\t],\n\n\t\t/*scale*/\n\n\t\tscale_offset_minimal: true,\n\t\tinherit_scale_class: false,\n\n\t\tscales: [\n\t\t\t{\n\t\t\t\tunit: \"day\",\n\t\t\t\tstep: 1,\n\t\t\t\tdate: \"%d %M\"\n\t\t\t}\n\t\t],\n// \t\tdate_scale: \"%d %M\",\n\n\t\ttime_step: 60,\n\t\tduration_step: 1,\n\t\ttask_date: \"%d %F %Y\",\n\t\ttime_picker: \"%H:%i\",\n\t\ttask_attribute: \"data-task-id\",\n\t\tlink_attribute: \"data-link-id\",\n\t\tlayer_attribute: \"data-layer\",\n\t\tbuttons_left: [\n\t\t\t\"gantt_save_btn\",\n\t\t\t\"gantt_cancel_btn\"\n\t\t],\n\t\t_migrate_buttons: {\n\t\t\tdhx_save_btn: \"gantt_save_btn\",\n\t\t\tdhx_cancel_btn: \"gantt_cancel_btn\",\n\t\t\tdhx_delete_btn: \"gantt_delete_btn\"\n\t\t},\n\t\tbuttons_right: [\n\t\t\t\"gantt_delete_btn\"\n\t\t],\n\t\tlightbox: {\n\t\t\tsections: [\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t\t{name: \"time\", type: \"duration\", map_to: \"auto\"}\n\t\t\t],\n\t\t\tproject_sections: [\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\n\t\t\t\t{name: \"time\", type: \"duration\", readonly: true, map_to: \"auto\"}\n\t\t\t],\n\t\t\tmilestone_sections: [\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\n\t\t\t\t{name: \"time\", type: \"duration\", single_date: true, map_to: \"auto\"}\n\t\t\t]\n\t\t},\n\t\tdrag_lightbox: true,\n\t\tsort: false,\n\t\tdetails_on_create: true,\n\t\tdetails_on_dblclick: true,\n\t\tinitial_scroll: true,\n\t\ttask_scroll_offset: 100,\n\n\t\torder_branch: false,\n\t\torder_branch_free: false,\n\n\t\ttask_height: \"full\",// number px of 'full' for row height\n\t\tmin_column_width: 70,\n\n\t\t// min width for grid column (when resizing)\n\t\tmin_grid_column_width: 70,\n\t\t// name of the attribute with column index for resize element\n\t\tgrid_resizer_column_attribute: \"data-column-index\",\n\t\t// name of the attribute with column index for resize element\n\t\t// grid_resizer_attribute: \"grid_resizer\", // - usage of this parameter is not found in code\n\n\t\t// grid width can be increased after the column has been resized\n\t\tkeep_grid_width: false,\n\n\t\t// grid width can be adjusted\n\t\tgrid_resize: false,\n\t\tgrid_elastic_columns: false,\n\t\tshow_tasks_outside_timescale: false,\n\t\tshow_unscheduled: true,\n\n\t\t//\n\t\treadonly_property: \"readonly\",\n\t\teditable_property: \"editable\",\n\t\tcalendar_property: \"calendar_id\",\n\t\tresource_calendars: {},\n\t\tdynamic_resource_calendars: false,\n\t\tinherit_calendar: false,\n\t\ttype_renderers: {},\n\n\t\topen_tree_initially: false,\n\t\toptimize_render: true,\n\t\tprevent_default_scroll: false,\n\t\tshow_errors: true,\n\t\twai_aria_attributes: true,\n\t\tsmart_scales: true,\n\t\trtl:false,\n\t\tplaceholder_task: false,\n\t\thorizontal_scroll_key: \"shiftKey\",\n\t\tdrag_timeline: {\n\t\t\tuseKey: undefined,\n\t\t\tignore: \".gantt_task_line, .gantt_task_link\"\n\t\t},\n\t\tdrag_multiple: true,\n\t\tcsp: \"auto\"\n\t};\n\treturn result;\n};\n","module.exports = function(){\n\tvar services = {};\n\tfunction register (name, getter){\n\t\tservices[name] = getter;\n\t}\n\n\tfunction getService(name){\n\t\tif(!services[name]){\n\t\t\treturn null;\n\t\t}\n\t\treturn services[name]();\n\t}\n\n\tfunction dropService(name) {\n\t\tif (services[name]) {\n\t\t\tdelete services[name];\n\t\t}\n\t}\n\n\tvar servicesEnum = {};\n\n\treturn {\n\t\tservices: servicesEnum,\n\t\tsetService: register,\n\t\tgetService: getService,\n\t\tdropService: dropService,\n\t\tdestructor: function(){\n\t\t\tfor(var i in services){\n\t\t\t\tif(services[i]){\n\t\t\t\t\tvar service = services[i];\n\t\t\t\t\tif(service && service.destructor){\n\t\t\t\t\t\tservice.destructor();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tservices = null;\n\t\t}\n\t};\n};\n","export default class ExtensionsManager{\n\tprivate _extensions:{[key:string]: GanttPlugin };\n\n\tconstructor(config: {[key:string]: GanttPlugin }){\n\t\tthis._extensions = {};\n\t\tfor(const i in config){\n\t\t\tthis._extensions[i] = config[i];\n\t\t}\n\t}\n\n\taddExtension = (name: string, ext: GanttPlugin) => {\n\t\tthis._extensions[name] = ext;\n\t}\n\n\tgetExtension = (name: string): GanttPlugin => {\n\t\treturn this._extensions[name];\n\t}\n}","module.exports = {\n\tKEY_CODES: {\n\t\tUP: 38,\n\t\tDOWN: 40,\n\t\tLEFT: 37,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tENTER: 13,\n\t\tDELETE: 46,\n\t\tESC: 27,\n\t\tTAB: 9\n\t}\n};","function DHXGantt(){\n\tthis.constants = require(\"../constants\");\n\tthis.version = VERSION;\n\tthis.license = LICENSE;\n\tthis.templates = {};\n\tthis.ext = {};\n\tthis.keys = {\n\t\tedit_save: this.constants.KEY_CODES.ENTER,\n\t\tedit_cancel: this.constants.KEY_CODES.ESC\n\t};\n}\n\nmodule.exports = function(supportedExtensions) {\n\t// use a named constructor to make gantt instance discoverable in heap snapshots\n\tvar gantt = new DHXGantt();\n\n\tvar ExtensionManager = require(\"../ext/extension_manager\").default;\n\tvar extensionManager = new ExtensionManager(supportedExtensions);\n\tgantt.plugins = function(config){\n\t\tfor(var i in config){\n\t\t\tif(config[i]){\n\t\t\t\tvar plugin = extensionManager.getExtension(i);\n\t\t\t\tif(plugin){\n\t\t\t\t\tplugin(gantt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tgantt.$services = require(\"../core/common/services\")();\n\tgantt.config = require(\"../core/common/config\")();\n\tgantt.ajax = require(\"../core/common/ajax\")(gantt);\n\tgantt.date = require(\"../core/common/date\")(gantt);\n\tvar dnd = require(\"../core/common/dnd\")(gantt);\n\tgantt.$services.setService(\"dnd\", function(){return dnd;});\n\n\tvar templatesLoader = require(\"../core/common/templates\")(gantt);\n\tgantt.$services.setService(\"templateLoader\", function () {\n\t\treturn templatesLoader;\n\t});\n\n\trequire(\"../utils/eventable\")(gantt);\n\n\tvar StateService = require(\"../core/common/state\");\n\tvar stateService = new StateService();\n\n\tstateService.registerProvider(\"global\", function () {\n\t\tvar res = {\n\t\t\tmin_date: gantt._min_date,\n\t\t\tmax_date: gantt._max_date,\n\t\t\tselected_task: null\n\t\t};\n\n\t\t// do not throw error if getState called from non-initialized gantt\n\t\tif(gantt.$data && gantt.$data.tasksStore){\n\t\t\tres.selected_task = gantt.$data.tasksStore.getSelectedId();\n\t\t}\n\t\treturn res;\n\t});\n\tgantt.getState = stateService.getState;\n\tgantt.$services.setService(\"state\", function () {\n\t\treturn stateService;\n\t});\n\n\tvar utils = require(\"../utils/utils\");\n\tutils.mixin(gantt, utils);\n\n\tgantt.Promise = require(\"../utils/promise\");\n\tgantt.env = require(\"../utils/env\");\n\n\trequire(\"../core/datastore/datastore_hooks\")(gantt);\n\n\tvar DataProcessor = require(\"../core/dataprocessor\");\n\tgantt.dataProcessor = DataProcessor.DEPRECATED_api;\n\tgantt.createDataProcessor = DataProcessor.createDataProcessor;\n\n\n\trequire(\"../core/plugins\")(gantt);\n\n\trequire(\"../core/dynamic_loading\")(gantt);\n\trequire(\"../core/grid_column_api\")(gantt);\n\trequire(\"../core/tasks\")(gantt);\n\trequire(\"../core/load\")(gantt);\n\trequire(\"../core/worktime/work_time\")(gantt);\n\trequire(\"../core/data\")(gantt);\n\n\trequire(\"../publish_helpers/void_script_second\").default(gantt);\n\n\trequire(\"../core/data_task_types\")(gantt);\n\trequire(\"../core/cached_functions\")(gantt);\n\n\trequire(\"../core/gantt_core\")(gantt);\n\trequire(\"../core/destructor\")(gantt);\n\trequire(\"../publish_helpers/void_script_third\").default(gantt);\n\n\tvar i18n = require(\"../locale\").default();\n\tgantt.i18n = {\n\t\taddLocale: i18n.addLocale,\n\t\tsetLocale: function(locale){\n\t\t\tif(typeof locale === \"string\"){\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\n\t\t\t\tif(!localeObject){\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\n\t\t\t\t}\n\n\t\t\t\tgantt.locale = localeObject;\n\t\t\t}else if(locale){\n\t\t\t\tif(!gantt.locale){\n\t\t\t\t\tgantt.locale = locale;\n\t\t\t\t}else{\n\t\t\t\t\tfor(var i in locale){\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\n\t\t\t\t\t\t\tif(!gantt.locale[i]){\n\t\t\t\t\t\t\t\tgantt.locale[i] = {};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgantt.mixin(gantt.locale[i], locale[i], true);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tgantt.locale[i] = locale[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetLocale: i18n.getLocale\n\t};\n\tgantt.i18n.setLocale(\"en\");\t\n\treturn gantt;\n};","require(\"css/skins/terrace.less\");\n\nvar base_factory = require(\"./make_instance_common\");\n\nmodule.exports = function(supportedExtensions) {\n\tvar gantt = base_factory(supportedExtensions);\n\n\tif(!gantt.env.isNode){\n\t\trequire(\"../core/ui_core\")(gantt);\n\t}\n\n\treturn gantt;\n};","import { IUndo, IUndoCommand, IUndoCommands, IUndoPropAction, IUndoPropCommand, TActionType, TEntityType, TUndoStack, TUndoValue } from \"./types\";\n\nconst MAX_UNDO_STEPS = 10;\n\nexport class Undo implements IUndo {\n\n\tmaxSteps = MAX_UNDO_STEPS;\n\tundoEnabled = true;\n\tredoEnabled = true;\n\taction: IUndoPropAction = {\n\t\tcreate: (commands?: IUndoCommand[]): IUndoCommands => {\n\t\t\treturn { commands: (commands ? commands.slice() : []) };\n\t\t},\n\t\tinvert: (action: IUndoCommands): IUndoCommands => {\n\t\t\tconst gantt = this._gantt;\n\t\t\tconst revert = gantt.copy(action);\n\t\t\tconst commands = this.command;\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\n\t\t\t\tconst command = revert.commands[i] = commands.invert(revert.commands[i]);\n\t\t\t\tif (command.type === commands.type.update || command.type === commands.type.move) {\n\t\t\t\t\t[command.value, command.oldValue] = [command.oldValue, command.value];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn revert as IUndoCommands;\n\t\t}\n\t};\n\tcommand: IUndoPropCommand = {\n\t\t// entities that require different processing for undoing-redoing changes (gantt.config.undo_types)\n\t\tentity: null,\n\n\t\t// types of traced actions (gantt.config.undo_actions)\n\t\ttype: null,\n\n\t\tcreate: (value: TUndoValue, oldValue: TUndoValue, type: TActionType, entity: TEntityType): IUndoCommand => {\n\t\t\tconst gantt = this._gantt;\n\t\t\treturn {\n\t\t\t\tentity,\n\t\t\t\ttype,\n\t\t\t\tvalue: gantt.copy(value),\n\t\t\t\toldValue: gantt.copy(oldValue || value)\n\t\t\t};\n\t\t},\n\t\tinvert: (command: IUndoCommand): IUndoCommand => {\n\t\t\tconst gantt = this._gantt;\n\t\t\tconst revert = gantt.copy(command);\n\t\t\trevert.type = this.command.inverseCommands(command.type);\n\t\t\treturn revert;\n\t\t},\n\t\tinverseCommands: (command: TActionType): TActionType => {\n\t\t\tconst gantt = this._gantt;\n\t\t\tconst types = this.command.type;\n\t\t\tswitch (command) {\n\t\t\t\tcase types.update:\n\t\t\t\t\treturn types.update;\n\t\t\t\tcase types.remove:\n\t\t\t\t\treturn types.add;\n\t\t\t\tcase types.add:\n\t\t\t\t\treturn types.remove;\n\t\t\t\tcase types.move:\n\t\t\t\t\treturn types.move;\n\t\t\t\tdefault:\n\t\t\t\t\tgantt.assert(false, \"Invalid command \"+ command);\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _undoStack = [];\n\tprivate _redoStack = [];\n\tprivate _gantt: any;\n\n\tconstructor(gantt: any){\n\t\tthis._gantt = gantt;\n\t}\n\tgetUndoStack() {\n\t\treturn this._undoStack;\n\t}\n\n\tgetRedoStack() {\n\t\treturn this._redoStack;\n\t}\n\n\tclearUndoStack() {\n\t\tthis._undoStack = [];\n\t}\n\n\tclearRedoStack() {\n\t\tthis._redoStack = [];\n\t}\n\n\tupdateConfigs() {\n\t\tconst gantt = this._gantt;\n\t\tthis.maxSteps = gantt.config.undo_steps || MAX_UNDO_STEPS;\n\t\tthis.command.entity = gantt.config.undo_types;\n\t\tthis.command.type = gantt.config.undo_actions;\n\t\tthis.undoEnabled = !!gantt.config.undo;\n\t\tthis.redoEnabled = !!gantt.config.redo; // GS-873, Redo should work even when the `gantt.config.undo` is disabled.\n\t}\n\n\tundo() {\n\t\tconst gantt = this._gantt;\n\t\tthis.updateConfigs();\n\t\tif (!this.undoEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst action = this._pop(this._undoStack);\n\t\tif (action) {\n\t\t\tthis._reorderCommands(action);\n\t\t}\n\t\tif (gantt.callEvent(\"onBeforeUndo\", [action]) !== false) {\n\t\t\tif (action) {\n\t\t\t\tthis._applyAction(this.action.invert(action));\n\t\t\t\tthis._push(this._redoStack, gantt.copy(action));\n\t\t\t\tgantt.callEvent(\"onAfterUndo\", [action]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tgantt.callEvent(\"onAfterUndo\", [null]);\n\t}\n\n\tredo() {\n\t\tconst gantt = this._gantt;\n\t\tthis.updateConfigs();\n\t\tif (!this.redoEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst action = this._pop(this._redoStack);\n\t\tif (action) {\n\t\t\tthis._reorderCommands(action);\n\t\t}\n\n\t\tif (gantt.callEvent(\"onBeforeRedo\", [action]) !== false) {\n\t\t\tif (action) {\n\t\t\t\tthis._applyAction(action);\n\t\t\t\tthis._push(this._undoStack, gantt.copy(action));\n\t\t\t\tgantt.callEvent(\"onAfterRedo\", [action]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tgantt.callEvent(\"onAfterRedo\", [null]);\n\t}\n\n\t// storeUndo:\n\tlogAction(action: IUndoCommands) {\n\t\tthis._push(this._undoStack, action);\n\t\tthis._redoStack = [];\n\t}\n\n\tprivate _push(stack: TUndoStack, action: IUndoCommands): IUndoCommands {\n\t\tconst gantt = this._gantt;\n\t\tif (!action.commands.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = stack === this._undoStack ? \"onBeforeUndoStack\" : \"onBeforeRedoStack\";\n\t\tif (gantt.callEvent(event, [action]) === false){\n\t\t\treturn;\n\t\t}\n\t\t// commands can be removed from event handler\n\t\tif (!action.commands.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tstack.push(action);\n\t\twhile (stack.length > this.maxSteps) {\n\t\t\tstack.shift();\n\t\t}\n\t\treturn action;\n\t}\n\n\tprivate _pop(stack: TUndoStack): IUndoCommands {\n\t\treturn stack.pop();\n\t}\n\n\tprivate _reorderCommands(action) {\n\t\t// firstly process tasks and only then links\n\t\t// in order to ensure links are added not earlier than their tasks\n\t\t// firstly to 'move' actions and only then updates\n\t\tconst weights = { any: 0, link:1, task:2 };\n\t\tconst actionWeights = { move: 1, any:0 };\n\t\taction.commands.sort(function(a, b) {\n\t\t\tif (a.entity === \"task\" && b.entity === \"task\") {\n\t\t\t\tif (a.type !== b.type) {\n\t\t\t\t\treturn (actionWeights[b.type] || 0) - (actionWeights[a.type] || 0);\n\t\t\t\t} else if (a.type === \"move\" && a.oldValue && b.oldValue && b.oldValue.parent === a.oldValue.parent) {\n\t\t\t\t\treturn a.oldValue.$index - b.oldValue.$index;\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst weightA = weights[a.entity] || weights.any;\n\t\t\t\tconst weightB = weights[b.entity] || weights.any;\n\t\t\t\treturn weightB - weightA;\n\t\t\t}\n\n\t\t});\n\t}\n\n\tprivate _applyAction(action: IUndoCommands) {\n\t\tlet command = null;\n\t\tconst entities = this.command.entity;\n\t\tconst actions = this.command.type;\n\t\tconst gantt = this._gantt;\n\t\tconst methods = {};\n\t\tmethods[entities.task] = {\n\t\t\tadd: \"addTask\",\n\t\t\tget: \"getTask\",\n\t\t\tupdate: \"updateTask\",\n\t\t\tremove: \"deleteTask\",\n\t\t\tmove: \"moveTask\",\n\t\t\tisExists: \"isTaskExists\"\n\t\t};\n\t\tmethods[entities.link] = {\n\t\t\tadd: \"addLink\",\n\t\t\tget: \"getLink\",\n\t\t\tupdate: \"updateLink\",\n\t\t\tremove: \"deleteLink\",\n\t\t\tisExists: \"isLinkExists\"\n\t\t};\n\n\t\tgantt.batchUpdate(function() {\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\n\t\t\t\tcommand = action.commands[i];\n\t\t\t\tconst method = methods[command.entity][command.type];\n\t\t\t\tconst getMethod = methods[command.entity].get;\n\t\t\t\tconst check = methods[command.entity].isExists;\n\n\t\t\t\tif (command.type === actions.add) {\n\t\t\t\t\tgantt[method](command.oldValue, command.oldValue.parent, command.oldValue.$index);\n\t\t\t\t} else if (command.type === actions.remove) {\n\t\t\t\t\tif (gantt[check](command.value.id)) {\n\t\t\t\t\t\tgantt[method](command.value.id);\n\t\t\t\t\t}\n\t\t\t\t} else if (command.type === actions.update) {\n\t\t\t\t\tconst item = gantt[getMethod](command.value.id);\n\t\t\t\t\tfor(const prop in command.value){\n\t\t\t\t\t\tif(!prop.startsWith(\"$\") && !prop.startsWith(\"_\")){\n\t\t\t\t\t\t\titem[prop] = command.value[prop];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tgantt[method](command.value.id);\n\t\t\t\t} else if (command.type === actions.move) {\n\t\t\t\t\tgantt[method](command.value.id, command.value.$branch_index, command.value.parent);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}","import { IInlineEditState, IMonitor, IUndo, IUndoCommand, TActionType, TEntityType, TUndoValue } from \"./types\";\n\nconst noTrack = {\n\tonBeforeUndo: \"onAfterUndo\",\n\tonBeforeRedo: \"onAfterRedo\"\n};\n\nconst batchActions = [\n\t\"onTaskDragStart\",\n\t\"onAfterTaskUpdate\",\n\t\"onAfterTaskDelete\",\n\t\"onBeforeBatchUpdate\"\n];\n\nexport class Monitor implements IMonitor {\n\tprivate _batchAction = null;\n\tprivate _batchMode = false;\n\tprivate _ignore = false;\n\tprivate _ignoreMoveEvents = false;\n\tprivate _initialTasks = {};\n\tprivate _initialLinks = {};\n\tprivate _nestedTasks = {};\n\tprivate _nestedLinks = {};\n\tprivate _timeout;\n\tprivate _gantt: any;\n\tprivate _undo: IUndo;\n\n\tconstructor(undo: IUndo, gantt: any) {\n\t\tthis._undo = undo;\n\t\tthis._gantt = gantt;\n\t\tthis._attachEvents();\n\t}\n\n\tstore(id: TaskID | LinkID, type: TEntityType, overwrite: boolean = false) {\n\t\tif (type === this._gantt.config.undo_types.task) {\n\t\t\treturn this._storeTask(id, overwrite);\n\t\t}\n\t\tif (type === this._gantt.config.undo_types.link) {\n\t\t\treturn this._storeLink(id, overwrite);\n\t\t}\n\t\treturn false;\n\t}\n\tisMoveEventsIgnored() {\n\t\treturn this._ignoreMoveEvents;\n\t}\n\ttoggleIgnoreMoveEvents(newValue?: boolean) {\n\t\tthis._ignoreMoveEvents = newValue || false;\n\t}\n\tstartIgnore() {\n\t\tthis._ignore = true;\n\t}\n\tstopIgnore() {\n\t\tthis._ignore = false;\n\t}\n\tstartBatchAction() {\n\t\t// try catching updates made from event handlers using timeout\n\t\tif (!this._timeout){\n\t\t\tthis._timeout = setTimeout(() => {\n\t\t\t\tthis.stopBatchAction();\n\t\t\t\tthis._timeout = null;\n\t\t\t}, 10);\n\t\t}\n\n\n\t\tif (this._ignore || this._batchMode) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._batchMode = true;\n\t\tthis._batchAction = this._undo.action.create();\n\t}\n\tstopBatchAction() {\n\t\tif (this._ignore) {\n\t\t\treturn;\n\t\t}\n\t\tconst undo = this._undo;\n\t\tif (this._batchAction) {\n\t\t\tundo.logAction(this._batchAction);\n\t\t}\n\t\tthis._batchMode = false;\n\t\tthis._batchAction = null;\n\t}\n\tonTaskAdded(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.add);\n\t\t}\n\t}\n\tonTaskUpdated(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.update);\n\t\t}\n\t}\n\tonTaskMoved(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\t(task as any).$branch_index = this._gantt.getTaskIndex(task.id);\n\t\t\tconst oldValue = this.getInitialTask(task.id);\n\t\t\tif((task as any).$branch_index === oldValue.$branch_index &&\n\t\t\t\tthis._gantt.getParent(task) === this._gantt.getParent(oldValue)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\tthis._storeEntityCommand(\n\t\t\t\ttask,\n\t\t\t\tthis.getInitialTask(task.id),\n\t\t\t\tthis._undo.command.type.move,\n\t\t\t\tthis._undo.command.entity.task\n\t\t\t);\n\t\t}\n\t}\n\tonTaskDeleted(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.remove);\n\t\t\tif (this._nestedTasks[task.id]) {\n\t\t\t\tconst children = this._nestedTasks[task.id];\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tthis._storeTaskCommand(children[i], this._undo.command.type.remove);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._nestedLinks[task.id]) {\n\t\t\t\tconst childrenLinks = this._nestedLinks[task.id];\n\t\t\t\tfor (let i = 0; i < childrenLinks.length; i++) {\n\t\t\t\t\tthis._storeLinkCommand(childrenLinks[i], this._undo.command.type.remove);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tonLinkAdded(link: ILink) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.add);\n\t\t}\n\t}\n\tonLinkUpdated(link: ILink) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.update);\n\t\t}\n\t}\n\tonLinkDeleted(link: ILink) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.remove);\n\t\t}\n\t}\n\tsetNestedTasks(id: TaskID, taskIds: TaskID[]) {\n\t\tconst gantt = this._gantt;\n\t\tlet task = null;\n\t\tconst tasks = [];\n\t\tlet\tlinkIds = this._getLinks(gantt.getTask(id));\n\n\t\tfor (let i = 0; i < taskIds.length; i++) {\n\t\t\ttask = this.setInitialTask(taskIds[i]);\n\t\t\tlinkIds = linkIds.concat(this._getLinks(task));\n\t\t\ttasks.push(task);\n\t\t}\n\n\t\tconst uniqueLinks = {};\n\t\tfor (let i = 0; i < linkIds.length; i++) {\n\t\t\tuniqueLinks[linkIds[i]] = true;\n\t\t}\n\t\tconst links = [];\n\t\tfor (const i in uniqueLinks) {\n\t\t\tlinks.push(this.setInitialLink(i));\n\t\t}\n\t\tthis._nestedTasks[id] = tasks;\n\t\tthis._nestedLinks[id] = links;\n\t}\n\tsetInitialTask(id: TaskID, overwrite?: boolean) {\n\t\tconst gantt = this._gantt;\n\t\tif (overwrite || (!this._initialTasks[id] || !this._batchMode)) {\n\t\t\tconst task = gantt.copy(gantt.getTask(id));\n\t\t\ttask.$index = gantt.getGlobalTaskIndex(id);\n\t\t\ttask.$branch_index = gantt.getTaskIndex(id);\n\t\t\tthis.setInitialTaskObject(id, task);\n\t\t}\n\t\treturn this._initialTasks[id];\n\t}\n\tgetInitialTask(id: TaskID) {\n\t\treturn this._initialTasks[id];\n\t}\n\tclearInitialTasks() {\n\t\tthis._initialTasks = {};\n\t}\n\tsetInitialTaskObject(id: TaskID, object: ITask) {\n\t\tthis._initialTasks[id] = object;\n\t}\n\tsetInitialLink(id: LinkID, overwrite?: boolean) {\n\t\tif (!this._initialLinks[id] || !this._batchMode) {\n\t\t\tthis._initialLinks[id] = this._gantt.copy(this._gantt.getLink(id));\n\t\t}\n\t\treturn this._initialLinks[id];\n\t}\n\tgetInitialLink(id: LinkID) {\n\t\treturn this._initialLinks[id];\n\t}\n\tclearInitialLinks() {\n\t\tthis._initialLinks = {};\n\t}\n\tprivate _attachEvents() {\n\t\tlet deleteCacheCooldown = null;\n\t\tconst gantt = this._gantt;\n\n\t\tconst saveInitialAll = () => {\n\t\t\tif (!deleteCacheCooldown) {\n\t\t\t\tdeleteCacheCooldown = setTimeout(() => {\n\t\t\t\t\tdeleteCacheCooldown = null;\n\t\t\t\t});\n\n\t\t\t\tthis.clearInitialTasks();\n\t\t\t\tgantt.eachTask((task: ITask) => {\n\t\t\t\t\tthis.setInitialTask(task.id);\n\t\t\t\t});\n\n\t\t\t\tthis.clearInitialLinks();\n\t\t\t\tgantt.getLinks().forEach((link: ILink) => {\n\t\t\t\t\tthis.setInitialLink(link.id);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tconst getMoveObjectByTaskId = (id: TaskID) => {\n\t\t\treturn gantt.copy(gantt.getTask(id));\n\t\t};\n\n\t\tfor (const i in noTrack) {\n\t\t\tgantt.attachEvent(i, () => {\n\t\t\t\tthis.startIgnore();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tgantt.attachEvent(noTrack[i], () => {\n\t\t\t\tthis.stopIgnore();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\n\t\tfor (let i = 0; i < batchActions.length; i++) {\n\t\t\tgantt.attachEvent(batchActions[i], () => {\n\t\t\t\tthis.startBatchAction();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\n\t\tgantt.attachEvent(\"onParse\", () => {\n\t\t\tthis._undo.clearUndoStack();\n\t\t\tthis._undo.clearRedoStack();\n\t\t\tsaveInitialAll();\n\t\t});\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", (id: TaskID, task: ITask) => {\n\t\t\tthis.setInitialTask(id, true);\n\t\t\tthis.onTaskAdded(task);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", (id: TaskID, task: ITask) => {\n\t\t\tthis.onTaskUpdated(task);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", (id: TaskID, task: ITask) => {\n\t\t\tthis.onTaskDeleted(task);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterLinkAdd\", (id: LinkID, link: ILink) => {\n\t\t\tthis.setInitialLink(id, true);\n\t\t\tthis.onLinkAdded(link);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterLinkUpdate\", (id: LinkID, link: ILink) => {\n\t\t\tthis.onLinkUpdated(link);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterLinkDelete\", (id: LinkID, link: ILink) => {\n\t\t\tthis.onLinkDeleted(link);\n\t\t});\n\t\tgantt.attachEvent(\"onRowDragEnd\", (id: TaskID, target: TaskID) => {\n\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\n\t\t\tthis.toggleIgnoreMoveEvents();\n\t\t\treturn true;\n\t\t});\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", (id: TaskID) => {\n\t\t\tthis.store(id, gantt.config.undo_types.task);\n\t\t\tconst nested = [];\n\n\t\t\t// remember task indexes in case their being deleted in a loop, so they could be restored in the correct order\n\t\t\tsaveInitialAll();\n\n\t\t\tgantt.eachTask((task: ITask) => {\n\t\t\t\tnested.push(task.id);\n\t\t\t}, id);\n\t\t\tthis.setNestedTasks(id, nested);\n\t\t\treturn true;\n\t\t});\n\t\tconst datastore = gantt.getDatastore(\"task\");\n\n\t\tdatastore.attachEvent(\"onBeforeItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\n\t\t\tif (!this.isMoveEventsIgnored()) {\n\t\t\t\tsaveInitialAll();\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tdatastore.attachEvent(\"onAfterItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\n\t\t\tif (!this.isMoveEventsIgnored()) {\n\t\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onRowDragStart\", (id: TaskID, target: TaskID, e: Event) => {\n\t\t\tthis.toggleIgnoreMoveEvents(true);\n\t\t\tsaveInitialAll();\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onBeforeTaskDrag\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\n\n\t\tgantt.attachEvent(\"onLightbox\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\n\n\t\tgantt.attachEvent(\"onBeforeTaskAutoSchedule\", (task: ITask) => {\n\t\t\tthis.store(task.id, gantt.config.undo_types.task);\n\t\t\treturn true;\n\t\t});\n\n\t\tif (gantt.ext.inlineEditors) {\n\t\t\tgantt.ext.inlineEditors.attachEvent(\"onEditStart\", (state: IInlineEditState) => {\n\t\t\t\tthis.store(state.id, gantt.config.undo_types.task);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _storeCommand(command: IUndoCommand) {\n\t\tconst undo = this._undo;\n\t\tundo.updateConfigs();\n\n\t\tif (!undo.undoEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._batchMode) {\n\t\t\tthis._batchAction.commands.push(command);\n\t\t} else {\n\t\t\tconst action = undo.action.create([command]);\n\t\t\tundo.logAction(action);\n\t\t}\n\t}\n\tprivate _storeEntityCommand(obj: TUndoValue, old: TUndoValue, actionType: TActionType, entityType: TEntityType) {\n\t\tconst undo = this._undo;\n\t\tconst command = undo.command.create(obj, old, actionType, entityType);\n\t\tthis._storeCommand(command);\n\t}\n\tprivate _storeTaskCommand(obj: ITask, type: TActionType) {\n\t\t(obj as any).$branch_index = this._gantt.getTaskIndex(obj.id);\n\t\tthis._storeEntityCommand(obj, this.getInitialTask(obj.id), type, this._undo.command.entity.task);\n\t}\n\tprivate _storeLinkCommand(obj: ILink, type: TActionType) {\n\t\tthis._storeEntityCommand(obj, this.getInitialLink(obj.id), type, this._undo.command.entity.link);\n\t}\n\tprivate _getLinks(task: ITask) {\n\t\treturn task.$source.concat(task.$target);\n\t}\n\tprivate _storeTask(taskId: TaskID, overwrite: boolean = false) {\n\t\tconst gantt = this._gantt;\n\t\tthis.setInitialTask(taskId, overwrite);\n\t\tgantt.eachTask((child: ITask) => {\n\t\t\tthis.setInitialTask(child.id);\n\t\t}, taskId);\n\t\treturn true;\n\t}\n\tprivate _storeLink(linkId: LinkID, overwrite: boolean = false) {\n\t\tthis.setInitialLink(linkId, overwrite);\n\t\treturn true;\n\t}\n}","import { Monitor } from \"./monitor\";\nimport { IMonitor, IUndoCommand, TEntityType, TUndoStack } from \"./types\";\nimport { Undo } from \"./undo\";\n\nexport default function(gantt: any){\n\nconst _undo = new Undo(gantt);\nconst monitor: IMonitor = new Monitor(_undo, gantt);\n\ngantt.config.undo = true;\ngantt.config.redo = true;\n\n/**\n * entities that require different processing for undoing-redoing changes\n * @type {{link: string, task: string}}\n */\ngantt.config.undo_types = {\n\tlink: \"link\",\n\ttask: \"task\"\n};\n\n/**\n * types of traced actions\n * @type {{update: string, remove: string, add: string}}\n */\ngantt.config.undo_actions = {\n\tupdate: \"update\",\n\tremove: \"remove\", // remove item from datastore\n\tadd: \"add\",\n\tmove: \"move\" // move task in grid\n};\n\nif (!gantt.ext) {\n\tgantt.ext = {};\n}\n\ngantt.ext.undo = {\n\tundo: () => _undo.undo(),\n\tredo: () => _undo.redo(),\n\tgetUndoStack: () => _undo.getUndoStack(),\n\tgetRedoStack: () => _undo.getRedoStack(),\n\tclearUndoStack: () => _undo.clearUndoStack(),\n\tclearRedoStack: () => _undo.clearRedoStack(),\n\tsaveState: (id: TaskID | LinkID, type: TEntityType) => monitor.store(id, type, true)\n};\n\ngantt.undo = gantt.ext.undo.undo;\ngantt.redo = gantt.ext.undo.redo;\ngantt.getUndoStack = gantt.ext.undo.getUndoStack;\ngantt.getRedoStack = gantt.ext.undo.getRedoStack;\ngantt.clearUndoStack = gantt.ext.undo.clearUndoStack;\ngantt.clearRedoStack = gantt.ext.undo.clearRedoStack;\n\nfunction updTask(task: ITask, oldId: TaskID, newId: TaskID) {\n\tif (!task) { return; }\n\n\tif (task.id === oldId) {\n\t\ttask.id = newId;\n\t}\n\n\tif (task.parent === oldId) {\n\t\ttask.parent = newId;\n\t}\n}\n\nfunction changeTaskCommandId(command: IUndoCommand, oldId: TaskID, newId: TaskID) {\n\tupdTask(command.value, oldId, newId);\n\tupdTask(command.oldValue, oldId, newId);\n}\n\nfunction updLink(link: ILink, oldTaskId: TaskID, newTaskId: TaskID) {\n\tif (!link) { return; }\n\tif (link.source === oldTaskId) {\n\t\tlink.source = newTaskId;\n\t}\n\tif (link.target === oldTaskId) {\n\t\tlink.target = newTaskId;\n\t}\n}\n\nfunction changeLinkCommandId(command: IUndoCommand, oldId: LinkID, newId: LinkID) {\n\tupdLink(command.value, oldId, newId);\n\tupdLink(command.oldValue, oldId, newId);\n}\n\nfunction updateTasksIds(log: TUndoStack, oldId: TaskID, newId: TaskID) {\n\tconst undo = _undo;\n\n\tfor (let i = 0; i < log.length; i++) {\n\t\tconst entry = log[i];\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\n\t\t\tif (entry.commands[j].entity === undo.command.entity.task) {\n\t\t\t\tchangeTaskCommandId(entry.commands[j], oldId, newId);\n\t\t\t} else if (entry.commands[j].entity === undo.command.entity.link) {\n\t\t\t\tchangeLinkCommandId(entry.commands[j], oldId, newId);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction updateLinksIds(log: TUndoStack, oldId: LinkID, newId: LinkID) {\n\tconst undo = _undo;\n\n\tfor (let i = 0; i < log.length; i++) {\n\t\tconst entry = log[i];\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\n\t\t\tconst command = entry.commands[j];\n\t\t\tif (command.entity === undo.command.entity.link) {\n\t\t\t\tif (command.value && command.value.id === oldId) {\n\t\t\t\t\tcommand.value.id = newId;\n\t\t\t\t}\n\t\t\t\tif (command.oldValue && command.oldValue.id === oldId) {\n\t\t\t\t\tcommand.oldValue.id = newId;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\ngantt.attachEvent(\"onTaskIdChange\", (oldId: TaskID, newId: TaskID) => {\n\tconst undo = _undo;\n\tupdateTasksIds(undo.getUndoStack(), oldId, newId);\n\tupdateTasksIds(undo.getRedoStack(), oldId, newId);\n});\n\ngantt.attachEvent(\"onLinkIdChange\", (oldId: LinkID, newId: LinkID) => {\n\tconst undo = _undo;\n\tupdateLinksIds(undo.getUndoStack(), oldId, newId);\n\tupdateLinksIds(undo.getRedoStack(), oldId, newId);\n});\n\ngantt.attachEvent(\"onGanttReady\", () => {\n\t_undo.updateConfigs();\n});\n\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\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\tprivate _gantt: any;\n\n\tconstructor(gantt: any){\n\t\tthis._gantt = gantt;\n\t}\n\n\tgetNode() : HTMLElement {\n\t\tconst gantt = this._gantt;\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 gantt = this._gantt;\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 (this._isLikeMouseEvent(left)) {\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\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 gantt = this._gantt;\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\t// it is for salesforce, because it proxies event to it own events\n\tprivate _isLikeMouseEvent(event: any): boolean {\n\t\tif (!event || typeof event !== \"object\") {\n\t\t\treturn false;\n\t\t}\n\t\treturn \"clientX\" in event && \"clientY\" in event;\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\t\tconst gantt = this._gantt;\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\tconst containerPos = domHelpers.getNodePosition(container);\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\n\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\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\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 - scrollTop){\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 gantt = this._gantt;\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 domEventsScope from \"../../core/ui/utils/dom_event_scope\";\nimport * as domHelpers from \"../../core/ui/utils/dom_helpers\";\nimport * as helpers from \"../../utils/helpers\";\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\nexport class TooltipManager{\n\ttooltip: Tooltip;\n\tprotected _domEvents: any;\n\tprivate _listeners: object = {};\n\tprivate _gantt: any;\n\tprivate delayShow: any;\n\tprivate delayHide: any;\n\n\tconstructor(gantt: any) {\n\t\tthis.tooltip = new Tooltip(gantt);\n\t\tthis._gantt = gantt;\n\t\tthis._domEvents = domEventsScope();\n\t\tthis._initDelayedFunctions();\n\t}\n\n\tdestructor(): void{\n\t\tthis.tooltip.hide();\n\t\tthis._domEvents.detachAll();\n\t}\n\thideTooltip(): void{\n\t\tthis.delayHide();\n\t}\n\tattach(config: ITrackerTarget): void {\n\t\tlet root = document.body;\n\t\tconst gantt = this._gantt;\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\tconst doOnMouseEnter = () => {\n\t\t\t\twatchableTarget = targetNode;\n\t\t\t\tconfig.onmouseenter(event, targetNode);\n\t\t\t};\n\n\t\t\tif(watchableTarget){\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\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\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\n\t\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(targetNode){\n\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.detach(config.selector);\n\t\tthis._domEvents.attach(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\tthis._domEvents.detach(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\t\tthis._initDelayedFunctions();\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\tthis.delayShow(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\tthis.delayShow(cloneDomEvent(event), html);\n\t\t\t\t}else{\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\t\t\tthis.delayHide();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmouseleave:() => {\n\t\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\t\tthis.delayHide();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate _initDelayedFunctions(){\n\t\tconst gantt = this._gantt;\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\n\t\tif(this.delayShow){\n\t\t\tthis.delayShow.$cancelTimeout();\n\t\t}\n\t\tif(this.delayHide){\n\t\t\tthis.delayHide.$cancelTimeout();\n\t\t}\n\t\tthis.tooltip.hide();\n\n\t\tthis.delayShow = helpers.delay((event: MouseEvent, html: string) => {\n\t\t\tif(gantt.callEvent(\"onBeforeTooltip\", [event]) === false) {\n\t\t\t\tthis.tooltip.hide();\n\t\t\t} else {\n\t\t\t\tthis.tooltip.setContent(html);\n\t\t\t\tthis.tooltip.show(event);\n\t\t\t}\n\t\t}, gantt.config.tooltip_timeout || 1);\n\n\t\tthis.delayHide = helpers.delay(() => {\n\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\tthis.tooltip.hide();\n\t\t}, gantt.config.tooltip_hide_timeout || 1);\n\t}\n\n}","import {TooltipManager} from \"./tooltipManager\";\n\nexport default function(gantt: any){\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\n\n\nconst tooltipManager = new TooltipManager(gantt);\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\ngantt.attachEvent(\"onDestroy\", function() {\n\ttooltipManager.destructor();\n});\n\ngantt.attachEvent(\"onLightbox\", function() {\n\ttooltipManager.hideTooltip();\n});\nconst isLinkCreate = () => {\n\tconst state = gantt.getState();\n\treturn !!state.link_source_id;\n};\ngantt.attachEvent(\"onBeforeTooltip\", function() {\n\tif (isLinkCreate()){\n\t\treturn false;\n\t}\n});\n\ngantt.attachEvent(\"onGanttScroll\", function(){\n\ttooltipManager.hideTooltip();\n});\n\n}","\ninterface IQuickInfoContainer{\n\tparent: HTMLElement;\n\txViewport: HTMLElement;\n\tyViewport: HTMLElement;\n}\n\nexport class QuickInfo {\n\tprivate _quickInfoTask: TaskID;\n\tprivate _quickInfoBoxId: number | string;\n\tprivate _quickInfoBox: HTMLElement;\n\tprivate _quickInfoReadonly: boolean | null;\n\tprivate _container: HTMLElement;\n\tprivate _gantt: any;\n\n\tconstructor(gantt: any) {\n\t\tthis._gantt = gantt;\n\t}\n\n\t// show at coordinates:\n\t// show(x: number, y: number)\n\t// show for a task:\n\t// show(id: TaskID)\n\tshow : {\n\t\t(x: number, y: number) : void;\n\t\t(id: TaskID) : void;\n\t} = (id: TaskID | number, y? : number) : void => {\n\t\tif (y === undefined) {\n\t\t\tthis._showForTask(id);\n\t\t} else {\n\t\t\tthis._showAtCoordinates(id as number, y);\n\t\t}\n\t}\n\n\thide = (forced?: boolean) : any => {\n\t\tconst gantt = this._gantt;\n\t\tconst qi = this._quickInfoBox;\n\t\tthis._quickInfoBoxId = 0;\n\t\tconst taskId = this._quickInfoTask;\n\t\tthis._quickInfoTask = null;\n\n\t\tif (qi && qi.parentNode){\n\n\t\t\tif (gantt.config.quick_info_detached) {\n\t\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\n\t\t\t\treturn qi.parentNode.removeChild(qi);\n\t\t\t}\n\n\t\t\tqi.className += \" gantt_qi_hidden\";\n\t\t\tif (qi.style.right === \"auto\"){\n\t\t\t\tqi.style.left = \"-350px\";\n\t\t\t} else {\n\t\t\t\tqi.style.right = \"-350px\";\n\t\t\t}\n\n\t\t\tif (forced) {\n\t\t\t\tqi.style.left = qi.style.right = \"\";\n\t\t\t\tqi.parentNode.removeChild(qi);\n\t\t\t}\n\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\n\t\t}\n\t}\n\n\tgetNode = (): HTMLElement => {\n\t\tif(this._quickInfoBox) {\n\t\t\treturn this._quickInfoBox;\n\t\t}\n\t\treturn null;\n\t}\n\n\tsetContainer = (container: string|HTMLElement): void => {\n\t\tif(container){\n\t\t\tthis._container = typeof container === \"string\" ? document.getElementById(container) : container;\n\t\t}\n\t}\n\n\tsetContent = (content?: IQuickInfoContent) => {\n\t\tconst gantt = this._gantt;\n\n\t\tconst defaultContent = {\n\t\t\ttaskId: null,\n\t\t\theader: {\n\t\t\t\ttitle: \"\",\n\t\t\t\tdate: \"\"\n\t\t\t},\n\t\t\tcontent: \"\",\n\t\t\tbuttons: gantt.config.quickinfo_buttons\n\t\t};\n\n\t\tif(!content){\n\t\t\tcontent = defaultContent;\n\t\t}\n\n\t\tif(!content.taskId){\n\t\t\tcontent.taskId = defaultContent.taskId;\n\t\t}\n\n\t\tif(!content.header){\n\t\t\tcontent.header = defaultContent.header;\n\t\t}\n\n\t\tif(!content.header.title){\n\t\t\tcontent.header.title = defaultContent.header.title;\n\t\t}\n\t\tif(!content.header.date){\n\t\t\tcontent.header.date = defaultContent.header.date;\n\t\t}\n\t\tif(!content.content){\n\t\t\tcontent.content = defaultContent.content;\n\t\t}\n\t\tif(!content.buttons){\n\t\t\tcontent.buttons = defaultContent.buttons;\n\t\t}\n\n\n\t\tlet qi = this.getNode();\n\t\tif(!qi){\n\t\t\tqi = this._createQuickInfoElement();\n\t\t}\n\n\t\tif(content.taskId){\n\t\t\tthis._quickInfoBoxId = content.taskId;\n\t\t}\n\n\t\tconst titleBox = qi.querySelector(\".gantt_cal_qi_title\") as HTMLElement;\n\t\tconst titleContent = titleBox.querySelector(\".gantt_cal_qi_tcontent\");\n\t\tconst titleDate = titleBox.querySelector(\".gantt_cal_qi_tdate\");\n\t\tconst main = qi.querySelector(\".gantt_cal_qi_content\");\n\t\tconst controls = qi.querySelector(\".gantt_cal_qi_controls\") as HTMLElement;\n\n\t\tgantt._waiAria.quickInfoHeader(qi, [content.header.title, content.header.date].join(\" \"));\n\n\t\ttitleContent.innerHTML = content.header.title;\n\t\ttitleDate.innerHTML = content.header.date;\n\n\t\tif(!content.header.title && !content.header.date){\n\t\t\ttitleBox.style.display = \"none\";\n\t\t}else{\n\t\t\ttitleBox.style.display = \"\";\n\t\t}\n\t\tmain.innerHTML = content.content;\n\n\t\tconst buttons = content.buttons;\n\t\tif(!buttons.length){\n\t\t\tcontrols.style.display = \"none\";\n\t\t}else{\n\t\t\tcontrols.style.display = \"\";\n\t\t}\n\t\tlet html = \"\";\n\t\tfor (let i = 0; i < buttons.length; i++){\n\n\t\t\tconst ariaAttr = gantt._waiAria.quickInfoButtonAttrString(gantt.locale.labels[buttons[i]]);\n\n\t\t\thtml += \"<div class=\\\"gantt_qi_big_icon \"+buttons[i]+\"\\\" title=\\\"\"\n\t\t\t\t+gantt.locale.labels[buttons[i]]+\"\\\" \" + ariaAttr +\"><div class='gantt_menu_icon \" + buttons[i]\n\t\t\t\t+ \"'></div><div>\"+gantt.locale.labels[buttons[i]]+\"</div></div>\";\n\t\t}\n\t\tcontrols.innerHTML = html;\n\n\t\tgantt.eventRemove(qi, \"click\", this._qiButtonClickHandler);\n\t\tgantt.eventRemove(qi, \"keypress\", this._qiKeyPressHandler);\n\n\t\tgantt.event(qi, \"click\", this._qiButtonClickHandler);\n\t\tgantt.event(qi, \"keypress\", this._qiKeyPressHandler);\n\t}\n\n\tprivate _qiButtonClickHandler = (ev) => {\n\t\tev = ev || event;\n\t\tthis._qi_button_click(ev.target || ev.srcElement);\n\t}\n\n\tprivate _qiKeyPressHandler = (e) => {\n\t\te = e || event;\n\t\t// @ts-ignore\n\t\tconst code = e.which||event.keyCode;\n\t\tif (code === 13 || code === 32){\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._qi_button_click(e.target || e.srcElement);\n\t\t\t},1);\n\t\t}\n\t}\n\n\tprivate _showAtCoordinates(x: number, y: number) : void {\n\t\tthis.hide(true);\n\t\tthis._quickInfoBoxId = 0;\n\t\tthis._quickInfoTask = null;\n\t\tif(!this._quickInfoBox){\n\t\t\tthis._createQuickInfoElement();\n\t\t\tthis.setContent();\n\t\t}\n\n\t\tthis._appendAtCoordinates(x, y);\n\t\tthis._gantt.callEvent(\"onQuickInfo\", [null]);\n\t}\n\n\tprivate _showForTask(id: TaskID) : void {\n\t\tconst gantt = this._gantt;\n\t\tif ((\n\t\t\tid === this._quickInfoBoxId &&\n\t\t\tgantt.utils.dom.isChildOf(this._quickInfoBox, document.body)\n\t\t) || !gantt.config.show_quick_info) {\n\t\t\t// not show if the quick info is already displayed for this task, or if it shouldn't be displayed\n\t\t\treturn;\n\t\t}\n\t\tthis.hide(true);\n\t\tconst offset = 6; // offset TASK <> QI-BOX in 'px'\n\t\tconst container = this._getContainer();\n\t\tconst pos = this._get_event_counter_part(id, offset, container.xViewport, container.yViewport);\n\n\t\tif (pos){\n\t\t\tthis._quickInfoBox = this._init_quick_info(id);\n\t\t\tthis._quickInfoTask = id;\n\t\t\tthis._quickInfoBox.className = this._prepare_quick_info_classname(id);\n\n\t\t\tthis._fill_quick_data(id);\n\t\t\tthis._show_quick_info(pos, offset);\n\t\t\tgantt.callEvent(\"onQuickInfo\", [id]);\n\t\t}\n\t}\n\n\tprivate _get_event_counter_part(id: TaskID, offset: number, xViewport: HTMLElement, yViewport: HTMLElement) : any {\n\t\tconst gantt = this._gantt;\n\t\tlet domEv = gantt.getTaskNode(id);\n\t\tif (!domEv) {\n\t\t\tdomEv = gantt.getTaskRowNode(id);\n\t\t\tif (!domEv) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tlet left = 0;\n\t\tconst top = offset + domEv.offsetTop + domEv.offsetHeight;\n\n\t\tlet node = domEv;\n\n\t\tif (gantt.utils.dom.isChildOf(node, xViewport)) {\n\t\t\twhile (node && node !== xViewport){\n\t\t\t\tleft += node.offsetLeft;\n\t\t\t\tnode = node.offsetParent;\n\t\t\t}\n\t\t}\n\n\t\tconst scroll = gantt.getScrollState();\n\n\t\tif(node){\n\t\t\tconst dx = (left + domEv.offsetWidth/2) - scroll.x > (xViewport.offsetWidth/2) ? 1 : 0;\n\t\t\tconst dy = (top + domEv.offsetHeight/2) - scroll.y > (yViewport.offsetHeight/2) ? 1 : 0;\n\n\t\t\treturn { left, top, dx, dy, width:domEv.offsetWidth, height:domEv.offsetHeight };\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate _createQuickInfoElement() : HTMLElement {\n\t\tconst gantt = this._gantt;\n\t\tconst qi = document.createElement(\"div\");\n\t\tqi.className += \"gantt_cal_quick_info\";\n\t\tgantt._waiAria.quickInfoAttr(qi);\n\n\t\t// title\n\t\tconst ariaAttr = gantt._waiAria.quickInfoHeaderAttrString();\n\t\tlet html = \"<div class=\\\"gantt_cal_qi_title\\\" \"+ariaAttr+\">\" +\n\t\t\t\"<div class=\\\"gantt_cal_qi_tcontent\\\"></div><div class=\\\"gantt_cal_qi_tdate\\\"></div>\" +\n\t\t\t\"</div>\" +\n\t\t\t\"<div class=\\\"gantt_cal_qi_content\\\"></div>\";\n\n\t\t// buttons\n\t\thtml += \"<div class=\\\"gantt_cal_qi_controls\\\">\";\n\t\thtml += \"</div>\";\n\n\t\tqi.innerHTML = html;\n\n\n\t\tif (gantt.config.quick_info_detached) {\n\t\t\tconst container = this._getContainer();\n\t\t\tgantt.event(container.parent, \"scroll\", () => { this.hide(); });\n\t\t}\n\n\t\tthis._quickInfoBox = qi;\n\t\treturn qi;\n\t}\n\n\tprivate _init_quick_info(id: TaskID) : HTMLElement {\n\t\tconst gantt = this._gantt;\n\t\tconst task = gantt.getTask(id);\n\t\tif(typeof this._quickInfoReadonly === \"boolean\"){\n\t\t\tif(gantt.isReadonly(task) !== this._quickInfoReadonly){\n\t\t\t\tthis.hide(true);\n\t\t\t\tthis._quickInfoBox = null;\n\t\t\t}\n\t\t}\n\n\t\tthis._quickInfoReadonly = gantt.isReadonly(task);\n\n\t\tif (!this._quickInfoBox){\n\t\t\tthis._quickInfoBox = this._createQuickInfoElement();\n\t\t}\n\n\t\treturn this._quickInfoBox;\n\t}\n\n\tprivate _prepare_quick_info_classname(id: TaskID) : string {\n\t\tconst gantt = this._gantt;\n\t\tconst task = gantt.getTask(id);\n\n\t\tlet css = \"gantt_cal_quick_info\";\n\t\tconst template = gantt.templates.quick_info_class(task.start_date, task.end_date, task);\n\n\t\tif(template){\n\t\t\tcss += \" \" + template;\n\t\t}\n\t\treturn css;\n\t}\n\n\tprivate _fill_quick_data(id: TaskID) : void {\n\t\tconst gantt = this._gantt;\n\t\tconst ev = gantt.getTask(id);\n\n\t\tthis._quickInfoBoxId = id;\n\n\t\tlet allowedButtons = null;\n\t\tif (this._quickInfoReadonly){\n\t\t\tconst buttons = gantt.config.quickinfo_buttons;\n\t\t\tconst isEditor = {icon_delete: true, icon_edit: true};\n\t\t\tfor (let i = 0; i < buttons.length; i++){\n\t\t\t\tif(this._quickInfoReadonly && isEditor[buttons[i]]){\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tallowedButtons.push(buttons[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tallowedButtons = gantt.config.quickinfo_buttons;\n\t\t}\n\n\t\tthis.setContent({\n\t\t\theader: {\n\t\t\t\ttitle: gantt.templates.quick_info_title(ev.start_date, ev.end_date, ev),\n\t\t\t\tdate: gantt.templates.quick_info_date(ev.start_date, ev.end_date, ev)\n\t\t\t},\n\t\t\tcontent: gantt.templates.quick_info_content(ev.start_date, ev.end_date, ev),\n\t\t\tbuttons: allowedButtons\n\t\t});\n\t}\n\n\tprivate _appendAtCoordinates(x: number, y: number): void {\n\t\tconst qi = this._quickInfoBox;\n\t\tconst container = this._getContainer();\n\t\tif (!qi.parentNode ||\n\t\t\tqi.parentNode.nodeName.toLowerCase() === \"#document-fragment\"){ // IE8\n\t\t\tcontainer.parent.appendChild(qi);\n\t\t}\n\n\t\tqi.style.left = x + \"px\";\n\t\tqi.style.top = y + \"px\";\n\t}\n\n\tprivate _show_quick_info(pos: any, offset: number) : void {\n\t\tconst gantt = this._gantt;\n\t\tconst qi = this._quickInfoBox;\n\t\tif (gantt.config.quick_info_detached) {\n\t\t\tconst container = this._getContainer();\n\t\t\tif (!qi.parentNode ||\n\t\t\t\tqi.parentNode.nodeName.toLowerCase() === \"#document-fragment\"){ // IE8\n\t\t\t\tcontainer.parent.appendChild(qi);\n\t\t\t}\n\t\t\tconst width = qi.offsetWidth;\n\t\t\tconst popupHeight = qi.offsetHeight;\n\n\t\t\tconst scrolls = gantt.getScrollState();\n\t\t\tconst xViewport = container.xViewport;\n\t\t\tconst yViewport = container.yViewport;\n\t\t\tconst screenWidth = xViewport.offsetWidth + scrolls.x - width;\n\n\t\t\tconst relativePopupTop = pos.top - scrolls.y;\n\t\t\tconst relativePopupBottom = relativePopupTop + popupHeight;\n\n\t\t\tlet top = pos.top;\n\t\t\tif(relativePopupBottom > yViewport.offsetHeight / 2){\n\t\t\t\ttop = pos.top - (popupHeight + pos.height + 2*offset);\n\t\t\t\tif(top < scrolls.y && relativePopupBottom <= yViewport.offsetHeight){\n\t\t\t\t\ttop = pos.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (top < scrolls.y) {\n\t\t\t\ttop = scrolls.y;\n\t\t\t}\n\n\t\t\tconst x = Math.min(Math.max(scrolls.x, pos.left - pos.dx*(width - pos.width)), screenWidth);\n\t\t\tconst y = top;\n\n\t\t\tthis._appendAtCoordinates(x, y);\n\t\t} else {\n\t\t\tqi.style.top = 20 + \"px\";\n\t\t\tif (pos.dx === 1){\n\t\t\t\tqi.style.right = \"auto\";\n\t\t\t\tqi.style.left = \"-300px\";\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tqi.style.left = \"10px\";\n\t\t\t\t},1);\n\t\t\t} else {\n\t\t\t\tqi.style.left = \"auto\";\n\t\t\t\tqi.style.right = \"-300px\";\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tqi.style.right = \"10px\";\n\t\t\t\t},1);\n\t\t\t}\n\t\t\tqi.className += \" gantt_qi_\"+(pos.dx === 1 ? \"left\" : \"right\");\n\t\t\tgantt.$root.appendChild(qi);\n\t\t}\n\t}\n\n\tprivate _qi_button_click(node: any) : void {\n\t\tconst gantt = this._gantt;\n\t\tconst box = this._quickInfoBox;\n\t\tif (!node || node === box){\n\t\t\treturn;\n\t\t}\n\n\t\tconst mask = node.className;\n\t\tif (mask.indexOf(\"_icon\") !== -1){\n\t\t\tconst id = this._quickInfoBoxId;\n\t\t\tgantt.$click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\n\t\t} else {\n\t\t\tthis._qi_button_click(node.parentNode);\n\t\t}\n\t}\n\n\tprivate _getContainer(): IQuickInfoContainer{\n\t\tconst gantt = this._gantt;\n\t\tlet container = this._container ? this._container : gantt.$task_data;\n\t\tif (container && container.offsetHeight && container.offsetWidth) {\n\t\t\treturn {\n\t\t\t\tparent: container,\n\t\t\t\txViewport: gantt.$task,\n\t\t\t\tyViewport: gantt.$task_data\n\t\t\t};\n\t\t}\n\t\tcontainer = this._container ? this._container : gantt.$grid_data;\n\t\tif (container && container.offsetHeight && container.offsetWidth) {\n\t\t\treturn {\n\t\t\t\tparent: container,\n\t\t\t\txViewport: gantt.$grid,\n\t\t\t\tyViewport: gantt.$grid_data\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tparent: this._container ? this._container : gantt.$layout,\n\t\t\txViewport: gantt.$layout,\n\t\t\tyViewport: gantt.$layout\n\t\t};\n\t}\n}\n","import { QuickInfo } from \"./quickInfo\";\n\nexport default function(gantt: any){\n\nif (!gantt.ext) {\n\tgantt.ext = {};\n}\ngantt.ext.quickInfo = new QuickInfo(gantt);\n\ngantt.config.quickinfo_buttons = [\"icon_delete\",\"icon_edit\"];\ngantt.config.quick_info_detached = true;\ngantt.config.show_quick_info = true;\n\ngantt.templates.quick_info_title = function(start, end, ev){ return ev.text.substr(0,50); };\ngantt.templates.quick_info_content = function(start, end, ev){ return ev.details || ev.text; };\ngantt.templates.quick_info_date = function(start, end, ev){\n\treturn gantt.templates.task_time(start, end, ev);\n};\ngantt.templates.quick_info_class = function(start, end, task){ return \"\"; };\n\ngantt.attachEvent(\"onTaskClick\", function(id){\n\tsetTimeout(function() {\n\t\tgantt.ext.quickInfo.show(id);\n\t}, 0);\n\n\treturn true;\n});\n\nconst events = [\"onViewChange\", \"onLightbox\", \"onBeforeTaskDelete\", \"onBeforeDrag\"];\nconst hidingFunction = function(){\n\tgantt.ext.quickInfo.hide();\n\treturn true;\n};\nfor (let i=0; i<events.length; i++){\n\tgantt.attachEvent(events[i], hidingFunction);\n}\n// GS-957: We don't want to hide QuickInfo when we click on it.\ngantt.attachEvent(\"onEmptyClick\", function(e){\n\tlet hideQuickInfo = true;\n\tconst parent = document.querySelector(\".gantt_cal_quick_info\");\n\tif (parent){\n\t\tconst quickInfoClick = gantt.utils.dom.isChildOf(e.target, parent);\n\t\tif (quickInfoClick){\n\t\t\thideQuickInfo = false;\n\t\t}\n\t}\n\tif (hideQuickInfo){\n\t\thidingFunction();\n\t}\n});\nfunction clearQuickInfo() {\n\tgantt.ext.quickInfo.hide();\n\tgantt.ext.quickInfo._quickInfoBox = null;\n\treturn true;\n}\ngantt.attachEvent(\"onGanttReady\", clearQuickInfo);\ngantt.attachEvent(\"onDestroy\", clearQuickInfo);\n\ngantt.event(window, \"keydown\", function(e){\n\tif (e.keyCode === 27){\n\t\tgantt.ext.quickInfo.hide();\n\t}\n});\n\n}","module.exports = function(gantt){\n\ngantt.config.multiselect = true;\ngantt.config.multiselect_one_level = false;\n\ngantt._multiselect = {\n\t_selected: {},\n\t_one_level: false,\n\t_active: true,\n\t_first_selected_when_shift: null,\n\tgetDefaultSelected: function() {\n\t\tvar selected = this.getSelected();\n\t\treturn selected.length ? selected[selected.length - 1] : null;\n\t},\n\tsetFirstSelected: function(id) {\n\t\tthis._first_selected_when_shift = id;\n\t},\n\tgetFirstSelected: function() {\n\t\treturn this._first_selected_when_shift;\n\t},\n\tisActive: function() {\n\t\tthis.updateState();\n\t\treturn this._active;\n\t},\n\tupdateState: function() {\n\t\tthis._one_level = gantt.config.multiselect_one_level;\n\t\tvar active = this._active;\n\t\tthis._active = gantt.config.select_task;\n\t\tif (this._active != active) {\n\t\t\tthis.reset();\n\t\t}\n\t},\n\treset: function () {\n\t\tthis._selected = {};\n\t},\n\tsetLastSelected: function (id) {\n\t\tgantt.$data.tasksStore.silent(function(){\n\t\t\tvar store = gantt.$data.tasksStore;\n\t\t\tif (id)\n\t\t\t\tstore.select(id+\"\");\n\t\t\telse\n\t\t\t\tstore.unselect(null);\n\t\t});\n\t},\n\tgetLastSelected: function () {\n\t\tvar last = gantt.$data.tasksStore.getSelectedId();\n\t\tif (last && gantt.isTaskExists(last))\n\t\t\treturn last;\n\t\treturn null;\n\t},\n\tselect: function (id, e) {\n\t\tif (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, true, e]) && gantt.callEvent(\"onBeforeTaskSelected\", [id])) {\n\t\t\tthis._selected[id] = true;\n\t\t\tthis.setLastSelected(id);\n\t\t\tthis.afterSelect(id);\n\t\t\tgantt.callEvent(\"onTaskMultiSelect\", [id, true, e]);\n\t\t\tgantt.callEvent(\"onTaskSelected\", [id]);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\ttoggle: function (id, e) {\n\t\tif (this._selected[id]) {\n\t\t\tthis.unselect(id, e);\n\t\t} else {\n\t\t\tthis.select(id, e);\n\t\t}\n\t},\n\tunselect: function (id, e) {\n\t\tif (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, false, e])) {\n\t\t\tthis._selected[id] = false;\n\t\t\tif (this.getLastSelected() == id)\n\t\t\t\tthis.setLastSelected(this.getDefaultSelected());\n\t\t\tthis.afterSelect(id);\n\t\t\tgantt.callEvent(\"onTaskMultiSelect\", [id, false, e]);\n\t\t\tgantt.callEvent(\"onTaskUnselected\", [id]);\n\t\t}\n\t},\n\tisSelected: function (id) {\n\t\treturn !!(gantt.isTaskExists(id) && this._selected[id]);\n\t},\n\tgetSelected: function () {\n\t\tvar res = [];\n\t\tfor (var i in this._selected) {\n\t\t\tif (this._selected[i] && gantt.isTaskExists(i)) {\n\t\t\t\tres.push(i);\n\t\t\t} else {\n\t\t\t\tthis._selected[i] = false;\n\t\t\t}\n\t\t}\n\t\tres.sort(function(a, b) {\n\t\t\treturn gantt.getGlobalTaskIndex(a) > gantt.getGlobalTaskIndex(b) ? 1 : -1;\n\t\t});\n\t\treturn res;\n\t},\n\tforSelected: function (callback) {\n\t\tvar selected = this.getSelected();\n\t\tfor (var i = 0; i < selected.length; i++) {\n\t\t\tcallback(selected[i]);\n\t\t}\n\t},\n\tisSameLevel: function(id) {\n\t\tif (!this._one_level)\n\t\t\treturn true;\n\t\tvar last = this.getLastSelected();\n\t\tif (!last)\n\t\t\treturn true;\n\t\tif (!(gantt.isTaskExists(last) && gantt.isTaskExists(id)))\n\t\t\treturn true;\n\t\treturn !!(gantt.calculateTaskLevel(gantt.getTask(last)) == gantt.calculateTaskLevel(gantt.getTask(id)));\n\t},\n\tafterSelect: function(id) {\n\t\tif (gantt.isTaskExists(id)){\n\t\t\t// FIXME: quick workaround to prevent re-filtering inside refresh on multiselect\n\t\t\tgantt.getDatastore(\"task\")._quick_refresh = true;\n\t\t\tgantt.getDatastore(\"link\")._quick_refresh = true;\n\t\t\tgantt.refreshTask(id);\n\t\t\tgantt.getDatastore(\"task\")._quick_refresh = false;\n\t\t\tgantt.getDatastore(\"link\")._quick_refresh = false;\n\t\t}\n\t},\n\tdoSelection: function(e) {\n\t\tif (!this.isActive())\n\t\t\treturn false;\n\n\t\t// deny selection when click on 'expand' or 'collapse' icons\n\t\tif (gantt._is_icon_open_click(e))\n\t\t\treturn false;\n\n\t\tvar target_ev = gantt.locate(e);\n\t\tif (!target_ev)\n\t\t\treturn false;\n\n\t\tif (!gantt.callEvent(\"onBeforeMultiSelect\", [e]))\n\t\t\treturn false;\n\n\t\tvar selected = this.getSelected();\n\t\tvar defaultLast = this.getFirstSelected();\n\t\tvar isLast = false;\n\t\tvar last = this.getLastSelected();\n\t\tvar multiSelect = gantt.config.multiselect;\n\n\n\t\tvar singleSelection = (function (){\n\t\t\tthis.setFirstSelected(target_ev);\n\n\t\t\tif (!this.isSelected(target_ev)) {\n\t\t\t\tthis.select(target_ev, e);\n\t\t\t}\n\t\t\tselected = this.getSelected();\n\t\t\tfor (var i = 0; i < selected.length; i++) {\n\t\t\t\tif (selected[i] !== target_ev) {\n\t\t\t\t\tthis.unselect(selected[i], e);\n\t\t\t\t}\n\t\t\t}\n\t\t}).bind(this);\n\n\t\tvar blockSelection = (function(){\n\t\t\tif (!last)\n\t\t\t\tlast = target_ev;\n\t\t\telse if (target_ev) {\n\t\t\t\tvar first_indx = gantt.getGlobalTaskIndex(this.getFirstSelected());\n\t\t\t\tvar target_indx = gantt.getGlobalTaskIndex(target_ev);\n\t\t\t\tvar last_indx = gantt.getGlobalTaskIndex(last);\n\n\t\t\t\t// clear prev selection\n\t\t\t\tvar tmp = last;\n\t\t\t\twhile (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n\t\t\t\t\tthis.unselect(tmp, e);\n\t\t\t\t\ttmp = (first_indx > last_indx) ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n\t\t\t\t}\n\t\t\t\ttmp = target_ev;\n\t\t\t\twhile (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n\t\t\t\t\tif (this.select(tmp, e) && !isLast) {\n\t\t\t\t\t\tisLast = true;\n\t\t\t\t\t\tdefaultLast = tmp;\n\t\t\t\t\t}\n\t\t\t\t\ttmp = (first_indx > target_indx) ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n\t\t\t\t}\n\t\t\t}\n\t\t}).bind(this);\n\n\n\t\tif (multiSelect && (e.ctrlKey || e.metaKey)) {\n\t\t\tif (!this.isSelected(target_ev))\n\t\t\t\tthis.setFirstSelected(target_ev);\n\n\t\t\tif (target_ev) {\n\t\t\t\tthis.toggle(target_ev, e);\n\t\t\t}\n\t\t}\n\n\t\telse if (multiSelect && e.shiftKey) {\n\t\t\tif (!gantt.isTaskExists(this.getFirstSelected()) || this.getFirstSelected() === null) {\n\t\t\t\tthis.setFirstSelected(target_ev);\n\t\t\t}\n\n\t\t\tif (selected.length) { // select a group of tasks\n\t\t\t\tblockSelection();\n\t\t\t}\n\t\t\telse { // select a task when no task is selected and Shift is pressed\n\t\t\t\tsingleSelection();\n\t\t\t}\n\t\t}\n\t\t\n\t\telse { // no key press or no multiple selection on the mouse click\n\t\t\tsingleSelection();\n\t\t}\n\n\n\t\tif (this.isSelected(target_ev)) {\n\t\t\tthis.setLastSelected(target_ev);\n\t\t} else if (defaultLast) {\n\t\t\tif (target_ev == last)\n\t\t\t\tthis.setLastSelected(e.shiftKey ? defaultLast : this.getDefaultSelected());\n\t\t} else {\n\t\t\tthis.setLastSelected(null);\n\t\t}\n\n\t\tif (!this.getSelected().length)\n\t\t\tthis.setLastSelected(null);\n\n\t\tif (!this.getLastSelected() || !this.isSelected(this.getFirstSelected()))\n\t\t\tthis.setFirstSelected(this.getLastSelected());\n\n\t\treturn true;\n\t}\n};\n\n(function(){\n\tvar old_selectTask = gantt.selectTask;\n\tgantt.selectTask = function(id) {\n\t\tif (!id)\n\t\t\treturn false;\n\t\tvar multiselect = gantt._multiselect;\n\t\tvar res = id;\n\t\tif (multiselect.isActive()) {\n\t\t\tif (multiselect.select(id, null)) {\n\t\t\t\tmultiselect.setLastSelected(id);\n\t\t\t}\n\t\t\tmultiselect.setFirstSelected(multiselect.getLastSelected());\n\t\t} else {\n\t\t\tres = old_selectTask.call(this, id);\n\t\t}\n\t\treturn res;\n\t};\n\n\tvar old_unselectTask = gantt.unselectTask;\n\tgantt.unselectTask = function(id) {\n\t\tvar multiselect = gantt._multiselect;\n\t\tvar isActive = multiselect.isActive();\n\t\tid = id || multiselect.getLastSelected();\n\t\tif(id && isActive) {\n\t\t\tmultiselect.unselect(id, null);\n\t\t\tif (id == multiselect.getLastSelected())\n\t\t\t\tmultiselect.setLastSelected(null);\n\t\t\tgantt.refreshTask(id);\n\t\t\tmultiselect.setFirstSelected(multiselect.getLastSelected());\n\t\t}\n\t\tvar res = id;\n\t\tif (!isActive)\n\t\t\tres = old_unselectTask.call(this, id);\n\t\treturn res;\n\t};\n\n\tgantt.toggleTaskSelection = function(id) {\n\t\tvar multiselect = gantt._multiselect;\n\t\tif (id && multiselect.isActive()) {\n\t\t\tmultiselect.toggle(id);\n\t\t\tmultiselect.setFirstSelected(multiselect.getLastSelected());\n\t\t}\n\t};\n\tgantt.getSelectedTasks = function() {\n\t\tvar multiselect = gantt._multiselect;\n\t\tmultiselect.isActive();\n\t\treturn multiselect.getSelected();\n\t};\n\tgantt.eachSelectedTask = function(callback){\n\t\treturn this._multiselect.forSelected(callback);\n\t};\n\tgantt.isSelectedTask = function(id){\n\t\treturn this._multiselect.isSelected(id);\n\t};\n\tgantt.getLastSelectedTask = function(){\n\t\treturn this._multiselect.getLastSelected();\n\t};\n\tgantt.attachEvent(\"onGanttReady\", function(){\n\t\tvar old_isSelected = gantt.$data.tasksStore.isSelected;\n\t\tgantt.$data.tasksStore.isSelected = function(id){\n\t\t\tif (gantt._multiselect.isActive()) {\n\t\t\t\treturn gantt._multiselect.isSelected(id);\n\t\t\t}\n\t\t\treturn old_isSelected.call(this, id);\n\t\t};\n\t});\n})();\n\ngantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n\tvar multiselect = gantt._multiselect;\n\tif (!multiselect.isActive())\n\t\treturn true;\n\tif (gantt.isSelectedTask(id)) {\n\t\tmultiselect.unselect(id, null);\n\t\tmultiselect.select(new_id, null);\n\t}\n});\n\ngantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n\tvar multiselect = gantt._multiselect;\n\tif (!multiselect.isActive())\n\t\treturn true;\n\n\tif (multiselect._selected[id]) {\n\t\tmultiselect.unselect(id, null);\n\t\tmultiselect._selected[id] = false;\n\t\tmultiselect.setLastSelected(multiselect.getDefaultSelected());\n\t}\n\n\tmultiselect.forSelected(function (task_id) {\n\t\tif (!gantt.isTaskExists(task_id))\n\t\t\tmultiselect.unselect(task_id, null);\n\t});\n});\n\ngantt.attachEvent(\"onBeforeTaskMultiSelect\", function(id, state, e){\n\tvar multiselect = gantt._multiselect;\n\tif (state && multiselect.isActive()) {\n\t\tif (multiselect._one_level) {\n\t\t\treturn multiselect.isSameLevel(id);\n\t\t}\n\t}\n\treturn true;\n});\n\ngantt.attachEvent(\"onTaskClick\", function(id, e) {\n\tif (gantt._multiselect.doSelection(e))\n\t\tgantt.callEvent(\"onMultiSelect\", [e]);\n\treturn true;\n});\n\n};","\nmodule.exports = function(gantt){\n\nif(!gantt._markers) {\n\tgantt._markers = gantt.createDatastore({\n\t\tname: \"marker\",\n\t\tinitItem: function (marker) {\n\t\t\tmarker.id = marker.id || gantt.uid();\n\t\t\treturn marker;\n\t\t}\n\t});\n}\n\ngantt.config.show_markers = true;\n\nfunction render_marker(marker){\n\tif(!gantt.config.show_markers)\n\t\treturn false;\n\n\tif(!marker.start_date)\n\t\treturn false;\n\n\tvar state = gantt.getState();\n\tif(+marker.start_date > +state.max_date)\n\t\treturn;\n\tif((!marker.end_date || +marker.end_date < +state.min_date) && +marker.start_date < +state.min_date)\n\t\treturn;\n\n\tvar div = document.createElement(\"div\");\n\n\tdiv.setAttribute(\"data-marker-id\", marker.id);\n\n\tvar css = \"gantt_marker\";\n\tif(gantt.templates.marker_class)\n\t\tcss += \" \" + gantt.templates.marker_class(marker);\n\n\tif(marker.css){\n\t\tcss += \" \" + marker.css;\n\t}\n\n\tif(marker.title){\n\t\tdiv.title = marker.title;\n\t}\n\tdiv.className = css;\n\n\tvar start = gantt.posFromDate(marker.start_date);\n\tdiv.style.left = start + \"px\";\n\tdiv.style.height = Math.max(gantt.getRowTop(gantt.getVisibleTaskCount()), 0) + \"px\";\n\tif(marker.end_date){\n\t\tvar end = gantt.posFromDate(marker.end_date);\n\t\tdiv.style.width = Math.max((end - start), 0) + \"px\";\n\n\t}\n\n\tif(marker.text){\n\t\tdiv.innerHTML = \"<div class='gantt_marker_content' >\" + marker.text + \"</div>\";\n\t}\n\n\treturn div;\n}\n\nfunction initMarkerArea(){\n\tif(!gantt.$task_data)\n\t\treturn;\n\n\tvar markerArea = document.createElement(\"div\");\n\tmarkerArea.className = \"gantt_marker_area\";\n\tgantt.$task_data.appendChild(markerArea);\n\tgantt.$marker_area = markerArea;\n}\n\ngantt.attachEvent(\"onBeforeGanttRender\", function(){\n\tif(!gantt.$marker_area)\n\t\tinitMarkerArea();\n});\n\ngantt.attachEvent(\"onDataRender\", function(){\n\tif(!gantt.$marker_area){\n\t\tinitMarkerArea();\n\t\tgantt.renderMarkers();\n\t}\n});\n\ngantt.attachEvent(\"onGanttReady\", function(){\n\tinitMarkerArea();\n\n\tvar layers = gantt.$services.getService(\"layers\");\n\tvar markerRenderer = layers.createDataRender({\n\t\tname: \"marker\",\n\t\tdefaultContainer: function(){ return gantt.$marker_area;}\n\t});\n\tmarkerRenderer.addLayer(render_marker);\n});\n\ngantt.getMarker = function(id){\n\tif(!this._markers) return null;\n\n\treturn this._markers.getItem(id);\n};\n\ngantt.addMarker = function(marker){\n\treturn this._markers.addItem(marker);\n};\n\ngantt.deleteMarker = function(id){\n\tif(!this._markers.exists(id))\n\t\treturn false;\n\n\tthis._markers.removeItem(id);\n\treturn true;\n};\ngantt.updateMarker = function(id){\n\tthis._markers.refresh(id);\n};\n\ngantt._getMarkers = function(){\n\treturn this._markers.getItems();\n};\n\ngantt.renderMarkers = function () {\n\tthis._markers.refresh();\n};\n\n};","module.exports = function(gantt) {\n\n\tgantt.$keyboardNavigation.dispatcher = {\n\t\tisActive: false,\n\t\tactiveNode: null,\n\t\tglobalNode: new gantt.$keyboardNavigation.GanttNode(),\n\n\t\tenable: function () {\n\t\t\tthis.isActive = true;\n\t\t\tthis.setActiveNode(this.getActiveNode());\n\t\t},\n\n\t\tdisable: function () {\n\t\t\tthis.isActive = false;\n\t\t},\n\n\t\tisEnabled: function () {\n\t\t\treturn !!this.isActive;\n\t\t},\n\n\t\tgetDefaultNode: function () {\n\t\t\tvar node;\n\t\t\tif (gantt.config.keyboard_navigation_cells) {\n\t\t\t\tnode = new gantt.$keyboardNavigation.TaskCell();\n\t\t\t} else {\n\t\t\t\tnode = new gantt.$keyboardNavigation.TaskRow();\n\t\t\t}\n\n\t\t\tif (!node.isValid()) {\n\t\t\t\tnode = node.fallback();\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\n\t\tsetDefaultNode: function () {\n\t\t\tthis.setActiveNode(this.getDefaultNode());\n\t\t},\n\n\t\tgetActiveNode: function () {\n\t\t\tvar node = this.activeNode;\n\t\t\tif (node && !node.isValid()) {\n\t\t\t\tnode = node.fallback();\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\n\t\tfromDomElement: function(e){\n\t\t\tvar inputs = [\n\t\t\t\tgantt.$keyboardNavigation.TaskRow,\n\t\t\t\tgantt.$keyboardNavigation.TaskCell,\n\t\t\t\tgantt.$keyboardNavigation.HeaderCell\n\t\t\t];\n\t\t\tfor(var i = 0; i < inputs.length; i++){\n\t\t\t\tif(inputs[i].prototype.fromDomElement){\n\t\t\t\t\tvar node = inputs[i].prototype.fromDomElement(e);\n\t\t\t\t\tif(node) return node;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\t\tfocusGlobalNode: function () {\n\t\t\tthis.blurNode(this.globalNode);\n\t\t\tthis.focusNode(this.globalNode);\n\t\t},\n\n\t\tsetActiveNode: function (el) {\n\t\t\t//console.trace()\n\t\t\tvar focusChanged = true;\n\t\t\tif (this.activeNode) {\n\t\t\t\tif (this.activeNode.compareTo(el)) {\n\t\t\t\t\tfocusChanged = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.isEnabled()) {\n\t\t\t\tif(focusChanged)\n\t\t\t\t\tthis.blurNode(this.activeNode);\n\n\t\t\t\tthis.activeNode = el;\n\t\t\t\tthis.focusNode(this.activeNode, !focusChanged);\n\t\t\t}\n\t\t},\n\n\t\tfocusNode: function (el, keptFocus) {\n\t\t\tif (el && el.focus) {\n\t\t\t\tel.focus(keptFocus);\n\t\t\t}\n\t\t},\n\t\tblurNode: function (el) {\n\t\t\tif (el && el.blur) {\n\t\t\t\tel.blur();\n\t\t\t}\n\t\t},\n\n\t\tkeyDownHandler: function (e) {\n\n\t\t\tif (gantt.$keyboardNavigation.isModal())\n\t\t\t\treturn;\n\n\t\t\tif (!this.isEnabled())\n\t\t\t\treturn;\n\n\t\t\tif(e.defaultPrevented){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar ganttNode = this.globalNode;\n\n\t\t\tvar command = gantt.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\n\n\t\t\tvar activeElement = this.getActiveNode();\n\t\t\tvar eventFacade = gantt.$keyboardNavigation.facade;\n\t\t\tif(eventFacade.callEvent(\"onKeyDown\", [command, e]) === false){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!activeElement) {\n\t\t\t\tthis.setDefaultNode();\n\t\t\t} else if (activeElement.findHandler(command)) {\n\t\t\t\tactiveElement.doAction(command, e);\n\t\t\t} else if (ganttNode.findHandler(command)) {\n\t\t\t\tganttNode.doAction(command, e);\n\t\t\t}\n\n\t\t},\n\t\t_timeout: null,\n\t\tawaitsFocus: function(){\n\t\t\treturn this._timeout !== null;\n\t\t},\n\t\tdelay: function(callback, delay){\n\n\t\t\tclearTimeout(this._timeout);\n\t\t\tthis._timeout = setTimeout(gantt.bind(function(){\n\t\t\t\tthis._timeout = null;\n\t\t\t\tcallback();\n\t\t\t}, this) , delay || 1);\n\n\t\t},\n\t\tclearDelay: function(){\n\t\t\tclearTimeout(this._timeout);\n\t\t}\n\t};\n\n};","module.exports = function(gantt) {\n\n\t(function () {\n\t\tvar modalsStack = [];\n\n\t\tfunction isModal() {\n\t\t\treturn !!modalsStack.length;\n\t\t}\n\n\t\tfunction afterPopup(box) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tif (!isModal()){\n\t\t\t\t\tif(!gantt.$destroyed){\n\t\t\t\t\t\tgantt.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 1);\n\t\t}\n\n\t\tfunction startModal(box) {\n\t\t\tgantt.eventRemove(box, \"keydown\", trapFocus);\n\t\t\tgantt.event(box, \"keydown\", trapFocus);\n\t\t\tmodalsStack.push(box);\n\t\t\t//gantt.$keyboardNavigation.dispatcher.disable();\n\t\t}\n\n\t\tfunction endModal() {\n\t\t\tvar box = modalsStack.pop();\n\t\t\tif (box) {\n\t\t\t\tgantt.eventRemove(box, \"keydown\", trapFocus);\n\t\t\t}\n\t\t\tafterPopup(box);\n\n\t\t}\n\n\n\t\tfunction isTopModal(box) {\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\n\t\t}\n\n\t\tfunction trapFocus(event) {\n\t\t\tvar target = event.currentTarget;\n\t\t\tif (!isTopModal(target)) return;\n\n\t\t\tgantt.$keyboardNavigation.trapFocus(target, event);\n\t\t}\n\n\t\tfunction traceLightbox() {\n\t\t\tstartModal(gantt.getLightbox());\n\t\t}\n\n\t\tgantt.attachEvent(\"onLightbox\", traceLightbox);\n\t\tgantt.attachEvent(\"onAfterLightbox\", endModal);\n\t\tgantt.attachEvent(\"onLightboxChange\", function () {\n\t\t\tendModal();\n\t\t\ttraceLightbox();\n\t\t});\n\n\n\t\tgantt.attachEvent(\"onAfterQuickInfo\", function () {\n\t\t\tafterPopup();\n\t\t});\n\n\t\tgantt.attachEvent(\"onMessagePopup\", function (box) {\n\t\t\tsaveFocus();\n\t\t\tstartModal(box);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterMessagePopup\", function () {\n\t\t\tendModal();\n\t\t\trestoreFocus();\n\t\t});\n\n\t\tvar focusElement = null;\n\n\t\tfunction saveFocus() {\n\t\t\tfocusElement = document.activeElement;\n\t\t}\n\n\t\tfunction restoreFocus() {\n\t\t\tsetTimeout(function () {\n\t\t\t\tif (focusElement) {\n\t\t\t\t\tfocusElement.focus();\n\t\t\t\t\tfocusElement = null;\n\t\t\t\t}\n\t\t\t}, 1);\n\t\t}\n\n\t\tgantt.$keyboardNavigation.isModal = isModal;\n\n\n\t})();\n\n};","module.exports = function(gantt) {\n\tvar domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n\tgantt.$keyboardNavigation.TaskCell = function (taskId, index) {\n\t\tif (!taskId) {\n\t\t\tvar rootLevel = gantt.getChildren(gantt.config.root_id);\n\t\t\tif (rootLevel[0]) {\n\t\t\t\ttaskId = rootLevel[0];\n\t\t\t}\n\t\t}\n\t\tthis.taskId = taskId;\n\t\tthis.columnIndex = index || 0;\n\t\t// provided task may not exist, in this case node will be detectes as invalid\n\t\tif (gantt.isTaskExists(this.taskId)) {\n\t\t\tthis.index = gantt.getTaskIndex(this.taskId);\n\t\t}\n\t};\n\n\tgantt.$keyboardNavigation.TaskCell.prototype = gantt._compose(\n\t\tgantt.$keyboardNavigation.TaskRow,\n\t\t{\n\t\t\t_handlers: null,\n\t\t\tisValid: function () {\n\n\t\t\t\treturn gantt.$keyboardNavigation.TaskRow.prototype.isValid.call(this) && !!gantt.getGridColumns()[this.columnIndex];\n\t\t\t},\n\t\t\tfallback: function () {\n\n\t\t\t\tvar node = gantt.$keyboardNavigation.TaskRow.prototype.fallback.call(this);\n\t\t\t\tvar result = node;\n\t\t\t\tif (node instanceof gantt.$keyboardNavigation.TaskRow) {\n\t\t\t\t\tvar visibleColumns = gantt.getGridColumns();\n\t\t\t\t\tvar index = this.columnIndex;\n\t\t\t\t\twhile (index >= 0) {\n\t\t\t\t\t\tif (visibleColumns[index])\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t}\n\t\t\t\t\tif (visibleColumns[index]) {\n\t\t\t\t\t\tresult = new gantt.$keyboardNavigation.TaskCell(node.taskId, index);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\n\t\t\tfromDomElement: function(el){\n\t\t\t\tif(!gantt.config.keyboard_navigation_cells){\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tvar taskId = gantt.locate(el);\n\t\t\t\tif(gantt.isTaskExists(taskId)){\n\t\t\t\t\tvar index = 0;\n\t\t\t\t\tvar cellElement = domHelpers.locateAttribute(el, \"data-column-index\");\n\n\t\t\t\t\tif(cellElement){\n\t\t\t\t\t\tindex = cellElement.getAttribute(\"data-column-index\")*1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn new gantt.$keyboardNavigation.TaskCell(taskId, index);\n\t\t\t\t}else{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetNode: function () {\n\t\t\t\tif (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n\t\t\t\t\tif (gantt.config.show_grid) {\n\t\t\t\t\t\tvar row = gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n\t\t\t\t\t\tif(!row)\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\treturn row.querySelector(\"[data-column-index='\"+this.columnIndex+\"']\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn gantt.getTaskNode(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tkeys: {\n\t\t\t\t\"up\": function () {\n\n\t\t\t\t\tvar nextElement = null;\n\t\t\t\t\tvar prevTask = gantt.getPrev(this.taskId);\n\t\t\t\t\tif (!prevTask) {\n\t\t\t\t\t\tnextElement = new gantt.$keyboardNavigation.HeaderCell(this.columnIndex);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextElement = new gantt.$keyboardNavigation.TaskCell(prevTask, this.columnIndex);\n\t\t\t\t\t}\n\t\t\t\t\tthis.moveTo(nextElement);\n\t\t\t\t},\n\t\t\t\t\"down\": function () {\n\t\t\t\t\tvar nextTask = gantt.getNext(this.taskId);\n\t\t\t\t\tif (nextTask) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(nextTask, this.columnIndex));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"left\": function () {\n\t\t\t\t\tif (this.columnIndex > 0) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex - 1));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"right\": function () {\n\t\t\t\t\tvar columns = gantt.getGridColumns();\n\t\t\t\t\tif (this.columnIndex < columns.length - 1) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex + 1));\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t\"end\": function () {\n\t\t\t\t\tvar columns = gantt.getGridColumns();\n\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, columns.length - 1));\n\t\t\t\t},\n\t\t\t\t\"home\": function () {\n\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, 0));\n\t\t\t\t},\n\t\t\t\t\"pagedown\": function () {\n\t\t\t\t\tif (gantt.getVisibleTaskCount()) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id, this.columnIndex));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"pageup\": function () {\n\t\t\t\t\tif (gantt.getVisibleTaskCount()) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(0).id, this.columnIndex));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t);\n\n\n\tgantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n\tgantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskCell.prototype.keys);\n\n};","module.exports = function(gantt) {\n\n\tgantt.$keyboardNavigation.TaskRow = function (taskId) {\n\t\tif (!taskId) {\n\t\t\tvar rootLevel = gantt.getChildren(gantt.config.root_id);\n\t\t\tif (rootLevel[0]) {\n\t\t\t\ttaskId = rootLevel[0];\n\t\t\t}\n\t\t}\n\t\tthis.taskId = taskId;\n\t\tif (gantt.isTaskExists(this.taskId)) {\n\t\t\tthis.index = gantt.getTaskIndex(this.taskId);\n\t\t}\n\t};\n\n\tgantt.$keyboardNavigation.TaskRow.prototype = gantt._compose(\n\t\tgantt.$keyboardNavigation.KeyNavNode,\n\t\t{\n\t\t\t_handlers: null,\n\t\t\tisValid: function () {\n\t\t\t\treturn gantt.isTaskExists(this.taskId) && (gantt.getTaskIndex(this.taskId) > -1);\n\t\t\t},\n\t\t\tfallback: function () {\n\t\t\t\tif (!gantt.getVisibleTaskCount()) {\n\t\t\t\t\tvar header = new gantt.$keyboardNavigation.HeaderCell();\n\t\t\t\t\tif (!header.isValid()) return null;\n\t\t\t\t\telse return header;\n\t\t\t\t} else {\n\n\t\t\t\t\tvar nextIndex = -1;\n\t\t\t\t\tif (gantt.getTaskByIndex(this.index - 1)) {\n\t\t\t\t\t\tnextIndex = this.index - 1;\n\t\t\t\t\t} else if (gantt.getTaskByIndex(this.index + 1)) {\n\t\t\t\t\t\tnextIndex = this.index + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar index = this.index;\n\t\t\t\t\t\twhile (index >= 0) {\n\t\t\t\t\t\t\tif (gantt.getTaskByIndex(index)) {\n\t\t\t\t\t\t\t\tnextIndex = index;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tindex--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif (nextIndex > -1) {\n\t\t\t\t\t\treturn new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(nextIndex).id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tfromDomElement: function(el){\n\t\t\t\tif(gantt.config.keyboard_navigation_cells){\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tvar taskId = gantt.locate(el);\n\t\t\t\tif(gantt.isTaskExists(taskId)){\n\t\t\t\t\treturn new gantt.$keyboardNavigation.TaskRow(taskId);\n\t\t\t\t}else{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetNode: function () {\n\t\t\t\tif (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n\t\t\t\t\tif (gantt.config.show_grid) {\n\t\t\t\t\t\treturn gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn gantt.getTaskNode(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tfocus: function (keptFocus) {\n\t\t\t\tif(!keptFocus) {\n\t\t\t\t\tvar pos = gantt.getTaskPosition(gantt.getTask(this.taskId));\n\t\t\t\t\tvar height = gantt.config.row_height;\n\t\t\t\t\tvar scroll = gantt.getScrollState();\n\n\t\t\t\t\tvar viewWidth;\n\t\t\t\t\tif(gantt.$task){\n\t\t\t\t\t\tviewWidth = gantt.$task.offsetWidth;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tviewWidth = scroll.inner_width;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar viewHeight;\n\t\t\t\t\tif(gantt.$grid_data || gantt.$task_data){\n\t\t\t\t\t\tviewHeight = (gantt.$grid_data || gantt.$task_data).offsetHeight;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tviewHeight = scroll.inner_height;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (pos.top < scroll.y || pos.top + height > (scroll.y + viewHeight)) {\n\n\t\t\t\t\t\tgantt.scrollTo(null, pos.top - height * 5);\n\n\t\t\t\t\t} else if (gantt.config.scroll_on_click && gantt.config.show_chart && (pos.left < scroll.x || pos.left > (scroll.x + viewWidth))) {\n\t\t\t\t\t\tgantt.scrollTo(pos.left - gantt.config.task_scroll_offset);\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgantt.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this, [keptFocus]);\n\t\t\t},\n\n\t\t\tkeys: {\n\t\t\t\t\"pagedown\": function () {\n\t\t\t\t\tif (gantt.getVisibleTaskCount()) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"pageup\": function () {\n\t\t\t\t\tif (gantt.getVisibleTaskCount()) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(0).id));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"up\": function () {\n\t\t\t\t\tvar nextElement = null;\n\t\t\t\t\tvar prevTask = gantt.getPrev(this.taskId);\n\t\t\t\t\tif (!prevTask) {\n\t\t\t\t\t\tnextElement = new gantt.$keyboardNavigation.HeaderCell();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextElement = new gantt.$keyboardNavigation.TaskRow(prevTask);\n\t\t\t\t\t}\n\t\t\t\t\tthis.moveTo(nextElement);\n\t\t\t\t},\n\t\t\t\t\"down\": function () {\n\t\t\t\t\tvar nextTask = gantt.getNext(this.taskId);\n\t\t\t\t\tif (nextTask) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskRow(nextTask));\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t\"shift+down\": function(){\n\t\t\t\t\tif(gantt.hasChild(this.taskId) && !gantt.getTask(this.taskId).$open){\n\t\t\t\t\t\tgantt.open(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"shift+up\": function(){\n\t\t\t\t\tif(gantt.hasChild(this.taskId) && gantt.getTask(this.taskId).$open){\n\t\t\t\t\t\tgantt.close(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"shift+right\": function() {\n\t\t\t\t\tif (gantt.isReadonly(this)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar prevId = gantt.getPrevSibling(this.taskId);\n\t\t\t\t\tif(gantt.isTaskExists(prevId) && !gantt.isChildOf(this.taskId, prevId)){\n\t\t\t\t\t\tvar parent = gantt.getTask(prevId);\n\t\t\t\t\t\tparent.$open = true;\n\t\t\t\t\t\tvar result = gantt.moveTask(this.taskId, -1, prevId);\n\t\t\t\t\t\tif(result !== false)\n\t\t\t\t\t\t\tgantt.updateTask(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"shift+left\": function() {\n\t\t\t\t\tif (gantt.isReadonly(this)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar parent = gantt.getParent(this.taskId);\n\t\t\t\t\tif(gantt.isTaskExists(parent)){\n\t\t\t\t\t\tvar result = gantt.moveTask(this.taskId, gantt.getTaskIndex(parent) + 1, gantt.getParent(parent));\n\t\t\t\t\t\tif(result !== false)\n\t\t\t\t\t\t\tgantt.updateTask(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// select\n\t\t\t\t\"space\": function (e) {\n\t\t\t\t\tif (!gantt.isSelectedTask(this.taskId)) {\n\t\t\t\t\t\tgantt.selectTask(this.taskId);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgantt.unselectTask(this.taskId);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// collapse\n\t\t\t\t\"ctrl+left\": function (e) {\n\t\t\t\t\tgantt.close(this.taskId);\n\t\t\t\t},\n\t\t\t\t// expand\n\t\t\t\t\"ctrl+right\": function (e) {\n\t\t\t\t\tgantt.open(this.taskId);\n\t\t\t\t},\n\n\t\t\t\t// delete task\n\t\t\t\t\"delete\": function (e) {\n\t\t\t\t\tif (gantt.isReadonly(this)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tgantt.$click.buttons[\"delete\"](this.taskId);\n\t\t\t\t},\n\n\t\t\t\t// open lightbox\n\t\t\t\t\"enter\": function () {\n\t\t\t\t\tif (gantt.isReadonly(this)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tgantt.showLightbox(this.taskId);\n\t\t\t\t},\n\n\t\t\t\t// add subtask\n\t\t\t\t\"ctrl+enter\": function () {\n\t\t\t\t\tif (gantt.isReadonly(this)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tgantt.createTask({}, this.taskId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t);\n\tgantt.$keyboardNavigation.TaskRow.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n\n};","module.exports = function(gantt) {\n\tvar domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n\tgantt.$keyboardNavigation.HeaderCell = function (index) {\n\t\tthis.index = index || 0;\n\t};\n\n\tgantt.$keyboardNavigation.HeaderCell.prototype = gantt._compose(\n\t\tgantt.$keyboardNavigation.KeyNavNode,\n\t\t{\n\t\t\t_handlers: null,\n\n\t\t\tisValid: function () {\n\t\t\t\tif (!gantt.config.show_grid) {\n\t\t\t\t\tif (gantt.getVisibleTaskCount())\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn !!gantt.getGridColumns()[this.index] || !gantt.getVisibleTaskCount();\n\t\t\t},\n\t\t\tfallback: function () {\n\t\t\t\tif (!gantt.config.show_grid) {\n\t\t\t\t\tif (gantt.getVisibleTaskCount()) {\n\t\t\t\t\t\treturn new gantt.$keyboardNavigation.TaskRow();\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tvar visibleColumns = gantt.getGridColumns();\n\t\t\t\tvar index = this.index;\n\t\t\t\twhile (index >= 0) {\n\t\t\t\t\tif (visibleColumns[index])\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\tif (visibleColumns[index]) {\n\t\t\t\t\treturn new gantt.$keyboardNavigation.HeaderCell(index);\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tfromDomElement: function(el){\n\t\t\t\tvar cellElement = domHelpers.locateClassName(el, \"gantt_grid_head_cell\");\n\t\t\t\tif(cellElement){\n\t\t\t\t\tvar index = 0;\n\t\t\t\t\twhile(cellElement && cellElement.previousSibling){\n\t\t\t\t\t\tcellElement = cellElement.previousSibling;\n\t\t\t\t\t\tindex += 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn new gantt.$keyboardNavigation.HeaderCell(index);\n\t\t\t\t}else{\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetNode: function () {\n\t\t\t\tvar cells = gantt.$grid_scale.childNodes;\n\t\t\t\treturn cells[this.index];\n\t\t\t},\n\n\n\t\t\tkeys: {\n\n\t\t\t\t\"left\": function () {\n\t\t\t\t\tif (this.index > 0) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index - 1));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"right\": function () {\n\t\t\t\t\tvar columns = gantt.getGridColumns();\n\t\t\t\t\tif (this.index < columns.length - 1) {\n\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index + 1));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"down\": function () {\n\t\t\t\t\tvar taskRow;\n\t\t\t\t\tvar rootLevel = gantt.getChildren(gantt.config.root_id);\n\t\t\t\t\tif (rootLevel[0]) {\n\t\t\t\t\t\ttaskRow = rootLevel[0];\n\t\t\t\t\t}\n\t\t\t\t\tif (taskRow) {\n\t\t\t\t\t\tif (gantt.config.keyboard_navigation_cells) {\n\t\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskCell(taskRow, this.index));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.TaskRow(taskRow));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t\"end\": function () {\n\t\t\t\t\tvar columns = gantt.getGridColumns();\n\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.HeaderCell(columns.length - 1));\n\t\t\t\t},\n\t\t\t\t\"home\": function () {\n\t\t\t\t\tthis.moveTo(new gantt.$keyboardNavigation.HeaderCell(0));\n\t\t\t\t},\n\n\n\t\t\t\t// press header button\n\t\t\t\t\"enter, space\": function () {\n\t\t\t\t\tvar node = document.activeElement;\n\t\t\t\t\tnode.click();\n\t\t\t\t},\n\n\t\t\t\t// add new task\n\t\t\t\t\"ctrl+enter\": function () {\n\t\t\t\t\tif (gantt.isReadonly(this)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tgantt.createTask({}, this.taskId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t);\n\n\tgantt.$keyboardNavigation.HeaderCell.prototype.bindAll(gantt.$keyboardNavigation.HeaderCell.prototype.keys);\n\n};","module.exports = function(gantt) {\n\n\tgantt.$keyboardNavigation.KeyNavNode = function () {\n\t};\n\n\tgantt.$keyboardNavigation.KeyNavNode.prototype = gantt._compose(\n\t\tgantt.$keyboardNavigation.EventHandler,\n\t\t{\n\t\t\tisValid: function () {\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tfallback: function () {\n\t\t\t\treturn null;\n\t\t\t},\n\n\t\t\tmoveTo: function (element) {\n\t\t\t\tgantt.$keyboardNavigation.dispatcher.setActiveNode(element);\n\t\t\t},\n\n\t\t\tcompareTo: function (b) {\n\t\t\t\t// good enough comparison of two random objects\n\t\t\t\tif (!b) return false;\n\t\t\t\tfor (var i in this) {\n\t\t\t\t\tif (!!this[i] != !!b[i]) return false;\n\n\t\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\n\t\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\n\t\t\t\t\tif (canStringifyThat != canStringifyThis) return false;\n\t\t\t\t\tif (!(canStringifyThat && canStringifyThis)) {\n\t\t\t\t\t\tif (b[i] != this[i]) return false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (b[i].toString() != this[i].toString())\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\tgetNode: function () {\n\t\t\t},\n\t\t\tfocus: function () {\n\t\t\t\tvar node = this.getNode();\n\t\t\t\tif(!node)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar eventFacade = gantt.$keyboardNavigation.facade;\n\n\t\t\t\tif(eventFacade.callEvent(\"onBeforeFocus\", [node]) === false){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (node) {\n\t\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\n\t\t\t\t\tif(!node.$eventAttached){\n\t\t\t\t\t\tnode.$eventAttached = true;\n\t\t\t\t\t\tgantt.event(node, \"focus\",function(e){\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}, false);\n\t\t\t\t\t}\n\t\t\t\t\t//node.className += \" gantt_focused\";\n\t\t\t\t\tif (node.focus) node.focus();\n\n\t\t\t\t\teventFacade.callEvent(\"onFocus\", [this.getNode()]);\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tblur: function () {\n\t\t\t\tvar node = this.getNode();\n\t\t\t\tif (node) {\n\t\t\t\t\tvar eventFacade = gantt.$keyboardNavigation.facade;\n\t\t\t\t\teventFacade.callEvent(\"onBlur\", [node]);\n\t\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\n\t\t\t\t\t//node.className = (node.className || \"\").replace(/ ?gantt_focused/g, \"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t);\n\n};","module.exports = function(gantt) {\n\n\tgantt.$keyboardNavigation.GanttNode = function () {\n\t};\n\n\tgantt.$keyboardNavigation.GanttNode.prototype = gantt._compose(\n\t\tgantt.$keyboardNavigation.EventHandler,\n\t\t{\n\n\t\t\tfocus: function () {\n\t\t\t\tgantt.focus();\n\t\t\t},\n\n\t\t\tblur: function () {\n\n\t\t\t},\n\n\t\t\tisEnabled: function () {\n\t\t\t\treturn gantt.$container.hasAttribute(\"tabindex\");\n\t\t\t},\n\n\t\t\tscrollHorizontal: function scrollHorizontal(dir) {\n\t\t\t\tvar date = gantt.dateFromPos(gantt.getScrollState().x);\n\t\t\t\tvar scale = gantt.getScale();\n\t\t\t\tvar step = dir < 0 ? -scale.step : scale.step;\n\t\t\t\tdate = gantt.date.add(date, step, scale.unit);\n\t\t\t\tgantt.scrollTo(gantt.posFromDate(date));\n\t\t\t},\n\n\t\t\tscrollVertical: function scrollVertical(dir) {\n\t\t\t\tvar top = gantt.getScrollState().y;\n\t\t\t\tvar step = gantt.config.row_height;\n\t\t\t\tgantt.scrollTo(null, top + (dir < 0 ? -1 : 1) * step);\n\t\t\t},\n\n\t\t\tkeys: {\n\t\t\t\t\"alt+left\": function (e) {\n\t\t\t\t\tthis.scrollHorizontal(-1);\n\t\t\t\t},\n\t\t\t\t\"alt+right\": function (e) {\n\t\t\t\t\tthis.scrollHorizontal(1);\n\t\t\t\t},\n\t\t\t\t\"alt+up\": function (e) {\n\t\t\t\t\tthis.scrollVertical(-1);\n\t\t\t\t},\n\t\t\t\t\"alt+down\": function (e) {\n\t\t\t\t\tthis.scrollVertical(1);\n\t\t\t\t},\n\n\t\t\t\t// undo\n\t\t\t\t\"ctrl+z\": function () {\n\t\t\t\t\tif (gantt.undo) gantt.undo();\n\t\t\t\t},\n\n\t\t\t\t// redo\n\t\t\t\t\"ctrl+r\": function () {\n\t\t\t\t\tif (gantt.redo) gantt.redo();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t);\n\n\tgantt.$keyboardNavigation.GanttNode.prototype.bindAll(gantt.$keyboardNavigation.GanttNode.prototype.keys);\n\n};","module.exports = function(gantt) {\n\n\t(function () {\n\t\tvar domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\t\tgantt.$keyboardNavigation.getFocusableNodes = domHelpers.getFocusableNodes;\n\n\t\tgantt.$keyboardNavigation.trapFocus = function trapFocus(root, e) {\n\t\t\tif (e.keyCode != 9) return false;\n\n\t\t\tvar focusable = gantt.$keyboardNavigation.getFocusableNodes(root);\n\t\t\tvar currentFocus = document.activeElement;\n\t\t\tvar currentIndex = -1;\n\t\t\tfor (var i = 0; i < focusable.length; i++) {\n\t\t\t\tif (focusable[i] == currentFocus) {\n\t\t\t\t\tcurrentIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (e.shiftKey) {\n\t\t\t\t// back tab\n\t\t\t\tif (currentIndex <= 0) {\n\t\t\t\t\t// go to the last element if we focused on the first\n\t\t\t\t\tvar lastItem = focusable[focusable.length - 1];\n\t\t\t\t\tif (lastItem) {\n\t\t\t\t\t\tlastItem.focus();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// forward tab\n\t\t\t\tif (currentIndex >= focusable.length - 1) {\n\t\t\t\t\t// forward tab from last element should go back to the first element\n\t\t\t\t\tvar firstItem = focusable[0];\n\t\t\t\t\tif (firstItem) {\n\t\t\t\t\t\tfirstItem.focus();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\t})();\n\n};","module.exports = function(gantt) {\n\n\tgantt.$keyboardNavigation.EventHandler = {\n\t\t_handlers: null,\n\t\tfindHandler: function (command) {\n\t\t\tif (!this._handlers) this._handlers = {};\n\t\t\tvar shortcuts = gantt.$keyboardNavigation.shortcuts;\n\t\t\tvar hash = shortcuts.getHash(command);\n\n\t\t\treturn this._handlers[hash];\n\t\t},\n\n\t\tdoAction: function (command, e) {\n\t\t\tvar handler = this.findHandler(command);\n\t\t\tif (handler) {\n\t\t\t\tvar eventFacade = gantt.$keyboardNavigation.facade;\n\n\t\t\t\tif(eventFacade.callEvent(\"onBeforeAction\", [command, e]) === false){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandler.call(this, e);\n\n\t\t\t\tif (e.preventDefault) e.preventDefault();\n\t\t\t\telse e.returnValue = false;\n\n\t\t\t}\n\t\t},\n\t\tbind: function (shortcut, handler) {\n\t\t\tif (!this._handlers) this._handlers = {};\n\n\t\t\tvar shortcuts = gantt.$keyboardNavigation.shortcuts;\n\n\t\t\tvar commands = shortcuts.parse(shortcut);\n\t\t\tfor (var i = 0; i < commands.length; i++) {\n\t\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\n\t\t\t}\n\t\t},\n\t\tunbind: function (shortcut) {\n\t\t\tvar shortcuts = gantt.$keyboardNavigation.shortcuts;\n\n\t\t\tvar commands = shortcuts.parse(shortcut);\n\t\t\tfor (var i = 0; i < commands.length; i++) {\n\t\t\t\tif (this._handlers[shortcuts.getHash(commands[i])]) {\n\t\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tbindAll: function (map) {\n\t\t\tfor (var i in map) {\n\t\t\t\tthis.bind(i, map[i]);\n\t\t\t}\n\t\t},\n\t\tinitKeys: function () {\n\t\t\tif (!this._handlers)\n\t\t\t\tthis._handlers = {};\n\t\t\tif (this.keys) {\n\t\t\t\tthis.bindAll(this.keys);\n\t\t\t}\n\t\t}\n\t};\n\n};","module.exports = function(gantt) {\n\n\tgantt.$keyboardNavigation.shortcuts = {\n\t\tcreateCommand: function () {\n\t\t\treturn {\n\t\t\t\tmodifiers: {\n\t\t\t\t\t\"shift\": false,\n\t\t\t\t\t\"alt\": false,\n\t\t\t\t\t\"ctrl\": false,\n\t\t\t\t\t\"meta\": false\n\t\t\t\t},\n\t\t\t\tkeyCode: null\n\t\t\t};\n\t\t},\n\t\tparse: function (shortcut) {\n\t\t\tvar commands = [];\n\n\t\t\tvar expr = this.getExpressions(this.trim(shortcut));\n\t\t\tfor (var i = 0; i < expr.length; i++) {\n\t\t\t\tvar words = this.getWords(expr[i]);\n\n\t\t\t\tvar command = this.createCommand();\n\n\t\t\t\tfor (var j = 0; j < words.length; j++) {\n\t\t\t\t\tif (this.commandKeys[words[j]]) {\n\t\t\t\t\t\tcommand.modifiers[words[j]] = true;\n\t\t\t\t\t} else if (this.specialKeys[words[j]]) {\n\t\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcommands.push(command);\n\t\t\t}\n\t\t\treturn commands;\n\t\t},\n\n\t\tgetCommandFromEvent: function (domEvent) {\n\t\t\tvar command = this.createCommand();\n\t\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\n\t\t\tcommand.modifiers.alt = !!domEvent.altKey;\n\t\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\n\t\t\tcommand.modifiers.meta = !!domEvent.metaKey;\n\t\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\n\n\t\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\n\t\t\t\t// numpad keys 96-105 -> 48-57\n\t\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\n\t\t\t}\n\n\t\t\tvar printableKey = String.fromCharCode(command.keyCode);\n\t\t\tif (printableKey) {\n\t\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\n\t\t\t}\n\t\t\treturn command;\n\t\t},\n\n\t\tgetHashFromEvent: function (domEvent) {\n\t\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\n\t\t},\n\n\t\tgetHash: function (command) {\n\t\t\tvar parts = [];\n\t\t\tfor (var i in command.modifiers) {\n\t\t\t\tif (command.modifiers[i]) {\n\t\t\t\t\tparts.push(i);\n\t\t\t\t}\n\t\t\t}\n\t\t\tparts.push(command.keyCode);\n\n\t\t\treturn parts.join(this.junctionChar);\n\t\t},\n\n\t\tgetExpressions: function (shortcut) {\n\t\t\treturn shortcut.split(this.junctionChar);\n\t\t},\n\t\tgetWords: function (term) {\n\t\t\treturn term.split(this.combinationChar);\n\t\t},\n\t\ttrim: function (shortcut) {\n\t\t\treturn shortcut.replace(/\\s/g, \"\");\n\t\t},\n\t\tjunctionChar: \",\",\n\t\tcombinationChar: \"+\",\n\t\tcommandKeys: {\n\t\t\t\"shift\": 16,\n\t\t\t\"alt\": 18,\n\t\t\t\"ctrl\": 17,\n\t\t\t\"meta\": true\n\t\t},\n\t\tspecialKeys: {\n\t\t\t\"backspace\": 8,\n\t\t\t\"tab\": 9,\n\t\t\t\"enter\": 13,\n\t\t\t\"esc\": 27,\n\t\t\t\"space\": 32,\n\t\t\t\"up\": 38,\n\t\t\t\"down\": 40,\n\t\t\t\"left\": 37,\n\t\t\t\"right\": 39,\n\t\t\t\"home\": 36,\n\t\t\t\"end\": 35,\n\t\t\t\"pageup\": 33,\n\t\t\t\"pagedown\": 34,\n\t\t\t\"delete\": 46,\n\t\t\t\"insert\": 45,\n\t\t\t\"plus\": 107,\n\t\t\t\"f1\": 112,\n\t\t\t\"f2\": 113,\n\t\t\t\"f3\": 114,\n\t\t\t\"f4\": 115,\n\t\t\t\"f5\": 116,\n\t\t\t\"f6\": 117,\n\t\t\t\"f7\": 118,\n\t\t\t\"f8\": 119,\n\t\t\t\"f9\": 120,\n\t\t\t\"f10\": 121,\n\t\t\t\"f11\": 122,\n\t\t\t\"f12\": 123\n\t\t}\n\t};\n};","module.exports = function(gantt){\n\tvar eventable = require(\"../utils/eventable\");\n\tfunction setupKeyNav(gantt){\n\t\tgantt.config.keyboard_navigation = true;\n\t\tgantt.config.keyboard_navigation_cells = false;\n\n\t\tgantt.$keyboardNavigation = {};\n\n\t\tgantt._compose = function(){\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\n\t\t\tvar res = {};\n\t\t\tfor(var i = 0; i < parts.length; i++){\n\t\t\t\tvar obj = parts[i];\n\t\t\t\tif(typeof obj == \"function\"){\n\t\t\t\t\tobj = new obj();\n\t\t\t\t}\n\n\t\t\t\tfor(var p in obj){\n\t\t\t\t\tres[p] = obj[p];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn res;\n\t\t};\n\n\t\trequire (\"./keyboard_navigation/common/keyboard_shortcuts\")(gantt);\n\t\trequire (\"./keyboard_navigation/common/eventhandler\")(gantt);\n\t\trequire (\"./keyboard_navigation/common/trap_modal_focus\")(gantt);\n\t\trequire (\"./keyboard_navigation/elements/gantt_node\")(gantt);\n\t\trequire (\"./keyboard_navigation/elements/nav_node\")(gantt);\n\t\trequire (\"./keyboard_navigation/elements/header_cell\")(gantt);\n\t\trequire (\"./keyboard_navigation/elements/task_row\")(gantt);\n\t\trequire (\"./keyboard_navigation/elements/task_cell\")(gantt);\n\t\trequire (\"./keyboard_navigation/modals\")(gantt);\n\t\trequire (\"./keyboard_navigation/core\")(gantt);\n\n\t\tvar domHelpers = require(\"../core/ui/utils/dom_helpers\");\n\n\t\t(function(){\n\t\t\tvar dispatcher = gantt.$keyboardNavigation.dispatcher;\n\n\t\t\tdispatcher.isTaskFocused = function(id){\n\t\t\t\tvar node = dispatcher.activeNode;\n\t\t\t\tif(node instanceof gantt.$keyboardNavigation.TaskRow || node instanceof gantt.$keyboardNavigation.TaskCell) {\n\t\t\t\t\tif (node.taskId == id) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t\tvar keyDownHandler = function(e){\n\t\t\t\tif(!gantt.config.keyboard_navigation) return;\n\t\t\t\t// GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\t\t\t\tif(!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return;\n\n\t\t\t\treturn dispatcher.keyDownHandler(e);\n\t\t\t};\n\n\t\t\tvar focusHandler = function(e){\n\t\t\t\tif(dispatcher.$preventDefault){\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tgantt.$container.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t// do nothing if key-nav focus is already planned\n\t\t\t\t} else if (!dispatcher.awaitsFocus()) {\n\t\t\t\t\t// otherwise - re-focus key-nav element on gantt focus\n\t\t\t\t\tdispatcher.focusGlobalNode();\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\tvar reFocusActiveNode = function(){\n\t\t\t\tif(!dispatcher.isEnabled())\n\t\t\t\t\treturn;\n\n\t\t\t\tvar activeNode = dispatcher.getActiveNode();\n\t\t\t\tif(!activeNode)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar domElement = activeNode.getNode();\n\t\t\t\tvar top, left;\n\t\t\t\tif(domElement && domElement.parentNode){\n\t\t\t\t\ttop = domElement.parentNode.scrollTop;\n\t\t\t\t\tleft = domElement.parentNode.scrollLeft;\n\n\t\t\t\t}\n\n\t\t\t\tactiveNode.focus(true);\n\n\t\t\t\tif(domElement && domElement.parentNode){\n\t\t\t\t\tdomElement.parentNode.scrollTop = top;\n\t\t\t\t\tdomElement.parentNode.scrollLeft = left;\n\t\t\t\t}\n\t\t\t};\n\n\n\t\t\tgantt.attachEvent(\"onDataRender\", function(){\n\t\t\t\tif(!gantt.config.keyboard_navigation) return;\n\t\t\t\treFocusActiveNode();\n\t\t\t});\n\n\t\t\tgantt.attachEvent(\"onGanttRender\", function(){\n\t\t\t\tgantt.eventRemove(gantt.$root, \"keydown\", keyDownHandler);\n\t\t\t\tgantt.eventRemove(gantt.$container, \"focus\", focusHandler);\n\t\t\t\tgantt.eventRemove(gantt.$container, \"mousedown\", mousedownHandler);\n\n\t\t\t\tif(gantt.config.keyboard_navigation){\n\n\t\t\t\t\tgantt.event(gantt.$root, \"keydown\", keyDownHandler);\n\t\t\t\t\tgantt.event(gantt.$container, \"focus\", focusHandler);\n\t\t\t\t\tgantt.event(gantt.$container, \"mousedown\", mousedownHandler);\n\t\t\t\t\tgantt.$container.setAttribute(\"tabindex\", \"0\");\n\n\t\t\t\t}else{\n\t\t\t\t\tgantt.$container.removeAttribute(\"tabindex\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfunction getTaskNodeConstructor(){\n\t\t\t\tif (gantt.config.keyboard_navigation_cells) {\n\t\t\t\t\treturn gantt.$keyboardNavigation.TaskCell;\n\t\t\t\t} else {\n\t\t\t\t\treturn gantt.$keyboardNavigation.TaskRow;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction isInlineEditorCell(e){\n\t\t\t\treturn !!domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\");\n\t\t\t}\n\n\t\t\tfunction mousedownHandler(e){\n\t\t\t\tif(!gantt.config.keyboard_navigation) return true;\n\t\t\t\t// GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\t\t\t\tif(!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return true;\n\n\t\t\t\tvar focusNode;\n\t\t\t\tvar locateTask = dispatcher.fromDomElement(e);\n\t\t\t\tif(locateTask){\n\t\t\t\t\t//var node = getTaskNodeConstructor();\n\t\t\t\t\tif(dispatcher.activeNode instanceof gantt.$keyboardNavigation.TaskCell && domHelpers.isChildOf(e.target, gantt.$task)){\n\t\t\t\t\t\tlocateTask = new gantt.$keyboardNavigation.TaskCell(locateTask.taskId, dispatcher.activeNode.columnIndex);\n\t\t\t\t\t}\n\t\t\t\t\tfocusNode = locateTask;\n\t\t\t\t}\n\t\t\t\tif (focusNode) {\n\t\t\t\t\tif (!dispatcher.isEnabled()) {\n\t\t\t\t\t\tdispatcher.activeNode = focusNode;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatcher.delay(function () {\n\t\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// empty click should drop focus from gantt, insert of reselecting default node\n\t\t\t\t\tdispatcher.$preventDefault = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tdispatcher.$preventDefault = false;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar onReady = gantt.attachEvent(\"onGanttReady\", function(){\n\t\t\t\t// restore focus on repainted tasks\n\t\t\t\tgantt.detachEvent(onReady);\n\n\t\t\t\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(id){\n\t\t\t\t\tif (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n\t\t\t\t\t\tvar currentNode = dispatcher.getActiveNode();\n\t\t\t\t\t\tif(currentNode && currentNode.taskId == id){\n\t\t\t\t\t\t\treFocusActiveNode();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(gantt._smart_render){\n\t\t\t\t\tvar updateRender = gantt._smart_render._redrawTasks;\n\t\t\t\t\tgantt._smart_render._redrawTasks = function(renderers, items){\n\t\t\t\t\t\tif(gantt.config.keyboard_navigation && dispatcher.isEnabled()){\n\t\t\t\t\t\t\tvar currentNode = dispatcher.getActiveNode();\n\t\t\t\t\t\t\tif(currentNode && currentNode.taskId !== undefined){\n\t\t\t\t\t\t\t\tvar focusedItemVisible = false;\n\t\t\t\t\t\t\t\tfor(var i = 0; i < items.length; i++){\n\t\t\t\t\t\t\t\t\tif(items[i].id == currentNode.taskId && items[i].start_date){\n\t\t\t\t\t\t\t\t\t\tfocusedItemVisible = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(!focusedItemVisible){\n\t\t\t\t\t\t\t\t\titems.push(gantt.getTask(currentNode.taskId));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar res = updateRender.apply(this, arguments);\n\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\n\n\n\t\t\tgantt.attachEvent(\"onAfterTaskAdd\", function(id,item){\n\t\t\t\tif(!gantt.config.keyboard_navigation) return true;\n\t\t\t\tif(dispatcher.isEnabled()){\n\n\t\t\t\t\tvar columnIndex = 0;\n\t\t\t\t\tvar node = dispatcher.activeNode;\n\t\t\t\t\tif(node instanceof gantt.$keyboardNavigation.TaskCell){\n\t\t\t\t\t\tcolumnIndex = node.columnIndex;\n\t\t\t\t\t}\n\t\t\t\t\tvar nodeConstructor = getTaskNodeConstructor();\n\n\t\t\t\t\tdispatcher.setActiveNode(new nodeConstructor(id, columnIndex));\n\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgantt.attachEvent(\"onTaskIdChange\", function(oldId, newId){\n\t\t\t\tif(!gantt.config.keyboard_navigation) return true;\n\n\t\t\t\tvar node = dispatcher.activeNode;\n\t\t\t\tif(dispatcher.isTaskFocused(oldId)){\n\t\t\t\t\tnode.taskId = newId;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tvar interval = setInterval(function(){\n\t\t\t\tif(!gantt.config.keyboard_navigation) return;\n\t\t\t\tif(!dispatcher.isEnabled()){\n\t\t\t\t\tdispatcher.enable();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}, 500);\n\n\t\t\tgantt.attachEvent(\"onDestroy\", function(){\n\t\t\t\tclearInterval(interval);\n\t\t\t});\n\n\t\t\tfunction getScopeName(obj){\n\t\t\t\tif(obj instanceof gantt.$keyboardNavigation.GanttNode){\n\t\t\t\t\treturn \"gantt\";\n\t\t\t\t}else if(obj instanceof gantt.$keyboardNavigation.HeaderCell){\n\t\t\t\t\treturn \"headerCell\";\n\t\t\t\t}else if(obj instanceof gantt.$keyboardNavigation.TaskRow){\n\t\t\t\t\treturn \"taskRow\";\n\t\t\t\t}else if(obj instanceof gantt.$keyboardNavigation.TaskCell){\n\t\t\t\t\treturn \"taskCell\";\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tfunction getScope(mode){\n\t\t\t\tvar scopes = {\n\t\t\t\t\t\"gantt\":gantt.$keyboardNavigation.GanttNode,\n\t\t\t\t\t\"headerCell\": gantt.$keyboardNavigation.HeaderCell,\n\t\t\t\t\t\"taskRow\": gantt.$keyboardNavigation.TaskRow,\n\t\t\t\t\t\"taskCell\": gantt.$keyboardNavigation.TaskCell\n\t\t\t\t};\n\n\t\t\t\treturn scopes[mode] || scopes.gantt;\n\t\t\t}\n\n\t\t\tfunction findVisibleColumnIndex(columnName) {\n\t\t\t\tvar columns = gantt.getGridColumns();\n\t\t\t\tfor (var i = 0; i < columns.length; i++){\n\t\t\t\t\tif(columns[i].name == columnName){\n\t\t\t\t\t\treturn i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tvar keyNavFacade = {};\n\t\t\teventable(keyNavFacade);\n\t\t\tgantt.mixin(keyNavFacade, {\n\t\t\t\taddShortcut: function(shortcut, handler, scope){\n\t\t\t\t\tvar scopeObject = getScope(scope);\n\t\t\t\t\tif(scopeObject){\n\t\t\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetShortcutHandler: function(shortcut, scope){\n\t\t\t\t\tvar commands = gantt.$keyboardNavigation.shortcuts.parse(shortcut);\n\t\t\t\t\tif(commands.length){\n\t\t\t\t\t\treturn keyNavFacade.getCommandHandler(commands[0], scope);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetCommandHandler: function(command, scope){\n\t\t\t\t\tvar scopeObject = getScope(scope);\n\t\t\t\t\tif(scopeObject){\n\t\t\t\t\t\tif(command){\n\t\t\t\t\t\t\treturn scopeObject.prototype.findHandler(command);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveShortcut: function(shortcut, scope){\n\t\t\t\t\tvar scopeObject = getScope(scope);\n\t\t\t\t\tif(scopeObject){\n\t\t\t\t\t\tscopeObject.prototype.unbind(shortcut);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocus: function(config){\n\t\t\t\t\tvar type = config ? config.type : null;\n\t\t\t\t\tvar constructor = getScope(type);\n\t\t\t\t\tvar node;\n\t\t\t\t\tswitch (type){\n\t\t\t\t\t\tcase \"taskCell\":\n\t\t\t\t\t\t\tnode = new constructor(config.id, findVisibleColumnIndex(config.column));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"taskRow\":\n\t\t\t\t\t\t\tnode = new constructor(config.id);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"headerCell\":\n\t\t\t\t\t\t\tnode = new constructor(findVisibleColumnIndex(config.column));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdispatcher.delay(function(){\n\t\t\t\t\t\tif(node){\n\t\t\t\t\t\t\tdispatcher.setActiveNode(node);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tdispatcher.enable();\n\t\t\t\t\t\t\tif(!dispatcher.getActiveNode()){\n\n\t\t\t\t\t\t\t\tdispatcher.setDefaultNode();\n\t\t\t\t\t\t\t}else{\n\n\t\t\t\t\t\t\t\tif(!dispatcher.awaitsFocus()){\n\t\t\t\t\t\t\t\t\tdispatcher.enable();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tgetActiveNode: function(){\n\t\t\t\t\tif(dispatcher.isEnabled()){\n\t\t\t\t\t\tvar node = dispatcher.getActiveNode();\n\t\t\t\t\t\tvar scope = getScopeName(node);\n\t\t\t\t\t\tvar columns = gantt.getGridColumns();\n\t\t\t\t\t\tswitch (scope){\n\t\t\t\t\t\t\tcase \"taskCell\":\n\t\t\t\t\t\t\t\treturn {type:\"taskCell\", id:node.taskId, column:columns[node.columnIndex].name};\n\t\t\t\t\t\t\tcase \"taskRow\":\n\t\t\t\t\t\t\t\treturn {type:\"taskRow\", id:node.taskId};\n\t\t\t\t\t\t\tcase \"headerCell\":\n\t\t\t\t\t\t\t\treturn {type:\"headerCell\", column:columns[node.index].name};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tgantt.$keyboardNavigation.facade = keyNavFacade;\n\n\t\t\tgantt.ext.keyboardNavigation = keyNavFacade;\n\t\t\tgantt.focus = function(){\n\t\t\t\tkeyNavFacade.focus();\n\t\t\t};\n\t\t\tgantt.addShortcut = keyNavFacade.addShortcut;\n\t\t\tgantt.getShortcutHandler = keyNavFacade.getShortcutHandler;\n\t\t\tgantt.removeShortcut = keyNavFacade.removeShortcut;\n\t\t})();\n\n\n\t}\n\n\tsetupKeyNav(gantt);\n\n\n\n};","export default function(gantt: any){\n\ninterface IBody extends HTMLElement {\n\tmsRequestFullscreen?: () => void;\n\tmozRequestFullScreen?: () => void;\n\twebkitRequestFullscreen?: (ALLOW_KEYBOARD_INPUT: any) => void;\n}\n\n\ninterface IConsole extends Console {\n\twarning?: (str: string) => void;\n}\n\ninterface IDocument extends Document {\n\tfullscreenElement: Element;\n\tmozFullScreenElement?: Element;\n\twebkitFullscreenElement?: Element;\n\tmsFullscreenElement?: Element;\n\twebkitFullscreenEnabled?: boolean;\n\tmozFullScreenEnabled?: boolean;\n\tmsFullscreenEnabled?: boolean;\n\tmsExitFullscreen?: () => void;\n\tmozCancelFullScreen?: () => void;\n\twebkitExitFullscreen?: () => void;\n}\n\ninterface IElement extends Element {\n\tALLOW_KEYBOARD_INPUT?: boolean;\n}\n\ninterface IElementSizes extends ISizes {\n\tmodified: boolean;\n}\n\ninterface ISizes {\n\twidth: null | string;\n\theight: null | string;\n\ttop: null | string;\n\tleft: null | string;\n\tposition: null | string;\n\tzIndex: null | number;\n}\n\nfunction isExpanded() {\n\tconst element = ((document as IDocument).fullscreenElement ||\n\t\t(document as IDocument).mozFullScreenElement ||\n\t\t(document as IDocument).webkitFullscreenElement ||\n\t\t(document as IDocument).msFullscreenElement);\n\treturn !!(element && element === document.body);\n}\n\nfunction isFullscreenAvailable() {\n\treturn (document as IDocument).fullscreenEnabled ||\n\t(document as IDocument).webkitFullscreenEnabled ||\n\t(document as IDocument).mozFullScreenEnabled ||\n\t(document as IDocument).msFullscreenEnabled;\n}\n\nconst state = gantt.$services.getService(\"state\");\nstate.registerProvider(\"fullscreen\", () => {\n\treturn { fullscreen: isExpanded() };\n});\n\nlet backupBodyPadding = {\n\toverflow: null,\n\tpadding: null,\n\tpaddingTop: null,\n\tpaddingRight: null,\n\tpaddingBottom: null,\n\tpaddingLeft: null\n};\n\nconst backupElementSizes: IElementSizes = {\n\twidth: null,\n\theight: null,\n\ttop: null,\n\tleft: null,\n\tposition: null,\n\tzIndex: null,\n\tmodified: false\n};\n\nlet backupPositioning = null;\nfunction resetParentPositioning(root){\n\tlet parent = root.parentNode;\n\tconst positions = [];\n\twhile(parent && parent.style){\n\t\tpositions.push({\n\t\t\telement: parent,\n\t\t\toriginalPositioning: parent.style.position\n\t\t});\n\t\tparent.style.position = \"static\";\n\t\tparent = parent.parentNode;\n\t}\n\treturn positions;\n}\n\nfunction restoreParentPositioning(positions: any[]){\n\tpositions.forEach(record => {\n\t\trecord.element.style.position = record.originalPositioning;\n\t});\n}\n\n// expand gantt root element to fullscreen automatically\nfunction setFullScreenSizes() {\n\tconst root = gantt.ext.fullscreen.getFullscreenElement();\n\tconst body = document.body;\n\tupdateSizes(root.style, backupElementSizes);\n\tbackupBodyPadding = {\n\t\toverflow: body.style.overflow,\n\t\tpadding: body.style.padding ? body.style.padding : null,\n\t\tpaddingTop: body.style.paddingTop ? body.style.paddingTop : null,\n\t\tpaddingRight: body.style.paddingRight ? body.style.paddingRight : null,\n\t\tpaddingBottom: body.style.paddingBottom ? body.style.paddingBottom : null,\n\t\tpaddingLeft: body.style.paddingLeft ? body.style.paddingLeft : null\n\t};\n\n\tif (body.style.padding) {\n\t\tbody.style.padding = \"0\";\n\t}\n\tif (body.style.paddingTop) {\n\t\tbody.style.paddingTop = \"0\";\n\t}\n\tif (body.style.paddingRight) {\n\t\tbody.style.paddingRight = \"0\";\n\t}\n\tif (body.style.paddingBottom) {\n\t\tbody.style.paddingBottom = \"0\";\n\t}\n\tif (body.style.paddingLeft) {\n\t\tbody.style.paddingLeft = \"0\";\n\t}\n\n\tbody.style.overflow = \"hidden\";\n\n\troot.style.width = \"100vw\";\n\troot.style.height = \"100vh\";\n\troot.style.top = \"0px\";\n\troot.style.left = \"0px\";\n\troot.style.position = \"absolute\";\n\troot.style.zIndex = 1;\n\tbackupElementSizes.modified = true;\n\tbackupPositioning = resetParentPositioning(root);\n}\n\nfunction restoreSizes() {\n\tconst root = gantt.ext.fullscreen.getFullscreenElement();\n\tconst body = document.body;\n\tif (backupElementSizes.modified) {\n\t\tif (backupBodyPadding.padding) {\n\t\t\tbody.style.padding = backupBodyPadding.padding;\n\t\t}\n\t\tif (backupBodyPadding.paddingTop) {\n\t\t\tbody.style.paddingTop = backupBodyPadding.paddingTop;\n\t\t}\n\t\tif (backupBodyPadding.paddingRight) {\n\t\t\tbody.style.paddingRight = backupBodyPadding.paddingRight;\n\t\t}\n\t\tif (backupBodyPadding.paddingBottom) {\n\t\t\tbody.style.paddingBottom = backupBodyPadding.paddingBottom;\n\t\t}\n\t\tif (backupBodyPadding.paddingLeft) {\n\t\t\tbody.style.paddingLeft = backupBodyPadding.paddingLeft;\n\t\t}\n\n\t\tbody.style.overflow = backupBodyPadding.overflow;\n\t\tbackupBodyPadding = {\n\t\t\toverflow: null,\n\t\t\tpadding: null,\n\t\t\tpaddingTop: null,\n\t\t\tpaddingRight: null,\n\t\t\tpaddingBottom: null,\n\t\t\tpaddingLeft: null\n\t\t};\n\t\tupdateSizes(backupElementSizes, root.style);\n\t\tbackupElementSizes.modified = false;\n\t}\n\trestoreParentPositioning(backupPositioning);\n\tbackupPositioning = null;\n}\n\nfunction updateSizes(source: ISizes, target: ISizes) {\n\ttarget.width = source.width;\n\ttarget.height = source.height;\n\ttarget.top = source.top;\n\ttarget.left = source.left;\n\ttarget.position = source.position;\n\ttarget.zIndex = source.zIndex;\n}\n\nfunction addDOMEvents() {\n\tgantt.event(document, \"webkitfullscreenchange\", onFullScreenChange);\n\tgantt.event(document, \"mozfullscreenchange\", onFullScreenChange);\n\tgantt.event(document, \"MSFullscreenChange\", onFullScreenChange);\n\t// For IE on Win 10\n\tgantt.event(document, \"fullscreenChange\", onFullScreenChange);\n\tgantt.event(document, \"fullscreenchange\", onFullScreenChange);\n}\n\nlet expandGantt = false;\nfunction onFullScreenChange() {\n\tif (!gantt.$container) {\n\t\t// do nothing if gantt is not yet initialized\n\t\treturn;\n\t}\n\tlet event: \"onExpand\" | \"onCollapse\";\n\tconst isBodyExpanded = isExpanded();\n\n\tif (isBodyExpanded) {\n\t\tif (expandGantt) {\n\t\t\tevent = \"onExpand\";\n\t\t\tsetFullScreenSizes();\n\t\t}\n\t} else if (expandGantt) {\n\t\texpandGantt = false;\n\t\tevent = \"onCollapse\";\n\t\trestoreSizes();\n\t}\n\tsetTimeout(() => {\n\t\tgantt.render();\n\t});\n\tsetTimeout(() => {\n\t\tgantt.callEvent(event, [gantt.ext.fullscreen.getFullscreenElement()]);\n\t});\n}\n\nfunction cantFullscreen() {\n\tif (!gantt.$container) { // check is gantt initialized or not\n\t\treturn true;\n\t}\n\tif (!gantt.ext.fullscreen.getFullscreenElement()) {\n\t\treturn true;\n\t}\n\tif (!isFullscreenAvailable()) {\n\t\t// tslint:disable-next-line: no-console\n\t\tconst method = (console as IConsole).warning || console.log;\n\t\tmethod(\"The `fullscreen` feature not being allowed, or full-screen mode not being supported\");\n\t\treturn true;\n\t}\n\treturn false;\n}\n\ngantt.ext.fullscreen = {\n\texpand(): void {\n\t\tif (cantFullscreen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isExpanded()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!gantt.callEvent(\"onBeforeExpand\", [this.getFullscreenElement()])) {\n\t\t\treturn;\n\t\t}\n\t\texpandGantt = true;\n\n\t\t// we switch body to fullscreen and then expand fullscreen element to viewport\n\t\t// we do it to correct display common elements: lightboxes, tooltip etc.\n\t\tconst element = document.body as IBody;\n\t\tconst requestArguments = element.webkitRequestFullscreen ?\n\t\t\t[(Element as unknown as IElement).ALLOW_KEYBOARD_INPUT] : [];\n\n\t\tconst requestFullscreen = element.msRequestFullscreen ||\n\t\t\telement.mozRequestFullScreen ||\n\t\t\telement.webkitRequestFullscreen ||\n\t\t\telement.requestFullscreen;\n\n\t\tif (requestFullscreen) {\n\t\t\trequestFullscreen.apply(element, requestArguments);\n\t\t}\n\t},\n\tcollapse(): void {\n\t\tif (cantFullscreen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isExpanded()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!gantt.callEvent(\"onBeforeCollapse\", [this.getFullscreenElement()])) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst requestExitFullscreen = (document as IDocument).msExitFullscreen ||\n\t\t\t(document as IDocument).mozCancelFullScreen ||\n\t\t\t(document as IDocument).webkitExitFullscreen ||\n\t\t\t(document as IDocument).exitFullscreen;\n\n\t\tif (requestExitFullscreen) {\n\t\t\trequestExitFullscreen.apply(document);\n\t\t}\n\t},\n\ttoggle(): void {\n\t\tif (cantFullscreen()) {\n\t\t\treturn;\n\t\t}\n\t\tif (!isExpanded()) {\n\t\t\tthis.expand();\n\t\t} else {\n\t\t\tthis.collapse();\n\t\t}\n\n\t},\n\tgetFullscreenElement(): HTMLElement {\n\t\treturn gantt.$root;\n\t},\n};\n\ngantt.expand = function() {\n\tgantt.ext.fullscreen.expand();\n};\n\ngantt.collapse = function(){\n\tgantt.ext.fullscreen.collapse();\n};\n\ngantt.attachEvent(\"onGanttReady\", addDOMEvents);\n\n}","interface IPoint {\n\tx: number;\n\ty: number;\n}\n\nexport class EventsManager {\n\tstatic create(gantt: any) {\n\t\treturn new EventsManager(gantt);\n\t}\n\tprivate _mouseDown: boolean = false;\n\tprivate _startPoint: IPoint;\n\tprivate _scrollState: IPoint;\n\tprivate _originAutoscroll: boolean;\n\tprivate _domEvents: any;\n\tprivate _timeline: any;\n\tprivate _gantt: any;\n\tprivate _trace: IPoint[];\n\tprivate _originalReadonly: boolean;\n\n\tconstructor(gantt: any) {\n\t\tthis._gantt = gantt;\n\t\tthis._domEvents = gantt._createDomEventScope();\n\t\tthis._trace = [];\n\t}\n\n\tdestructor() {\n\t\tthis._domEvents.detachAll();\n\t}\n\n\tattach(timeline: any): void {\n\t\tthis._timeline = timeline;\n\t\tconst gantt = this._gantt;\n\t\tthis._domEvents.attach(timeline.$task, \"mousedown\", (event) => {\n\t\t\tif (!gantt.config.drag_timeline) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { useKey,ignore, enabled } = gantt.config.drag_timeline;\n\t\t\tif(enabled === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet filterTargets = \".gantt_task_line, .gantt_task_link\";\n\t\t\tif(ignore !== undefined) {\n\t\t\t\tif(ignore instanceof Array){\n\t\t\t\t\tfilterTargets = ignore.join(\", \");\n\t\t\t\t} else {\n\t\t\t\t\tfilterTargets = ignore;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filterTargets) {\n\t\t\t\tif (gantt.utils.dom.closest(event.target, filterTargets)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (useKey && event[useKey] !== true) { return; }\n\n\t\t\tthis._startDrag(event);\n\t\t});\n\n\t\tthis._domEvents.attach(document, \"keydown\", (event) => {\n\t\t\tif (!gantt.config.drag_timeline) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\n\t\t\tif (useKey && event[useKey] === true) {\n\t\t\t\tthis._applyDndReadyStyles();\n\t\t\t}\n\t\t});\n\t\tthis._domEvents.attach(document, \"keyup\", (event) => {\n\t\t\tif (!gantt.config.drag_timeline) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\n\t\t\tif (useKey && event[useKey] === false) {\n\t\t\t\tthis._clearDndReadyStyles();\n\t\t\t\tthis._stopDrag(event);\n\t\t\t}\n\t\t});\n\n\t\tthis._domEvents.attach(document, \"mouseup\", (event) => {\n\t\t\tthis._stopDrag(event);\n\t\t});\n\t\tthis._domEvents.attach(gantt.$root, \"mouseup\", (event) => {\n\t\t\tthis._stopDrag(event);\n\t\t});\n\t\tthis._domEvents.attach(document, \"mouseleave\", (event) => {\n\t\t\tthis._stopDrag(event);\n\t\t});\n\t\tthis._domEvents.attach(gantt.$root, \"mouseleave\", (event) => {\n\t\t\tthis._stopDrag(event);\n\t\t});\n\n\t\tthis._domEvents.attach(gantt.$root, \"mousemove\", (event) => {\n\t\t\tif (!gantt.config.drag_timeline) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\n\t\t\tif (useKey && event[useKey] !== true) { return; }\n\t\t\tif (this._mouseDown === true) {\n\t\t\t\tthis._trace.push({ x: event.clientX, y: event.clientY });\n\t\t\t\tconst scrollPosition: IPoint = this._countNewScrollPosition({ x: event.clientX, y: event.clientY });\n\t\t\t\tthis._setScrollPosition(timeline, scrollPosition);\n\t\t\t\tthis._scrollState = scrollPosition;\n\t\t\t\tthis._startPoint = { x: event.clientX, y: event.clientY };\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _calculateDirectionVector = () => {\n\t\tconst traceSteps = 10;\n\t\tif(this._trace.length >= traceSteps) {\n\t\t\tconst dots = this._trace.slice(this._trace.length - traceSteps);\n\n\t\t\tconst vectors = [];\n\t\t\tfor(let i = 1; i < dots.length; i++) {\n\t\t\t\tvectors.push({\n\t\t\t\t\tx: dots[i].x - dots[i - 1].x,\n\t\t\t\t\ty: dots[i].y - dots[i - 1].y\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst resultVector = {x:0, y:0};\n\n\t\t\tvectors.forEach((vector) => {\n\t\t\t\tresultVector.x += vector.x;\n\t\t\t\tresultVector.y += vector.y;\n\t\t\t});\n\n\t\t\tconst magnitude = Math.sqrt(resultVector.x*resultVector.x + resultVector.y*resultVector.y);\n\t\t\tconst angleDegrees = Math.atan2(Math.abs(resultVector.y), Math.abs(resultVector.x)) * 180 / Math.PI;\n\n\t\t\treturn {\n\t\t\t\tmagnitude,\n\t\t\t\tangleDegrees\n\t\t\t};\n\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate _applyDndReadyStyles = (): void => {\n\t\tthis._timeline.$task.classList.add(\"gantt_timeline_move_available\");\n\t}\n\n\tprivate _clearDndReadyStyles = (): void => {\n\t\tthis._timeline.$task.classList.remove(\"gantt_timeline_move_available\");\n\t}\n\n\tprivate _getScrollPosition = (timeline: any): IPoint => {\n\t\tconst gantt = this._gantt;\n\t\treturn {\n\t\t\tx: gantt.$ui.getView(timeline.$config.scrollX).getScrollState().position,\n\t\t\ty: gantt.$ui.getView(timeline.$config.scrollY).getScrollState().position\n\t\t};\n\t}\n\tprivate _countNewScrollPosition = (coords: IPoint): IPoint => {\n\t\tconst vector = this._calculateDirectionVector();\n\t\tlet shiftX = this._startPoint.x - coords.x;\n\t\tlet shiftY = this._startPoint.y - coords.y;\n\t\tif(vector){\n\t\t\tif(vector.angleDegrees < 15){\n\t\t\t\tshiftY = 0;\n\t\t\t} else if(vector.angleDegrees > 75){\n\t\t\t\tshiftX = 0;\n\t\t\t}\n\t\t}\n\n\t\tconst result = {\n\t\t\tx: this._scrollState.x + shiftX,\n\t\t\ty: this._scrollState.y + shiftY\n\t\t};\n\t\treturn result;\n\t}\n\tprivate _setScrollPosition = (timeline: any, coords: IPoint): void => {\n\t\tconst gantt = this._gantt;\n\t\trequestAnimationFrame(() => {\n\t\t\tgantt.$ui.getView(timeline.$config.scrollX).scroll(coords.x);\n\t\t\tgantt.$ui.getView(timeline.$config.scrollY).scroll(coords.y);\n\t\t});\n\t}\n\tprivate _stopDrag = (event: Event): void => {\n\t\tconst gantt = this._gantt;\n\t\tthis._trace = [];\n\t\tgantt.$root.classList.remove(\"gantt_noselect\");\n\n\t\tif(this._originalReadonly !== undefined){\n\t\t\tgantt.config.readonly = this._originalReadonly;\n\t\t}\n\n\t\tif(this._originAutoscroll !== undefined){\n\t\t\tgantt.config.autoscroll = this._originAutoscroll;\n\t\t}\n\n\t\tif(gantt.config.drag_timeline){\n\t\t\tconst { useKey } = gantt.config.drag_timeline;\n\t\t\tif (useKey && event[useKey] !== true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis._mouseDown = false;\n\t}\n\n\tprivate _startDrag = (event: any) : void => {\n\t\tconst gantt = this._gantt;\n\t\tthis._originAutoscroll = gantt.config.autoscroll;\n\t\tgantt.config.autoscroll = false;\n\n\t\tgantt.$root.classList.add(\"gantt_noselect\");\n\t\tthis._originalReadonly = gantt.config.readonly;\n\t\tgantt.config.readonly = true;\n\n\t\tthis._trace = [];\n\t\tthis._mouseDown = true;\n\t\tconst { x, y } = this._getScrollPosition(this._timeline);\n\t\tthis._scrollState = { x, y };\n\t\tthis._startPoint = { x: event.clientX, y: event.clientY };\n\t\tthis._trace.push(this._startPoint);\n\t}\n}","import { EventsManager } from \"./eventsManager\";\nexport default function(gantt: any){\n\tif (!gantt.ext){\n\t\tgantt.ext = {};\n\t}\n\n\tgantt.ext.dragTimeline = {\n\t\tcreate: () => EventsManager.create(gantt)\n\t};\n\n\tgantt.config.drag_timeline = {\n\t\tenabled: true\n\t};\n}","import * as eventable from \"../../utils/eventable\";\nimport { isEventable } from \"../../utils/helpers\";\n\nexport interface ISelectedRegionConfig {\n\tclassName?: string;\n\trender?: (startPoint: IPoint, endPoint: IPoint) => HTMLElement;\n\tviewPort?: HTMLElement;\n\tuseRequestAnimationFrame: boolean;\n\tcallback?: (startPoint: IPoint, endPoint: IPoint, startDate: Date, endDate: Date, tasksByDate: any[], tasksByIndex: any[]) => void;\n\tsingleRow: boolean;\n}\n\ninterface ICoordinates {\n\tleft: number;\n\ttop: number;\n}\n\nexport interface IPoint {\n\tabsolute: ICoordinates;\n\trelative: ICoordinates;\n}\n\nexport class SelectedRegion {\n\trender: () => void;\n\tprivate _viewPort: HTMLElement & eventable;\n\tprivate _el: HTMLElement = document.createElement(\"div\");\n\tprivate _callback: (startPoint: IPoint, endPoint: IPoint, startDate: Date, endDate: Date, tasksByDate: any[], tasksByIndex: any[]) => void;\n\tprivate _startPoint: IPoint;\n\tprivate _endPoint: IPoint;\n\tprivate _positionPoint: IPoint;\n\tprivate _useRequestAnimationFrame: boolean;\n\tprivate _startDate: Date;\n\tprivate _endDate: Date;\n\tprivate _singleRow: boolean;\n\tprivate _gantt: any;\n\n\tconstructor(config: ISelectedRegionConfig, gantt: any) {\n\t\tthis._gantt = gantt;\n\t\tthis._viewPort = config.viewPort;\n\t\tthis._el.classList.add(config.className);\n\t\tif (typeof config.callback === \"function\") {\n\t\t\tthis._callback = config.callback;\n\t\t}\n\n\t\tthis.render = () => {\n\t\t\tlet node;\n\t\t\tif(config.render){\n\t\t\t\tnode = config.render(this._startPoint, this._endPoint);\n\t\t\t}else{\n\t\t\t\tnode = this.defaultRender(this._startPoint, this._endPoint);\n\t\t\t}\n\n\t\t\tif(node !== this._el){\n\t\t\t\tif(this._el && this._el.parentNode){\n\t\t\t\t\tthis._el.parentNode.removeChild(this._el);\n\t\t\t\t}\n\t\t\t\tthis._el = node;\n\t\t\t}\n\n\t\t\tif (config.className !== \"\") {\n\t\t\t\tthis._el.classList.add(config.className);\n\t\t\t}\n\t\t\tthis.draw();\n\t\t};\n\n\t\tif (!isEventable(this._viewPort)) {\n\t\t\teventable(this._viewPort);\n\t\t}\n\t\tthis._singleRow = config.singleRow;\n\t\tthis._useRequestAnimationFrame = config.useRequestAnimationFrame;\n\t}\n\n\tdefaultRender = (start: IPoint, end: IPoint) => {\n\t\tif(!this._el){\n\t\t\tthis._el = document.createElement(\"div\");\n\t\t}\n\t\tconst node = this._el;\n\t\tconst gantt = this._gantt;\n\n\t\tconst top = Math.min(start.relative.top, end.relative.top);\n\t\tconst bottom = Math.max(start.relative.top, end.relative.top);\n\t\tconst left = Math.min(start.relative.left, end.relative.left);\n\t\tconst right = Math.max(start.relative.left, end.relative.left);\n\n\t\tif (this._singleRow) {\n\t\t\tconst height = gantt.config.row_height;\n\t\t\tnode.style.height = height + \"px\";\n\t\t\tnode.style.top = (Math.ceil(top / height) - 1) * height + \"px\";\n\t\t} else {\n\t\t\tnode.style.height = Math.abs(bottom - top) + \"px\";\n\t\t\tnode.style.top = top + \"px\";\n\t\t}\n\t\tnode.style.width = Math.abs(right - left) + \"px\";\n\t\tnode.style.left = left + \"px\";\n\t\treturn node;\n\t}\n\n\tdraw() {\n\t\tif (this._useRequestAnimationFrame) {\n\t\t\treturn requestAnimationFrame(() => {\n\t\t\t\tthis._viewPort.appendChild(this.getElement());\n\t\t\t});\n\t\t} else {\n\t\t\tthis._viewPort.appendChild(this.getElement());\n\t\t}\n\t}\n\n\tclear() {\n\t\tif (this._useRequestAnimationFrame) {\n\t\t\treturn requestAnimationFrame(() => {\n\t\t\t\tif (!this._el.parentNode) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._viewPort.removeChild(this._el);\n\t\t\t});\n\t\t} else {\n\t\t\tif (!this._el.parentNode) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._viewPort.removeChild(this._el);\n\t\t}\n\t}\n\n\tgetElement() {\n\t\treturn this._el;\n\t}\n\n\tgetViewPort() {\n\t\treturn this._viewPort;\n\t}\n\n\tsetStart(startPoint: IPoint) {\n\t\tconst gantt = this._gantt;\n\t\tthis._startPoint = startPoint;\n\t\tthis._startDate = gantt.dateFromPos(this._startPoint.relative.left);\n\t\tthis._viewPort.callEvent(\"onBeforeDrag\", [this._startPoint]);\n\t}\n\n\tsetEnd(endPoint: IPoint) {\n\t\tconst gantt = this._gantt;\n\t\tthis._endPoint = endPoint;\n\t\tif (this._singleRow) {\n\t\t\tconst height = gantt.config.row_height;\n\t\t\tthis._endPoint.relative.top = (Math.ceil(this._startPoint.relative.top / height)) * height;\n\t\t}\n\t\tthis._endDate = gantt.dateFromPos(this._endPoint.relative.left);\n\t\tif (this._startPoint.relative.left > this._endPoint.relative.left) {\n\t\t\tthis._positionPoint = {\n\t\t\t\trelative: { left: this._endPoint.relative.left, top: this._positionPoint.relative.top },\n\t\t\t\tabsolute: { left: this._endPoint.absolute.left, top: this._positionPoint.absolute.top }\n\t\t\t};\n\t\t}\n\t\tif (this._startPoint.relative.top > this._endPoint.relative.top) {\n\t\t\tthis._positionPoint = {\n\t\t\t\trelative: { left: this._positionPoint.relative.left, top: this._endPoint.relative.top },\n\t\t\t\tabsolute: { left: this._positionPoint.absolute.left, top: this._endPoint.absolute.top }\n\t\t\t};\n\t\t}\n\n\n\t\tthis._viewPort.callEvent(\"onDrag\", [this._startPoint, this._endPoint]);\n\t}\n\n\tsetPosition(positionPoint: IPoint) {\n\t\tthis._positionPoint = positionPoint;\n\t}\n\n\tdragEnd(endPoint: IPoint) {\n\t\tconst gantt = this._gantt;\n\t\tif(endPoint.relative.left < 0){\n\t\t\tendPoint.relative.left = 0;\n\t\t}\n\t\tthis._viewPort.callEvent(\"onBeforeDragEnd\", [this._startPoint, endPoint]);\n\t\tthis.setEnd(endPoint);\n\t\tif (this._startDate.valueOf() > this._endDate.valueOf()) {\n\t\t\t[ this._startDate, this._endDate ] = [ this._endDate, this._startDate ];\n\t\t}\n\t\tthis.clear();\n\t\tconst tasksByTime = gantt.getTaskByTime(this._startDate, this._endDate);\n\t\tconst tasksByIndex = this._getTasksByTop(this._startPoint.relative.top, this._endPoint.relative.top);\n\n\t\tthis._viewPort.callEvent(\"onDragEnd\", [this._startPoint, this._endPoint]);\n\t\tif (this._callback) {\n\t\t\tthis._callback(this._startPoint, this._endPoint, this._startDate, this._endDate, tasksByTime, tasksByIndex);\n\t\t}\n\t}\n\n\tgetInBounds() {\n\t\treturn this._singleRow;\n\t}\n\n\tprivate _getTasksByTop(start: number, end:number) {\n\t\tconst gantt = this._gantt;\n\t\tlet startValue = start;\n\t\tlet endValue = end;\n\t\tif (start > end) {\n\t\t\tstartValue = end;\n\t\t\tendValue = start;\n\t\t}\n\t\tconst height = gantt.config.row_height;\n\t\tconst startIndex = Math.ceil(startValue / height) - 1;\n\t\tconst endIndex = Math.ceil(endValue / height) - 1;\n\t\tconst result = [];\n\t\tfor (let i = startIndex; i <= endIndex; i++) {\n\t\t\tconst task = gantt.getTaskByIndex(i);\n\t\t\tif (task) {\n\t\t\t\tresult.push(gantt.getTaskByIndex(i));\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}","import { SelectedRegion } from \"./selectedRegion\";\n\nexport class EventsManager {\n\tprivate _mouseDown: boolean = false;\n\tprivate _domEvents: any;\n\tprivate _originPosition: string;\n\tprivate _gantt: any;\n\tprivate _restoreOriginPosition: () => void;\n\tconstructor(gantt: any) {\n\t\tthis._gantt = gantt;\n\t\tthis._domEvents = gantt._createDomEventScope();\n\t}\n\n\tattach(selectedRegion: SelectedRegion, useKey?: \"shiftKey\" | \"ctrlKey\" | \"altKey\"): void {\n\t\tconst gantt = this._gantt;\n\t\tconst _target = selectedRegion.getViewPort();\n\t\tthis._originPosition = window.getComputedStyle(_target).display;\n\t\tthis._restoreOriginPosition = () => {\n\t\t\t_target.style.position = this._originPosition;\n\t\t};\n\t\tif (this._originPosition === \"static\") {\n\t\t\t_target.style.position = \"relative\";\n\t\t}\n\t\tconst state = gantt.$services.getService(\"state\");\n\t\tstate.registerProvider(\"clickDrag\", () => {\n\t\t\tconst result = { autoscroll: false };\n\t\t\treturn result;\n\t\t});\n\n\n\t\tlet scheduledDndCoordinates = null;\n\t\tconst startDragAndDrop = () => {\n\t\t\tif (!scheduledDndCoordinates) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._mouseDown = true;\n\t\t\tselectedRegion.setStart(scheduledDndCoordinates);\n\t\t\tselectedRegion.setPosition(scheduledDndCoordinates);\n\t\t\tselectedRegion.setEnd(scheduledDndCoordinates);\n\t\t\tscheduledDndCoordinates = null;\n\t\t};\n\n\t\tthis._domEvents.attach(_target, \"mousedown\", (event) => {\n\t\t\tscheduledDndCoordinates = null;\n\t\t\tif (gantt.utils.dom.closest(event.target, \".gantt_task_line, .gantt_task_link\")) { return; }\n\t\t\tstate.registerProvider(\"clickDrag\", () => {\n\t\t\t\tconst result = { autoscroll: this._mouseDown };\n\t\t\t\treturn result;\n\t\t\t});\n\n\t\t\tif (useKey && event[useKey] !== true) { return; }\n\t\t\tscheduledDndCoordinates = this._getCoordinates(event, selectedRegion);\n\t\t});\n\n\t\tthis._domEvents.attach(document.body, \"mouseup\", (event) => {\n\t\t\tscheduledDndCoordinates = null;\n\t\t\tif (useKey && event[useKey] !== true) { return; }\n\t\t\tif (this._mouseDown === true) {\n\t\t\t\tthis._mouseDown = false;\n\t\t\t\tconst coordinates = this._getCoordinates(event, selectedRegion);\n\t\t\t\tselectedRegion.dragEnd(coordinates);\n\t\t\t}\n\t\t});\n\t\tthis._domEvents.attach(_target, \"mousemove\", (event) => {\n\t\t\tif (useKey && event[useKey] !== true) { return; }\n\t\t\tlet coordinates = null;\n\t\t\tif(!this._mouseDown && scheduledDndCoordinates){\n\t\t\t\tcoordinates = this._getCoordinates(event, selectedRegion);\n\t\t\t\tif(Math.abs(scheduledDndCoordinates.relative.left - coordinates.relative.left) > 5){\n\t\t\t\t\t// add small threshold not to start dnd on simple click\n\t\t\t\t\tstartDragAndDrop();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._mouseDown === true) {\n\t\t\t\tcoordinates = this._getCoordinates(event, selectedRegion);\n\t\t\t\tselectedRegion.setEnd(coordinates);\n\t\t\t\tselectedRegion.render();\n\t\t\t}\n\t\t});\n\t}\n\n\tdetach(): void {\n\t\tconst gantt = this._gantt;\n\t\tthis._domEvents.detachAll();\n\t\tif(this._restoreOriginPosition){\n\t\t\tthis._restoreOriginPosition();\n\t\t}\n\n\t\tconst state = gantt.$services.getService(\"state\");\n\t\tstate.unregisterProvider(\"clickDrag\");\n\t}\n\n\tdestructor(): void {\n\t\tthis.detach();\n\t}\n\n\tprivate _getCoordinates(event: MouseEvent, selectedRegion: SelectedRegion) {\n\t\tconst viewPort = selectedRegion.getViewPort();\n\t\tconst viewPortBounds = viewPort.getBoundingClientRect();\n\t\tconst { clientX, clientY } = event;\n\t\tconst result = {\n\t\t\tabsolute: {\n\t\t\t\tleft: clientX,\n\t\t\t\ttop: clientY,\n\t\t\t},\n\t\t\trelative: {\n\t\t\t\tleft: clientX - viewPortBounds.left + viewPort.scrollLeft,\n\t\t\t\ttop: clientY - viewPortBounds.top + viewPort.scrollTop\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n}","import { EventsManager } from \"./eventsManager\";\nimport { ISelectedRegionConfig, SelectedRegion } from \"./selectedRegion\";\n\nexport default function(gantt: any){\n\tif (!gantt.ext) {\n\t\tgantt.ext = {};\n\t}\n\n\tconst defaultConfig: ISelectedRegionConfig = {\n\t\tclassName: \"gantt_click_drag_rect\",\n\t\tuseRequestAnimationFrame: true,\n\t\tcallback: undefined,\n\t\tsingleRow: false\n\t};\n\n\tconst eventsManager = new EventsManager(gantt);\n\n\tgantt.ext.clickDrag = eventsManager;\n\n\tgantt.attachEvent(\"onGanttReady\", () => {\n\t\tconst config: ISelectedRegionConfig = { viewPort: gantt.$task_data, ...defaultConfig };\n\t\tif (gantt.config.click_drag){\n\t\t\tconst clickDrag = gantt.config.click_drag;\n\t\t\tconfig.render = clickDrag.render || defaultConfig.render;\n\t\t\tconfig.className = clickDrag.className || defaultConfig.className;\n\t\t\tconfig.callback = clickDrag.callback || defaultConfig.callback;\n\t\t\tconfig.viewPort = clickDrag.viewPort || gantt.$task_data;\n\t\t\tconfig.useRequestAnimationFrame = clickDrag.useRequestAnimationFrame === undefined ?\n\t\t\t\tdefaultConfig.useRequestAnimationFrame : clickDrag.useRequestAnimationFrame;\n\n\t\t\tconfig.singleRow = clickDrag.singleRow === undefined ? defaultConfig.singleRow : clickDrag.singleRow;\n\t\t\tconst selectedRegion = new SelectedRegion(config, gantt);\n\t\t\tgantt.ext.clickDrag.attach(selectedRegion, clickDrag.useKey);\n\t\t}\n\t});\n\n\tgantt.attachEvent(\"onDestroy\", () => {\n\t\teventsManager.destructor();\n\t});\n\n}","\nimport click_drag from \"./click_drag\";\nimport drag_timeline from \"./drag_timeline\";\nimport fullscreen from \"./fullscreen\";\nimport * as keyboard_navigation from \"./keyboard_navigation\";\nimport * as marker from \"./marker\";\nimport * as multiselect from \"./multiselect\";\nimport quick_info from \"./quick_info\";\nimport tooltip from \"./tooltip\";\nimport undo from \"./undo\";\n\nexport default {\n\tclick_drag,\n\tdrag_timeline,\n\tfullscreen,\n\tkeyboard_navigation,\n\tquick_info,\n\ttooltip,\n\tundo,\n\tmarker,\n\tmultiselect,\n};","import extensions from \"./ext/extensions_gpl\";\nimport * as base from \"./base_factory/make_instance_web\";\nimport * as scope from \"./utils/global\";\nconst gantt = (scope as any).gantt = base(extensions);\n\nexport default gantt;\nexport { gantt };"],"sourceRoot":""}