You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1 lines
2.0 MiB

{"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/helpers.js","webpack://[name]/./sources/utils/extends.js","webpack://[name]/./sources/utils/eventable.js","webpack://[name]/./sources/core/ui/render/viewport/get_visible_bars_range.js","webpack://[name]/./sources/core/ui/lightbox/controls/base_control.js","webpack://[name]/./sources/core/ui/grid/editors/editors/base.js","webpack://[name]/./sources/utils/env.js","webpack://[name]/./sources/core/ui/layout/cell.js","webpack://[name]/./sources/utils/is_headless.js","webpack://[name]/./sources/utils/placeholder_task.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/render/task_bar_render.js","webpack://[name]/./sources/core/ui/render/viewport/is_bar_in_viewport.js","webpack://[name]/./sources/core/ui/timeline/timeline.js","webpack://[name]/./sources/core/ui/render/viewport/get_grid_row_rectangle.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/layout/layout.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/task_grid_row_resize_render.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/task_rollup_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/date_duration_cache.ts","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/task_grid_row_resize.js","webpack://[name]/./sources/core/ui/row_position_fixed_height.js","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/resource_assignments.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/factory/make_instance_common.js","webpack://[name]/./sources/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","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","obj","iterator","constructor","seed","helpers","plainObjectConstructor","toString","copy","result","isDate","Date","isArray","Array","length","isCustomType","apply","defined","mixin","target","source","force","f","undefined","uid","valueOf","functor","arguments","event","el","handler","capture","addEventListener","attachEvent","eventRemove","removeEventListener","detachEvent","elementPosition","elem","top","left","right","bottom","getBoundingClientRect","box","body","document","docElem","documentElement","parentNode","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","offsetWidth","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","y","Math","round","x","width","height","isVisible","node","display","visibility","getComputedStyle","style","currentStyle","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","a","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","getTargetNode","e","trg","tagName","srcElement","shadowRoot","composedPath","str","String","trim","this","replace","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","element","ShadowRoot","host","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","$position","sort","b","tabIndex","splice","getScrollSize","div","createElement","cssText","appendChild","clientWidth","removeChild","addClassName","removeClassName","split","regEx","RegExp","insertNode","newone","innerHTML","child","firstChild","removeNode","getChildNodes","css","ch","childNodes","len","out","push","toNode","getElementById","querySelector","locateClassName","classname","strict","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","clientX","clientY","isChildOf","parent","hasClass","classList","contains","test","closest","selector","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","console","error","hasShadowParent","getActiveElement","activeElement","getSelection","focusNode","units","second","minute","hour","day","week","month","quarter","year","getFullYear","getMonth","getDate","arrayFilter","arr","callback","filter","checkZeroId","id","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayIncludes","item","includes","arrayFind","find","arrayDifference","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","throttle","timeout","wait","setTimeout","pop","isValidDate","getTime","isStringObject","Function","isNumberObject","isBooleanObject","delay","timer","$cancelTimeout","$pending","args","clearTimeout","$execute","objectKeys","keys","isEventable","replaceValidZeroId","rootId","findBinary","array","prev","low","high","floor","__","EventHost","_silent_mode","listeners","_silentStart","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","addEvent","settings","handlerId","once","originalHandler","removeEvent","clear","eventHost","eventName","thisObject","attachAll","callEvent","eventArguments","handlerName","concat","checkEvent","list","eventId","detachAllEvents","gantt","view","config","datastore","viewport","start","getItemIndexByTopPosition","end","y_end","count","max","min","dummy","log","BaseControl","render","set_value","get_value","focus","BaseEditor","show","column","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","isWindowAwailable","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","utils","eventable","domHelpers","Cell","$container","$parent","$config","headerHeight","$gantt","$domEvents","_createDomEventScope","$id","$name","$factory","destructor","$view","$services","getService","detach","_headerClickHandler","detachAll","cell","scrollTo","html","getNode","padding","resize","_final","$preResize","topCont","topSize","getSize","minWidth","maxWidth","minHeight","maxHeight","setSize","_hide","cellIndex","moveView","hidden","$toHTML","content","header","raw","canCollapse","$fill","init","self","toggle","delegate","collapsed","size","gravity","getContentSize","$lastSize","contentX","contentY","_getBorderSizes","borders","horizontal","vertical","_currentBorders","_borders","_sizeHeader","_sizeContent","_setBorders","cssHash","xLayout","transform","$root","store","placeholder_task","exists","getItem","type","types","__extends","htmlHelpers","_super","SelectControl","sns","getHtmlSelect","options","_dhx_onchange","onchange","_focus","smart_rendering","_smart_render","g","eval","global","globalScope","createDropTargetObject","res","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","dndTaskId","targetTaskId","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","isLegacyRender","columnIndex","scale","viewPort","cellLeftCoord","cellRightCoord","x_end","firstCellIndex","lastCellIndex","getItemTop","getItemHeight","Infinity","_task_default_render","task","_isAllowedUnscheduledTask","_isTaskInTimelineLimits","pos","getItemPosition","cfg","templates","$getTemplates","taskType","getTaskType","getBarHeight","milestone","controlsMargin","padd","item_attribute","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","start_date","end_date","rtl","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","template","itemId","$getConfig","state","getState","getTask","project","isSummaryTask","isSplitTask","open_split_tasks","$open","select_task","isSelectedTask","drag_id","drag_mode","touch_drag","link_source_id","link_target_id","highlight_critical_path","isCriticalTask","link_landing_area","from_id","from_start","link_from_start","to_start","link_to_start","allowDrag","isLinkAllowed","dragClass","_combine_item_class","task_class","styles","side","margin","_get_link_crossing_css","marginStyle","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","_waiAria","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","cssClass","text","abs","cond","leftside","$source","links","start_to_start","$target","finish_to_start","finish_to_finish","_get_conditions","ln","link","getLink","tp","min_date","marginLeft","max_date","marginRight","renderer","type_renderers","defaultRenderer","startCoord","posFromDate","endCoord","ScaleHelper","topPositionMixin","canvasRender","Timeline","$scaleHelper","_posFromDateCache","_timelineDragScroll","container","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","col_width","full_width","trace_x","rendered","attr","linksAttr","bindLinks","link_attribute","layers","_createLayerConfig","tasks","linkLayers","_attachLayers","ext","dragTimeline","attach","dataHeight","scale_height","refresh","backgroundImage","rowStore","getTotalHeight","data_els","contentHeight","contentWidth","scrollHeight","scrollWidth","scrolled","_refreshScales","smart_scales","getViewPort","scales","_scales","_getScaleChunkHtml","taskFilter","expose","$ui","taskBar","hide_bar","taskSplitBar","append","taskRollupBar","taskBg","_taskLayers","_linkLayers","_bindStore","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","update","bar_layer","addLayer","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","getDatastore","linkRenderer","linkLayer","_linkRenderer","staticRender","_staticBgHandler","static_background","staticBgContainer","$task_bg_static","insertBefore","getScale","destroy","_clearLayers","removeLayer","_render_tasks_scales","scales_html","outer_width","_getScales","availWidth","autosize","autosize_min_width","cfgs","prepareConfigs","min_column_width","fromPos","toPos","scale_row_class","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","cells","date","format","date_to_str","startIndex","endIndex","inherit_scale_class","scale_cell_class","cssclass","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","dateValue","columnIndexByDate","assert","wholeCells","partCell","roundPos","_getNextVisibleColumn","columns","ignores","visibleDateIndex","_getPrevVisibleColumn","_getClosestVisibleColumn","days","trace_x_ascending","ignore_x","dateIndex","visibleIndex","visibleDate","transition","trace_index_transition","xLeft","xRight","rowHeight","taskId","isMilestoneRender","task_height","bar_height","task_height_offset","sqrt","primaryScale","getSubScales","sortScales","add","step","_timelineCacheAttached","_resetTopPositionHeight","_unbindStore","_resetHeight","events","mouseEvents","h","gridResize","rowResize","ColumnDnd","Grid","$state","gridAriaAttr","gridAttrString","gridDataAriaAttr","gridDataAttrString","_ganttConfig","reorderColumns","reorder_grid_columns","$grid","gridScaleRowAttrString","$grid_scale","$grid_data","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","_columnDND","_validateColumnWidth","numericWidth","outerWidth","getGridColumns","innerWidth","elasticColumns","grid_elastic_columns","scrollable","_setColumnsWidth","col","min_width","min_grid_column_width","columnsWidth","grid_width","_getGridWidth","_gridCacheAttached","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getColumnIndex","excludeHidden","hiddenIndexShift","getColumn","gridLine","gridTaskRowResizer","resize_rows","_refreshPlaceholderOnStoreUpdate","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","close","open","_getColumnWidth","new_width","max_width","_checkGridColumnMinWidthLimits","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","share","curExtra","_getColsTotalWidth","cols_width","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","items","assignmentsPassed","timegrid","process_resource_assignments","resource_property","$role","getResourceAssignments","$resource_id","$task_id","getTaskBy","assignments","scaleUnit","scaleStep","precalculatedTimes","task_id","firstColumn","currDate","calendar","work_time","getTaskCalendar","cachedTimes","timestamp","calculateResourceLoadFromAssignments","timetable","resource_render_empty_cells","calculateResourceLoad","Layout","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenScrollbars","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","j","$scrollbarRepaint","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","newSizeValue","isGravity","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","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","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","parentVisibility","hide_empty","hideCell","cellView","marginSide","dx","dy","workunit_map_cache_1","workunit_object_cache_1","larger_units_helper_1","LargerUnitsCache","createCacheObject","Map","WorkUnitsMapCache","WorkUnitsObjectCache","IsWorkTimeArgument","ClosestWorkTimeArgument","dir","CalculateEndDateArgument","duration","GetDurationArgument","getWorkHoursArguments","Error","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","arg","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","quickPositionHelperFactory","getItemTopCache","getRowTopCache","getItemHeightCache","totalHeightCache","getItemHeightCacheState","quickPosition","resetCache","newState","getCacheStateTotalHeight","shouldClearHeightCache","getRowTop","canUseSimpleCalculation","all","getIndexRange","itemIndex","getIndexById","parentId","_fillHeightCache","defaultHeight","row_height","eachItem","globalHeight","itemHeightCache","sumHeight","oldState","newValue","getHeight","totalHeight","getVisibleItems","countVisible","current","next","getIdByIndex","DurationFormatterNumeric","canParse","parse","copyLinkIdsArray","linkIds","targetHash","isLinkExists","copyLinkIds","getSubtreeLinks","isTaskExists","eachTask","getSubtreeTasks","PrimaryScaleHelper","_init_tasks_range","scale_offset_minimal","helper","_scale_range_unit","range","start_interval","resolveConfigRange","getSubtaskDates","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","powerArray","DataStore","isPlaceholderTask","TreeDataStore","_branches","pull","$initItem","loadedItem","initItem","existingItem","move","$index","root_id","$parentProperty","parentProperty","$getRootId","val","$openInitially","openInitially","visibleOrder","$create","fullOrder","_searchVisibleOrder","_indexRangeCache","_eachItemMainRangeCache","_getItemsCache","_skip_refresh","getConfig","splitParents","splitItems","taskOpenState","taskVisibility","haveSplitItems","_attachDataChange","_isSplitItem","canOpenSplitTasks","$split_subtask","$expanded_branch","_buildTree","data","setParent","_add_branch","$level","calculateItemLevel","$local_index","_updateOrder","hasChild","loaded","_parseInner","_addItemInner","_move_branch","$rendered_parent","_changeIdInner","oldId","newId","_replace_branch_child","_traverseBranches","branch","_removeItemInner","sid","tindex","source_pid","tbranch","placeholderIds","tid","_moveInner","childId","pid","getSiblings","siblings","previousSibling","clearAll","level","eachParent","_setParentInner","new_pid","silent","_eachItemCached","cache","_eachItemIterate","startId","itemsStack","useCache","buildCache","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","copyOnParse","isSilent","updateItem","removeItem","order","data_size","addItem","changeId","sindex","$destroyed","unselect","alreadySilent","arraysEqual","arr1","arr2","quick","skipFilter","_quick_refresh","_mark_recompute","oldOrder","serialize","filteredOrder","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","updPerSecond","_on_timeout","ceil","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","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","TypeselectControl","typeKey","typeValue","oldOnChange","changeLightboxType","_lightbox_new_type","ConstraintControl","isNonTimedConstraint","constraint_types","ASAP","ALAP","toggleTimeSelect","timeSelects","isNonTimed","getTimePicker","typeSelect","_time_format_order","_eventsInitialized","constraintDate","constraint_date","_fill_lightbox_select","constraintType","constraint_type","getConstraintType","getTimePickerValue","ParentControl","_display","item_id","getTaskByTime","allow_root","root_label","_filter","map_to","tmpDom","newOptions","onselect","replaceChild","DurationControl","getFormatter","formatter","_getStartDate","getElementsByTagName","_getDuration","singleDate","single_date","readonly","ariaAttr","durationInputClass","duration_val","inps","btns","endspan","_calc_date","task_end_date","task_date","_change_duration","onclick","onkeydown","charCode","keyCode","which","constants","KEY_CODES","DOWN","UP","calculateDuration","startDate","endDate","RadioControl","radio","default_value","checked","CheckboxControl","single_value","checkboxes","TimeControl","auto_end_date","_update_lightbox_select","selects","autofix_end","_get_timepicker_step","_getEndDate","TextareaControl","_get_input","TemplateControl","ResourcesControl","getHtmlButtons","buttons","floatRight","_migrate_buttons","getHtmlTimePickerOptions","offset","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","eventElement","_move_while_dnd","_finish_dnd","_dnd_start_lb","gantt_unselectable","lb","now","pageX","pageY","_lb_start","ariaAttrs","date_part","time_format","getTimeFormat","limit_time_select","first_hour","last_hour","setHours","needSetTime","mapOffset","checkbox","resources","constraint","typeselect","_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","newScrollState","scrollView","block_action","allViews","$layout","findTargetView","_locate_css","locate","on_mouse_down","renders","_getTaskLayers","isTaskVisible","task_attribute","cloneNode","cloneTaskRendered","_start_dnd","_touch_drag","remove","on_mouse_up","onDoubleClick","USE_KEY","_defaultScales","TimelineZoom","zoomIn","getCurrentLevel","setLevel","zoomOut","_levels","_activeLevelIndex","getLevels","zoomLevel","_getZoomIndexByName","_setLevel","levelName","Number","_getVisibleDate","scrollPos","_visibleDate","cursorOffset","nextConfig","chartConfig","cursorDate","newPosition","middleDate","_attachWheelEvent","_domEvents","_useKey","_handler","passive","_defaultHandler","timelineOffset","wheelUp","deltaY","wheelDelta","stopPropagation","_setScaleSettings","_setScaleDates","_initialStartDate","_initialEndDate","activeLevelIndex","_mapScales","levels","_minColumnWidth","minColumnWidth","_maxColumnWidth","maxColumnWidth","_widthStep","widthStep","useKey","_initialized","trigger","_stepUp","_stepDown","nextLevel","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","isHeadless","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_line_width","link_arrow_size","_second_column_width","_third_column_width","material","_redefine_lightbox_buttons","getTaskNode","indx","broadway","_config_buttons_left","_config_buttons_right","terrace","meadow","skyblue","_get_skin","skin","href","match","skinset","_configure","resetSkin","getTimeline","getGrid","getVerticalScrollbar","getHorizontalScrollbar","DEFAULT_VALUE","tryCall","method","fallback","getTaskTop","getTaskPosition","getTaskBarHeight","getTaskHeight","roundTaskDates","domAttr","getLinkNode","oldH","oldV","scrollHorizontal","scrollVertical","verticalViews","_getLinkedViews","horizontalViews","commonViews","viewId","$skipSmartRenderOnScroll","newV","newH","showDate","date_x","scroll_to","task_scroll_offset","showTask","leftPos","_scroll_state","x_pos","y_pos","scroll_size","x_inner","y_inner","scrollVer","scrollHor","horState","verState","addTaskLayer","addLinkLayer","initializer","_legacyGridResizerClass","layout","resizers","gridResizer","onCreated","mainTimeline","show_chart","colsWidth","hideGrid","show_grid","grid_limits","ganttContainerWidth","verticalScrollbarWidth","gridOverflow","original_grid_width","skinSettings","_initScrollStateEvents","_getVerticalScrollbar","_getHorizontalScrollbar","oldPos","newPos","$scroll_ver","$scroll_hor","_findGridResizer","gridFirst","_getSiblings","_behind","_front","onInitialized","resizeInfo","initialWidth","prevCellWidth","nextCellWidth","viewCell","limits","newBehindSize","newFrontSize","oldBackSize","oldFrontSize","newBackSize","oldSize","onDestroyed","initLinksDND","_link_landing","_link_target_task","_link_target_task_start","_link_source_task","_link_source_task_start","markerDefaultOffset","scrollDefaultSize","getDndState","DnD","dnd","sensitivity","updates_per_second","mousemoveContainer","getLinePos","shift","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","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","eventTarget","_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","dragProject","drag_project","initialDrag","childDrag","_bulk_dnd","_update_parents","_get_drag_mode","_fix_dnd_scale_time","fixStart","correct_work_time","roundDate","fixEnd","_fix_working_times","getClosestWorkTime","correctTaskWorkTime","_finalize_mouse_up","_fireEvent","_dhx_changed","finalizingBulkMove","moveCount","doFinalize","batchUpdate","modes","dragProperty","selectedTasksIds","selectedTask","_addSubtasksToDragMultiple","params","drag_state","drag_multiple","summaryId","taskDnD","linkDnD","_linksDnD","_tasksDnD","_attachDomEvents","_attachStateProvider","extendDom","_clearDomEvents","_clearStateProvider","_delete_link_handler","question","link_description","confirm_link_deleting","deleteLink","coll","coll_date","scale_step","unregisterProvider","gridToPageCoordinates","gridPos","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","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","checkPlaceholderTask","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","$drop_target","minTop","firstVisibleTaskIndex","firstVisibleTaskId","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","getRowRectangle","getVisibleRange","resize_el","task_grid_row_resizer_attribute","getRectangle","getVisibleCellsRange","isColumnVisible","resourceTimetable","renderBar","renderConnection","prevLevel","getResourceLoad","renderedHistogramCells","renderedHistogramRows","renderedHistogramCapacity","detachRenderedHistogramCell","renderedRow","renderCapacityElement","capacityMatrix","maxCapacity","renderedElement","capacityElement","capacity","colStart","colEnd","bar","connection","renderHistogramLine","renderHistogramCell","histogram_cell_class","histogram_cell_label","fill","histogram_cell_allocated","smartRendering","histogram_cell_capacity","row","checkedColumns","renderedCell","renderedResourceLines","renderResourceLineCell","resource_cell_class","resource_cell_value","detachRenderedResourceLine","aria","date_grid","tree","grid_indent","grid_blank","grid_file","grid_open","grid_folder","align","justifyContent","center","getGlobalTaskIndex","grid_row_class","css_template","isSelected","onrender","rowNode","cellNode","external_render","adapter","isElement","renderElement","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","render_line","innerPos","get_direction","vect","path_builder","point_to","get_points","pt","get_endpoint","xy","shiftX","lineType","get_line_type","forward","sign","milestoneHeight","lines","cssTemplate","link_class","isCriticalLink","endpoint","_render_link_arrow","borderColor","renderedCells","isRendered","detachRenderedCell","getCellTemplate","task_cell_class","warn","timeline_cell_class","renderOneCell","cssTemplateContent","static_background_cells","cellTemplate","show_task_cells","odd","task_row_class","createBaseBarRender","defaultRender","$rollup","isBarInViewport","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","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","modifiers","anyModifier","alt","ctrl","meta","getCommandHandler","onShow","onHide","isChanged","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","getMapping","keyboard_navigation_cells","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","durationEditorFactory","linkedPropertiesProcessor","initConfigs","editor_types","number","predecessor","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","findVisibleIndex","updateTaskDateProperties","ganttHandlers","_itemId","_columnName","_editor","_editorType","_placeholder","batch_update","editorConfig","_getItemValue","oldValue","inline_editors_date_processing","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","moveTask","nextItem","editNextRow","skipReadonly","editPrevRow","ScrollbarCell","SCROLL_MODIFIER_KEYS","_scrollHorizontalHandler","_scrollVerticalHandler","_outerScrollVerticalHandler","_outerScrollHorizontalHandler","_mouseWheelHandler","_isHorizontal","scrollPosition","_isVertical","_initVertical","_initHorizontal","_initMouseWheel","_initLinkedViews","_getRootParent","_eachView","eachCell","_updateLinkedViews","scrollHorizontally","_scrolling","codeScrollLeft","scrollVertically","_wheel_time","_oldLeft","_getScrollSize","outerSize","isHorizontal","linked","scrollProperty","innerSizeProperty","outerProperty","_getScrollOffset","cellScrollSize","nonScrollableSize","outerScroll","innerScroll","scrollSizes","_setScrollSize","toggleVisibility","_getScaleOffset","parentLayout","_oldTop","_checkWheelTarget","targetNode","connectedViews","wheelSpeed","wheelSpeedConfig","wheel_scroll_sensitivity","ff","deltaX","wheelDeltaX","multiplier","deltaMode","wx","wy","horizontalScrollModifier","horizontal_scroll_key","oldLeft","detail","oldTop","ViewCell","childConfig","createView","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","genericViewPortChecker","basicGetRectangle","basicGetRange","task_area_pulls","task_area_renderers","getRenderer","renderMethod","updateMethod","renderCallbackMethod","specializedViewPortChecker","layer_attribute","render_item","layerView","viewConfig","rendererViewPort","dom","useBuffer","remove_item","clear_container","get_visible_range","render_items","buffer","createDocumentFragment","vis","itemsSearch","renderedItems","newElements","update_items","nodesToRemove","renderCalledFor","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","extendSettings","parentSettings","own","$extendedConfig","setPrototypeOf","parentView","parentConfig","parentTemplates","configurable","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","ResourceGrid","ResourceTimeline","ResourceHistogram","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderRollupTaskBar","renderTaskBg","renderLink","gridRenderer","resourceMatrixRenderer","resourceHistogramRenderer","gridTaskRowResizerRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","resourceRow","resourceHistogram","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","buttonAriaAttrs","info","expire","timers","getFirstDefined","values","_createBox","cancel","contentId","message_ok","message_cancel","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","hideAll","popups","modalbox","codeHelpers","_eventRemoveAll","uiApi","$mouseEvents","createLayoutFacade","targetAttribute","_locateHTML","initial_scroll","firstTask","getTaskByIndex","attachedScrollbar","default","month_short","day_full","day_short","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","section_type","column_wbs","column_text","column_start_date","column_add","link_start","link_end","type_task","type_project","type_milestone","weeks","section_constraint","asap","alap","snet","snlt","fnet","fnlt","mso","mfo","resources_filter_placeholder","resources_filter_label","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","check","show_errors","listenWindowResize","resizeDelay","resizeTimeout","container_resize_timeout","container_resize_method","lowlevelResizeWatcher","repaintGantt","previousHeight","previousWidth","getPropertyValue","resizeWatcher","contentWindow","addResizeListener","calculateScaleRange","invalidContainerMessage","validateNode","isHTMLElement","_reinit","_quickRefresh","stores","_getDatastores","dropLayout","rebuildLayout","storeNames","resetLayout","initTemplates","edit","delete","confirm_deleting_title","deleteTask","preserveScroll","preserve_scroll","new_pos","setSizes","getTaskRowNode","prevOffset","time_unit","offsetChanged","activate","_cached_functions","update_if_changed","active","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","parseDate","getSelectedId","getTaskTimingMode","task_type","$no_start","$no_end","$rendered_type","updateTaskTiming","$effective_calendar","getSubtaskInfo","rollup","task_mode","dirty","$calculate_duration","effectiveCalendar","inherit_calendar","taskMode","taskTiming","getSubtaskDuration","updateAll","has_changed","oldStart","oldEnd","upper","lower","colIndex","steps","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","_hasDuration","hasDuration","mergeCalendars","createCalendar","addCalendar","getCalendar","getCalendars","getResourceCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","fixedUnits","hasWorkTime","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","DateDurationCache","_getCacheObject","_cache","unitCache","stepCache","yearCache","durations","endDates","_endDateCacheKey","_durationCacheKey","getEndDate","compute","startDateTimestamp","resultTimestamp","getDuration","endDateTimestamp","getMinutesPerWeek","weekStart","_weekCache","has","_calendar","minutesPerWeek","week_start","getHoursPerDay","set","getMinutesPerMonth","monthStart","_monthCache","minutesPerMonth","nextMonth","subCache","setItem","rawValue","CalendarWorkTimeStrategy","_workingUnitsCache","_largeUnitsCache","_dateDurationCache","_worktime","_cached_timestamps","_cached_timestamps_count","_clearCaches","_getUnitOrder","_resetTimestampCache","_timestamp","UTC","_checkIfWorkingUnit","_is_work_day","_getWorkHours","_is_work_hour","startHour","endHour","_getTimeOfDayStamp","dayEnd","_is_work_minute","checkTime","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","checkFirst","checkLast","isLastStep","_isWorkTime","unitOrder","biggerTimeUnit","_getClosestWorkTimeFuture","_getMinutesPerHour","hourStart","hourEnd","worktimes","_getMinutesPerDay","durationMinutes","durationHours","_getWorkUnitsForRange","getUnitsPerDay","total","_getMinutesBetweenSingleDay","_getIntervalTimestamp","minuteFrom","minuteTo","_getMinutesBetween","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","_getHoursBetween","_setConfig","_parseSettings","haveCustomWeeks","customWeeks","customWeeksRangeStart","customWeeksRangeEnd","customWeeksBoundaries","_parseHours","minCustomRangeStart","maxCustomRangeEnd","customTime","rangeStart","rangeEnd","fromReadable","toReadable","currentWeek","_tryChangeCalendarSettings","backup","JSON","stringify","_arraysEqual","_compareSettings","mySettings","thatSettings","myDays","otherDates","myHours","otherHours","myWeek","thatWeek","getDay","getSeconds","endHours","timestampRanges","timerangeConfig","startMinute","endMinute","durationSeconds","calendarConfig","reset_calendar","isWorkUnit","dateKey","mult","_calculateEndDate","_calculateMinuteEndDate","_subtractMinuteDate","_calculateHourEndDate","_addInterval","stopAction","added","previous","timezoneDifferenceWithPrevious","timezoneDifference","_addHoursUntilDayEnd","rangeHours","addHours","intervalEnd","durationLeft","setMinutes","setSeconds","hoursPerDay","_addMinutesUntilHourEnd","hour_start","rangeMinutes","addMinutes","_subtractMinutesUntilHourStart","hourStartTimestamp","initialDateTimestamp","addedInterval","calculatedDay","daySchedule","minutesInDay","dayStart","iterateFromDayEnd","isWorkHour","workInterval","minutesInHour","_getClosestWorkTimePast","times","lastInterval","_getClosestWorkTime","inputDate","closestFuture","closestPast","_getClosestWorkTimeGeneric","_findClosestTimeInDay","resultDate","fromDayEnd","_getClosestWorkMinute","increment","worktime","exceptions","hasRegularHours","_checkWorkHours","dayConfig","hoursArray","WorkTimeCalendarMerger","_getIntervals","_toHoursArray","intervalsArray","formatHHMM","secondsValue","minutePart","toFixed","_intersectHourRanges","baseArray","overridesArray","base","_mergeAdjacentIntervals","_mergeHoursConfig","firstHours","secondHours","merge","firstConfig","secondConfig","mergedSettings","firstDate","secondDate","CalendarMergeHelper","legacyResourceCalendarConfig","dynamicResourceCalendars","CalendarManager","_calendars","_legacyConfig","_isLegacyConfig","createDefaultCalendars","_convertWorkTimeSettings","calendars","mergeHelper","_createCalendarFromConfig","apiCore","preparedConfig","parentCalendar","defaults","fulltime","_getOwnCalendar","calendar_property","dynamic_resource_calendars","calendarsConfig","taskObject","groupMode","group_mode","currentTask","isCalendar","restoreConfigCalendars","possibleCalendar","every","worktimeFacadeFactory","facade","jsonParseError","load","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","_task_grid_row_resize","row_before_start","row_id","row_after_start","row_drag_move","pointerPosition","markerStartPosition","marker_height","minPointerPosition","min_task_grid_row_height","row_drag_end","oldItemHeight","finalHeight","cachedRowHeight","canUseSimpleCalc","_getRowHeight","_refreshState","globalRowHeight","visibleColumns","loadedBranches","oldHasChildren","branch_loading","branch_loading_property","needLoading","requestData","encodeURIComponent","LinkFormatterSimple","_getWBSCode","_linkReg","linkPart","exec","_findSource","_gantt","pred","getWBSCode","reqTemplate","wbs","getTaskByWBSCode","DurationFormatter","LinkFormatter","enter","callIfEnabled","auto_types","checkTaskType","changedTypes","targetType","getTaskTypeToUpdate","$needsUpdate","updateParentTypes","getUpdatedTypes","applyChanges","delTaskParent","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","updateTaskType","insertPlaceholder","placeholders","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","isPlaceholderLink","action","commands","entity","resourceAssignmentsProperty","resource_assignment_store","resourceAssignmentFormats","auto","singleValue","valueArray","resourceValueArray","assignmentsArray","resourceAssignmentFormat","assignmentModes","fixedDates","fixedDuration","initAssignmentFields","initDelay","timing","_assignmentTimeFromTask","resourceAssignmentsStore","createDatastore","_makeAssignmentsFromTask","detectFormat","usedIds","defaultMode","_updateTaskBack","_assignAssignments","getTaskAssignments","_loadAssignmentsFromTask","taskAssignments","_syncAssignments","storeAssignments","taskValues","assignmentsStoreValues","inBoth","inTaskNotInStore","inStoreNotInTask","taskOwner","ownerId","foundOwnerAssignment","taskSearch","storeSearch","processedIds","inTask","inStore","diffAssignments","ignoreFields","assignmentHasChanged","updateAssignment","_syncOnTaskUpdate","totalAssignments","needUpdate","needUpdateFor","assignmentsHash","deleteIds","ids","idsSearch","_syncOnTaskDelete","resourceAssignmentsCache","resourceTaskAssignmentsCache","taskAssignmentsCache","searchTaskId","resourceTaskCacheKey","updateTaskAssignments","createResourceMethods","singleResourceCacheBuilt","falsyValuePrefix","random","resourceHashFunction","getCacheKey","resourceIds","getResourceTasks","matchingResources","resourceValue","selectAssignments","owners","propertyValue","filterResourceTasks","resource_store","_needRecalc","_isRecalcNeeded","_isGroupSort","_calcWBS","$virtual","$wbs","_setWBSCode","getByWBSCode","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","SimpleStorage","_storage","storeItem","getStoredItem","dp","getUserData","userdata","setUserData","_change_id","_ganttMode","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","_routerParametersFormat","_invalid","messages","inserted","deleted","invalid","invalid_cell","enableUTFencoding","headers","_serializeAsJson","_router","escape","_utf","getSyncState","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","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","urlParams","preprocessedData","query","taskState_1","taskAction","ganttMode_1","_onResolvedCreateUpdate_1","actionPromise","then","catch","hasOne","_prepareDate","_prepareArray","traversedObjects","_prepareObject","rawItem","processedItem","_prepareDataItem","dataItem","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","allData","loadedRanges","layerData","skipRepaint","refreshId","selectedId","deleteItem","_unselect","subItem","getLinkCount","getTaskCount","getVisibleTaskCount","startTask","calculateTaskLevel","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","$StoreType","open_tree_initially","deepcopy_on_parse","storeAccessName","dropService","storeList","refresh_links","refreshLinks","hasSplitParent","_clear_data","unselectTask","facadeFactory","originalTask","checkLinkedTaskVisibility","sync_link","sourceTask","sync_link_delete","sync_links","mapEvents","mapFrom","sourceEvent","targetEvent","taskLinks","existingLink","sourceMatch","targetMatch","typeMatch","show_tasks_outside_timescale","changedTask","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","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","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","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","isIdentifier","caller","classString","TypeError","ensureMethod","namedGetter","indexedGetter","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","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","_warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","reject","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","_propagateFromFunction","monitoring","_boundValueFunction","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","inherits","stackToIndex","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","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","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","limit","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","errors","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","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","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","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","copyDomEvent","altKey","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","eventParams","timeStamp","original_target","dragStart","traceDragEvents","domElement","inputMethod","mousemove","dragMove","dragScroll","limited_mousemove","dndActive","mouseup","dragEnd","checkPositionChange","diff_x","diff_y","initDnDMarker","backupEventTarget","getEvent","backup_element","elementFromPoint","cspVersion","utc","to_fixed","getUTCMonth","getUTCFullYear","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCISOWeek","getISOWeek","mask","month_short_hash","month_full_hash","fastVersion","dateToStrFn","getWeek","splt","strToDateFn","cspCompliantVersion","canUseCsp","useCsp","csp","cspAutoCheck","time_part","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","minute_start","getMilliseconds","setMilliseconds","_add_days","modifiedDate","inc","originalDate","incCondition","getHoursCondition","getDateCondition","ndate","setYear","add_quarter","num","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","convert_to_utc","createConfig","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","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","activePlugins","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","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","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","focusChanged","compareTo","keptFocus","blur","keyDownHandler","isModal","ganttNode","shortcuts","getCommandFromEvent","findHandler","doAction","awaitsFocus","_delay","clearDelay","modalsStack","afterPopup","startModal","trapFocus","endModal","currentTarget","isTopModal","traceLightbox","focusElement","_compose","cellElement","nextElement","prevTask","moveTo","nextTask","home","pagedown","pageup","bindAll","KeyNavNode","viewWidth","viewHeight","scrollPositionX","scrollPositionY","attachedScrollbarHorizontal","scrollbarHorizontal","attachedScrollbarVertical","scrollbarVertical","scrollGrid","shift+down","shift+up","shift+right","shift+left","space","ctrl+left","ctrl+right","ctrl+enter","taskRow","enter, space","EventHandler","canStringifyThis","canStringifyThat","eventFacade","$eventAttached","alt+left","alt+right","alt+up","alt+down","ctrl+z","ctrl+r","currentFocus","currentIndex","lastItem","firstItem","getHash","shortcut","unbind","initKeys","createCommand","expr","getExpressions","words","getWords","commandKeys","specialKeys","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","_getTaskPositionByTop","_view","_viewPort","_endPoint","draw","singleRow","_useRequestAnimationFrame","useRequestAnimationFrame","getElement","setStart","startPoint","_startDate","setEnd","endPoint","_endDate","_positionPoint","absolute","setPosition","positionPoint","tasksByTime","tasksByIndex","_getTasksByTop","getInBounds","startValue","endValue","selectedRegion","_originPosition","_restoreOriginPosition","scheduledDndCoordinates","_getCoordinates","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, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"dhtmlxgantt\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dhtmlxgantt\"] = factory();\n\telse\n\t\troot[\"dhtmlxgantt\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/codebase/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 252);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"./helpers\");\n\nvar plainObjectConstructor = {}.constructor.toString();\n\nfunction isCustomType(object) {\n var constructorString = object.constructor.toString();\n return constructorString !== plainObjectConstructor;\n}\n\nfunction copy(object) {\n var i, result; // iterator, types array, result\n\n if (object && _typeof(object) == \"object\") {\n switch (true) {\n case helpers.isDate(object):\n result = new Date(object);\n break;\n\n case helpers.isArray(object):\n result = new Array(object.length);\n\n for (i = 0; i < object.length; i++) {\n result[i] = copy(object[i]);\n }\n\n break;\n\n /*\t\tcase (helpers.isStringObject(object)):\n \t\t\tresult = new String(object);\n \t\t\tbreak;\n \t\tcase (helpers.isNumberObject(object)):\n \t\t\tresult = new Number(object);\n \t\t\tbreak;\n \t\tcase (helpers.isBooleanObject(object)):\n \t\t\tresult = new Boolean(object);\n \t\t\tbreak;*/\n\n default:\n if (isCustomType(object)) {\n result = Object.create(object);\n } else {\n result = {};\n }\n\n for (i in object) {\n if (Object.prototype.hasOwnProperty.apply(object, [i])) result[i] = copy(object[i]);\n }\n\n break;\n }\n }\n\n return result || object;\n}\n\nfunction mixin(target, source, force) {\n for (var f in source) {\n if (target[f] === undefined || force) target[f] = source[f];\n }\n\n return target;\n}\n\nfunction defined(obj) {\n return typeof obj != \"undefined\";\n}\n\nvar seed;\n\nfunction uid() {\n if (!seed) seed = new Date().valueOf();\n seed++;\n return seed;\n} //creates function with specified \"this\" pointer\n\n\nfunction bind(functor, object) {\n if (functor.bind) return functor.bind(object);else return function () {\n return functor.apply(object, arguments);\n };\n}\n\nfunction event(el, event, handler, capture) {\n if (el.addEventListener) el.addEventListener(event, handler, capture === undefined ? false : capture);else if (el.attachEvent) el.attachEvent(\"on\" + event, handler);\n}\n\nfunction eventRemove(el, event, handler, capture) {\n if (el.removeEventListener) el.removeEventListener(event, handler, capture === undefined ? false : capture);else if (el.detachEvent) el.detachEvent(\"on\" + event, handler);\n}\n\nmodule.exports = {\n copy: copy,\n defined: defined,\n mixin: mixin,\n uid: uid,\n bind: bind,\n event: event,\n eventRemove: eventRemove\n};","//returns position of html element on the page\nfunction elementPosition(elem) {\n var top = 0,\n left = 0,\n right = 0,\n bottom = 0;\n\n if (elem.getBoundingClientRect) {\n //HTML5 method\n var box = elem.getBoundingClientRect();\n var body = document.body;\n var docElem = document.documentElement || document.body.parentNode || document.body;\n var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n var clientTop = docElem.clientTop || body.clientTop || 0;\n var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n top = box.top + scrollTop - clientTop;\n left = box.left + scrollLeft - clientLeft;\n right = document.body.offsetWidth - box.right;\n bottom = document.body.offsetHeight - box.bottom;\n } else {\n //fallback to naive approach\n while (elem) {\n top = top + parseInt(elem.offsetTop, 10);\n left = left + parseInt(elem.offsetLeft, 10);\n elem = elem.offsetParent;\n }\n\n right = document.body.offsetWidth - elem.offsetWidth - left;\n bottom = document.body.offsetHeight - elem.offsetHeight - top;\n }\n\n return {\n y: Math.round(top),\n x: Math.round(left),\n width: elem.offsetWidth,\n height: elem.offsetHeight,\n right: Math.round(right),\n bottom: Math.round(bottom)\n };\n}\n\nfunction isVisible(node) {\n var display = false,\n visibility = false;\n\n if (window.getComputedStyle) {\n var style = window.getComputedStyle(node, null);\n display = style[\"display\"];\n visibility = style[\"visibility\"];\n } else if (node.currentStyle) {\n display = node.currentStyle[\"display\"];\n visibility = node.currentStyle[\"visibility\"];\n }\n\n return display != \"none\" && visibility != \"hidden\";\n}\n\nfunction hasNonNegativeTabIndex(node) {\n return !isNaN(node.getAttribute(\"tabindex\")) && node.getAttribute(\"tabindex\") * 1 >= 0;\n}\n\nfunction hasHref(node) {\n var canHaveHref = {\n \"a\": true,\n \"area\": true\n };\n\n if (canHaveHref[node.nodeName.loLowerCase()]) {\n return !!node.getAttribute(\"href\");\n }\n\n return true;\n}\n\nfunction isEnabled(node) {\n var canDisable = {\n \"input\": true,\n \"select\": true,\n \"textarea\": true,\n \"button\": true,\n \"object\": true\n };\n\n if (canDisable[node.nodeName.toLowerCase()]) {\n return !node.hasAttribute(\"disabled\");\n }\n\n return true;\n}\n\nfunction getFocusableNodes(root) {\n var nodes = root.querySelectorAll([\"a[href]\", \"area[href]\", \"input\", \"select\", \"textarea\", \"button\", \"iframe\", \"object\", \"embed\", \"[tabindex]\", \"[contenteditable]\"].join(\", \"));\n var nodesArray = Array.prototype.slice.call(nodes, 0);\n\n for (var i = 0; i < nodesArray.length; i++) {\n nodesArray[i].$position = i; // we remember original nodes order, \n // so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \n // since some browsers do unstable sort\n } // use tabindex to sort focusable nodes\n\n\n nodesArray.sort(function (a, b) {\n if (a.tabIndex === 0 && b.tabIndex !== 0) {\n return 1;\n }\n\n if (a.tabIndex !== 0 && b.tabIndex === 0) {\n return -1;\n }\n\n if (a.tabIndex === b.tabIndex) {\n // ensure we do stable sort\n return a.$position - b.$position;\n }\n\n if (a.tabIndex < b.tabIndex) {\n return -1;\n }\n\n return 1;\n });\n\n for (var i = 0; i < nodesArray.length; i++) {\n var node = nodesArray[i];\n var isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\n if (!isValid) {\n nodesArray.splice(i, 1);\n i--;\n }\n }\n\n return nodesArray;\n}\n\nfunction getScrollSize() {\n var div = document.createElement(\"div\");\n div.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\n document.body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return width;\n}\n\nfunction getClassName(node) {\n if (!node) return \"\";\n var className = node.className || \"\";\n if (className.baseVal) //'className' exist but not a string - IE svg element in DOM\n className = className.baseVal;\n if (!className.indexOf) className = \"\";\n return _trimString(className);\n}\n\nfunction addClassName(node, className) {\n if (className && node.className.indexOf(className) === -1) {\n node.className += \" \" + className;\n }\n}\n\nfunction removeClassName(node, name) {\n name = name.split(\" \");\n\n for (var i = 0; i < name.length; i++) {\n var regEx = new RegExp(\"\\\\s?\\\\b\" + name[i] + \"\\\\b(?![-_.])\", \"\");\n node.className = node.className.replace(regEx, \"\");\n }\n}\n\nfunction hasClass(element, className) {\n if ('classList' in element) {\n return element.classList.contains(className);\n } else {\n return new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\n }\n}\n\nfunction toNode(node) {\n if (typeof node === \"string\") {\n return document.getElementById(node) || document.querySelector(node) || document.body;\n }\n\n return node || document.body;\n}\n\nvar _slave;\n\nfunction insert(node, newone) {\n if (!_slave) {\n _slave = document.createElement(\"div\");\n }\n\n _slave.innerHTML = newone;\n var child = _slave.firstChild;\n node.appendChild(child);\n return child;\n}\n\nfunction remove(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\nfunction getChildren(node, css) {\n var ch = node.childNodes;\n var len = ch.length;\n var out = [];\n\n for (var i = 0; i < len; i++) {\n var obj = ch[i];\n\n if (obj.className && obj.className.indexOf(css) !== -1) {\n out.push(obj);\n }\n }\n\n return out;\n}\n\nfunction getTargetNode(e) {\n var trg;\n if (e.tagName) trg = e;else {\n e = e || window.event;\n trg = e.target || e.srcElement;\n\n if (trg.shadowRoot && e.composedPath) {\n trg = e.composedPath()[0];\n }\n }\n return trg;\n}\n\nfunction locateAttribute(e, attribute) {\n if (!attribute) return;\n var trg = getTargetNode(e);\n\n while (trg) {\n if (trg.getAttribute) {\n //text nodes has not getAttribute\n var test = trg.getAttribute(attribute);\n if (test) return trg;\n }\n\n trg = trg.parentNode;\n }\n\n return null;\n}\n\nfunction _trimString(str) {\n var func = String.prototype.trim || function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n };\n\n return func.apply(str);\n}\n\nfunction locateClassName(e, classname, strict) {\n var trg = getTargetNode(e);\n var css = \"\";\n if (strict === undefined) strict = true;\n\n while (trg) {\n css = getClassName(trg);\n\n if (css) {\n var ind = css.indexOf(classname);\n\n if (ind >= 0) {\n if (!strict) return trg; //check that we have exact match\n\n var left = ind === 0 || !_trimString(css.charAt(ind - 1));\n var right = ind + classname.length >= css.length || !_trimString(css.charAt(ind + classname.length));\n if (left && right) return trg;\n }\n }\n\n trg = trg.parentNode;\n }\n\n return null;\n}\n/*\nevent position relatively to DOM element\n */\n\n\nfunction getRelativeEventPosition(ev, node) {\n var d = document.documentElement;\n var box = elementPosition(node);\n return {\n x: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\n y: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\n };\n}\n\nfunction isChildOf(child, parent) {\n if (!child || !parent) {\n return false;\n }\n\n while (child && child != parent) {\n child = child.parentNode;\n }\n\n return child === parent;\n}\n\nfunction closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n } else if (element.matches || element.msMatchesSelector || element.webkitMatchesSelector) {\n var el = element;\n if (!document.documentElement.contains(el)) return null;\n\n do {\n var method = el.matches || el.msMatchesSelector || el.webkitMatchesSelector;\n if (method.call(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Your browser is not supported\");\n return null;\n }\n}\n\nfunction isShadowDomSupported() {\n return document.head.createShadowRoot || document.head.attachShadow;\n}\n/**\n * Returns element that has the browser focus, or null if no element has focus.\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\n * @returns HTMLElement\n */\n\n\nfunction getActiveElement() {\n var activeElement = document.activeElement;\n\n if (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n if (activeElement === document.body && document.getSelection) {\n activeElement = document.getSelection().focusNode || document.body;\n }\n\n return activeElement;\n}\n/**\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\n * @param {HTMLElement} element \n * @returns HTMLElement\n */\n\n\nfunction getRootNode(element) {\n if (!element) {\n return document.body;\n }\n\n if (!isShadowDomSupported()) {\n return document.body;\n }\n\n while (element.parentNode && (element = element.parentNode)) {\n if (element instanceof ShadowRoot) {\n return element.host;\n }\n }\n\n return document.body;\n}\n\nfunction hasShadowParent(element) {\n return !!getRootNode(element);\n}\n\nmodule.exports = {\n getNodePosition: elementPosition,\n getFocusableNodes: getFocusableNodes,\n getScrollSize: getScrollSize,\n getClassName: getClassName,\n addClassName: addClassName,\n removeClassName: removeClassName,\n insertNode: insert,\n removeNode: remove,\n getChildNodes: getChildren,\n toNode: toNode,\n locateClassName: locateClassName,\n locateAttribute: locateAttribute,\n getTargetNode: getTargetNode,\n getRelativeEventPosition: getRelativeEventPosition,\n isChildOf: isChildOf,\n hasClass: hasClass,\n closest: closest,\n getRootNode: getRootNode,\n hasShadowParent: hasShadowParent,\n isShadowDomSupported: isShadowDomSupported,\n getActiveElement: getActiveElement\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar units = {\n \"second\": 1,\n \"minute\": 60,\n \"hour\": 60 * 60,\n \"day\": 60 * 60 * 24,\n \"week\": 60 * 60 * 24 * 7,\n \"month\": 60 * 60 * 24 * 30,\n \"quarter\": 60 * 60 * 24 * 30 * 3,\n \"year\": 60 * 60 * 24 * 365\n};\n\nfunction getSecondsInUnit(unit) {\n return units[unit] || units.hour;\n}\n\nfunction forEach(arr, callback) {\n if (arr.forEach) {\n arr.forEach(callback);\n } else {\n var workArray = arr.slice();\n\n for (var i = 0; i < workArray.length; i++) {\n callback(workArray[i], i);\n }\n }\n}\n\nfunction arrayMap(arr, callback) {\n if (arr.map) {\n return arr.map(callback);\n } else {\n var workArray = arr.slice();\n var resArray = [];\n\n for (var i = 0; i < workArray.length; i++) {\n resArray.push(callback(workArray[i], i));\n }\n\n return resArray;\n }\n}\n\nfunction arrayFind(arr, callback) {\n if (arr.find) {\n return arr.find(callback);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i)) {\n return arr[i];\n }\n }\n }\n}\n\nfunction arrayIncludes(arr, item) {\n if (arr.includes) {\n return arr.includes(item);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === item) {\n return true;\n }\n }\n\n return false;\n }\n} // iframe-safe array type check instead of using instanceof\n\n\nfunction isArray(obj) {\n if (Array.isArray) {\n return Array.isArray(obj);\n } else {\n // close enough\n return obj && obj.length !== undefined && obj.pop && obj.push;\n }\n} // non-primitive string object, e.g. new String(\"abc\")\n\n\nfunction isStringObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n} // non-primitive number object, e.g. new Number(5)\n\n\nfunction isNumberObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n} // non-primitive number object, e.g. new Boolean(true)\n\n\nfunction isBooleanObject(obj) {\n return obj && _typeof(obj) === \"object\" && Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction isDate(obj) {\n if (obj && _typeof(obj) === \"object\") {\n return !!(obj.getFullYear && obj.getMonth && obj.getDate);\n } else {\n return false;\n }\n}\n\nfunction isValidDate(obj) {\n return isDate(obj) && !isNaN(obj.getTime());\n}\n\nfunction arrayFilter(arr, callback) {\n var result = [];\n\n if (arr.filter) {\n return arr.filter(callback);\n } else {\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i)) {\n result[result.length] = arr[i];\n }\n }\n\n return result;\n }\n}\n\nfunction hashToArray(hash) {\n var result = [];\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n result.push(hash[key]);\n }\n }\n\n return result;\n}\n\nfunction arraySome(arr, callback) {\n if (arr.length === 0) return false;\n\n for (var i = 0; i < arr.length; i++) {\n if (callback(arr[i], i, arr)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction arrayDifference(arr, callback) {\n return arrayFilter(arr, function (item, i) {\n return !callback(item, i);\n });\n}\n\nfunction throttle(callback, timeout) {\n var wait = false;\n return function () {\n if (!wait) {\n callback.apply(null, arguments);\n wait = true;\n setTimeout(function () {\n wait = false;\n }, timeout);\n }\n };\n}\n\nfunction delay(callback, timeout) {\n var timer;\n\n var result = function result() {\n result.$cancelTimeout();\n result.$pending = true;\n var args = Array.prototype.slice.call(arguments);\n timer = setTimeout(function () {\n callback.apply(this, args);\n result.$pending = false;\n }, timeout);\n };\n\n result.$pending = false;\n\n result.$cancelTimeout = function () {\n clearTimeout(timer);\n result.$pending = false;\n };\n\n result.$execute = function () {\n var args = Array.prototype.slice.call(arguments);\n callback.apply(this, args);\n result.$cancelTimeout();\n };\n\n return result;\n}\n\nfunction sortArrayOfHash(arr, field, desc) {\n var compare = function compare(a, b) {\n return a < b;\n };\n\n arr.sort(function (a, b) {\n if (a[field] === b[field]) return 0;\n return desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\n });\n}\n\nfunction objectKeys(obj) {\n if (Object.keys) {\n return Object.keys(obj);\n }\n\n var result = [];\n var key;\n\n for (key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nfunction isEventable(obj) {\n return obj.attachEvent && obj.detachEvent;\n} //GS-1090: A task should be able to have the id = 0\n\n\nfunction replaceValidZeroId(id, rootId) {\n if (checkZeroId(id) && !checkZeroId(rootId)) {\n id = \"0\";\n }\n\n return id;\n}\n\nfunction checkZeroId(id) {\n if (id === 0) {\n return true;\n }\n\n return false;\n}\n\nfunction findBinary(array, target) {\n // modified binary search, target value not exactly match array elements, looking for closest one\n var low = 0,\n high = array.length - 1,\n i,\n item,\n prev;\n\n while (low <= high) {\n i = Math.floor((low + high) / 2);\n item = +array[i];\n prev = +array[i - 1];\n\n if (item < target) {\n low = i + 1;\n continue;\n }\n\n if (item > target) {\n if (!(!isNaN(prev) && prev < target)) {\n high = i - 1;\n continue;\n } else {\n // if target is between 'i' and 'i-1' return 'i - 1'\n return i - 1;\n }\n }\n\n while (+array[i] == +array[i + 1]) {\n i++;\n }\n\n return i;\n }\n\n return array.length - 1;\n}\n\nmodule.exports = {\n getSecondsInUnit: getSecondsInUnit,\n forEach: forEach,\n arrayMap: arrayMap,\n arrayIncludes: arrayIncludes,\n arrayFind: arrayFind,\n arrayFilter: arrayFilter,\n arrayDifference: arrayDifference,\n arraySome: arraySome,\n hashToArray: hashToArray,\n sortArrayOfHash: sortArrayOfHash,\n throttle: throttle,\n isArray: isArray,\n isDate: isDate,\n isValidDate: isValidDate,\n isStringObject: isStringObject,\n isNumberObject: isNumberObject,\n isBooleanObject: isBooleanObject,\n delay: delay,\n objectKeys: objectKeys,\n isEventable: isEventable,\n replaceValidZeroId: replaceValidZeroId,\n checkZeroId: checkZeroId,\n findBinary: findBinary\n};","module.exports = function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};","var EventHost = function EventHost() {\n this._silent_mode = false;\n this.listeners = {};\n};\n\nEventHost.prototype = {\n _silentStart: function _silentStart() {\n this._silent_mode = true;\n },\n _silentEnd: function _silentEnd() {\n this._silent_mode = false;\n }\n};\n\nvar createEventStorage = function createEventStorage(obj) {\n var handlers = {};\n var index = 0;\n\n var eventStorage = function eventStorage() {\n var combinedResult = true;\n\n for (var i in handlers) {\n var handlerResult = handlers[i].apply(obj, arguments);\n combinedResult = combinedResult && handlerResult;\n }\n\n return combinedResult;\n };\n\n eventStorage.addEvent = function (handler, settings) {\n if (typeof handler == \"function\") {\n var handlerId;\n\n if (settings && settings.id) {\n handlerId = settings.id;\n } else {\n handlerId = index;\n index++;\n }\n\n if (settings && settings.once) {\n var originalHandler = handler;\n\n handler = function handler() {\n originalHandler();\n eventStorage.removeEvent(handlerId);\n };\n }\n\n handlers[handlerId] = handler;\n return handlerId;\n }\n\n return false;\n };\n\n eventStorage.removeEvent = function (id) {\n delete handlers[id];\n };\n\n eventStorage.clear = function () {\n handlers = {};\n };\n\n return eventStorage;\n};\n\nfunction makeEventable(obj) {\n var eventHost = new EventHost();\n\n obj.attachEvent = function (eventName, handler, settings) {\n eventName = 'ev_' + eventName.toLowerCase();\n\n if (!eventHost.listeners[eventName]) {\n eventHost.listeners[eventName] = createEventStorage(this);\n }\n\n if (settings && settings.thisObject) {\n handler = handler.bind(settings.thisObject);\n }\n\n var innerId = eventHost.listeners[eventName].addEvent(handler, settings);\n var handlerId = eventName + ':' + innerId; //return ID (ev_eventname:1)\n\n if (settings && settings.id) {\n handlerId = settings.id;\n }\n\n return handlerId;\n };\n\n obj.attachAll = function (callback) {\n this.attachEvent('listen_all', callback);\n };\n\n obj.callEvent = function (name, eventArguments) {\n if (eventHost._silent_mode) return true;\n var handlerName = 'ev_' + name.toLowerCase();\n var listeners = eventHost.listeners;\n\n if (listeners['ev_listen_all']) {\n listeners['ev_listen_all'].apply(this, [name].concat(eventArguments));\n }\n\n if (listeners[handlerName]) return listeners[handlerName].apply(this, eventArguments);\n return true;\n };\n\n obj.checkEvent = function (name) {\n var listeners = eventHost.listeners;\n return !!listeners['ev_' + name.toLowerCase()];\n };\n\n obj.detachEvent = function (id) {\n if (id) {\n var listeners = eventHost.listeners;\n\n for (var i in listeners) {\n listeners[i].removeEvent(id); //remove event\n }\n\n var list = id.split(':'); //get EventName and ID\n\n var listeners = eventHost.listeners;\n\n if (list.length === 2) {\n var eventName = list[0];\n var eventId = list[1];\n\n if (listeners[eventName]) {\n listeners[eventName].removeEvent(eventId); //remove event\n }\n }\n }\n };\n\n obj.detachAllEvents = function () {\n for (var name in eventHost.listeners) {\n eventHost.listeners[name].clear();\n }\n };\n}\n\nmodule.exports = makeEventable;","module.exports = function getVisibleTasksRange(gantt, view, config, datastore, viewport) {\n var buffer = 1;\n var start = view.getItemIndexByTopPosition(viewport.y) || 0;\n var end = view.getItemIndexByTopPosition(viewport.y_end) || datastore.count();\n var indexStart = Math.max(0, start - buffer);\n var indexEnd = Math.min(datastore.count(), end + buffer);\n return {\n start: indexStart,\n end: indexEnd\n };\n};","function dummy() {\n // eslint-disable-next-line\n console.log(\"Method is not implemented.\");\n}\n\nfunction BaseControl() {} // base methods will be runned in gantt context\n\n\nBaseControl.prototype.render = dummy; // arguments: sns\n\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\n\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\n\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function (gantt) {\n // we could send current instance of gantt to module\n return BaseControl;\n};","module.exports = function (gantt) {\n var BaseEditor = function BaseEditor() {};\n\n BaseEditor.prototype = {\n show: function show(id, column, config, placeholder) {},\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = value;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_changed: function is_changed(value, id, column, node) {\n var currentValue = this.get_value(id, column, node);\n\n if (currentValue && value && currentValue.valueOf && value.valueOf) {\n return currentValue.valueOf() != value.valueOf();\n } else {\n return currentValue != value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n return true;\n },\n save: function save(id, column, node) {},\n get_input: function get_input(node) {\n return node.querySelector(\"input\");\n },\n focus: function focus(node) {\n var input = this.get_input(node);\n\n if (!input) {\n return;\n }\n\n if (input.focus) {\n input.focus();\n }\n\n if (input.select) {\n input.select();\n }\n }\n };\n return BaseEditor;\n};","/* eslint-disable no-restricted-globals */\nvar isWindowAwailable = typeof window !== \"undefined\";\n/* eslint-enable no-restricted-globals */\n\nvar env = {\n isIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n isIE6: isWindowAwailable && !XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0,\n isIE7: isWindowAwailable && navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0,\n isIE8: isWindowAwailable && navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0,\n isOpera: isWindowAwailable && navigator.userAgent.indexOf(\"Opera\") >= 0,\n isChrome: isWindowAwailable && navigator.userAgent.indexOf(\"Chrome\") >= 0,\n isKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n isFF: isWindowAwailable && navigator.userAgent.indexOf(\"Firefox\") >= 0,\n isIPad: isWindowAwailable && navigator.userAgent.search(/iPad/gi) >= 0,\n isEdge: isWindowAwailable && navigator.userAgent.indexOf(\"Edge\") != -1,\n isNode: !isWindowAwailable || typeof navigator == \"undefined\"\n};\nmodule.exports = env;","var utils = require(\"../../../utils/utils\"),\n eventable = require(\"../../../utils/eventable\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar Cell = function () {\n \"use strict\";\n\n function Cell(parent, config, factory, gantt) {\n if (parent) {\n this.$container = domHelpers.toNode(parent);\n this.$parent = parent;\n } // save config\n\n\n this.$config = utils.mixin(config, {\n headerHeight: 33\n });\n this.$gantt = gantt;\n this.$domEvents = gantt._createDomEventScope(); // set id\n\n this.$id = config.id || \"c\" + utils.uid();\n this.$name = \"cell\";\n this.$factory = factory;\n eventable(this);\n }\n\n Cell.prototype.destructor = function () {\n this.$parent = this.$container = this.$view = null;\n var mouse = this.$gantt.$services.getService(\"mouseEvents\");\n mouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n this.$domEvents.detachAll();\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n };\n\n Cell.prototype.cell = function (id) {\n return null;\n };\n\n Cell.prototype.scrollTo = function (left, top) {\n //GS-333 Add a way to scroll the HTML views:\n var cell = this.$view;\n if (this.$config.html) cell = this.$view.firstChild;\n\n if (left * 1 == left) {\n cell.scrollLeft = left;\n }\n\n if (top * 1 == top) {\n cell.scrollTop = top;\n }\n };\n\n Cell.prototype.clear = function () {\n this.getNode().innerHTML = \"\";\n this.getNode().className = \"gantt_layout_content\";\n this.getNode().style.padding = \"0\";\n };\n\n Cell.prototype.resize = function (_final) {\n if (this.$parent) {\n return this.$parent.resize(_final);\n }\n\n if (_final === false) {\n this.$preResize = true;\n }\n\n var topCont = this.$container;\n var x = topCont.offsetWidth;\n var y = topCont.offsetHeight;\n var topSize = this.getSize();\n\n if (topCont === document.body) {\n x = document.body.offsetWidth;\n y = document.body.offsetHeight;\n }\n\n if (x < topSize.minWidth) {\n x = topSize.minWidth;\n }\n\n if (x > topSize.maxWidth) {\n x = topSize.maxWidth;\n }\n\n if (y < topSize.minHeight) {\n y = topSize.minHeight;\n }\n\n if (y > topSize.maxHeight) {\n y = topSize.maxHeight;\n }\n\n this.setSize(x, y);\n\n if (!this.$preResize) {//\tself.callEvent(\"onResize\", [x, y]);\n }\n\n this.$preResize = false;\n };\n\n Cell.prototype.hide = function () {\n this._hide(true);\n\n this.resize();\n };\n\n Cell.prototype.show = function (force) {\n this._hide(false);\n\n if (force && this.$parent) {\n this.$parent.show();\n }\n\n this.resize();\n };\n\n Cell.prototype._hide = function (mode) {\n if (mode === true && this.$view.parentNode) {\n this.$view.parentNode.removeChild(this.$view);\n } else if (mode === false && !this.$view.parentNode) {\n var index = this.$parent.cellIndex(this.$id);\n this.$parent.moveView(this, index);\n }\n\n this.$config.hidden = mode;\n };\n\n Cell.prototype.$toHTML = function (content, css) {\n if (content === void 0) {\n content = \"\";\n }\n\n css = [css || \"\", this.$config.css || \"\"].join(\" \");\n var obj = this.$config;\n var header = \"\";\n\n if (obj.raw) {\n content = typeof obj.raw === \"string\" ? obj.raw : \"\";\n } else {\n if (!content) {\n content = \"<div class='gantt_layout_content' \" + (css ? \" class='\" + css + \"' \" : \"\") + \" >\" + (obj.html || \"\") + \"</div>\";\n }\n\n if (obj.header) {\n var collapseIcon = obj.canCollapse ? \"<div class='gantt_layout_header_arrow'></div>\" : \"\";\n header = \"<div class='gantt_layout_header'>\" + collapseIcon + \"<div class='gantt_layout_header_content'>\" + obj.header + \"</div></div>\";\n }\n }\n\n return \"<div class='gantt_layout_cell \" + css + \"' data-cell-id='\" + this.$id + \"'>\" + header + content + \"</div>\";\n };\n\n Cell.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n this.init();\n };\n\n Cell.prototype.getNode = function () {\n return this.$view.querySelector(\"gantt_layout_cell\") || this.$view;\n };\n\n Cell.prototype.init = function () {\n // [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\n var self = this;\n\n this._headerClickHandler = function (e) {\n var cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\n\n if (cellId == self.$id) {\n self.toggle();\n }\n };\n\n var mouse = this.$gantt.$services.getService(\"mouseEvents\");\n mouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n this.callEvent(\"onReady\", []);\n };\n\n Cell.prototype.toggle = function () {\n this.$config.collapsed = !this.$config.collapsed;\n this.resize();\n };\n\n Cell.prototype.getSize = function () {\n var size = {\n height: this.$config.height || 0,\n width: this.$config.width || 0,\n gravity: this.$config.gravity || 1,\n minHeight: this.$config.minHeight || 0,\n minWidth: this.$config.minWidth || 0,\n maxHeight: this.$config.maxHeight || 100000000000,\n maxWidth: this.$config.maxWidth || 100000000000\n };\n\n if (this.$config.collapsed) {\n var mode = this.$config.mode === \"x\";\n size[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\n }\n\n return size;\n };\n\n Cell.prototype.getContentSize = function () {\n var width = this.$lastSize.contentX;\n\n if (width !== width * 1) {\n width = this.$lastSize.width;\n }\n\n var height = this.$lastSize.contentY;\n\n if (height !== height * 1) {\n height = this.$lastSize.height;\n }\n\n return {\n width: width,\n height: height\n };\n };\n\n Cell.prototype._getBorderSizes = function () {\n var borders = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n horizontal: 0,\n vertical: 0\n };\n\n if (this._currentBorders) {\n if (this._currentBorders[this._borders.left]) {\n borders.left = 1;\n borders.horizontal++;\n }\n\n if (this._currentBorders[this._borders.right]) {\n borders.right = 1;\n borders.horizontal++;\n }\n\n if (this._currentBorders[this._borders.top]) {\n borders.top = 1;\n borders.vertical++;\n }\n\n if (this._currentBorders[this._borders.bottom]) {\n borders.bottom = 1;\n borders.vertical++;\n }\n }\n\n return borders;\n };\n\n Cell.prototype.setSize = function (x, y) {\n this.$view.style.width = x + \"px\";\n this.$view.style.height = y + \"px\";\n\n var borders = this._getBorderSizes();\n\n var contentY = y - borders.vertical;\n var contentX = x - borders.horizontal;\n this.$lastSize = {\n x: x,\n y: y,\n contentX: contentX,\n contentY: contentY\n };\n\n if (this.$config.header) {\n this._sizeHeader();\n } else {\n this._sizeContent();\n }\n };\n\n Cell.prototype._borders = {\n \"left\": \"gantt_layout_cell_border_left\",\n \"right\": \"gantt_layout_cell_border_right\",\n \"top\": \"gantt_layout_cell_border_top\",\n \"bottom\": \"gantt_layout_cell_border_bottom\"\n };\n\n Cell.prototype._setBorders = function (css, view) {\n if (!view) {\n view = this;\n }\n\n var node = view.$view;\n\n for (var i in this._borders) {\n domHelpers.removeClassName(node, this._borders[i]);\n }\n\n if (typeof css == \"string\") {\n css = [css];\n }\n\n var cssHash = {};\n\n for (var i = 0; i < css.length; i++) {\n domHelpers.addClassName(node, css[i]);\n cssHash[css[i]] = true;\n }\n\n view._currentBorders = cssHash;\n };\n\n Cell.prototype._sizeContent = function () {\n var content = this.$view.childNodes[0];\n\n if (content && content.className == \"gantt_layout_content\") {\n content.style.height = this.$lastSize.contentY + \"px\";\n }\n };\n\n Cell.prototype._sizeHeader = function () {\n var size = this.$lastSize;\n size.contentY -= this.$config.headerHeight;\n var header = this.$view.childNodes[0];\n var content = this.$view.childNodes[1];\n var xLayout = this.$config.mode === \"x\";\n\n if (this.$config.collapsed) {\n content.style.display = \"none\";\n\n if (xLayout) {\n header.className = \"gantt_layout_header collapsed_x\";\n header.style.width = size.y + \"px\";\n var d = Math.floor(size.y / 2 - size.x / 2);\n header.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\n content.style.display = \"none\";\n } else {\n header.className = \"gantt_layout_header collapsed_y\";\n }\n } else {\n if (xLayout) {\n header.className = \"gantt_layout_header\";\n } else {\n header.className = \"gantt_layout_header vertical\";\n }\n\n header.style.width = 'auto';\n header.style.transform = '';\n content.style.display = \"\";\n content.style.height = size.contentY + \"px\";\n }\n\n header.style.height = this.$config.headerHeight + \"px\";\n };\n\n return Cell;\n}();\n\nmodule.exports = Cell;","var utils = require(\"./env\");\n\nmodule.exports = function (gantt) {\n return utils.isNode || !gantt.$root;\n};","/**\n * Check the over task or draggble task is placeholder task\n */\nmodule.exports = function isPlaceholderTask(id, gantt, store, config) {\n // return false;\n var config = gantt ? gantt.config : config;\n\n if (config && config.placeholder_task) {\n if (store.exists(id)) {\n var item = store.getItem(id);\n return item.type === config.types.placeholder;\n }\n }\n\n return false;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function SelectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(SelectControl, _super);\n\n SelectControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n html += htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"style\",\n value: \"width:100%;\"\n }]);\n html += \"</div>\";\n return html;\n };\n\n SelectControl.prototype.set_value = function (node, value, ev, sns) {\n var select = node.firstChild;\n\n if (!select._dhx_onchange && sns.onchange) {\n select.onchange = sns.onchange;\n select._dhx_onchange = true;\n }\n\n if (typeof value === \"undefined\") value = (select.options[0] || {}).value;\n select.value = value || \"\";\n };\n\n SelectControl.prototype.get_value = function (node) {\n return node.firstChild.value;\n };\n\n SelectControl.prototype.focus = function (node) {\n var a = node.firstChild;\n\n gantt._focus(a, true);\n };\n\n return SelectControl;\n};","module.exports = function (gantt) {\n return gantt.config.smart_rendering && gantt._smart_render;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","/* eslint-disable no-restricted-globals */\nvar globalScope;\n\nif (typeof window !== \"undefined\") {\n globalScope = window;\n} else {\n globalScope = global;\n}\n/* eslint-enable no-restricted-globals */\n\n\nmodule.exports = globalScope;","/**\n * The state object for order branch drag and drop\n */\nvar utils = require(\"../../../../utils/utils\");\n\nmodule.exports = {\n createDropTargetObject: function createDropTargetObject(parent) {\n var res = {\n targetParent: null,\n targetIndex: 0,\n targetId: null,\n child: false,\n nextSibling: false,\n prevSibling: false\n };\n\n if (parent) {\n utils.mixin(res, parent, true);\n }\n\n return res;\n },\n nextSiblingTarget: function nextSiblingTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.nextSibling = true;\n result.targetParent = store.getParent(result.targetId);\n result.targetIndex = store.getBranchIndex(result.targetId);\n\n if (store.getParent(dndTaskId) != result.targetParent || result.targetIndex < store.getBranchIndex(dndTaskId)) {\n result.targetIndex += 1;\n }\n\n return result;\n },\n prevSiblingTarget: function prevSiblingTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.prevSibling = true;\n result.targetParent = store.getParent(result.targetId);\n result.targetIndex = store.getBranchIndex(result.targetId);\n\n if (store.getParent(dndTaskId) == result.targetParent && result.targetIndex > store.getBranchIndex(dndTaskId)) {\n result.targetIndex -= 1;\n }\n\n return result;\n },\n firstChildTarget: function firstChildTarget(dndTaskId, targetTaskId, store) {\n var result = this.createDropTargetObject();\n result.targetId = targetTaskId;\n result.targetParent = result.targetId;\n result.targetIndex = 0;\n result.child = true;\n return result;\n },\n lastChildTarget: function lastChildTarget(dndTaskId, targetTaskId, store) {\n var children = store.getChildren(targetTaskId);\n var result = this.createDropTargetObject();\n result.targetId = children[children.length - 1];\n result.targetParent = targetTaskId;\n result.targetIndex = children.length;\n result.nextSibling = true;\n return result;\n }\n};","var isLegacyRender = require(\"../is_legacy_smart_render\");\n\nmodule.exports = function isColumnVisible(columnIndex, scale, viewPort, gantt) {\n var width = scale.width[columnIndex];\n\n if (width <= 0) {\n return false;\n }\n\n if (!gantt.config.smart_rendering || isLegacyRender(gantt)) {\n return true;\n }\n\n var cellLeftCoord = scale.left[columnIndex] - width;\n var cellRightCoord = scale.left[columnIndex] + width;\n return cellLeftCoord <= viewPort.x_end && cellRightCoord >= viewPort.x; //do not render skipped columns\n};","module.exports = function getVisibleCellsRange(scale, viewport) {\n var firstCellIndex = 0;\n var lastCellIndex = scale.left.length - 1;\n\n if (viewport) {\n for (var i = 0; i < scale.left.length; i++) {\n var left = scale.left[i];\n\n if (left < viewport.x) {\n firstCellIndex = i;\n }\n\n if (left > viewport.x_end) {\n lastCellIndex = i;\n break;\n }\n }\n }\n\n return {\n start: firstCellIndex,\n end: lastCellIndex\n };\n};","module.exports = function (item, view, config) {\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: 0,\n right: Infinity\n };\n};","function createTaskRenderer(gantt) {\n function _render_task_element(task, view, config) {\n var config = view.$getConfig();\n var painters = config.type_renderers;\n var renderer = painters[gantt.getTaskType(task.type)],\n defaultRenderer = _task_default_render;\n\n if (!renderer) {\n return defaultRenderer.call(gantt, task, view, config);\n } else {\n return renderer.call(gantt, task, function (task) {\n return defaultRenderer.call(gantt, task, view, config);\n }, view);\n }\n }\n\n function _task_default_render(task, view, config) {\n if (gantt._isAllowedUnscheduledTask(task)) return;\n\n if (!gantt._isTaskInTimelineLimits(task)) {\n return;\n }\n\n var pos = view.getItemPosition(task);\n var cfg = config,\n templates = view.$getTemplates();\n var taskType = gantt.getTaskType(task.type);\n var height = view.getBarHeight(task.id, taskType == cfg.types.milestone);\n var controlsMargin = 0;\n\n if (taskType == cfg.types.milestone) {\n controlsMargin = (height - pos.height) / 2;\n }\n\n var padd = Math.floor((view.getItemHeight(task.id) - height) / 2); //\tif(task.type == cfg.types.milestone){\n //\t\tpadd -= 1;\n //\t}\n //\tif (taskType == cfg.types.milestone && cfg.link_line_width > 1) {\n //\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\n //\t\tpadd += 1;\n //\t}\n\n if (taskType == cfg.types.milestone) {\n pos.left -= Math.round(height / 2);\n pos.width = height;\n }\n\n var div = document.createElement(\"div\");\n var width = Math.round(pos.width);\n\n if (view.$config.item_attribute) {\n div.setAttribute(view.$config.item_attribute, task.id);\n div.setAttribute(view.$config.bind + \"_id\", task.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n if (cfg.show_progress && taskType != cfg.types.milestone) {\n _render_task_progress(task, div, width, cfg, templates);\n } //use separate div to display content above progress bar\n\n\n var content = _render_task_content(task, width, templates);\n\n if (task.textColor) {\n content.style.color = task.textColor;\n }\n\n div.appendChild(content);\n\n var css = _combine_item_class(\"gantt_task_line\", templates.task_class(task.start_date, task.end_date, task), task.id, view);\n\n if (task.color || task.progressColor || task.textColor) {\n css += \" gantt_task_inline_color\";\n }\n\n if (pos.width < 20) {\n css += \" gantt_thin_task\";\n }\n\n div.className = css;\n var styles = [\"left:\" + pos.left + \"px\", \"top:\" + (padd + pos.top) + 'px', \"height:\" + (taskType == cfg.types.milestone ? pos.height : height) + 'px', \"line-height:\" + Math.max(height < 30 ? height - 2 : height, 0) + 'px', \"width:\" + width + 'px'];\n\n if (task.color) {\n styles.push(\"background-color:\" + task.color);\n }\n\n if (task.textColor) {\n styles.push(\"color:\" + task.textColor);\n }\n\n div.style.cssText = styles.join(\";\");\n\n var side = _render_leftside_content(task, cfg, templates, controlsMargin);\n\n if (side) div.appendChild(side);\n side = _render_rightside_content(task, cfg, templates, controlsMargin);\n if (side) div.appendChild(side);\n\n gantt._waiAria.setTaskBarAttr(task, div);\n\n var state = gantt.getState();\n\n if (!gantt.isReadonly(task)) {\n if (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\n _render_pair(div, \"gantt_task_drag\", task, function (css) {\n var el = document.createElement(\"div\");\n el.className = css;\n return el;\n }, cfg);\n }\n\n if (cfg.drag_links && cfg.show_links) {\n _render_pair(div, \"gantt_link_control\", task, function (css) {\n var outer = document.createElement(\"div\");\n outer.className = css;\n outer.style.cssText = [\"height:\" + height + 'px', \"line-height:\" + height + 'px'].join(\";\");\n var inner = document.createElement(\"div\");\n inner.className = \"gantt_link_point\";\n var showLinkPoints = false;\n\n if (state.link_source_id && cfg.touch) {\n showLinkPoints = true;\n }\n\n inner.style.display = showLinkPoints ? \"block\" : \"\";\n outer.appendChild(inner);\n return outer;\n }, cfg, controlsMargin);\n }\n }\n\n return div;\n }\n\n function _render_side_content(task, template, cssClass, marginStyle) {\n if (!template) return null;\n var text = template(task.start_date, task.end_date, task);\n if (!text) return null;\n var content = document.createElement(\"div\");\n content.className = \"gantt_side_content \" + cssClass;\n content.innerHTML = text;\n\n if (marginStyle) {\n content.style[marginStyle.type] = Math.abs(marginStyle.value) + \"px\";\n }\n\n return content;\n }\n\n function _render_leftside_content(task, cfg, templates, margin) {\n var css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\n\n var marginStyle = null;\n\n if (margin) {\n marginStyle = {\n type: \"marginRight\",\n value: margin\n };\n }\n\n return _render_side_content(task, templates.leftside_text, css, marginStyle);\n }\n\n function _render_rightside_content(task, cfg, templates, margin) {\n var css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\n\n var marginStyle = null;\n\n if (margin) {\n marginStyle = {\n type: \"marginLeft\",\n value: margin\n };\n }\n\n return _render_side_content(task, templates.rightside_text, css, marginStyle);\n }\n\n function _get_link_crossing_css(left, task) {\n var cond = _get_conditions(left);\n\n for (var i in cond) {\n var links = task[i];\n\n for (var ln = 0; ln < links.length; ln++) {\n var link = gantt.getLink(links[ln]);\n\n for (var tp = 0; tp < cond[i].length; tp++) {\n if (link.type == cond[i][tp]) {\n return \"gantt_link_crossing\";\n }\n }\n }\n }\n\n return \"\";\n }\n\n function _render_task_content(task, width, templates) {\n var content = document.createElement(\"div\");\n\n if (gantt.getTaskType(task.type) != gantt.config.types.milestone) {\n content.innerHTML = templates.task_text(task.start_date, task.end_date, task);\n } else if (gantt.getTaskType(task.type) == gantt.config.types.milestone && width) {\n content.style.height = content.style.width = width + \"px\";\n }\n\n content.className = \"gantt_task_content\"; //content.style.width = width + 'px';\n\n return content;\n }\n\n function _render_task_progress(task, element, maxWidth, cfg, templates) {\n var done = task.progress * 1 || 0;\n maxWidth = Math.max(maxWidth - 2, 0); //2px for borders\n\n var pr = document.createElement(\"div\");\n var width = Math.round(maxWidth * done);\n width = Math.min(maxWidth, width);\n\n if (task.progressColor) {\n pr.style.backgroundColor = task.progressColor;\n pr.style.opacity = 1;\n }\n\n pr.style.width = width + 'px';\n pr.className = \"gantt_task_progress\";\n pr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\n\n if (cfg.rtl) {\n pr.style.position = \"absolute\";\n pr.style.right = \"0px\";\n }\n\n var wrapper = document.createElement(\"div\");\n wrapper.className = \"gantt_task_progress_wrapper\";\n wrapper.appendChild(pr);\n element.appendChild(wrapper);\n\n if (gantt.config.drag_progress && !gantt.isReadonly(task)) {\n var drag = document.createElement(\"div\");\n var markerPos = width;\n\n if (cfg.rtl) {\n markerPos = maxWidth - width;\n }\n\n drag.style.left = markerPos + 'px';\n drag.className = \"gantt_task_progress_drag\";\n pr.appendChild(drag);\n element.appendChild(drag);\n }\n }\n\n function _get_conditions(leftside) {\n if (leftside) {\n return {\n $source: [gantt.config.links.start_to_start],\n $target: [gantt.config.links.start_to_start, gantt.config.links.finish_to_start]\n };\n } else {\n return {\n $source: [gantt.config.links.finish_to_start, gantt.config.links.finish_to_finish],\n $target: [gantt.config.links.finish_to_finish]\n };\n }\n }\n\n function _combine_item_class(basic, template, itemId, view) {\n var cfg = view.$getConfig();\n var css = [basic];\n if (template) css.push(template);\n var state = gantt.getState();\n var task = gantt.getTask(itemId);\n\n if (gantt.getTaskType(task.type) == cfg.types.milestone) {\n css.push(\"gantt_milestone\");\n } else if (gantt.getTaskType(task.type) == cfg.types.project) {\n css.push(\"gantt_project\");\n }\n\n css.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\n if (gantt.isSummaryTask(task)) css.push(\"gantt_dependent_task\");\n\n if (gantt.isSplitTask(task) && (cfg.open_split_tasks && !task.$open || !cfg.open_split_tasks)) {\n css.push(\"gantt_split_parent\");\n }\n\n if (cfg.select_task && gantt.isSelectedTask(itemId)) {\n css.push(\"gantt_selected\");\n }\n\n if (itemId == state.drag_id) {\n css.push(\"gantt_drag_\" + state.drag_mode);\n\n if (state.touch_drag) {\n css.push(\"gantt_touch_\" + state.drag_mode);\n }\n }\n\n if (state.link_source_id == itemId) css.push(\"gantt_link_source\");\n if (state.link_target_id == itemId) css.push(\"gantt_link_target\");\n\n if (cfg.highlight_critical_path && gantt.isCriticalTask) {\n if (gantt.isCriticalTask(task)) css.push(\"gantt_critical_task\");\n }\n\n if (state.link_landing_area && state.link_target_id && state.link_source_id && state.link_target_id != state.link_source_id && (state.link_target_id == itemId || state.link_source_id == itemId)) {\n var from_id = state.link_source_id;\n var from_start = state.link_from_start;\n var to_start = state.link_to_start;\n var allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\n var dragClass = \"\";\n\n if (allowDrag) {\n if (to_start) dragClass = \"link_start_allow\";else dragClass = \"link_finish_allow\";\n } else {\n if (to_start) dragClass = \"link_start_deny\";else dragClass = \"link_finish_deny\";\n }\n\n css.push(dragClass);\n }\n\n return css.join(\" \");\n }\n\n function _render_pair(parent, css, task, content, config, margin) {\n var state = gantt.getState();\n var className, element;\n\n if (+task.start_date >= +state.min_date) {\n className = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\n element = content(className.join(\" \"));\n element.setAttribute(\"data-bind-property\", \"start_date\");\n\n if (margin) {\n element.style.marginLeft = margin + \"px\";\n }\n\n parent.appendChild(element);\n }\n\n if (+task.end_date <= +state.max_date) {\n className = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\n element = content(className.join(\" \"));\n element.setAttribute(\"data-bind-property\", \"end_date\");\n\n if (margin) {\n element.style.marginRight = margin + \"px\";\n }\n\n parent.appendChild(element);\n }\n }\n\n return _render_task_element;\n}\n\nmodule.exports = createTaskRenderer;","// optimized checker for task bars smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isBarInViewport(item, viewport, view, config, gantt) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var top = view.getItemTop(item.id);\n var height = view.getItemHeight(item.id);\n\n if (top > viewport.y_end || top + height < viewport.y) {\n return false;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n\n if (left > viewport.x_end || right < viewport.x) {\n return false;\n }\n\n return true;\n};","var ScaleHelper = require(\"./scales_ignore\");\n\nvar eventable = require(\"../../../utils/eventable\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nvar topPositionMixin = require(\"../row_position_mixin\");\n\nvar canvasRender = require(\"./tasks_canvas_render\");\n\nvar Timeline = function Timeline(parent, config, factory, gantt) {\n this.$config = utils.mixin({}, config || {});\n this.$scaleHelper = new ScaleHelper(gantt);\n this.$gantt = gantt;\n this._posFromDateCache = {};\n this._timelineDragScroll = null;\n utils.mixin(this, topPositionMixin(this));\n eventable(this);\n};\n\nTimeline.prototype = {\n init: function init(container) {\n container.innerHTML += \"<div class='gantt_task' style='width:inherit;height:inherit;'></div>\";\n this.$task = container.childNodes[0];\n this.$task.innerHTML = \"<div class='gantt_task_scale'></div><div class='gantt_data_area'></div>\";\n this.$task_scale = this.$task.childNodes[0];\n this.$task_data = this.$task.childNodes[1];\n this.$task_data.innerHTML = \"<div class='gantt_task_bg'></div><div class='gantt_links_area'></div><div class='gantt_bars_area'></div>\";\n this.$task_bg = this.$task_data.childNodes[0];\n this.$task_links = this.$task_data.childNodes[1];\n this.$task_bars = this.$task_data.childNodes[2];\n this._tasks = {\n col_width: 0,\n width: [],\n // width of each column\n full_width: 0,\n // width of all columns\n trace_x: [],\n rendered: {}\n };\n var config = this.$getConfig();\n var attr = config[this.$config.bind + \"_attribute\"];\n var linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n if (!linksAttr && this.$config.bindLinks) {\n linksAttr = \"data-\" + this.$config.bindLinks + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n this.$config.link_attribute = linksAttr || null;\n\n var layers = this._createLayerConfig();\n\n if (!this.$config.layers) {\n this.$config.layers = layers.tasks;\n }\n\n if (!this.$config.linkLayers) {\n this.$config.linkLayers = layers.links;\n }\n\n this._attachLayers(this.$gantt);\n\n this.callEvent(\"onReady\", []); //this.refresh();\n\n if (this.$gantt.ext.dragTimeline) {\n this._timelineDragScroll = this.$gantt.ext.dragTimeline.create();\n\n this._timelineDragScroll.attach(this);\n }\n },\n setSize: function setSize(width, height) {\n var config = this.$getConfig();\n\n if (width * 1 === width) {\n this.$config.width = width;\n }\n\n if (height * 1 === height) {\n this.$config.height = height;\n var dataHeight = Math.max(this.$config.height - config.scale_height);\n this.$task_data.style.height = dataHeight + 'px';\n }\n\n this.refresh();\n this.$task_bg.style.backgroundImage = \"\";\n\n if (config.smart_rendering && this.$config.rowStore) {\n this.$task_bg.style.height = this.getTotalHeight() + \"px\";\n } else {\n this.$task_bg.style.height = \"\";\n }\n\n var scale = this._tasks; //timeline area layers\n\n var data_els = this.$task_data.childNodes;\n\n for (var i = 0, len = data_els.length; i < len; i++) {\n var el = data_els[i];\n if (el.hasAttribute(\"data-layer\") && el.style) el.style.width = scale.full_width + \"px\";\n }\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$task.offsetWidth;\n }\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this.isVisible() ? this._tasks.full_width : 0;\n return {\n x: this.isVisible() ? this.$config.width : 0,\n y: this.isVisible() ? this.$config.height : 0,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (top * 1 === top) {\n this.$config.scrollTop = top;\n this.$task_data.scrollTop = this.$config.scrollTop;\n scrolled = true;\n }\n\n if (left * 1 === left) {\n this.$task.scrollLeft = left;\n this.$config.scrollLeft = this.$task.scrollLeft;\n\n this._refreshScales();\n\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n _refreshScales: function _refreshScales() {\n if (!this.isVisible()) return;\n var config = this.$getConfig();\n if (!config.smart_scales) return;\n var viewPort = this.getViewPort();\n var scales = this._scales;\n this.$task_scale.innerHTML = this._getScaleChunkHtml(scales, viewPort.x, viewPort.x_end);\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n _createLayerConfig: function _createLayerConfig() {\n var self = this;\n\n var taskFilter = function taskFilter() {\n return self.isVisible();\n };\n\n var barVisible = function barVisible(id, task) {\n return !task.hide_bar;\n };\n\n var taskLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.taskBar(),\n container: this.$task_bars,\n filter: [taskFilter, barVisible]\n }, {\n renderer: this.$gantt.$ui.layers.taskSplitBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskRollupBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskBg(),\n container: this.$task_bg,\n filter: [//function(){\n //\treturn !self.$getConfig().static_background;\n //},\n taskFilter]\n }];\n var linkLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.link(),\n container: this.$task_links,\n filter: [taskFilter]\n }];\n return {\n tasks: taskLayers,\n links: linkLayers\n };\n },\n _attachLayers: function _attachLayers(gantt) {\n this._taskLayers = [];\n this._linkLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n\n if (this.$config.bind) {\n this._bindStore();\n\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n taskRenderer.container = function () {\n return self.$task_data;\n };\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n if (typeof layer == \"function\" || layer && layer.render && layer.update) {\n layer = {\n renderer: layer\n };\n }\n\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n\n if (layer.expose) {\n this._taskRenderer = taskRenderer.getLayer(bar_layer);\n }\n }\n\n this._initStaticBackgroundRender();\n }\n\n if (this.$config.bindLinks) {\n self.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (!linkRenderer) {\n linkRenderer = layers.createDataRender({\n name: this.$config.bindLinks,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n var linkLayers = this.$config.linkLayers;\n\n for (var i = 0; linkLayers && i < linkLayers.length; i++) {\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n var layer = linkLayers[i];\n layer.view = this; //\tlayer.getViewPort = getViewPort;\n //\tsubscribeSmartRender(layer);\n\n var linkLayer = linkRenderer.addLayer(layer);\n\n this._taskLayers.push(linkLayer);\n\n if (linkLayers[i].expose) {\n this._linkRenderer = linkRenderer.getLayer(linkLayer);\n }\n }\n }\n },\n _initStaticBackgroundRender: function _initStaticBackgroundRender() {\n var self = this;\n var staticRender = canvasRender.create();\n var store = self.$config.rowStore;\n if (!store) return;\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function (id, item, mode) {\n if (id !== null) {\n return;\n }\n\n if (!self.isVisible()) return;\n var config = self.$getConfig();\n\n if (config.static_background) {\n var store = self.$gantt.getDatastore(self.$config.bind);\n var staticBgContainer = self.$task_bg_static;\n\n if (!staticBgContainer) {\n staticBgContainer = document.createElement(\"div\");\n staticBgContainer.className = \"gantt_task_bg\";\n self.$task_bg_static = staticBgContainer;\n\n if (self.$task_bg.nextSibling) {\n self.$task_data.insertBefore(staticBgContainer, self.$task_bg.nextSibling);\n } else {\n self.$task_data.appendChild(staticBgContainer);\n }\n }\n\n if (store) {\n staticRender.render(staticBgContainer, config, self.getScale(), self.getTotalHeight(), self.getItemHeight(item ? item.id : null));\n }\n } else if (config.static_background) {\n if (self.$task_bg_static && self.$task_bg_static.parentNode) {\n self.$task_bg_static.parentNode.removeChild(self.$task_bg_static);\n }\n }\n });\n this.attachEvent(\"onDestroy\", function () {\n staticRender.destroy();\n });\n\n this._initStaticBackgroundRender = function () {}; //init once\n\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n if (this._linkLayers) {\n for (var i = 0; i < this._linkLayers.length; i++) {\n linkRenderer.removeLayer(this._linkLayers[i]);\n }\n }\n\n this._linkLayers = [];\n this._taskLayers = [];\n },\n _render_tasks_scales: function _render_tasks_scales() {\n var config = this.$getConfig();\n var scales_html = \"\",\n outer_width = 0,\n scale_height = 0;\n var state = this.$gantt.getState();\n\n if (this.isVisible()) {\n var helpers = this.$scaleHelper;\n\n var scales = this._getScales();\n\n scale_height = config.scale_height;\n var availWidth = this.$config.width;\n\n if (config.autosize == \"x\" || config.autosize == \"xy\") {\n availWidth = Math.max(config.autosize_min_width, 0);\n }\n\n var cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n var cfg = this._tasks = cfgs[cfgs.length - 1];\n this._scales = cfgs;\n this._posFromDateCache = {};\n scales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n outer_width = cfg.full_width + \"px\"; //cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\n scale_height += \"px\";\n }\n\n this.$task_scale.style.height = scale_height;\n this.$task_data.style.width = this.$task_scale.style.width = outer_width;\n this.$task_scale.innerHTML = scales_html;\n },\n _getScaleChunkHtml: function _get_scale_chunk_html(scales, fromPos, toPos) {\n var templates = this.$gantt.templates;\n var html = [];\n var css = templates.scale_row_class;\n\n for (var i = 0; i < scales.length; i++) {\n var cssClass = \"gantt_scale_line\";\n var tplClass = css(scales[i]);\n\n if (tplClass) {\n cssClass += \" \" + tplClass;\n }\n\n html.push(\"<div class=\\\"\" + cssClass + \"\\\" style=\\\"height:\" + scales[i].height + \"px;position:relative;line-height:\" + scales[i].height + \"px\\\">\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"</div>\");\n }\n\n return html.join(\"\");\n },\n _prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\n var globalConfig = this.$getConfig();\n var globalTemplates = this.$gantt.templates;\n var cells = [];\n var date = null,\n css = null;\n var content = config.format || config.template || config.date;\n\n if (typeof content === \"string\") {\n content = this.$gantt.date.date_to_str(content);\n }\n\n var startIndex = 0,\n endIndex = config.count;\n\n if (globalConfig.smart_scales && !isNaN(fromPos) && !isNaN(toPos)) {\n startIndex = helpers.findBinary(config.left, fromPos);\n endIndex = helpers.findBinary(config.left, toPos) + 1;\n }\n\n css = config.css || function () {};\n\n if (!config.css && globalConfig.inherit_scale_class) {\n css = globalTemplates.scale_cell_class;\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n if (!config.trace_x[i]) break;\n date = new Date(config.trace_x[i]);\n var value = content.call(this, date),\n width = config.width[i],\n height = config.height,\n left = config.left[i],\n style = \"\",\n template = \"\",\n cssclass = \"\";\n\n if (width) {\n var position = globalConfig.smart_scales ? \"position:absolute;left:\" + left + \"px\" : \"\";\n style = \"width:\" + width + \"px;height:\" + height + \"px;\" + position;\n cssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\n template = css.call(this, date);\n if (template) cssclass += \" \" + template;\n\n var ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\n\n var cell = \"<div class='\" + cssclass + \"'\" + ariaAttr + \" style='\" + style + \"'>\" + value + \"</div>\";\n cells.push(cell);\n } else {//do not render ignored cells\n }\n }\n\n return cells.join(\"\");\n },\n dateFromPos: function dateFromPos(x) {\n var scale = this._tasks;\n\n if (x < 0 || x > scale.full_width || !scale.full_width) {\n return null;\n }\n\n var ind = helpers.findBinary(this._tasks.left, x);\n var summ = this._tasks.left[ind];\n var col_width = scale.width[ind] || scale.col_width;\n var part = 0;\n\n if (col_width) {\n part = (x - summ) / col_width;\n\n if (scale.rtl) {\n part = 1 - part;\n }\n }\n\n var unit = 0;\n\n if (part) {\n unit = this._getColumnDuration(scale, scale.trace_x[ind]);\n }\n\n var date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\n return date;\n },\n posFromDate: function posFromDate(date) {\n if (!this.isVisible()) return 0;\n\n if (!date) {\n return 0;\n }\n\n var dateValue = String(date.valueOf());\n\n if (this._posFromDateCache[dateValue] !== undefined) {\n return this._posFromDateCache[dateValue];\n }\n\n var ind = this.columnIndexByDate(date);\n this.$gantt.assert(ind >= 0, \"Invalid day index\");\n var wholeCells = Math.floor(ind);\n var partCell = ind % 1;\n\n var pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\n\n if (wholeCells == this._tasks.width.length) pos += this._tasks.width[this._tasks.width.length - 1]; //for(var i=1; i <= wholeCells; i++)\n //\tpos += gantt._tasks.width[i-1];\n\n if (partCell) {\n if (wholeCells < this._tasks.width.length) {\n pos += this._tasks.width[wholeCells] * (partCell % 1);\n } else {\n pos += 1;\n }\n }\n\n var roundPos = Math.round(pos);\n this._posFromDateCache[dateValue] = roundPos;\n return Math.round(roundPos);\n },\n _getNextVisibleColumn: function _getNextVisibleColumn(startIndex, columns, ignores) {\n // iterate columns to the right\n var date = +columns[startIndex];\n var visibleDateIndex = startIndex;\n\n while (ignores[date]) {\n visibleDateIndex++;\n date = +columns[visibleDateIndex];\n }\n\n return visibleDateIndex;\n },\n _getPrevVisibleColumn: function _getPrevVisibleColumn(startIndex, columns, ignores) {\n // iterate columns to the left\n var date = +columns[startIndex];\n var visibleDateIndex = startIndex;\n\n while (ignores[date]) {\n visibleDateIndex--;\n date = +columns[visibleDateIndex];\n }\n\n return visibleDateIndex;\n },\n _getClosestVisibleColumn: function _getClosestVisibleColumn(startIndex, columns, ignores) {\n var visibleDateIndex = this._getNextVisibleColumn(startIndex, columns, ignores);\n\n if (!columns[visibleDateIndex]) {\n visibleDateIndex = this._getPrevVisibleColumn(startIndex, columns, ignores);\n }\n\n return visibleDateIndex;\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var pos = new Date(date).valueOf();\n var days = this._tasks.trace_x_ascending,\n ignores = this._tasks.ignore_x;\n var state = this.$gantt.getState();\n\n if (pos <= state.min_date) {\n if (this._tasks.rtl) {\n return days.length;\n } else {\n return 0;\n }\n }\n\n if (pos >= state.max_date) {\n if (this._tasks.rtl) {\n return 0;\n } else {\n return days.length;\n }\n }\n\n var dateIndex = helpers.findBinary(days, pos);\n\n var visibleIndex = this._getClosestVisibleColumn(dateIndex, days, ignores);\n\n var visibleDate = days[visibleIndex];\n var transition = this._tasks.trace_index_transition;\n\n if (!visibleDate) {\n if (transition) {\n return transition[0];\n } else {\n return 0;\n }\n }\n\n var part = (date - days[visibleIndex]) / this._getColumnDuration(this._tasks, days[visibleIndex]);\n\n if (transition) {\n return transition[visibleIndex] + (1 - part);\n } else {\n return visibleIndex + part;\n }\n },\n getItemPosition: function getItemPosition(task, start_date, end_date) {\n var xLeft, xRight, width;\n\n if (this._tasks.rtl) {\n xRight = this.posFromDate(start_date || task.start_date);\n xLeft = this.posFromDate(end_date || task.end_date);\n } else {\n xLeft = this.posFromDate(start_date || task.start_date);\n xRight = this.posFromDate(end_date || task.end_date);\n }\n\n width = Math.max(xRight - xLeft, 0);\n var y = this.getItemTop(task.id);\n var height = this.getBarHeight(task.id);\n var rowHeight = this.getItemHeight(task.id);\n return {\n left: xLeft,\n top: y,\n height: height,\n width: width,\n rowHeight: rowHeight\n };\n },\n getBarHeight: function getBarHeight(taskId, isMilestoneRender) {\n var config = this.$getConfig();\n var task = this.$config.rowStore.getItem(taskId); // height of the bar item\n\n var height = task.task_height || task.bar_height || config.bar_height || config.task_height;\n var rowHeight = this.getItemHeight(taskId);\n\n if (height == \"full\") {\n var offset = config.task_height_offset || 5;\n height = rowHeight - offset;\n } //item height cannot be bigger than row height\n\n\n height = Math.min(height, rowHeight);\n\n if (isMilestoneRender) {\n // to get correct height for addapting Milestone to the row\n height = Math.round(height / Math.sqrt(2));\n }\n\n return Math.max(height, 0);\n },\n getScale: function getScale() {\n return this._tasks;\n },\n _getScales: function _get_scales() {\n var config = this.$getConfig();\n var helpers = this.$scaleHelper;\n var scales = [helpers.primaryScale(config)].concat(helpers.getSubScales(config));\n helpers.sortScales(scales);\n return scales;\n },\n _getColumnDuration: function _get_coll_duration(scale, date) {\n return this.$gantt.date.add(date, scale.step, scale.unit) - date;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._timelineCacheAttached) {\n var self = this;\n rowStore._timelineCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._timelineCacheAttached) {\n rowStore.detachEvent(rowStore._timelineCacheAttached);\n rowStore._timelineCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n if (this.$config.bindLinks) {\n this.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\n }\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initStaticBackgroundRender();\n\n this._render_tasks_scales();\n },\n destructor: function destructor() {\n var gantt = this.$gantt;\n\n this._clearLayers(gantt);\n\n this._unbindStore();\n\n this.$task = null;\n this.$task_scale = null;\n this.$task_data = null;\n this.$task_bg = null;\n this.$task_links = null;\n this.$task_bars = null;\n this.$gantt = null;\n\n if (this.$config.rowStore) {\n this.$config.rowStore.detachEvent(this._staticBgHandler);\n this.$config.rowStore = null;\n }\n\n if (this.$config.linkStore) {\n this.$config.linkStore = null;\n }\n\n if (this._timelineDragScroll) {\n this._timelineDragScroll.destructor();\n\n this._timelineDragScroll = null;\n }\n\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n }\n};\nmodule.exports = Timeline;","module.exports = function (item, view, config) {\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: 0,\n right: Infinity\n };\n};","function create(gantt) {\n var events = [];\n return {\n delegate: function delegate(event, className, handler, root) {\n events.push([event, className, handler, root]);\n var helper = gantt.$services.getService(\"mouseEvents\");\n helper.delegate(event, className, handler, root);\n },\n destructor: function destructor() {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\n for (var i = 0; i < events.length; i++) {\n var h = events[i];\n mouseEvents.detach(h[0], h[1], h[2], h[3]);\n }\n\n events = [];\n }\n };\n}\n\nmodule.exports = create;","var domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n eventable = require(\"../../../utils/eventable\"),\n gridResize = require(\"./grid_resize\"),\n topPositionMixin = require(\"../row_position_mixin\"),\n rowResize = require(\"./task_grid_row_resize\");\n\nvar ColumnDnd = require(\"../plugins/column_grid_dnd\")[\"default\"];\n\nvar Grid = function Grid(parent, config, factory, gantt) {\n this.$config = utils.mixin({}, config || {});\n this.$gantt = gantt;\n this.$parent = parent;\n eventable(this);\n this.$state = {};\n utils.mixin(this, topPositionMixin(this));\n};\n\nGrid.prototype = {\n init: function init(container) {\n var gantt = this.$gantt;\n\n var gridAriaAttr = gantt._waiAria.gridAttrString();\n\n var gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\n\n var _ganttConfig = this.$getConfig();\n\n var reorderColumns = _ganttConfig.reorder_grid_columns || false;\n\n if (this.$config.reorder_grid_columns !== undefined) {\n reorderColumns = this.$config.reorder_grid_columns;\n }\n\n container.innerHTML = \"<div class='gantt_grid' style='height:inherit;width:inherit;' \" + gridAriaAttr + \"></div>\";\n this.$grid = container.childNodes[0];\n this.$grid.innerHTML = \"<div class='gantt_grid_scale' \" + gantt._waiAria.gridScaleRowAttrString() + \"></div><div class='gantt_grid_data' \" + gridDataAriaAttr + \"></div>\";\n this.$grid_scale = this.$grid.childNodes[0];\n this.$grid_data = this.$grid.childNodes[1];\n var attr = _ganttConfig[this.$config.bind + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n\n if (!this.$config.layers) {\n var layers = this._createLayerConfig();\n\n this.$config.layers = layers;\n }\n\n var resizer = gridResize(gantt, this);\n resizer.init();\n this._renderHeaderResizers = resizer.doOnRender;\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n var resizerrow = rowResize(gantt, this);\n resizerrow.init();\n\n this._addLayers(this.$gantt);\n\n this._initEvents();\n\n if (reorderColumns) {\n this._columnDND = new ColumnDnd(gantt, this);\n\n this._columnDND.init();\n }\n\n this.callEvent(\"onReady\", []); //this.refresh();\n },\n _validateColumnWidth: function _validateColumnWidth(column, property) {\n // user can set {name:\"text\", width:\"200\",...} for some reason,\n // check and convert it to number when possible\n var value = column[property];\n\n if (value && value != \"*\") {\n var gantt = this.$gantt;\n var numericWidth = value * 1;\n\n if (isNaN(numericWidth)) {\n gantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n } else {\n column[property] = numericWidth;\n }\n }\n },\n setSize: function setSize(width, height) {\n this.$config.width = this.$state.width = width;\n this.$config.height = this.$state.height = height; // TODO: maybe inherit and override in a subclass instead of extending here\n\n var columns = this.getGridColumns(),\n innerWidth = 0;\n var config = this.$getConfig();\n var elasticColumns = config.grid_elastic_columns;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n this._validateColumnWidth(columns[i], \"min_width\");\n\n this._validateColumnWidth(columns[i], \"max_width\");\n\n this._validateColumnWidth(columns[i], \"width\");\n\n innerWidth += columns[i].width * 1;\n }\n\n var outerWidth;\n\n if (isNaN(innerWidth) || !this.$config.scrollable) {\n outerWidth = this._setColumnsWidth(width + 1);\n innerWidth = outerWidth;\n }\n\n if (this.$config.scrollable && elasticColumns && !isNaN(innerWidth)) {\n var minWidth = 0;\n columns.forEach(function (col) {\n minWidth += col.min_width || config.min_grid_column_width;\n });\n var columnsWidth = Math.max(minWidth, width);\n innerWidth = this._setColumnsWidth(columnsWidth);\n outerWidth = width;\n }\n\n if (this.$config.scrollable) {\n this.$grid_scale.style.width = innerWidth + \"px\";\n this.$grid_data.style.width = innerWidth + \"px\";\n } else {\n this.$grid_scale.style.width = \"inherit\";\n this.$grid_data.style.width = \"inherit\";\n }\n\n this.$config.width -= 1;\n var config = this.$getConfig();\n\n if (outerWidth !== width) {\n if (outerWidth !== undefined) {\n config.grid_width = outerWidth;\n this.$config.width = outerWidth - 1;\n } else {\n if (!isNaN(innerWidth)) {\n this._setColumnsWidth(innerWidth);\n\n config.grid_width = innerWidth;\n this.$config.width = innerWidth - 1;\n }\n }\n }\n\n var dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n this.$grid_data.style.height = dataHeight + \"px\";\n this.refresh();\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this._getGridWidth();\n\n var size = {\n x: this.$state.width,\n y: this.$state.height,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n return size;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._gridCacheAttached) {\n var self = this;\n rowStore._gridCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._gridCacheAttached) {\n rowStore.detachEvent(rowStore._gridCacheAttached);\n rowStore._gridCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initSmartRenderingPlaceholder();\n\n this._calculateGridWidth();\n\n this._renderGridHeader();\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (left * 1 == left) {\n this.$config.scrollLeft = this.$state.scrollLeft = this.$grid.scrollLeft = left;\n scrolled = true;\n } // var config = this.$getConfig();\n\n\n if (top * 1 == top) {\n this.$config.scrollTop = this.$state.scrollTop = this.$grid_data.scrollTop = top;\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n getColumnIndex: function getColumnIndex(name, excludeHidden) {\n var columns = this.$getConfig().columns;\n var hiddenIndexShift = 0;\n\n for (var i = 0; i < columns.length; i++) {\n // GS-1257. If the cell is hidden, the target column index should be correct\n if (excludeHidden && columns[i].hide) {\n hiddenIndexShift++;\n }\n\n if (columns[i].name == name) {\n return i - hiddenIndexShift;\n }\n }\n\n return null;\n },\n getColumn: function getColumn(name) {\n var index = this.getColumnIndex(name);\n\n if (index === null) {\n return null;\n }\n\n return this.$getConfig().columns[index];\n },\n getGridColumns: function getGridColumns() {\n var config = this.$getConfig();\n return config.columns.slice();\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$grid.offsetWidth;\n }\n },\n // getItemHeight: function () {\n // \tvar config = this.$getConfig();\n // \treturn config.row_height;\n // },\n _createLayerConfig: function _createLayerConfig() {\n var gantt = this.$gantt;\n var self = this;\n var layers = [{\n renderer: gantt.$ui.layers.gridLine(),\n container: this.$grid_data,\n filter: [function () {\n return self.isVisible();\n }]\n }, {\n renderer: gantt.$ui.layers.gridTaskRowResizer(),\n container: this.$grid_data,\n append: true,\n filter: [function () {\n return gantt.config.resize_rows;\n }]\n }];\n return layers;\n },\n _addLayers: function _addLayers(gantt) {\n if (!this.$config.bind) return;\n this._taskLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$grid_data;\n }\n });\n }\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n }\n\n this._bindStore();\n\n this._initSmartRenderingPlaceholder();\n },\n _refreshPlaceholderOnStoreUpdate: function _refreshPlaceholderOnStoreUpdate(id) {\n var config = this.$getConfig(),\n store = this.$config.rowStore;\n\n if (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n return;\n }\n\n var contentHeight;\n\n if (this.$config.scrollY) {\n var scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n if (scroll) contentHeight = scroll.getScrollState().scrollSize;\n }\n\n if (!contentHeight) {\n contentHeight = store ? this.getTotalHeight() : 0;\n }\n\n if (contentHeight) {\n if (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\n this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n }\n\n var placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n placeholder.style.visibility = \"hidden\";\n placeholder.style.height = contentHeight + \"px\";\n placeholder.style.width = \"1px\";\n this.$grid_data.appendChild(placeholder);\n }\n },\n _initSmartRenderingPlaceholder: function _initSmartRenderingPlaceholder() {\n var store = this.$config.rowStore;\n\n if (!store) {\n return;\n } else {\n this._initSmartRenderingPlaceholder = function () {};\n }\n\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n },\n _initEvents: function _initEvents() {\n var gantt = this.$gantt;\n\n this._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.close(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.open(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n this._taskLayers = [];\n },\n _getColumnWidth: function _getColumnWidth(column, config, width) {\n var min_width = column.min_width || config.min_grid_column_width;\n var new_width = Math.max(width, min_width || 10);\n if (column.max_width) new_width = Math.min(new_width, column.max_width);\n return new_width;\n },\n // set min width only if width < than config.min_grid_column_width\n _checkGridColumnMinWidthLimits: function _checkGridColumnMinWidthLimits(columns, config) {\n for (var i = 0, l = columns.length; i < l; i++) {\n var width = columns[i].width * 1;\n\n if (!columns[i].min_width && width < config.min_grid_column_width) {\n columns[i].min_width = width;\n }\n }\n },\n // return min and max possible grid width according to restricts\n _getGridWidthLimits: function _getGridWidthLimits() {\n var config = this.$getConfig(),\n columns = this.getGridColumns(),\n min_limit = 0,\n max_limit = 0;\n\n for (var i = 0; i < columns.length; i++) {\n min_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\n\n if (max_limit !== undefined) {\n max_limit = columns[i].max_width ? max_limit + columns[i].max_width : undefined;\n }\n }\n\n this._checkGridColumnMinWidthLimits(columns, config); // FIX ME: should it be before calculating limits?\n\n\n return [min_limit, max_limit];\n },\n // resize columns to get total newWidth, starting from columns[start_index]\n _setColumnsWidth: function _setColumnsWidth(newWidth, start_index) {\n var config = this.$getConfig();\n var columns = this.getGridColumns(),\n columns_width = 0,\n final_width = newWidth;\n start_index = !window.isNaN(start_index) ? start_index : -1;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n\n if (window.isNaN(columns_width)) {\n this._calculateGridWidth();\n\n columns_width = 0;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n }\n\n var extra_width = final_width - columns_width;\n var start_width = 0;\n\n for (var i = 0; i < start_index + 1; i++) {\n start_width += columns[i].width;\n }\n\n columns_width -= start_width;\n\n for (var i = start_index + 1; i < columns.length; i++) {\n var col = columns[i];\n var share = Math.round(extra_width * (col.width / columns_width)); // columns have 2 additional restrict fields - min_width & max_width that are set by user\n\n if (extra_width < 0) {\n if (col.min_width && col.width + share < col.min_width) share = col.min_width - col.width;else if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width) share = config.min_grid_column_width - col.width;\n } else if (col.max_width && col.width + share > col.max_width) share = col.max_width - col.width;\n\n columns_width -= col.width;\n col.width += share;\n extra_width -= share;\n }\n\n var iterator = extra_width > 0 ? 1 : -1;\n\n while (extra_width > 0 && iterator === 1 || extra_width < 0 && iterator === -1) {\n var curExtra = extra_width;\n\n for (i = start_index + 1; i < columns.length; i++) {\n var new_width = columns[i].width + iterator;\n\n if (new_width == this._getColumnWidth(columns[i], config, new_width)) {\n extra_width -= iterator;\n columns[i].width = new_width;\n }\n\n if (!extra_width) break;\n }\n\n if (curExtra == extra_width) break;\n } // if impossible to resize the right-side columns, resize the start column\n\n\n if (extra_width && start_index > -1) {\n var new_width = columns[start_index].width + extra_width;\n if (new_width == this._getColumnWidth(columns[start_index], config, new_width)) columns[start_index].width = new_width;\n } //if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n //\treturn;\n\n\n return this._getColsTotalWidth();\n },\n _getColsTotalWidth: function _getColsTotalWidth() {\n var columns = this.getGridColumns();\n var cols_width = 0;\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n return false;\n }\n\n cols_width += v;\n }\n\n return cols_width;\n },\n _calculateGridWidth: function _calculateGridWidth() {\n var config = this.$getConfig();\n var columns = this.getGridColumns();\n var cols_width = 0;\n var unknown = [];\n var width = [];\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n v = config.min_grid_column_width || 10;\n unknown.push(i);\n }\n\n width[i] = v;\n cols_width += v;\n }\n\n var gridWidth = this._getGridWidth() + 1;\n\n if (config.autofit || unknown.length) {\n var diff = gridWidth - cols_width; // TODO: logic may be improved for proportional changing of width\n // autofit adjusts columns widths to the outer grid width\n // it doesn't makes sense if grid has inner scroll with elastic columns\n\n if (config.autofit && !config.grid_elastic_columns) {\n // delta must be added for all columns\n for (var i = 0; i < width.length; i++) {\n var delta = Math.round(diff / (width.length - i));\n width[i] += delta;\n\n var new_width = this._getColumnWidth(columns[i], config, width[i]);\n\n if (new_width != width[i]) {\n delta = new_width - width[i];\n width[i] = new_width;\n }\n\n diff -= delta;\n }\n } else if (unknown.length) {\n // there are several columns with undefined width\n for (var i = 0; i < unknown.length; i++) {\n var delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\n\n var index = unknown[i];\n width[index] += delta;\n\n var new_width = this._getColumnWidth(columns[index], config, width[index]);\n\n if (new_width != width[index]) {\n delta = new_width - width[index];\n width[index] = new_width;\n }\n\n diff -= delta;\n }\n }\n\n for (var i = 0; i < width.length; i++) {\n columns[i].width = width[i];\n }\n } else {\n var changed = gridWidth != cols_width;\n this.$config.width = cols_width - 1;\n config.grid_width = cols_width;\n\n if (changed) {\n this.$parent._setContentSize(this.$config.width, null);\n }\n }\n },\n _renderGridHeader: function _renderGridHeader() {\n var gantt = this.$gantt;\n var config = this.$getConfig();\n var locale = this.$gantt.locale;\n var templates = this.$gantt.templates;\n var columns = this.getGridColumns();\n\n if (config.rtl) {\n columns = columns.reverse();\n }\n\n var cells = [];\n var width = 0,\n labels = locale.labels;\n var lineHeigth = config.scale_height - 1;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i]; // ensure columns have non-empty names\n\n if (!col.name) {\n col.name = gantt.uid() + \"\";\n }\n\n var colWidth = col.width * 1;\n\n var gridWidth = this._getGridWidth();\n\n if (last && gridWidth > width + colWidth) col.width = colWidth = gridWidth - width;\n width += colWidth;\n var sort = gantt._sort && col.name == gantt._sort.name ? \"<div class='gantt_sort gantt_\" + gantt._sort.direction + \"'></div>\" : \"\";\n var cssClass = [\"gantt_grid_head_cell\", \"gantt_grid_head_\" + col.name, last ? \"gantt_last_cell\" : \"\", templates.grid_header_class(col.name, col)].join(\" \");\n var style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\n var label = col.label || labels[\"column_\" + col.name] || labels[col.name];\n label = label || \"\";\n\n var ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\n\n var cell = \"<div class='\" + cssClass + \"' style='\" + style + \"' \" + ariaAttrs + \" data-column-id='\" + col.name + \"' column_id='\" + col.name + \"'\" + \" data-column-name='\" + col.name + \"' data-column-index='\" + i + \"'\" + \">\" + label + sort + \"</div>\";\n cells.push(cell);\n }\n\n this.$grid_scale.style.height = config.scale_height + \"px\";\n this.$grid_scale.style.lineHeight = lineHeigth + \"px\"; //this.$grid_scale.style.width = \"inherit\";\n\n this.$grid_scale.innerHTML = cells.join(\"\");\n\n if (this._renderHeaderResizers) {\n this._renderHeaderResizers();\n }\n },\n _getGridWidth: function _getGridWidth() {\n // TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\n return this.$config.width;\n },\n destructor: function destructor() {\n this._clearLayers(this.$gantt);\n\n if (this._mouseDelegates) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n }\n\n this._unbindStore();\n\n this.$grid = null;\n this.$grid_scale = null;\n this.$grid_data = null;\n this.$gantt = null;\n\n if (this.$config.rowStore) {\n this.$config.rowStore.detachEvent(this._staticBgHandler);\n this.$config.rowStore = null;\n }\n\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n }\n};\nmodule.exports = Grid;","var utils = require(\"../../../utils/utils\");\n\nfunction ScaleHelper(gantt) {\n var dateHelper = gantt.date;\n var services = gantt.$services;\n return {\n getSum: function getSum(sizes, from, to) {\n if (to === undefined) to = sizes.length - 1;\n if (from === undefined) from = 0;\n var summ = 0;\n\n for (var i = from; i <= to; i++) {\n summ += sizes[i];\n }\n\n return summ;\n },\n setSumWidth: function setSumWidth(sum_width, scale, from, to) {\n var parts = scale.width;\n if (to === undefined) to = parts.length - 1;\n if (from === undefined) from = 0;\n var length = to - from + 1;\n if (from > parts.length - 1 || length <= 0 || to > parts.length - 1) return;\n var oldWidth = this.getSum(parts, from, to);\n var diff = sum_width - oldWidth;\n this.adjustSize(diff, parts, from, to);\n this.adjustSize(-diff, parts, to + 1);\n scale.full_width = this.getSum(parts);\n },\n splitSize: function splitSize(width, count) {\n var arr = [];\n\n for (var i = 0; i < count; i++) {\n arr[i] = 0;\n }\n\n this.adjustSize(width, arr);\n return arr;\n },\n adjustSize: function adjustSize(width, parts, from, to) {\n if (!from) from = 0;\n if (to === undefined) to = parts.length - 1;\n var length = to - from + 1;\n var full = this.getSum(parts, from, to);\n\n for (var i = from; i <= to; i++) {\n var share = Math.floor(width * (full ? parts[i] / full : 1 / length));\n full -= parts[i];\n width -= share;\n length--;\n parts[i] += share;\n }\n\n parts[parts.length - 1] += width;\n },\n sortScales: function sortScales(scales) {\n function cellSize(unit, step) {\n var d = new Date(1970, 0, 1);\n return dateHelper.add(d, step, unit) - d;\n }\n\n scales.sort(function (a, b) {\n if (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\n return 1;\n } else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\n return -1;\n } else {\n return 0;\n }\n });\n\n for (var i = 0; i < scales.length; i++) {\n scales[i].index = i;\n }\n },\n _isLegacyMode: function _isLegacyMode(config) {\n var scaleConfig = config || gantt.config;\n return scaleConfig.scale_unit || scaleConfig.date_scale || scaleConfig.subscales;\n },\n _prepareScaleObject: function _prepareScaleObject(scale) {\n var format = scale.format;\n\n if (!format) {\n format = scale.template || scale.date || \"%d %M\";\n }\n\n if (typeof format === \"string\") {\n format = gantt.date.date_to_str(format);\n }\n\n return {\n unit: scale.unit || \"day\",\n step: scale.step || 1,\n format: format,\n css: scale.css\n };\n },\n primaryScale: function primaryScale(config) {\n var templates = services.getService(\"templateLoader\");\n\n var legacyMode = this._isLegacyMode(config);\n\n var scaleConfig = config || gantt.config;\n var result;\n\n if (legacyMode) {\n templates.initTemplate(\"date_scale\", undefined, undefined, scaleConfig, gantt.config.templates);\n result = {\n unit: gantt.config.scale_unit,\n step: gantt.config.step,\n template: gantt.templates.date_scale,\n date: gantt.config.date_scale,\n css: gantt.templates.scale_cell_class\n };\n } else {\n var primaryScale = scaleConfig.scales[0];\n result = {\n unit: primaryScale.unit,\n step: primaryScale.step,\n template: primaryScale.template,\n format: primaryScale.format,\n date: primaryScale.date,\n css: primaryScale.css || gantt.templates.scale_cell_class\n };\n }\n\n return this._prepareScaleObject(result);\n },\n getSubScales: function getSubScales(config) {\n var legacyMode = this._isLegacyMode(config);\n\n var scaleConfig = config || gantt.config;\n var scales;\n\n if (legacyMode) {\n scales = scaleConfig.subscales || [];\n } else {\n scales = scaleConfig.scales.slice(1);\n }\n\n return scales.map(function (scale) {\n return this._prepareScaleObject(scale);\n }.bind(this));\n },\n prepareConfigs: function prepareConfigs(scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\n var heights = this.splitSize(scale_height, scales.length);\n var full_width = container_width;\n var configs = [];\n\n for (var i = scales.length - 1; i >= 0; i--) {\n var main_scale = i == scales.length - 1;\n var cfg = this.initScaleConfig(scales[i], minDate, maxDate);\n\n if (main_scale) {\n this.processIgnores(cfg);\n }\n\n this.initColSizes(cfg, min_coll_width, full_width, heights[i]);\n this.limitVisibleRange(cfg);\n\n if (main_scale) {\n full_width = cfg.full_width;\n }\n\n configs.unshift(cfg);\n }\n\n for (var i = 0; i < configs.length - 1; i++) {\n this.alineScaleColumns(configs[configs.length - 1], configs[i]);\n }\n\n for (var i = 0; i < configs.length; i++) {\n if (rtl) {\n this.reverseScale(configs[i]);\n }\n\n this.setPosSettings(configs[i]);\n }\n\n return configs;\n },\n reverseScale: function reverseScale(scale) {\n scale.width = scale.width.reverse();\n scale.trace_x = scale.trace_x.reverse();\n var indexes = scale.trace_indexes;\n scale.trace_indexes = {};\n scale.trace_index_transition = {};\n scale.rtl = true;\n\n for (var i = 0; i < scale.trace_x.length; i++) {\n scale.trace_indexes[scale.trace_x[i].valueOf()] = i;\n scale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\n }\n\n return scale;\n },\n setPosSettings: function setPosSettings(config) {\n for (var i = 0, len = config.trace_x.length; i < len; i++) {\n config.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\n }\n },\n _ignore_time_config: function _ignore_time_config(date, scale) {\n if (gantt.config.skip_off_time) {\n var skip = true;\n var probe = date; // check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\n\n for (var i = 0; i < scale.step; i++) {\n if (i) {\n probe = dateHelper.add(date, i, scale.unit);\n }\n\n skip = skip && !this.isWorkTime(probe, scale.unit);\n }\n\n return skip;\n }\n\n return false;\n },\n //defined in an extension\n processIgnores: function processIgnores(config) {\n config.ignore_x = {};\n config.display_count = config.count;\n },\n initColSizes: function initColSizes(config, min_col_width, full_width, line_height) {\n var cont_width = full_width;\n config.height = line_height;\n var column_count = config.display_count === undefined ? config.count : config.display_count;\n if (!column_count) column_count = 1;\n config.col_width = Math.floor(cont_width / column_count);\n\n if (min_col_width) {\n if (config.col_width < min_col_width) {\n config.col_width = min_col_width;\n cont_width = config.col_width * column_count;\n }\n }\n\n config.width = [];\n var ignores = config.ignore_x || {};\n\n for (var i = 0; i < config.trace_x.length; i++) {\n if (ignores[config.trace_x[i].valueOf()] || config.display_count == config.count) {\n config.width[i] = 0;\n } else {\n // width of month columns should be proportional month duration\n var width = 1;\n\n if (config.unit == \"month\") {\n var days = Math.round((dateHelper.add(config.trace_x[i], config.step, config.unit) - config.trace_x[i]) / (1000 * 60 * 60 * 24));\n width = days;\n }\n\n config.width[i] = width;\n }\n }\n\n this.adjustSize(cont_width - this.getSum(config.width)\n /* 1 width per column from the code above */\n , config.width);\n config.full_width = this.getSum(config.width);\n },\n initScaleConfig: function initScaleConfig(config, min_date, max_date) {\n var cfg = utils.mixin({\n count: 0,\n col_width: 0,\n full_width: 0,\n height: 0,\n width: [],\n left: [],\n trace_x: [],\n trace_indexes: {},\n min_date: new Date(min_date),\n max_date: new Date(max_date)\n }, config);\n this.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\n cfg.count++;\n cfg.trace_x.push(new Date(date));\n cfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\n });\n cfg.trace_x_ascending = cfg.trace_x.slice();\n return cfg;\n },\n iterateScales: function iterateScales(lower_scale, upper_scale, from, to, callback) {\n var upper_dates = upper_scale.trace_x;\n var lower_dates = lower_scale.trace_x;\n var prev = from || 0;\n var end = to || lower_dates.length - 1;\n var prevUpper = 0;\n\n for (var up = 1; up < upper_dates.length; up++) {\n var target_index = lower_scale.trace_indexes[+upper_dates[up]];\n\n if (target_index !== undefined && target_index <= end) {\n if (callback) {\n callback.apply(this, [prevUpper, up, prev, target_index]);\n }\n\n prev = target_index;\n prevUpper = up;\n continue;\n }\n }\n },\n alineScaleColumns: function alineScaleColumns(lower_scale, upper_scale, from, to) {\n this.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\n var targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\n var actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\n\n if (actualWidth != targetWidth) {\n this.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\n }\n });\n },\n eachColumn: function eachColumn(unit, step, min_date, max_date, callback) {\n var start = new Date(min_date),\n end = new Date(max_date);\n\n if (dateHelper[unit + \"_start\"]) {\n start = dateHelper[unit + \"_start\"](start);\n }\n\n var curr = new Date(start);\n\n if (+curr >= +end) {\n end = dateHelper.add(curr, step, unit);\n }\n\n while (+curr < +end) {\n callback.call(this, new Date(curr));\n var tzOffset = curr.getTimezoneOffset();\n curr = dateHelper.add(curr, step, unit);\n curr = gantt._correct_dst_change(curr, tzOffset, step, unit);\n if (dateHelper[unit + '_start']) curr = dateHelper[unit + \"_start\"](curr);\n }\n },\n limitVisibleRange: function limitVisibleRange(cfg) {\n var dates = cfg.trace_x;\n var left = 0,\n right = cfg.width.length - 1;\n var diff = 0;\n\n if (+dates[0] < +cfg.min_date && left != right) {\n var width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\n diff += cfg.width[0] - width;\n cfg.width[0] = width;\n dates[0] = new Date(cfg.min_date);\n }\n\n var last = dates.length - 1;\n var lastDate = dates[last];\n var outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\n\n if (+outDate > +cfg.max_date && last > 0) {\n var width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\n diff += cfg.width[last] - width;\n cfg.width[last] = width;\n }\n\n if (diff) {\n var full = this.getSum(cfg.width);\n var shared = 0;\n\n for (var i = 0; i < cfg.width.length; i++) {\n var share = Math.floor(diff * (cfg.width[i] / full));\n cfg.width[i] += share;\n shared += share;\n }\n\n this.adjustSize(diff - shared, cfg.width);\n }\n }\n };\n}\n\nmodule.exports = ScaleHelper;","var helpers = require(\"../../../utils/helpers\");\n\nvar htmlHelpers = {\n getHtmlSelect: function getHtmlSelect(options, attributes, value) {\n var innerHTML = \"\";\n\n var _this = this;\n\n options = options || [];\n helpers.forEach(options, function (entry) {\n var _attributes = [{\n key: \"value\",\n value: entry.key\n }];\n\n if (value == entry.key) {\n _attributes[_attributes.length] = {\n key: \"selected\",\n value: \"selected\"\n };\n }\n\n if (entry.attributes) {\n _attributes = _attributes.concat(entry.attributes);\n }\n\n innerHTML += _this.getHtmlOption({\n innerHTML: entry.label\n }, _attributes);\n });\n return _getHtmlContainer(\"select\", {\n innerHTML: innerHTML\n }, attributes);\n },\n getHtmlOption: function getHtmlOption(options, attributes) {\n return _getHtmlContainer(\"option\", options, attributes);\n },\n getHtmlButton: function getHtmlButton(options, attributes) {\n return _getHtmlContainer(\"button\", options, attributes);\n },\n getHtmlDiv: function getHtmlDiv(options, attributes) {\n return _getHtmlContainer(\"div\", options, attributes);\n },\n getHtmlLabel: function getHtmlLabel(options, attributes) {\n return _getHtmlContainer(\"label\", options, attributes);\n },\n getHtmlInput: function getHtmlInput(attributes) {\n return \"<input\" + _getHtmlAttributes(attributes || []) + \">\";\n }\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n var html;\n options = options || [];\n html = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"</\" + tag + \">\";\n return html;\n}\n\nfunction _getHtmlAttributes(attributes) {\n var html = \"\";\n helpers.forEach(attributes, function (entry) {\n html += \" \" + entry.key + \"='\" + entry.value + \"'\";\n });\n return html;\n}\n\nmodule.exports = htmlHelpers;","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function createResourceTimelineBuilder(gantt) {\n var resourceTaskCache = {};\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n });\n\n function getResourceLoad(resource, resourceProperty, scale, timeline) {\n var cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\n var res;\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, resourceProperty, scale, timeline);\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function calculateResourceLoadFromAssignments(items, scale, assignmentsPassed) {\n var scaleUnit = scale.unit;\n var scaleStep = scale.step;\n var timegrid = {};\n var precalculatedTimes = {};\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var task = item;\n\n if (assignmentsPassed) {\n task = gantt.getTask(item.task_id);\n }\n\n var minDate = item.start_date || task.start_date;\n var maxDate = item.end_date || task.end_date;\n\n if (assignmentsPassed) {\n if (item.start_date) {\n minDate = new Date(Math.max(item.start_date.valueOf(), task.start_date.valueOf()));\n }\n\n if (item.end_date) {\n maxDate = new Date(Math.min(item.end_date.valueOf(), task.end_date.valueOf()));\n }\n }\n\n var firstColumn = helpers.findBinary(scale.trace_x, minDate.valueOf());\n var currDate = new Date(scale.trace_x[firstColumn] || gantt.date[scaleUnit + \"_start\"](new Date(minDate)));\n var calendar = gantt.config.work_time ? gantt.getTaskCalendar(task) : gantt;\n precalculatedTimes[calendar.id] = {};\n\n while (currDate < maxDate) {\n var cachedTimes = precalculatedTimes[calendar.id];\n var date = currDate;\n var timestamp = date.valueOf();\n currDate = gantt.date.add(currDate, scaleStep, scaleUnit);\n\n if (cachedTimes[timestamp] === false) {\n continue;\n }\n\n var isWorkTime = calendar.isWorkTime({\n date: date,\n task: task,\n unit: scaleUnit\n });\n\n if (!isWorkTime) {\n cachedTimes[timestamp] = false;\n continue;\n }\n\n if (!timegrid[timestamp]) {\n timegrid[timestamp] = {\n tasks: [],\n assignments: []\n };\n }\n\n timegrid[timestamp].tasks.push(task);\n\n if (assignmentsPassed) {\n timegrid[timestamp].assignments.push(item);\n }\n }\n }\n\n return timegrid;\n }\n\n function calculateResourceLoad(resource, resourceProperty, scale, timeline) {\n var items;\n var assignmentsPassed = false;\n var timegrid = {};\n\n if (gantt.config.process_resource_assignments && resourceProperty === gantt.config.resource_property) {\n if (resource.$role == \"task\") {\n items = gantt.getResourceAssignments(resource.$resource_id, resource.$task_id);\n } else {\n items = gantt.getResourceAssignments(resource.id);\n }\n\n assignmentsPassed = true;\n } else if (resource.$role == \"task\") {\n items = [];\n } else {\n items = gantt.getTaskBy(resourceProperty, resource.id);\n }\n\n var timegrid = calculateResourceLoadFromAssignments(items, scale, assignmentsPassed);\n var scaleUnit = scale.unit;\n var scaleStep = scale.step;\n var timetable = [];\n var start, end, tasks, assignments, cell;\n var config = timeline.$getConfig();\n\n for (var i = 0; i < scale.trace_x.length; i++) {\n start = new Date(scale.trace_x[i]);\n end = gantt.date.add(start, scaleStep, scaleUnit);\n cell = timegrid[start.valueOf()] || {};\n tasks = cell.tasks || [];\n assignments = cell.assignments || [];\n\n if (tasks.length || config.resource_render_empty_cells) {\n timetable.push({\n start_date: start,\n end_date: end,\n tasks: tasks,\n assignments: assignments\n });\n } else {\n timetable.push(null);\n }\n }\n\n return timetable;\n }\n\n return getResourceLoad;\n};","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n Cell = require(\"./cell\");\n\nvar Layout = function (_super) {\n \"use strict\";\n\n __extends(Layout, _super);\n\n function Layout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (parent) _this.$root = true;\n\n _this._parseConfig(config);\n\n _this.$name = \"layout\";\n return _this;\n }\n\n Layout.prototype.destructor = function () {\n if (this.$container && this.$view) {\n domHelpers.removeNode(this.$view);\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n child.destructor();\n }\n\n this.$cells = [];\n\n _super.prototype.destructor.call(this);\n };\n\n Layout.prototype._resizeScrollbars = function (autosize, scrollbars) {\n var scrollChanged = false;\n var visibleScrollbars = [],\n hiddenScrollbars = [];\n\n function showScrollbar(scrollbar) {\n scrollbar.$parent.show();\n scrollChanged = true;\n visibleScrollbars.push(scrollbar);\n }\n\n function hideScrollbar(scrollbar) {\n scrollbar.$parent.hide();\n scrollChanged = true;\n hiddenScrollbars.push(scrollbar);\n }\n\n var scrollbar;\n\n for (var i = 0; i < scrollbars.length; i++) {\n scrollbar = scrollbars[i];\n\n if (autosize[scrollbar.$config.scroll]) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldHide()) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldShow()) {\n showScrollbar(scrollbar);\n } else {\n if (scrollbar.isVisible()) {\n visibleScrollbars.push(scrollbar);\n } else {\n hiddenScrollbars.push(scrollbar);\n }\n }\n }\n\n var visibleGroups = {};\n\n for (var i = 0; i < visibleScrollbars.length; i++) {\n if (visibleScrollbars[i].$config.group) {\n visibleGroups[visibleScrollbars[i].$config.group] = true;\n }\n }\n\n for (var i = 0; i < hiddenScrollbars.length; i++) {\n scrollbar = hiddenScrollbars[i];\n\n if (scrollbar.$config.group && visibleGroups[scrollbar.$config.group]) {\n showScrollbar(scrollbar); // GS-707 If the scrollbar was hidden then showed, the container resize shouldn't happen because of that\n\n for (var j = 0; j < visibleScrollbars.length; j++) {\n if (visibleScrollbars[j] == scrollbar) {\n this.$gantt.$scrollbarRepaint = true;\n break;\n }\n }\n }\n }\n\n return scrollChanged;\n };\n\n Layout.prototype._syncCellSizes = function (groupName, newSize) {\n if (!groupName) return;\n var groups = {};\n\n this._eachChild(function (cell) {\n if (cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\") {\n if (!groups[cell.$config.group]) {\n groups[cell.$config.group] = [];\n }\n\n groups[cell.$config.group].push(cell);\n }\n });\n\n if (groups[groupName]) {\n this._syncGroupSize(groups[groupName], newSize);\n }\n\n return groups[groupName];\n };\n\n Layout.prototype._syncGroupSize = function (cells, newSize) {\n if (!cells.length) return;\n var property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n var direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n var newSizeValue = newSize.value;\n var isGravity = newSize.isGravity;\n\n for (var i = 0; i < cells.length; i++) {\n var ownSize = cells[i].getSize();\n var resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\n if (resizeSibling.$name == \"resizer\") {\n resizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n }\n\n var siblingSize = resizeSibling.getSize();\n\n if (!isGravity) {\n if (resizeSibling[property]) {\n var totalGravity = ownSize.gravity + siblingSize.gravity;\n var totalSize = ownSize[property] + siblingSize[property];\n var k = totalGravity / totalSize;\n cells[i].$config.gravity = k * newSizeValue;\n resizeSibling.$config[property] = totalSize - newSizeValue;\n resizeSibling.$config.gravity = totalGravity - k * newSizeValue;\n } else {\n cells[i].$config[property] = newSizeValue;\n }\n } else {\n cells[i].$config.gravity = newSizeValue;\n }\n\n var mainGrid = this.$gantt.$ui.getView(\"grid\");\n\n if (mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable && !isGravity) {\n this.$gantt.config.grid_width = newSizeValue;\n }\n }\n };\n\n Layout.prototype.resize = function (startStage) {\n var mainCall = false;\n\n if (this.$root && !this._resizeInProgress) {\n this.callEvent(\"onBeforeResize\", []);\n mainCall = true;\n this._resizeInProgress = true;\n }\n\n _super.prototype.resize.call(this, true);\n\n _super.prototype.resize.call(this, false);\n\n if (mainCall) {\n var contentViews = [];\n contentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n contentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n contentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n var scrollbars = this.getCellsByType(\"scroller\");\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n\n var autosize = this._getAutosizeMode(this.$config.autosize);\n\n var scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n if (this.$config.autosize) {\n this.autosize(this.$config.autosize);\n scrollChanged = true;\n }\n\n if (scrollChanged) {\n this.resize();\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n }\n\n this.callEvent(\"onResize\", []);\n }\n\n if (mainCall) {\n this._resizeInProgress = false;\n }\n };\n\n Layout.prototype._eachChild = function (code, cell) {\n cell = cell || this;\n code(cell);\n\n if (cell.$cells) {\n for (var i = 0; i < cell.$cells.length; i++) {\n this._eachChild(code, cell.$cells[i]);\n }\n }\n };\n\n Layout.prototype.isChild = function (view) {\n var res = false;\n\n this._eachChild(function (child) {\n if (child === view || child.$content === view) {\n res = true;\n }\n });\n\n return res;\n };\n\n Layout.prototype.getCellsByType = function (type) {\n var res = [];\n\n if (type === this.$name) {\n res.push(this);\n }\n\n if (this.$content && this.$content.$name == type) {\n res.push(this.$content);\n }\n\n if (this.$cells) {\n for (var i = 0; i < this.$cells.length; i++) {\n var children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\n if (children.length) {\n res.push.apply(res, children);\n }\n }\n }\n\n return res;\n };\n\n Layout.prototype.getNextSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index + 1]) {\n return this.$cells[index + 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.getPrevSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index - 1]) {\n return this.$cells[index - 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.cell = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n\n if (child.$id === id) {\n return child;\n }\n\n var sub = child.cell(id);\n\n if (sub) {\n return sub;\n }\n }\n };\n\n Layout.prototype.cellIndex = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n if (this.$cells[i].$id === id) {\n return i;\n }\n }\n\n return -1;\n };\n\n Layout.prototype.moveView = function (view, ind) {\n if (this.$cells[ind] !== view) {\n return window.alert(\"Not implemented\");\n } else {\n ind += this.$config.header ? 1 : 0;\n var node = this.$view;\n\n if (ind >= node.childNodes.length) {\n node.appendChild(view.$view);\n } else {\n node.insertBefore(view.$view, node.childNodes[ind]);\n }\n }\n };\n\n Layout.prototype._parseConfig = function (config) {\n this.$cells = [];\n this._xLayout = !config.rows;\n var cells = config.rows || config.cols || config.views;\n\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n cell.mode = this._xLayout ? \"x\" : \"y\";\n var $content = this.$factory.initUI(cell, this);\n\n if (!$content) {\n cells.splice(i, 1);\n i--;\n } else {\n $content.$parent = this;\n this.$cells.push($content);\n }\n }\n };\n\n Layout.prototype.getCells = function () {\n return this.$cells;\n };\n\n Layout.prototype.render = function () {\n var view = domHelpers.insertNode(this.$container, this.$toHTML());\n this.$fill(view, null);\n this.callEvent(\"onReady\", []);\n this.resize(); // do simple repaint after the first call\n\n this.render = this.resize;\n };\n\n Layout.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n var cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\n for (var i = cells.length - 1; i >= 0; i--) {\n var sub = this.$cells[i];\n sub.$fill(cells[i], this); // initially hidden cell\n\n if (sub.$config.hidden) {\n sub.$view.parentNode.removeChild(sub.$view);\n }\n }\n };\n\n Layout.prototype.$toHTML = function () {\n var mode = this._xLayout ? \"x\" : \"y\";\n var html = [];\n\n for (var i = 0; i < this.$cells.length; i++) {\n html.push(this.$cells[i].$toHTML());\n }\n\n return _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n };\n\n Layout.prototype.getContentSize = function (mode) {\n var contentWidth = 0,\n contentHeight = 0;\n var cellSize, cell, borders;\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n if (cell.$config.hidden) continue;\n cellSize = cell.getContentSize(mode);\n\n if (cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]) {\n cellSize.height = 0;\n cellSize.width = 0;\n }\n\n if (cell.$config.resizer) {\n if (this._xLayout) {\n cellSize.height = 0;\n } else {\n cellSize.width = 0;\n }\n }\n\n borders = cell._getBorderSizes();\n\n if (this._xLayout) {\n contentWidth += cellSize.width + borders.horizontal;\n contentHeight = Math.max(contentHeight, cellSize.height + borders.vertical);\n } else {\n contentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n contentHeight += cellSize.height + borders.vertical;\n }\n }\n\n borders = this._getBorderSizes();\n contentWidth += borders.horizontal;\n contentHeight += borders.vertical; // GS-149 & GS-150: By default this code only increases the container sizes, because of that, the cell sizes\n // are also increased. Keep this code here in the case if something goes wrong\n\n /*\n if(this.$root){\n \tcontentWidth += 1;\n \tcontentHeight += 1;\n }\n */\n\n return {\n width: contentWidth,\n height: contentHeight\n };\n };\n\n Layout.prototype._cleanElSize = function (value) {\n return (value || \"\").toString().replace(\"px\", \"\") * 1 || 0;\n };\n\n Layout.prototype._getBoxStyles = function (div) {\n var computed = null;\n\n if (window.getComputedStyle) {\n computed = window.getComputedStyle(div, null);\n } else {\n //IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\n computed = {\n \"width\": div.clientWidth,\n \"height\": div.clientHeight\n };\n }\n\n var properties = [\"width\", \"height\", \"paddingTop\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\", \"borderBottomWidth\"];\n var styles = {\n boxSizing: computed.boxSizing == \"border-box\"\n };\n\n if (computed.MozBoxSizing) {\n styles.boxSizing = computed.MozBoxSizing == \"border-box\";\n }\n\n for (var i = 0; i < properties.length; i++) {\n styles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\n }\n\n var box = {\n horPaddings: styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth,\n vertPaddings: styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth,\n borderBox: styles.boxSizing,\n innerWidth: styles.width,\n innerHeight: styles.height,\n outerWidth: styles.width,\n outerHeight: styles.height\n };\n\n if (box.borderBox) {\n box.innerWidth -= box.horPaddings;\n box.innerHeight -= box.vertPaddings;\n } else {\n box.outerWidth += box.horPaddings;\n box.outerHeight += box.vertPaddings;\n }\n\n return box;\n };\n\n Layout.prototype._getAutosizeMode = function (config) {\n var res = {\n x: false,\n y: false\n };\n\n if (config === \"xy\") {\n res.x = res.y = true;\n } else if (config === \"y\" || config === true) {\n res.y = true;\n } else if (config === \"x\") {\n res.x = true;\n }\n\n return res;\n };\n\n Layout.prototype.autosize = function (mode) {\n var res = this._getAutosizeMode(mode);\n\n var boxSizes = this._getBoxStyles(this.$container);\n\n var contentSizes = this.getContentSize(mode);\n var node = this.$container;\n\n if (res.x) {\n if (boxSizes.borderBox) {\n contentSizes.width += boxSizes.horPaddings;\n }\n\n node.style.width = contentSizes.width + \"px\";\n }\n\n if (res.y) {\n if (boxSizes.borderBox) {\n contentSizes.height += boxSizes.vertPaddings;\n }\n\n node.style.height = contentSizes.height + \"px\";\n }\n };\n\n Layout.prototype.getSize = function () {\n this._sizes = [];\n var width = 0;\n var minWidth = 0;\n var maxWidth = 100000000000;\n var height = 0;\n var maxHeight = 100000000000;\n var minHeight = 0;\n\n for (var i = 0; i < this.$cells.length; i++) {\n var size = this._sizes[i] = this.$cells[i].getSize();\n\n if (this.$cells[i].$config.hidden) {\n continue;\n }\n\n if (this._xLayout) {\n if (!size.width && size.minWidth) {\n width += size.minWidth;\n } else {\n width += size.width;\n }\n\n maxWidth += size.maxWidth;\n minWidth += size.minWidth;\n height = Math.max(height, size.height);\n maxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\n\n minHeight = Math.max(minHeight, size.minHeight); // max of minHeight\n } else {\n if (!size.height && size.minHeight) {\n height += size.minHeight;\n } else {\n height += size.height;\n }\n\n maxHeight += size.maxHeight;\n minHeight += size.minHeight;\n width = Math.max(width, size.width);\n maxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\n\n minWidth = Math.max(minWidth, size.minWidth); // max of minWidth\n }\n }\n\n var self = _super.prototype.getSize.call(this); // maxWidth\n\n\n if (self.maxWidth >= 100000) {\n self.maxWidth = maxWidth;\n } // maxHeight\n\n\n if (self.maxHeight >= 100000) {\n self.maxHeight = maxHeight;\n } // minWidth\n\n\n self.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth; // || self.width || Math.max(minWidth, width);\n // minHeight\n\n self.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight; //self.minHeight || self.height || Math.max(minHeight, height);\n // sizes with paddings and margins\n\n if (this._xLayout) {\n self.minWidth += this.$config.margin * this.$cells.length || 0;\n self.minWidth += this.$config.padding * 2 || 0;\n self.minHeight += this.$config.padding * 2 || 0;\n } else {\n self.minHeight += this.$config.margin * this.$cells.length || 0;\n self.minHeight += this.$config.padding * 2 || 0;\n }\n\n return self;\n }; // calc total gravity and free space\n\n\n Layout.prototype._calcFreeSpace = function (s, cell, xLayout) {\n var min = xLayout ? cell.minWidth : cell.minHeight;\n var max = xLayout ? cell.maxWidth : cell.maxWidth;\n var side = s;\n\n if (!side) {\n side = Math.floor(this._free / this._gravity * cell.gravity);\n\n if (side > max) {\n side = max;\n this._free -= side;\n this._gravity -= cell.gravity;\n }\n\n if (side < min) {\n side = min;\n this._free -= side;\n this._gravity -= cell.gravity;\n }\n } else {\n if (side > max) {\n side = max;\n }\n\n if (side < min) {\n side = min;\n }\n\n this._free -= side;\n }\n\n return side;\n };\n\n Layout.prototype._calcSize = function (s, size, xLayout) {\n var side = s;\n var min = xLayout ? size.minWidth : size.minHeight;\n var max = xLayout ? size.maxWidth : size.maxHeight;\n\n if (!side) {\n side = Math.floor(this._free / this._gravity * size.gravity);\n }\n\n if (side > max) {\n side = max;\n }\n\n if (side < min) {\n side = min;\n }\n\n return side;\n };\n\n Layout.prototype._configureBorders = function () {\n if (this.$root) {\n this._setBorders([this._borders.left, this._borders.top, this._borders.right, this._borders.bottom], this);\n }\n\n var borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\n var cells = this.$cells;\n var lastVisibleIndex = cells.length - 1;\n\n for (var i = lastVisibleIndex; i >= 0; i--) {\n if (!cells[i].$config.hidden) {\n lastVisibleIndex = i;\n break;\n }\n }\n\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].$config.hidden) {\n continue;\n }\n\n var lastCell = i >= lastVisibleIndex;\n var borderColorClass = \"\";\n\n if (!lastCell && cells[i + 1]) {\n if (cells[i + 1].$config.view == \"scrollbar\") {\n if (this._xLayout) {\n lastCell = true;\n } else {\n borderColorClass = \"gantt_layout_cell_border_transparent\";\n }\n }\n }\n\n this._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\n }\n };\n\n Layout.prototype._updateCellVisibility = function () {\n var oldVisibleCells = this._visibleCells || {};\n var firstCall = !this._visibleCells;\n var visibleCells = {};\n var cell;\n var parentVisibility = [];\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hide_empty) {\n parentVisibility.push(cell);\n }\n\n if (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n cell._hide(true);\n } else if (!cell.$config.hidden && !oldVisibleCells[cell.$id]) {\n cell._hide(false);\n }\n\n if (!cell.$config.hidden) {\n visibleCells[cell.$id] = true;\n }\n }\n\n this._visibleCells = visibleCells; // GS-27. A way to hide the whole cell if all its children are hidden\n\n for (var i = 0; i < parentVisibility.length; i++) {\n var cell = parentVisibility[i];\n var children = cell.$cells;\n var hideCell = true;\n children.forEach(function (child) {\n if (!child.$config.hidden && !child.$config.resizer) {\n hideCell = false;\n }\n });\n cell.$config.hidden = hideCell;\n }\n };\n\n Layout.prototype.setSize = function (x, y) {\n this._configureBorders();\n\n _super.prototype.setSize.call(this, x, y);\n\n y = this.$lastSize.contentY;\n x = this.$lastSize.contentX;\n var padding = this.$config.padding || 0;\n this.$view.style.padding = padding + \"px\";\n this._gravity = 0;\n this._free = this._xLayout ? x : y;\n this._free -= padding * 2; // calc all gravity\n\n var cell, size;\n\n this._updateCellVisibility();\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n var margin = this.$config.margin || 0;\n\n if (cell.$name == \"resizer\" && !margin) {\n margin = -1;\n } // set margins to child cell\n\n\n var cellView = cell.$view;\n var marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\n if (i !== this.$cells.length - 1) {\n cellView.style[marginSide] = margin + \"px\";\n this._free -= margin; // calc free space without margin\n }\n\n size = this._sizes[i];\n\n if (this._xLayout) {\n if (!size.width) {\n this._gravity += size.gravity;\n }\n } else {\n if (!size.height) {\n this._gravity += size.gravity;\n }\n }\n }\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var width = size.width;\n var height = size.height;\n\n if (this._xLayout) {\n this._calcFreeSpace(width, size, true);\n } else {\n this._calcFreeSpace(height, size, false);\n }\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var dx = void 0;\n var dy = void 0;\n\n if (this._xLayout) {\n dx = this._calcSize(size.width, size, true);\n dy = y - padding * 2; // layout height without paddings\n } else {\n dx = x - padding * 2; // layout width without paddings\n\n dy = this._calcSize(size.height, size, false);\n }\n\n cell.setSize(dx, dy);\n }\n };\n\n return Layout;\n}(Cell);\n\nmodule.exports = Layout;","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\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nfunction IsWorkTimeArgument(date, unit, task, id, calendar) {\n this.date = date;\n this.unit = unit;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar) {\n this.date = date;\n this.dir = dir;\n this.unit = unit;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar) {\n this.start_date = start_date;\n this.duration = duration;\n this.unit = unit;\n this.step = step;\n this.task = task;\n this.id = id;\n this.calendar = calendar;\n return this;\n}\n\nfunction GetDurationArgument(start, end, task, calendar) {\n this.start_date = start;\n this.end_date = end;\n this.task = task;\n this.calendar = calendar;\n this.unit = null;\n this.step = null;\n return this;\n}\n\nvar calendarArgumentsHelper = function calendarArgumentsHelper(gantt) {\n return {\n getWorkHoursArguments: function getWorkHoursArguments() {\n var config = arguments[0];\n\n if (helpers.isDate(config)) {\n config = {\n date: config\n };\n } else {\n config = utils.mixin({}, config);\n }\n\n if (!helpers.isValidDate(config.date)) {\n gantt.assert(false, \"Invalid date argument for getWorkHours method\");\n throw new Error(\"Invalid date argument for getWorkHours method\");\n }\n\n return config;\n },\n setWorkTimeArguments: function setWorkTimeArguments() {\n return arguments[0];\n },\n unsetWorkTimeArguments: function unsetWorkTimeArguments() {\n return arguments[0];\n },\n isWorkTimeArguments: function isWorkTimeArguments() {\n var config = arguments[0];\n\n if (config instanceof IsWorkTimeArgument) {\n return config;\n }\n\n var processedConfig;\n\n if (!config.date) {\n //IsWorkTimeArgument(date, unit, task, id, calendar)\n processedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\n } else {\n processedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\n }\n\n processedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\n if (!helpers.isValidDate(processedConfig.date)) {\n gantt.assert(false, \"Invalid date argument for isWorkTime method\");\n throw new Error(\"Invalid date argument for isWorkTime method\");\n }\n\n return processedConfig;\n },\n getClosestWorkTimeArguments: function getClosestWorkTimeArguments(arg) {\n var config = arguments[0];\n if (config instanceof ClosestWorkTimeArgument) return config;\n var processedConfig;\n\n if (helpers.isDate(config)) {\n processedConfig = new ClosestWorkTimeArgument(config);\n } else {\n processedConfig = new ClosestWorkTimeArgument(config.date, config.dir, config.unit, config.task, null, //config.id,\n config.calendar);\n }\n\n if (config.id) {\n processedConfig.task = config;\n }\n\n processedConfig.dir = config.dir || 'any';\n processedConfig.unit = config.unit || gantt.config.duration_unit;\n\n if (!helpers.isValidDate(processedConfig.date)) {\n gantt.assert(false, \"Invalid date argument for getClosestWorkTime method\");\n throw new Error(\"Invalid date argument for getClosestWorkTime method\");\n }\n\n return processedConfig;\n },\n _getStartEndConfig: function _getStartEndConfig(param) {\n var argumentType = GetDurationArgument;\n var config;\n if (param instanceof argumentType) return param;\n\n if (helpers.isDate(param)) {\n config = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n config = new argumentType(param.start_date, param.end_date, param.task);\n\n if (param.id !== null && param.id !== undefined) {\n config.task = param;\n }\n }\n\n config.unit = config.unit || gantt.config.duration_unit;\n config.step = config.step || gantt.config.duration_step;\n config.start_date = config.start_date || config.start || config.date;\n\n if (!helpers.isValidDate(config.start_date)) {\n gantt.assert(false, \"Invalid start_date argument for getDuration method\");\n throw new Error(\"Invalid start_date argument for getDuration method\");\n }\n\n if (!helpers.isValidDate(config.end_date)) {\n gantt.assert(false, \"Invalid end_date argument for getDuration method\");\n throw new Error(\"Invalid end_date argument for getDuration method\");\n }\n\n return config;\n },\n getDurationArguments: function getDurationArguments(start, end, unit, step) {\n return this._getStartEndConfig.apply(this, arguments);\n },\n hasDurationArguments: function hasDurationArguments(start, end, unit, step) {\n return this._getStartEndConfig.apply(this, arguments);\n },\n calculateEndDateArguments: function calculateEndDateArguments(start, duration, unit, step) {\n var config = arguments[0];\n if (config instanceof CalculateEndDateArgument) return config;\n var processedConfig; //CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\n\n if (helpers.isDate(config)) {\n processedConfig = new CalculateEndDateArgument(arguments[0], arguments[1], arguments[2], undefined, arguments[3], undefined, arguments[4]);\n } else {\n processedConfig = new CalculateEndDateArgument(config.start_date, config.duration, config.unit, config.step, config.task, null, //config.id,\n config.calendar);\n }\n\n if (config.id !== null && config.id !== undefined) {\n processedConfig.task = config; // received a task object as an argument\n // ignore 'unit' and 'step' properties in this case, since it's likely a part of data model of a task\n\n processedConfig.unit = null;\n processedConfig.step = null;\n }\n\n processedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n processedConfig.step = processedConfig.step || gantt.config.duration_step;\n\n if (!helpers.isValidDate(processedConfig.start_date)) {\n gantt.assert(false, \"Invalid start_date argument for calculateEndDate method\");\n throw new Error(\"Invalid start_date argument for calculateEndDate method\");\n }\n\n return processedConfig;\n }\n };\n};\n\nmodule.exports = calendarArgumentsHelper;","var quickPositionHelperFactory = require(\"./row_position_fixed_height\");\n\nfunction createMixin(view) {\n var getItemTopCache = {};\n var getRowTopCache = {};\n var getItemHeightCache = null;\n var totalHeightCache = -1;\n var getItemHeightCacheState = null;\n var quickPosition = quickPositionHelperFactory(view);\n return {\n _resetTopPositionHeight: function _resetTopPositionHeight() {\n getItemTopCache = {};\n getRowTopCache = {};\n quickPosition.resetCache();\n },\n _resetHeight: function _resetHeight() {\n var store = this.$config.rowStore;\n var newState = this.getCacheStateTotalHeight(store);\n\n if (!getItemHeightCacheState) {\n getItemHeightCacheState = newState;\n } else if (this.shouldClearHeightCache(getItemHeightCacheState, newState)) {\n getItemHeightCacheState = newState;\n getItemHeightCache = null;\n }\n\n totalHeightCache = -1;\n quickPosition.resetCache();\n },\n\n /**\n * Get top coordinate by row index (order)\n * @param {number} index\n */\n getRowTop: function getRowTop(index) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getRowTop(index);\n }\n\n var store = this.$config.rowStore;\n\n if (!store) {\n return 0;\n }\n\n if (getRowTopCache[index] !== undefined) {\n return getRowTopCache[index];\n } else {\n var all = store.getIndexRange();\n var top = 0;\n var result = 0;\n\n for (var i = 0; i < all.length; i++) {\n getRowTopCache[i] = top;\n top += this.getItemHeight(all[i].id);\n\n if (i < index) {\n result = top;\n }\n }\n\n return result;\n }\n },\n\n /**\n * Get top coordinate by item id\n * @param {*} task_id\n */\n getItemTop: function getItemTop(taskId) {\n if (this.$config.rowStore) {\n if (getItemTopCache[taskId] !== undefined) {\n return getItemTopCache[taskId];\n }\n\n var store = this.$config.rowStore;\n if (!store) return 0;\n var itemIndex = store.getIndexById(taskId);\n\n if (itemIndex === -1 && store.getParent && store.exists(taskId)) {\n var parentId = store.getParent(taskId);\n\n if (store.exists(parentId)) {\n // if task is not found in list - maybe it's parent is a split task and we should use parents index instead\n var parent = store.getItem(parentId);\n\n if (this.$gantt.isSplitTask(parent)) {\n return this.getItemTop(parentId);\n }\n }\n }\n\n getItemTopCache[taskId] = this.getRowTop(itemIndex);\n return getItemTopCache[taskId];\n } else {\n return 0;\n }\n },\n\n /**\n * Get height of the item by item id\n * @param {*} itemId\n */\n getItemHeight: function getItemHeight(itemId) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getItemHeight(itemId);\n }\n\n if (!getItemHeightCache && this.$config.rowStore) {\n this._fillHeightCache(this.$config.rowStore);\n }\n\n if (getItemHeightCache[itemId] !== undefined) {\n return getItemHeightCache[itemId];\n }\n\n var defaultHeight = this.$getConfig().row_height;\n\n if (this.$config.rowStore) {\n var store = this.$config.rowStore;\n if (!store) return defaultHeight;\n var item = store.getItem(itemId);\n return getItemHeightCache[itemId] = item && item.row_height || defaultHeight;\n } else {\n return defaultHeight;\n }\n },\n _fillHeightCache: function _fillHeightCache(store) {\n if (!store) {\n return;\n }\n\n getItemHeightCache = {};\n var defaultHeight = this.$getConfig().row_height;\n store.eachItem(function (item) {\n return getItemHeightCache[item.id] = item && item.row_height || defaultHeight;\n });\n },\n getCacheStateTotalHeight: function getCacheStateTotalHeight(store) {\n var globalHeight = this.$getConfig().row_height;\n var itemHeightCache = {};\n var items = [];\n var sumHeight = 0;\n\n if (store) {\n store.eachItem(function (item) {\n items.push(item);\n itemHeightCache[item.id] = item.row_height;\n sumHeight += item.row_height || globalHeight;\n });\n }\n\n return {\n globalHeight: globalHeight,\n items: items,\n count: items.length,\n sumHeight: sumHeight\n };\n },\n shouldClearHeightCache: function shouldClearHeightCache(oldState, newState) {\n if (oldState.count != newState.count) {\n return true;\n }\n\n if (oldState.globalHeight != newState.globalHeight) {\n return true;\n }\n\n if (oldState.sumHeight != newState.sumHeight) {\n return true;\n }\n\n for (var i in oldState.items) {\n var newValue = newState.items[i];\n\n if (newValue !== undefined && newValue != oldState.items[i]) {\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * Get total height of items\n */\n getTotalHeight: function getTotalHeight() {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getTotalHeight();\n }\n\n if (totalHeightCache != -1) {\n return totalHeightCache;\n }\n\n if (this.$config.rowStore) {\n var store = this.$config.rowStore;\n\n this._fillHeightCache(store);\n\n var getHeight = this.getItemHeight.bind(this);\n var visibleItems = store.getVisibleItems();\n var totalHeight = 0;\n visibleItems.forEach(function (item) {\n totalHeight += getHeight(item.id);\n });\n totalHeightCache = totalHeight;\n return totalHeight;\n } else {\n return 0;\n }\n },\n\n /**\n * Get item by top position\n * @param {*} top\n */\n getItemIndexByTopPosition: function getItemIndexByTopPosition(top) {\n if (this.$config.rowStore) {\n if (quickPosition.canUseSimpleCalculation()) {\n return quickPosition.getItemIndexByTopPosition(top);\n }\n\n var store = this.$config.rowStore;\n\n for (var i = 0; i < store.countVisible(); i++) {\n var current = this.getRowTop(i);\n var next = this.getRowTop(i + 1);\n\n if (!next) {\n var taskId = store.getIdByIndex(i);\n next = current + this.getItemHeight(taskId);\n }\n\n if (top >= current && top < next) {\n return i;\n }\n }\n } else {\n return 0;\n }\n }\n };\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 for (var i = 0; i < linkIds.length; i++) {\n if (gantt.isLinkExists(linkIds[i])) {\n targetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\n }\n }\n}\n\nfunction copyLinkIds(gantt, task, targetHash) {\n copyLinkIdsArray(gantt, task.$source, targetHash);\n copyLinkIdsArray(gantt, task.$target, targetHash);\n}\n\nfunction getSubtreeLinks(gantt, rootId) {\n var res = {};\n\n if (gantt.isTaskExists(rootId)) {\n copyLinkIds(gantt, gantt.getTask(rootId), res);\n }\n\n gantt.eachTask(function (child) {\n copyLinkIds(gantt, child, res);\n }, rootId);\n return res;\n}\n\nfunction getSubtreeTasks(gantt, rootId) {\n var res = {};\n gantt.eachTask(function (child) {\n res[child.id] = child;\n }, rootId);\n return res;\n}\n\nmodule.exports = {\n getSubtreeLinks: getSubtreeLinks,\n getSubtreeTasks: getSubtreeTasks\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\n\nvar PrimaryScaleHelper = require(\"./ui/timeline/scales\");\n\nfunction resolveConfigRange(unit, gantt) {\n var range = {\n start_date: null,\n end_date: null\n };\n\n if (gantt.config.start_date && gantt.config.end_date) {\n range.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n var end = new Date(gantt.config.end_date);\n var start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\n if (+end != +start_interval) {\n end = gantt.date.add(start_interval, 1, unit);\n } else {\n end = start_interval;\n }\n\n range.end_date = end;\n }\n\n return range;\n}\n\nfunction _scale_range_unit(gantt) {\n var primaryScale = new PrimaryScaleHelper(gantt).primaryScale();\n var unit = primaryScale.unit;\n var step = primaryScale.step;\n\n if (gantt.config.scale_offset_minimal) {\n var helper = new ScaleHelper(gantt);\n var scales = [helper.primaryScale()].concat(helper.getSubScales());\n helper.sortScales(scales);\n unit = scales[scales.length - 1].unit;\n step = scales[scales.length - 1].step || 1;\n }\n\n return {\n unit: unit,\n step: step\n };\n}\n\nfunction _init_tasks_range(gantt) {\n var cfg = _scale_range_unit(gantt);\n\n var unit = cfg.unit,\n step = cfg.step;\n var range = resolveConfigRange(unit, gantt);\n\n if (!(range.start_date && range.end_date)) {\n range = gantt.getSubtaskDates();\n\n if (!range.start_date || !range.end_date) {\n range = {\n start_date: new Date(),\n end_date: new Date()\n };\n }\n\n range.start_date = gantt.date[unit + \"_start\"](range.start_date);\n range.start_date = gantt.calculateEndDate({\n start_date: gantt.date[unit + \"_start\"](range.start_date),\n duration: -1,\n unit: unit,\n step: step\n }); //one free column before first task\n\n range.end_date = gantt.date[unit + \"_start\"](range.end_date);\n range.end_date = gantt.calculateEndDate({\n start_date: range.end_date,\n duration: 2,\n unit: unit,\n step: step\n }); //one free column after last task\n }\n\n gantt._min_date = range.start_date;\n gantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n if (gantt.config.fit_tasks) {\n var old_min = +gantt._min_date,\n old_max = +gantt._max_date; //this._init_tasks_range();\n\n if (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = function updateTasksRange(gantt) {\n _init_tasks_range(gantt);\n\n _adjust_scales(gantt);\n};","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nvar DataStore = require(\"./datastore\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nvar TreeDataStore = function TreeDataStore(config) {\n DataStore.apply(this, [config]);\n this._branches = {};\n this.pull = {}; //GS-761 Update existing item instead of adding it to the new position\n\n this.$initItem = function (item) {\n var loadedItem = item;\n\n if (config.initItem) {\n loadedItem = config.initItem(loadedItem);\n }\n\n var existingItem = this.getItem(item.id);\n\n if (existingItem && existingItem.parent != loadedItem.parent) {\n this.move(loadedItem.id, loadedItem.$index || -1, loadedItem.parent || this._ganttConfig.root_id);\n }\n\n return loadedItem;\n };\n\n this.$parentProperty = config.parentProperty || \"parent\";\n\n if (typeof config.rootId !== \"function\") {\n this.$getRootId = function (val) {\n return function () {\n return val;\n };\n }(config.rootId || 0);\n } else {\n this.$getRootId = config.rootId;\n } // TODO: replace with live reference to gantt config\n\n\n this.$openInitially = config.openInitially;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n this._skip_refresh = false;\n this._ganttConfig = null;\n\n if (config.getConfig) {\n this._ganttConfig = config.getConfig();\n }\n\n var splitParents = {};\n var splitItems = {};\n var taskOpenState = {};\n var taskVisibility = {};\n var haveSplitItems = false;\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n return true;\n });\n\n this.attachEvent(\"onPreFilter\", function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n haveSplitItems = false;\n this.eachItem(function (item) {\n var parent = this.getParent(item.id);\n\n if (item.$open && taskOpenState[parent] !== false) {\n taskOpenState[item.id] = true;\n } else {\n taskOpenState[item.id] = false;\n }\n\n if (this._isSplitItem(item)) {\n haveSplitItems = true;\n splitParents[item.id] = true;\n splitItems[item.id] = true;\n }\n\n if (haveSplitItems && splitItems[parent]) {\n splitItems[item.id] = true;\n }\n\n if (taskOpenState[parent] || taskOpenState[parent] === undefined) {\n taskVisibility[item.id] = true;\n } else {\n taskVisibility[item.id] = false;\n }\n });\n });\n this.attachEvent(\"onFilterItem\", function (id, item) {\n var canOpenSplitTasks = false;\n\n if (this._ganttConfig) {\n var canOpenSplitTasks = this._ganttConfig.open_split_tasks;\n }\n\n var open = taskVisibility[item.id];\n\n if (haveSplitItems) {\n if (open && splitItems[item.id] && !splitParents[item.id]) {\n open = !!canOpenSplitTasks;\n }\n\n if (splitItems[item.id] && !splitParents[item.id]) {\n item.$split_subtask = true;\n }\n }\n\n item.$expanded_branch = !!taskVisibility[item.id];\n return !!open;\n });\n this.attachEvent(\"onFilter\", function () {\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n });\n return this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n _buildTree: function _buildTree(data) {\n var item = null;\n var rootId = this.$getRootId();\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n this.setParent(item, replaceValidZeroId(this.getParent(item), rootId) || rootId);\n } // calculating $level for each item\n\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n this._add_branch(item);\n\n item.$level = this.calculateItemLevel(item);\n item.$local_index = this.getBranchIndex(item.id);\n\n if (!utils.defined(item.$open)) {\n item.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n }\n }\n\n this._updateOrder();\n },\n _isSplitItem: function _isSplitItem(item) {\n return item.render == \"split\" && this.hasChild(item.id);\n },\n parse: function parse(data) {\n if (!this._skip_refresh) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n this._buildTree(loaded);\n\n this.filter();\n\n if (!this._skip_refresh) {\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n var parent = this.getParent(item);\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n this.setParent(item, parent);\n }\n\n var parentIndex = this.getIndexById(parent);\n var targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n if (targetIndex * 1 !== targetIndex) {\n targetIndex = undefined;\n }\n\n DataStore.prototype._addItemInner.call(this, item, targetIndex);\n\n this.setParent(item, parent);\n\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent);\n }\n\n this._add_branch(item, index);\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n var children = this.getChildren(oldId);\n var visibleOrder = this._searchVisibleOrder[oldId];\n\n DataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n var parent = this.getParent(newId);\n\n this._replace_branch_child(parent, oldId, newId);\n\n if (this._branches[oldId]) {\n this._branches[newId] = this._branches[oldId];\n }\n\n for (var i = 0; i < children.length; i++) {\n var child = this.getItem(children[i]);\n child[this.$parentProperty] = newId;\n child.$rendered_parent = newId;\n }\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._branches[oldId];\n },\n _traverseBranches: function _traverseBranches(code, parent) {\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var branch = this._branches[parent];\n\n if (branch) {\n for (var i = 0; i < branch.length; i++) {\n var itemId = branch[i];\n code.call(this, itemId);\n if (this._branches[itemId]) this._traverseBranches(code, itemId);\n }\n }\n },\n _updateOrder: function _updateOrder(code) {\n this.fullOrder = powerArray.$create();\n\n this._traverseBranches(function (taskId) {\n this.fullOrder.push(taskId);\n });\n\n if (code) DataStore.prototype._updateOrder.call(this, code);\n },\n _removeItemInner: function _removeItemInner(id) {\n var items = [];\n this.eachItem(function (child) {\n items.push(child);\n }, id);\n items.push(this.getItem(id));\n\n for (var i = 0; i < items.length; i++) {\n this._move_branch(items[i], this.getParent(items[i]), null);\n\n DataStore.prototype._removeItemInner.call(this, items[i].id);\n\n this._move_branch(items[i], this.getParent(items[i]), null);\n }\n },\n move: function move(sid, tindex, parent) {\n //target id as 4th parameter\n var id = arguments[3];\n id = replaceValidZeroId(id, this._ganttConfig.root_id);\n\n if (id) {\n if (id === sid) return;\n parent = this.getParent(id);\n tindex = this.getBranchIndex(id);\n }\n\n if (sid == parent) {\n return;\n }\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var source = this.getItem(sid);\n var source_pid = this.getParent(source.id);\n var tbranch = this.getChildren(parent);\n if (tindex == -1) tindex = tbranch.length + 1;\n\n if (source_pid == parent) {\n var sindex = this.getBranchIndex(sid);\n if (sindex == tindex) return;\n }\n\n if (this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false) return false;\n var placeholderIds = [];\n\n for (var i = 0; i < tbranch.length; i++) {\n if (isPlaceholderTask(tbranch[i], null, this, this._ganttConfig)) {\n placeholderIds.push(tbranch[i]);\n tbranch.splice(i, 1);\n i--;\n }\n }\n\n this._replace_branch_child(source_pid, sid);\n\n tbranch = this.getChildren(parent);\n var tid = tbranch[tindex];\n tid = replaceValidZeroId(tid, this._ganttConfig.root_id);\n if (!tid) //adding as last element\n tbranch.push(sid);else tbranch = tbranch.slice(0, tindex).concat([sid]).concat(tbranch.slice(tindex));\n\n if (placeholderIds.length) {\n tbranch = tbranch.concat(placeholderIds);\n }\n\n this.setParent(source, parent);\n this._branches[parent] = tbranch;\n var diff = this.calculateItemLevel(source) - source.$level;\n source.$level += diff;\n this.eachItem(function (item) {\n item.$level += diff;\n }, source.id, this);\n\n this._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n this.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n this.refresh();\n },\n getBranchIndex: function getBranchIndex(id) {\n var branch = this.getChildren(this.getParent(id));\n\n for (var i = 0; i < branch.length; i++) {\n if (branch[i] == id) return i;\n }\n\n return -1;\n },\n hasChild: function hasChild(id) {\n var branch = this._branches[id];\n return branch && branch.length;\n },\n getChildren: function getChildren(id) {\n var branch = this._branches[id];\n return branch ? branch : powerArray.$create();\n },\n isChildOf: function isChildOf(childId, parentId) {\n if (!this.exists(childId)) return false;\n if (parentId === this.$getRootId()) return true;\n if (!this.hasChild(parentId)) return false;\n var item = this.getItem(childId);\n var pid = this.getParent(childId);\n var parent = this.getItem(parentId);\n\n if (parent.$level >= item.$level) {\n return false;\n }\n\n while (item && this.exists(pid)) {\n item = this.getItem(pid);\n if (item && item.id == parentId) return true;\n pid = this.getParent(item);\n }\n\n return false;\n },\n getSiblings: function getSiblings(id) {\n if (!this.exists(id)) {\n return powerArray.$create();\n }\n\n var parent = this.getParent(id);\n return this.getChildren(parent);\n },\n getNextSibling: function getNextSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var nextSibling = siblings[i + 1];\n\n if (nextSibling === 0 && i > 0) {\n nextSibling = \"0\";\n }\n\n return nextSibling || null;\n }\n }\n\n return null;\n },\n getPrevSibling: function getPrevSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var previousSibling = siblings[i - 1];\n\n if (previousSibling === 0 && i > 0) {\n previousSibling = \"0\";\n }\n\n return previousSibling || null;\n }\n }\n\n return null;\n },\n getParent: function getParent(id) {\n var item = null;\n\n if (id.id !== undefined) {\n item = id;\n } else {\n item = this.getItem(id);\n }\n\n var parent;\n\n if (item) {\n parent = item[this.$parentProperty];\n } else {\n parent = this.$getRootId();\n }\n\n return parent;\n },\n clearAll: function clearAll() {\n this._branches = {};\n DataStore.prototype.clearAll.call(this);\n },\n calculateItemLevel: function calculateItemLevel(item) {\n var level = 0;\n this.eachParent(function () {\n level++;\n }, item);\n return level;\n },\n _setParentInner: function _setParentInner(item, new_pid, silent) {\n if (!silent) {\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent, new_pid);\n } else {\n this._move_branch(item, item[this.$parentProperty], new_pid);\n }\n }\n },\n setParent: function setParent(item, new_pid, silent) {\n this._setParentInner(item, new_pid, silent);\n\n item[this.$parentProperty] = new_pid;\n },\n _eachItemCached: function _eachItemCached(code, cache) {\n for (var i = 0, len = cache.length; i < len; i++) {\n code.call(this, cache[i]);\n }\n },\n _eachItemIterate: function _eachItemIterate(code, startId, cache) {\n var itemsStack = this.getChildren(startId);\n\n if (itemsStack.length) {\n itemsStack = itemsStack.slice().reverse();\n }\n\n while (itemsStack.length) {\n var itemId = itemsStack.pop();\n var item = this.getItem(itemId);\n code.call(this, item);\n\n if (cache) {\n cache.push(item);\n }\n\n if (this.hasChild(item.id)) {\n var children = this.getChildren(item.id);\n var len = children.length;\n\n for (var i = len - 1; i >= 0; i--) {\n itemsStack.push(children[i]);\n }\n }\n }\n },\n eachItem: function eachItem(code, parent) {\n var rootId = this.$getRootId();\n\n if (!utils.defined(parent)) {\n parent = rootId;\n }\n\n var startId = replaceValidZeroId(parent, rootId) || rootId;\n var useCache = false;\n var buildCache = false;\n var cache = null;\n\n if (startId === rootId) {\n if (this._eachItemMainRangeCache) {\n useCache = true;\n cache = this._eachItemMainRangeCache;\n } else {\n buildCache = true;\n cache = this._eachItemMainRangeCache = [];\n }\n }\n\n if (useCache) {\n this._eachItemCached(code, cache);\n } else {\n this._eachItemIterate(code, startId, buildCache ? cache : null);\n }\n },\n eachParent: function eachParent(code, startItem) {\n var parentsHash = {};\n var item = startItem;\n var parent = this.getParent(item);\n\n while (this.exists(parent)) {\n if (parentsHash[parent]) {\n throw new Error(\"Invalid tasks tree. Cyclic reference has been detected on task \" + parent);\n }\n\n parentsHash[parent] = true;\n item = this.getItem(parent);\n code.call(this, item);\n parent = this.getParent(item);\n }\n },\n _add_branch: function _add_branch(item, index, parent) {\n var pid = parent === undefined ? this.getParent(item) : parent;\n if (!this.hasChild(pid)) this._branches[pid] = powerArray.$create();\n var branch = this.getChildren(pid);\n var added_already = false;\n\n for (var i = 0, length = branch.length; i < length; i++) {\n if (branch[i] == item.id) {\n added_already = true;\n break;\n }\n }\n\n if (!added_already) {\n if (index * 1 == index) {\n branch.splice(index, 0, item.id);\n } else {\n branch.push(item.id);\n }\n\n item.$rendered_parent = pid;\n }\n },\n _move_branch: function _move_branch(item, old_parent, new_parent) {\n this._eachItemMainRangeCache = null; //this.setParent(item, new_parent);\n //this._sync_parent(task);\n\n this._replace_branch_child(old_parent, item.id);\n\n if (this.exists(new_parent) || new_parent == this.$getRootId()) {\n this._add_branch(item, undefined, new_parent);\n } else {\n delete this._branches[item.id];\n }\n\n item.$level = this.calculateItemLevel(item);\n this.eachItem(function (child) {\n child.$level = this.calculateItemLevel(child);\n }, item.id);\n },\n _replace_branch_child: function _replace_branch_child(node, old_id, new_id) {\n var branch = this.getChildren(node);\n\n if (branch && node !== undefined) {\n var newbranch = powerArray.$create();\n\n for (var i = 0; i < branch.length; i++) {\n if (branch[i] != old_id) newbranch.push(branch[i]);else if (new_id) newbranch.push(new_id);\n }\n\n this._branches[node] = newbranch;\n }\n },\n sort: function sort(field, desc, parent) {\n if (!this.exists(parent)) {\n parent = this.$getRootId();\n }\n\n if (!field) field = \"order\";\n var criteria = typeof field == \"string\" ? function (a, b) {\n if (a[field] == b[field] || helpers.isDate(a[field]) && helpers.isDate(b[field]) && a[field].valueOf() == b[field].valueOf()) {\n return 0;\n }\n\n var result = a[field] > b[field];\n return result ? 1 : -1;\n } : field;\n\n if (desc) {\n var original_criteria = criteria;\n\n criteria = function criteria(a, b) {\n return original_criteria(b, a);\n };\n }\n\n var els = this.getChildren(parent);\n\n if (els) {\n var temp = [];\n\n for (var i = els.length - 1; i >= 0; i--) {\n temp[i] = this.getItem(els[i]);\n }\n\n temp.sort(criteria);\n\n for (var i = 0; i < temp.length; i++) {\n els[i] = temp[i].id;\n this.sort(field, desc, els[i]);\n }\n }\n },\n filter: function filter(rule) {\n for (var i in this.pull) {\n if (this.pull[i].$rendered_parent !== this.getParent(this.pull[i])) {\n this._move_branch(this.pull[i], this.pull[i].$rendered_parent, this.getParent(this.pull[i]));\n }\n }\n\n return DataStore.prototype.filter.apply(this, arguments);\n },\n open: function open(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = true;\n this.callEvent(\"onItemOpen\", [id]);\n }\n },\n close: function close(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = false;\n this.callEvent(\"onItemClose\", [id]);\n }\n },\n destructor: function destructor() {\n DataStore.prototype.destructor.call(this);\n this._branches = null;\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n }\n}, DataStore.prototype);\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n $create: function $create(array) {\n return utils.mixin(array || [], this);\n },\n //remove element at specified position\n $removeAt: function $removeAt(pos, len) {\n if (pos >= 0) this.splice(pos, len || 1);\n },\n //find element in collection and remove it\n $remove: function $remove(value) {\n this.$removeAt(this.$find(value));\n },\n //add element to collection at specific position\n $insertAt: function $insertAt(data, pos) {\n if (!pos && pos !== 0) //add to the end by default\n this.push(data);else {\n var b = this.splice(pos, this.length - pos);\n this[pos] = data;\n this.push.apply(this, b); //reconstruct array without loosing this pointer\n }\n },\n //return index of element, -1 if it doesn't exists\n $find: function $find(data) {\n for (var i = 0; i < this.length; i++) {\n if (data == this[i]) return i;\n }\n\n return -1;\n },\n //execute some method for each element of array\n $each: function $each(functor, master) {\n for (var i = 0; i < this.length; i++) {\n functor.call(master || this, this[i]);\n }\n },\n //create new array from source, by using results of functor\n $map: function $map(functor, master) {\n for (var i = 0; i < this.length; i++) {\n this[i] = functor.call(master || this, this[i]);\n }\n\n return this;\n },\n $filter: function $filter(functor, master) {\n for (var i = 0; i < this.length; i++) {\n if (!functor.call(master || this, this[i])) {\n this.splice(i, 1);\n i--;\n }\n }\n\n return this;\n }\n};\nmodule.exports = $powerArray;","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar eventable = require(\"../../utils/eventable\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar DataStore = function DataStore(config) {\n this.pull = {};\n this.$initItem = config.initItem;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._skip_refresh = false;\n this._filterRule = null;\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._getItemsCache = null;\n this.$config = config;\n eventable(this);\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._getItemsCache = null;\n return true;\n });\n\n return this;\n};\n\nDataStore.prototype = {\n _attachDataChange: function _attachDataChange(callback) {\n this.attachEvent(\"onClearAll\", callback);\n this.attachEvent(\"onBeforeParse\", callback);\n this.attachEvent(\"onBeforeUpdate\", callback);\n this.attachEvent(\"onBeforeDelete\", callback);\n this.attachEvent(\"onBeforeAdd\", callback);\n this.attachEvent(\"onParse\", callback);\n this.attachEvent(\"onBeforeFilter\", callback);\n },\n _parseInner: function _parseInner(data) {\n var item = null,\n loaded = [];\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n if (this.$initItem) {\n if (this.$config.copyOnParse()) {\n item = utils.copy(item);\n }\n\n item = this.$initItem(item);\n }\n\n if (this.callEvent(\"onItemLoading\", [item])) {\n if (!this.pull.hasOwnProperty(item.id)) {\n this.fullOrder.push(item.id);\n }\n\n loaded.push(item);\n this.pull[item.id] = item;\n }\n }\n\n return loaded;\n },\n parse: function parse(data) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n if (!this.isSilent()) {\n this.refresh();\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n getItem: function getItem(id) {\n return this.pull[id];\n },\n _updateOrder: function _updateOrder(code) {\n code.call(this.visibleOrder);\n code.call(this.fullOrder);\n },\n updateItem: function updateItem(id, item) {\n if (!utils.defined(item)) item = this.getItem(id);\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeUpdate\", [item.id, item]) === false) return false;\n } // This is how it worked before updating the properties:\n // this.pull[id]=item;\n\n\n utils.mixin(this.pull[id], item, true);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterUpdate\", [item.id, item]);\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"update\"]);\n }\n },\n _removeItemInner: function _removeItemInner(id) {\n //clear from collections\n //this.visibleOrder.$remove(id);\n this._updateOrder(function () {\n this.$remove(id);\n });\n\n delete this.pull[id];\n },\n removeItem: function removeItem(id) {\n //utils.assert(this.exists(id), \"Not existing ID in remove command\"+id);\n var obj = this.getItem(id); //save for later event\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeDelete\", [obj.id, obj]) === false) return false;\n }\n\n this.callEvent(\"onAfterDeleteConfirmed\", [obj.id, obj]);\n\n this._removeItemInner(id);\n\n if (!this.isSilent()) {\n this.filter();\n this.callEvent(\"onAfterDelete\", [obj.id, obj]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"delete\"]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n //in case of treetable order is sent as 3rd parameter\n //var order = index;\n if (this.exists(item.id)) {\n this.silent(function () {\n this.updateItem(item.id, item);\n });\n } else {\n var order = this.visibleOrder; //by default item is added to the end of the list\n\n var data_size = order.length;\n if (!utils.defined(index) || index < 0) index = data_size; //check to prevent too big indexes\n\n if (index > data_size) {\n //dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n index = Math.min(order.length, index);\n }\n } //gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\n this.pull[item.id] = item;\n\n if (!this.isSilent()) {\n this._updateOrder(function () {\n if (this.$find(item.id) === -1) this.$insertAt(item.id, index);\n });\n }\n\n this.filter(); //order.$insertAt(item.id,index);\n },\n isVisible: function isVisible(id) {\n return this.visibleOrder.$find(id) > -1;\n },\n getVisibleItems: function getVisibleItems() {\n return this.getIndexRange();\n },\n addItem: function addItem(item, index) {\n if (!utils.defined(item.id)) item.id = utils.uid();\n\n if (this.$initItem) {\n item = this.$initItem(item);\n }\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n }\n\n this._addItemInner(item, index);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterAdd\", [item.id, item]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"add\"]);\n }\n\n return item.id;\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n if (this.pull[oldId]) this.pull[newId] = this.pull[oldId];\n var visibleOrder = this._searchVisibleOrder[oldId];\n this.pull[newId].id = newId;\n\n this._updateOrder(function () {\n this[this.$find(oldId)] = newId;\n });\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._searchVisibleOrder[oldId]; //this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\n delete this.pull[oldId];\n },\n changeId: function changeId(oldId, newId) {\n this._changeIdInner(oldId, newId);\n\n this.callEvent(\"onIdChange\", [oldId, newId]);\n },\n exists: function exists(id) {\n return !!this.pull[id];\n },\n _moveInner: function _moveInner(sindex, tindex) {\n var id = this.getIdByIndex(sindex);\n\n this._updateOrder(function () {\n this.$removeAt(sindex);\n this.$insertAt(id, Math.min(this.length, tindex));\n }); //this.visibleOrder.$removeAt(sindex);\t//remove at old position\n //if (sindex<tindex) tindex--;\t//correct shift, caused by element removing\n //this.visibleOrder.$insertAt(id,Math.min(this.visibleOrder.length, tindex));\t//insert at new position\n\n },\n move: function move(sindex, tindex) {\n //gantt.assert(sindex>=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n var id = this.getIdByIndex(sindex);\n var obj = this.getItem(id);\n\n this._moveInner(sindex, tindex);\n\n if (!this.isSilent()) {\n //repaint signal\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n }\n },\n clearAll: function clearAll() {\n if (this.$destroyed) {\n return;\n } // GS-956 We need to unselect the resource as its ID is cached\n\n\n this.silent(function () {\n this.unselect();\n });\n this.pull = {};\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n if (this.isSilent()) return;\n this.callEvent(\"onClearAll\", []);\n this.refresh();\n },\n silent: function silent(code, master) {\n var alreadySilent = false;\n\n if (this.isSilent()) {\n alreadySilent = true;\n }\n\n this._skip_refresh = true;\n code.call(master || this);\n\n if (!alreadySilent) {\n this._skip_refresh = false;\n }\n },\n isSilent: function isSilent() {\n return !!this._skip_refresh;\n },\n arraysEqual: function arraysEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) return false;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) return false;\n }\n\n return true;\n },\n refresh: function refresh(id, quick) {\n if (this.isSilent()) return;\n var item;\n\n if (id) {\n item = this.getItem(id);\n }\n\n var args;\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n if (this.callEvent(\"onBeforeStoreUpdate\", args) === false) {\n return;\n }\n\n var skipFilter = this._quick_refresh && !this._mark_recompute;\n this._mark_recompute = false;\n\n if (id) {\n // if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n if (!quick && !skipFilter) {\n var oldOrder = this.visibleOrder;\n this.filter();\n\n if (!this.arraysEqual(oldOrder, this.visibleOrder)) {\n id = undefined;\n }\n }\n } else if (!skipFilter) {\n this.filter();\n }\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n this.callEvent(\"onStoreUpdated\", args);\n },\n count: function count() {\n return this.fullOrder.length;\n },\n countVisible: function countVisible() {\n return this.visibleOrder.length;\n },\n sort: function sort(_sort) {},\n serialize: function serialize() {},\n eachItem: function eachItem(code) {\n for (var i = 0; i < this.fullOrder.length; i++) {\n var item = this.getItem(this.fullOrder[i]);\n code.call(this, item);\n }\n },\n find: function find(filter) {\n var result = [];\n this.eachItem(function (item) {\n if (filter(item)) {\n result.push(item);\n }\n });\n return result;\n },\n filter: function filter(rule) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeFilter\", []);\n }\n\n this.callEvent(\"onPreFilter\", []);\n var filteredOrder = powerArray.$create();\n var placeholderIds = [];\n this.eachItem(function (item) {\n if (this.callEvent(\"onFilterItem\", [item.id, item])) {\n if (isPlaceholderTask(item.id, null, this, this._ganttConfig)) {\n placeholderIds.push(item.id);\n } else {\n filteredOrder.push(item.id);\n }\n }\n });\n\n for (var i = 0; i < placeholderIds.length; i++) {\n filteredOrder.push(placeholderIds[i]);\n }\n\n this.visibleOrder = filteredOrder;\n this._searchVisibleOrder = {};\n\n for (var i = 0; i < this.visibleOrder.length; i++) {\n this._searchVisibleOrder[this.visibleOrder[i]] = i;\n }\n\n if (!this.isSilent()) {\n this.callEvent(\"onFilter\", []);\n }\n },\n getIndexRange: function getIndexRange(from, to) {\n var max = Math.min(to || Infinity, this.countVisible() - 1);\n var min = from || 0;\n var cacheKey = min + '-' + max;\n\n if (this._indexRangeCache[cacheKey]) {\n return this._indexRangeCache[cacheKey].slice();\n }\n\n var ret = [];\n\n for (var i = min; i <= max; i++) {\n ret.push(this.getItem(this.visibleOrder[i]));\n }\n\n this._indexRangeCache[cacheKey] = ret.slice();\n return ret;\n },\n getItems: function getItems() {\n if (this._getItemsCache) {\n return this._getItemsCache.slice();\n }\n\n var res = [];\n\n for (var i in this.pull) {\n res.push(this.pull[i]);\n }\n\n this._getItemsCache = res.slice();\n return res;\n },\n getIdByIndex: function getIdByIndex(index) {\n return this.visibleOrder[index];\n },\n getIndexById: function getIndexById(id) {\n var res = this._searchVisibleOrder[id];\n\n if (res === undefined) {\n res = -1;\n }\n\n return res;\n },\n _getNullIfUndefined: function _getNullIfUndefined(value) {\n if (value === undefined) {\n return null;\n } else {\n return value;\n }\n },\n getFirst: function getFirst() {\n return this._getNullIfUndefined(this.visibleOrder[0]);\n },\n getLast: function getLast() {\n return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length - 1]);\n },\n getNext: function getNext(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) + 1]);\n },\n getPrev: function getPrev(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) - 1]);\n },\n destructor: function destructor() {\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n this.$destroyed = true;\n this.pull = null;\n this.$initItem = null;\n this.visibleOrder = null;\n this.fullOrder = null;\n this._skip_refresh = null;\n this._filterRule = null;\n this._searchVisibleOrder = null;\n this._indexRangeCache = {};\n }\n};\nmodule.exports = DataStore;","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","function checkTimeout(host, updPerSecond) {\n if (!updPerSecond) return true;\n if (host._on_timeout) return false;\n var timeout = Math.ceil(1000 / updPerSecond);\n if (timeout < 2) return true;\n setTimeout(function () {\n delete host._on_timeout;\n }, timeout);\n host._on_timeout = true;\n return true;\n}\n\nmodule.exports = checkTimeout;","var utils = require(\"../../../utils/utils\");\n\nfunction createScope(addEvent, removeEvent) {\n addEvent = addEvent || utils.event;\n removeEvent = removeEvent || utils.eventRemove;\n var handlers = [];\n var eventScope = {\n attach: function attach(el, event, callback, capture) {\n handlers.push({\n element: el,\n event: event,\n callback: callback,\n capture: capture\n });\n addEvent(el, event, callback, capture);\n },\n detach: function detach(el, event, callback, capture) {\n removeEvent(el, event, callback, capture);\n\n for (var i = 0; i < handlers.length; i++) {\n var handler = handlers[i];\n\n if (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n handlers.splice(i, 1);\n i--;\n }\n }\n },\n detachAll: function detachAll() {\n var staticArray = handlers.slice(); // original handlers array can be spliced on every iteration\n\n for (var i = 0; i < staticArray.length; i++) {\n var handler = staticArray[i];\n eventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n eventScope.detach(handler.element, handler.event, handler.callback, undefined);\n eventScope.detach(handler.element, handler.event, handler.callback, false);\n eventScope.detach(handler.element, handler.event, handler.callback, true);\n }\n\n handlers.splice(0, handlers.length);\n },\n extend: function extend() {\n return createScope(this.event, this.eventRemove);\n }\n };\n return eventScope;\n}\n\nmodule.exports = createScope;","module.exports = function (gantt) {\n // TODO: why eslint fails on regexp?\n // eslint-disable-next-line no-control-regex\n var htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n var extraSpaces = new RegExp(\" +\", \"gm\");\n\n function stripHTMLLite(htmlText) {\n return (htmlText + \"\").replace(htmlTags, \" \").replace(extraSpaces, \" \");\n }\n\n var singleQuotes = new RegExp(\"'\", \"gm\");\n\n function escapeQuotes(text) {\n return (text + \"\").replace(singleQuotes, \"&#39;\");\n }\n\n gantt._waiAria = {\n getAttributeString: function getAttributeString(attr) {\n var attributes = [\" \"];\n\n for (var i in attr) {\n var text = escapeQuotes(stripHTMLLite(attr[i]));\n attributes.push(i + \"='\" + text + \"'\");\n }\n\n attributes.push(\" \");\n return attributes.join(\" \");\n },\n getTimelineCellAttr: function getTimelineCellAttr(dateString) {\n return gantt._waiAria.getAttributeString({\n \"aria-label\": dateString\n });\n },\n _taskCommonAttr: function _taskCommonAttr(task, div) {\n if (!(task.start_date && task.end_date)) return;\n div.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n if (task.$dataprocessor_class) {\n div.setAttribute(\"aria-busy\", true);\n }\n\n div.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\");\n },\n setTaskBarAttr: function setTaskBarAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.drag_move) {\n if (task.id != gantt.getState(\"tasksDnd\").drag_id) {\n div.setAttribute(\"aria-grabbed\", false);\n } else {\n div.setAttribute(\"aria-grabbed\", true);\n }\n }\n },\n taskRowAttr: function taskRowAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.order_branch) {\n div.setAttribute(\"aria-grabbed\", false);\n }\n\n div.setAttribute(\"role\", \"row\");\n div.setAttribute(\"aria-level\", task.$level);\n\n if (gantt.hasChild(task.id)) {\n div.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n }\n },\n linkAttr: function linkAttr(link, div) {\n var linkTypes = gantt.config.links;\n var toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n var fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n var content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart);\n div.setAttribute(\"aria-label\", stripHTMLLite(content));\n\n if (gantt.isReadonly(link)) {\n div.setAttribute(\"aria-readonly\", true);\n }\n },\n gridSeparatorAttr: function gridSeparatorAttr(div) {\n div.setAttribute(\"role\", \"separator\");\n },\n lightboxHiddenAttr: function lightboxHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n },\n lightboxVisibleAttr: function lightboxVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n lightboxAttr: function lightboxAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n div.setAttribute(\"aria-hidden\", \"true\");\n div.firstChild.setAttribute(\"role\", \"heading\");\n },\n lightboxButtonAttrString: function lightboxButtonAttrString(buttonName) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels[buttonName],\n \"tabindex\": \"0\"\n });\n },\n lightboxHeader: function lightboxHeader(div, headerText) {\n div.setAttribute(\"aria-label\", headerText);\n },\n lightboxSelectAttrString: function lightboxSelectAttrString(time_option) {\n var label = \"\";\n\n switch (time_option) {\n case \"%Y\":\n label = gantt.locale.labels.years;\n break;\n\n case \"%m\":\n label = gantt.locale.labels.months;\n break;\n\n case \"%d\":\n label = gantt.locale.labels.days;\n break;\n\n case \"%H:%i\":\n label = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n break;\n\n default:\n break;\n }\n\n return gantt._waiAria.getAttributeString({\n \"aria-label\": label\n });\n },\n lightboxDurationInputAttrString: function lightboxDurationInputAttrString(section) {\n return this.getAttributeString({\n \"aria-label\": gantt.locale.labels.column_duration,\n \"aria-valuemin\": \"0\"\n });\n },\n gridAttrString: function gridAttrString() {\n return [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n },\n gridScaleRowAttrString: function gridScaleRowAttrString() {\n return \"role='row'\";\n },\n gridScaleCellAttrString: function gridScaleCellAttrString(column, label) {\n var attrs = \"\";\n\n if (column.name == \"add\") {\n attrs = this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n } else {\n var attributes = {\n \"role\": \"columnheader\",\n \"aria-label\": label\n };\n\n if (gantt._sort && gantt._sort.name == column.name) {\n if (gantt._sort.direction == \"asc\") {\n attributes[\"aria-sort\"] = \"ascending\";\n } else {\n attributes[\"aria-sort\"] = \"descending\";\n }\n }\n\n attrs = this.getAttributeString(attributes);\n }\n\n return attrs;\n },\n gridDataAttrString: function gridDataAttrString() {\n return \"role='rowgroup'\";\n },\n gridCellAttrString: function gridCellAttrString(column, textValue, task) {\n var attributes = {\n \"role\": \"gridcell\",\n \"aria-label\": textValue\n };\n\n if (!column.editor || gantt.isReadonly(task)) {\n attributes[\"aria-readonly\"] = true;\n }\n\n return this.getAttributeString(attributes);\n },\n gridAddButtonAttrString: function gridAddButtonAttrString(column) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n },\n messageButtonAttrString: function messageButtonAttrString(buttonLabel) {\n return \"tabindex='0' role='button' aria-label='\" + buttonLabel + \"'\";\n },\n messageInfoAttr: function messageInfoAttr(div) {\n div.setAttribute(\"role\", \"alert\"); //div.setAttribute(\"tabindex\", \"-1\");\n },\n messageModalAttr: function messageModalAttr(div, uid) {\n div.setAttribute(\"role\", \"dialog\");\n\n if (uid) {\n div.setAttribute(\"aria-labelledby\", uid);\n } //\tdiv.setAttribute(\"tabindex\", \"-1\");\n\n },\n quickInfoAttr: function quickInfoAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n },\n quickInfoHeaderAttrString: function quickInfoHeaderAttrString() {\n return \" role='heading' \";\n },\n quickInfoHeader: function quickInfoHeader(div, header) {\n div.setAttribute(\"aria-label\", header);\n },\n quickInfoButtonAttrString: function quickInfoButtonAttrString(label) {\n return gantt._waiAria.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": label,\n \"tabindex\": \"0\"\n });\n },\n tooltipAttr: function tooltipAttr(div) {\n div.setAttribute(\"role\", \"tooltip\");\n },\n tooltipVisibleAttr: function tooltipVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n tooltipHiddenAttr: function tooltipHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n }\n };\n\n function isDisabled() {\n return !gantt.config.wai_aria_attributes;\n }\n\n for (var i in gantt._waiAria) {\n gantt._waiAria[i] = function (payload) {\n return function () {\n if (isDisabled()) {\n return \"\";\n }\n\n return payload.apply(this, arguments);\n };\n }(gantt._waiAria[i]);\n }\n};","module.exports = function (gantt) {\n gantt._extend_to_optional = function (lightbox_block) {\n var duration = lightbox_block;\n var optional_time = {\n render: duration.render,\n focus: duration.focus,\n set_value: function set_value(node, value, task, section) {\n var mapping = gantt._resolve_default_mapping(section);\n\n if (!task[mapping.start_date] || mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task)) {\n optional_time.disable(node, section);\n var val = {};\n\n for (var i in mapping) {\n //take default values from the time control from task start/end dates\n val[mapping[i]] = task[i];\n }\n\n return duration.set_value.call(gantt, node, value, val, section); //set default value\n } else {\n optional_time.enable(node, section);\n return duration.set_value.call(gantt, node, value, task, section);\n }\n },\n get_value: function get_value(node, task, section) {\n if (section.disabled) {\n return {\n start_date: null\n };\n } else {\n return duration.get_value.call(gantt, node, task, section);\n }\n },\n update_block: function update_block(node, section) {\n gantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n node.style.display = section.disabled ? \"none\" : \"block\";\n\n if (section.button) {\n var button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n labels = gantt.locale.labels;\n var button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n button.innerHTML = button_text;\n }\n\n gantt.resizeLightbox();\n },\n disable: function disable(node, section) {\n section.disabled = true;\n optional_time.update_block(node, section);\n },\n enable: function enable(node, section) {\n section.disabled = false;\n optional_time.update_block(node, section);\n },\n button_click: function button_click(index, el, section, container) {\n if (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n return;\n }\n\n var config = gantt._get_typed_lightbox_config()[index];\n\n if (config.disabled) {\n optional_time.enable(container, config);\n } else {\n optional_time.disable(container, config);\n }\n }\n };\n return optional_time;\n };\n\n gantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n gantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function TypeselectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TypeselectControl, _super);\n\n TypeselectControl.prototype.render = function (sns) {\n var types = gantt.config.types,\n locale = gantt.locale.labels,\n options = [];\n\n var filter = sns.filter || function (typeKey, typeValue) {\n if (!types.placeholder || typeValue !== types.placeholder) {\n return true;\n }\n\n return false;\n };\n\n for (var i in types) {\n if (!filter(i, types[i]) === false) {\n options.push({\n key: types[i],\n label: locale[\"type_\" + i]\n });\n }\n }\n\n sns.options = options;\n var oldOnChange = sns.onchange;\n\n sns.onchange = function () {\n gantt.changeLightboxType(this.value);\n\n if (this.value === gantt.config.types.task) {\n gantt._lightbox_new_type = \"task\";\n }\n\n if (typeof oldOnChange == 'function') {\n oldOnChange.apply(this, arguments);\n }\n };\n\n return _super.prototype.render.apply(this, arguments);\n };\n\n return TypeselectControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function ConstraintControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ConstraintControl, _super);\n\n function isNonTimedConstraint(value) {\n if (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n return true;\n } else {\n return false;\n }\n }\n\n function toggleTimeSelect(timeSelects, typeValue) {\n var isNonTimed = isNonTimedConstraint(typeValue);\n\n for (var i = 0; i < timeSelects.length; i++) {\n timeSelects[i].disabled = isNonTimed;\n }\n }\n\n ConstraintControl.prototype.render = function (sns) {\n var height = (sns.height || 30) + \"px\";\n var html = \"<div class='gantt_cal_ltext gantt_section_\" + sns.name + \"' style='height:\" + height + \";'>\";\n var options = [];\n\n for (var i in gantt.config.constraint_types) {\n options.push({\n key: gantt.config.constraint_types[i],\n label: gantt.locale.labels[gantt.config.constraint_types[i]]\n });\n }\n\n sns.options = sns.options || options;\n html += \"<span data-constraint-type-select>\" + htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"data-type\",\n value: \"constraint-type\"\n }]) + \"</span>\";\n var timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\n html += \"<label data-constraint-time-select>\" + timeLabel + \": \" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</label>\";\n html += \"</div>\";\n return html;\n };\n\n ConstraintControl.prototype.set_value = function (node, value, task, config) {\n var typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n var timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n var map = config._time_format_order;\n\n var mapping = gantt._resolve_default_mapping(config);\n\n if (!typeSelect._eventsInitialized) {\n typeSelect.addEventListener(\"change\", function (e) {\n toggleTimeSelect(timeSelects, e.target.value);\n });\n typeSelect._eventsInitialized = true;\n }\n\n var constraintDate = task[mapping.constraint_date] || new Date();\n\n gantt.form_blocks._fill_lightbox_select(timeSelects, 0, constraintDate, map, config);\n\n var constraintType = task[mapping.constraint_type] || gantt.getConstraintType(task);\n typeSelect.value = constraintType;\n toggleTimeSelect(timeSelects, constraintType);\n };\n\n ConstraintControl.prototype.get_value = function (node, task, config) {\n var typeSelect = node.querySelector(\"[data-constraint-type-select] select\");\n var timeSelects = node.querySelectorAll(\"[data-constraint-time-select] select\");\n var constraintType = typeSelect.value;\n var constraintDate = null;\n\n if (!isNonTimedConstraint(constraintType)) {\n constraintDate = gantt.form_blocks.getTimePickerValue(timeSelects, config);\n }\n\n return {\n constraint_type: constraintType,\n constraint_date: constraintDate\n };\n };\n\n ConstraintControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"select\"));\n };\n\n return ConstraintControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function ParentControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ParentControl, _super);\n\n ParentControl.prototype.render = function (sns) {\n return _display(sns, false);\n };\n\n ParentControl.prototype.set_value = function (node, value, ev, config) {\n // GS-1051. If the value is `0`, the set_value function in the select control won't select \n // the first child because (0 || '') = '';\n if (value === 0) value = \"0\";\n var tmpDom = document.createElement(\"div\");\n tmpDom.innerHTML = _display(config, ev.id);\n var newOptions = tmpDom.removeChild(tmpDom.firstChild);\n node.onselect = null;\n node.parentNode.replaceChild(newOptions, node);\n return gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\n };\n\n function _display(config, item_id) {\n var tasks = [],\n options = [];\n\n if (item_id) {\n tasks = gantt.getTaskByTime();\n\n if (config.allow_root) {\n tasks.unshift({\n id: gantt.config.root_id,\n text: config.root_label || \"\"\n });\n }\n\n tasks = _filter(tasks, config, item_id);\n\n if (config.sort) {\n tasks.sort(config.sort);\n }\n }\n\n var text = config.template || gantt.templates.task_text;\n\n for (var i = 0; i < tasks.length; i++) {\n var label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\n\n if (label === undefined) {\n label = \"\";\n }\n\n options.push({\n key: tasks[i].id,\n label: label\n });\n }\n\n config.options = options;\n config.map_to = config.map_to || \"parent\";\n return gantt.form_blocks.select.render.apply(this, arguments);\n }\n\n function _filter(options, config, item_id) {\n var filter = config.filter || function () {\n return true;\n };\n\n options = options.slice(0);\n\n for (var i = 0; i < options.length; i++) {\n var task = options[i];\n\n if (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\n options.splice(i, 1);\n i--;\n }\n }\n\n return options;\n }\n\n return ParentControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar DurationFormatterNumeric = require(\"../../../common/duration_formatter_numeric\")[\"default\"];\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function DurationControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n function getFormatter(config) {\n return config.formatter || new DurationFormatterNumeric();\n }\n\n __extends(DurationControl, _super);\n\n DurationControl.prototype.render = function (sns) {\n var time = \"<div class='gantt_time_selects'>\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"</div>\";\n var label = \" \" + gantt.locale.labels[gantt.config.duration_unit + \"s\"] + \" \";\n var singleDate = sns.single_date ? \" style='display:none'\" : \"\";\n var readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\n\n var ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\n\n var durationInputClass = \"gantt_duration_value\";\n\n if (sns.formatter) {\n label = \"\";\n durationInputClass += \" gantt_duration_value_formatted\";\n }\n\n var duration = \"<div class='gantt_duration' \" + singleDate + \">\" + \"<input type='button' class='gantt_duration_dec' value='−'\" + readonly + \">\" + \"<input type='text' value='5days' class='\" + durationInputClass + \"'\" + readonly + \" \" + ariaAttr + \">\" + \"<input type='button' class='gantt_duration_inc' value='+'\" + readonly + \">\" + label + \"<span></span>\" + \"</div>\";\n var html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;' class='gantt_section_time'>\" + time + \" \" + duration + \"</div>\";\n return html;\n };\n\n DurationControl.prototype.set_value = function (node, value, ev, config) {\n var s = node.getElementsByTagName(\"select\");\n var inps = node.getElementsByTagName(\"input\");\n var duration = inps[1];\n var btns = [inps[0], inps[2]];\n var endspan = node.getElementsByTagName(\"span\")[0];\n var map = config._time_format_order;\n var mapping;\n var start_date;\n var end_date;\n var duration_val;\n\n function _calc_date() {\n var start_date = _getStartDate.call(gantt, node, config);\n\n var duration = _getDuration.call(gantt, node, config);\n\n var end_date = gantt.calculateEndDate({\n start_date: start_date,\n duration: duration,\n task: ev\n });\n var template = gantt.templates.task_end_date || gantt.templates.task_date;\n endspan.innerHTML = template(end_date);\n }\n\n function _change_duration(step) {\n var value = duration.value;\n value = getFormatter(config).parse(value);\n if (window.isNaN(value)) value = 0;\n value += step;\n if (value < 1) value = 1;\n duration.value = getFormatter(config).format(value);\n\n _calc_date();\n }\n\n btns[0].onclick = gantt.bind(function () {\n _change_duration(-1 * gantt.config.duration_step);\n }, this);\n btns[1].onclick = gantt.bind(function () {\n _change_duration(1 * gantt.config.duration_step);\n }, this);\n s[0].onchange = _calc_date;\n s[1].onchange = _calc_date;\n s[2].onchange = _calc_date;\n if (s[3]) s[3].onchange = _calc_date;\n duration.onkeydown = gantt.bind(function (e) {\n var code;\n e = e || window.event;\n code = e.charCode || e.keyCode || e.which;\n\n if (code == gantt.constants.KEY_CODES.DOWN) {\n _change_duration(-1 * gantt.config.duration_step);\n\n return false;\n }\n\n if (code == gantt.constants.KEY_CODES.UP) {\n _change_duration(1 * gantt.config.duration_step);\n\n return false;\n }\n\n window.setTimeout(_calc_date, 1);\n }, this);\n duration.onchange = gantt.bind(_calc_date, this);\n mapping = gantt._resolve_default_mapping(config);\n if (typeof mapping === \"string\") mapping = {\n start_date: mapping\n };\n start_date = ev[mapping.start_date] || new Date();\n end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n duration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\n start_date: start_date,\n end_date: end_date,\n task: ev\n });\n duration_val = getFormatter(config).format(duration_val);\n\n gantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, config);\n\n duration.value = duration_val;\n\n _calc_date();\n };\n\n DurationControl.prototype.get_value = function (node, ev, config) {\n var startDate = _getStartDate(node, config);\n\n var duration = _getDuration(node, config);\n\n var endDate = gantt.calculateEndDate({\n start_date: startDate,\n duration: duration,\n task: ev\n });\n\n if (typeof gantt._resolve_default_mapping(config) == \"string\") {\n return startDate;\n }\n\n return {\n start_date: startDate,\n end_date: endDate,\n duration: duration\n };\n };\n\n DurationControl.prototype.focus = function (node) {\n gantt._focus(node.getElementsByTagName(\"select\")[0]);\n };\n\n function _getStartDate(node, config) {\n var s = node.getElementsByTagName(\"select\");\n var map = config._time_format_order;\n var hours = 0;\n var minutes = 0;\n\n if (gantt.defined(map[3])) {\n var input = s[map[3]];\n var time = parseInt(input.value, 10);\n\n if (isNaN(time) && input.hasAttribute(\"data-value\")) {\n time = parseInt(input.getAttribute(\"data-value\"), 10);\n }\n\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\n }\n\n function _getDuration(node, config) {\n var duration = node.getElementsByTagName(\"input\")[1];\n duration = getFormatter(config).parse(duration.value);\n if (!duration || window.isNaN(duration)) duration = 1;\n if (duration < 0) duration *= -1;\n return duration;\n }\n\n return DurationControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function RadioControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(RadioControl, _super);\n\n RadioControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"<label><input type='radio' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n }\n }\n\n html += \"</div>\";\n return html;\n };\n\n RadioControl.prototype.set_value = function (node, value, ev, sns) {\n var radio;\n if (!sns.options || !sns.options.length) return;\n radio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") || node.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\n if (!radio) return;\n\n if (!node._dhx_onchange && sns.onchange) {\n node.onchange = sns.onchange;\n node._dhx_onchange = true;\n }\n\n radio.checked = true;\n };\n\n RadioControl.prototype.get_value = function (node, ev) {\n var result = node.querySelector(\"input[type=radio]:checked\");\n return result ? result.value : \"\";\n };\n\n RadioControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"input[type=radio]\"));\n };\n\n return RadioControl;\n};","var helpers = require(\"../../../../utils/helpers\");\n\nvar __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function CheckboxControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(CheckboxControl, _super);\n\n CheckboxControl.prototype.render = function (sns) {\n var height = (sns.height || \"23\") + \"px\";\n var html = \"<div class='gantt_cal_ltext' style='height:\" + height + \";'>\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"<label><input type='checkbox' value='\" + sns.options[i].key + \"' name='\" + sns.name + \"'>\" + sns.options[i].label + \"</label>\";\n }\n } else {\n sns.single_value = true;\n html += \"<label><input type='checkbox' name='\" + sns.name + \"'></label>\";\n }\n\n html += \"</div>\";\n return html;\n };\n\n CheckboxControl.prototype.set_value = function (node, value, ev, sns) {\n var checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\n\n if (!node._dhx_onchange && sns.onchange) {\n node.onchange = sns.onchange;\n node._dhx_onchange = true;\n }\n\n if (sns.single_value) {\n var box = checkboxes[0];\n box.checked = !!value;\n } else {\n helpers.forEach(checkboxes, function (entry) {\n entry.checked = value ? value.indexOf(entry.value) >= 0 : false;\n });\n }\n };\n\n CheckboxControl.prototype.get_value = function (node, task, sns) {\n if (sns.single_value) {\n var box = node.querySelector(\"input[type=checkbox]\");\n return box.checked;\n } else {\n return helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function (entry) {\n return entry.value;\n });\n }\n };\n\n CheckboxControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\"input[type=checkbox]\"));\n };\n\n return CheckboxControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TimeControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TimeControl, _super);\n\n TimeControl.prototype.render = function (sns) {\n var time = gantt.form_blocks.getTimePicker.call(this, sns);\n var html = \"<div style='height:\" + (sns.height || 30) + \"px;padding-top:0px;font-size:inherit;text-align:center;' class='gantt_section_time'>\";\n html += time;\n\n if (sns.single_date) {\n time = gantt.form_blocks.getTimePicker.call(this, sns, true);\n html += \"<span></span>\";\n } else {\n html += \"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>\";\n }\n\n html += time;\n html += \"</div>\";\n return html;\n };\n\n TimeControl.prototype.set_value = function (node, value, ev, config) {\n var cfg = config;\n var s = node.getElementsByTagName(\"select\");\n var map = config._time_format_order;\n\n if (cfg.auto_end_date) {\n var _update_lightbox_select = function _update_lightbox_select() {\n start_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\n end_date = gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n\n gantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n };\n\n for (var i = 0; i < 4; i++) {\n s[i].onchange = _update_lightbox_select;\n }\n }\n\n var mapping = gantt._resolve_default_mapping(config);\n\n if (typeof mapping === \"string\") mapping = {\n start_date: mapping\n };\n var start_date = ev[mapping.start_date] || new Date();\n var end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n start_date: start_date,\n duration: 1,\n task: ev\n });\n\n gantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\n gantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n };\n\n TimeControl.prototype.get_value = function (node, ev, config) {\n var selects = node.getElementsByTagName(\"select\");\n var startDate;\n var map = config._time_format_order;\n\n function _getEndDate(selects, map, startDate) {\n var endDate = gantt.form_blocks.getTimePickerValue(selects, config, map.size); // GS-1010: We need to add a way to obtain exact end_date for validation\n\n if (endDate <= startDate) {\n // when end date seems wrong\n if (config.autofix_end !== false || config.single_date) {\n // auto correct it in two cases - when the auto correction is not disabled, or when we have 'single date' control and the user don't have the UI to specify the end date\n return gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\n }\n }\n\n return endDate;\n }\n\n startDate = gantt.form_blocks.getTimePickerValue(selects, config);\n\n if (typeof gantt._resolve_default_mapping(config) === \"string\") {\n return startDate;\n }\n\n return {\n start_date: startDate,\n end_date: _getEndDate(selects, map, startDate)\n };\n };\n\n TimeControl.prototype.focus = function (node) {\n gantt._focus(node.getElementsByTagName(\"select\")[0]);\n };\n\n return TimeControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TextareaControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextareaControl, _super);\n\n TextareaControl.prototype.render = function (sns) {\n var height = (sns.height || \"130\") + \"px\";\n return \"<div class='gantt_cal_ltext' style='height:\" + height + \";'><textarea></textarea></div>\";\n };\n\n TextareaControl.prototype.set_value = function (node, value) {\n gantt.form_blocks.textarea._get_input(node).value = value || \"\";\n };\n\n TextareaControl.prototype.get_value = function (node) {\n return gantt.form_blocks.textarea._get_input(node).value;\n };\n\n TextareaControl.prototype.focus = function (node) {\n var a = gantt.form_blocks.textarea._get_input(node);\n\n gantt._focus(a, true);\n };\n\n TextareaControl.prototype._get_input = function (node) {\n return node.querySelector(\"textarea\");\n };\n\n return TextareaControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function TemplateControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TemplateControl, _super);\n\n TemplateControl.prototype.render = function (sns) {\n var height = (sns.height || \"30\") + \"px\";\n return \"<div class='gantt_cal_ltext gantt_cal_template' style='height:\" + height + \";'></div>\";\n };\n\n TemplateControl.prototype.set_value = function (node, value) {\n node.innerHTML = value || \"\";\n };\n\n TemplateControl.prototype.get_value = function (node) {\n return node.innerHTML || \"\";\n };\n\n TemplateControl.prototype.focus = function () {};\n\n return TemplateControl;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (gantt) {\n var domHelpers = require(\"../utils/dom_helpers\");\n\n var helpers = require(\"../../../utils/helpers\");\n\n var TemplateControl = require(\"./controls/template_control\")(gantt);\n\n var TextareaControl = require(\"./controls/textarea_control\")(gantt);\n\n var TimeControl = require(\"./controls/time_control\")(gantt);\n\n var SelectControl = require(\"./controls/select_control\")(gantt);\n\n var CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\n\n var RadioControl = require(\"./controls/radio_control\")(gantt);\n\n var DurationControl = require(\"./controls/duration_control\")(gantt);\n\n var ParentControl = require(\"./controls/parent_control\")(gantt);\n\n var ResourcesControl = require(\"./controls/resources_control\")(gantt);\n\n var ConstraintControl = require(\"./controls/constraint_control\")(gantt);\n\n var TypeselectControl = require(\"./controls/typeselect_control\")(gantt);\n\n gantt._lightbox_methods = {};\n gantt._lightbox_template = \"<div class='gantt_cal_ltitle'><span class='gantt_mark'>&nbsp;</span><span class='gantt_time'></span><span class='gantt_title'></span></div><div class='gantt_cal_larea'></div>\"; //TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"lightbox\", function () {\n return {\n lightbox: gantt._lightbox_id\n };\n });\n\n gantt.showLightbox = function (id) {\n if (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n var task = this.getTask(id);\n var box = this.getLightbox(this.getTaskType(task.type));\n\n this._center_lightbox(box);\n\n this.showCover();\n\n this._fill_lightbox(id, box);\n\n this._waiAria.lightboxVisibleAttr(box);\n\n this.callEvent(\"onLightbox\", [id]);\n };\n\n function _is_chart_visible(gantt) {\n var timeline = gantt.$ui.getView(\"timeline\");\n\n if (timeline && timeline.isVisible()) {\n return true;\n } else {\n return false;\n }\n }\n\n gantt._get_timepicker_step = function () {\n if (this.config.round_dnd_dates) {\n var step;\n\n if (_is_chart_visible(this)) {\n var scale = gantt.getScale();\n step = helpers.getSecondsInUnit(scale.unit) * scale.step / 60; //timepicker step is measured in minutes\n }\n\n if (!step || step >= 60 * 24) {\n step = this.config.time_step;\n }\n\n return step;\n }\n\n return this.config.time_step;\n };\n\n gantt.getLabel = function (property, key) {\n var sections = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sections.length; i++) {\n if (sections[i].map_to == property) {\n var options = sections[i].options;\n\n for (var j = 0; j < options.length; j++) {\n if (options[j].key == key) {\n return options[j].label;\n }\n }\n }\n }\n\n return \"\";\n };\n\n gantt.updateCollection = function (list_name, collection) {\n collection = collection.slice(0);\n var list = gantt.serverList(list_name);\n if (!list) return false;\n list.splice(0, list.length);\n list.push.apply(list, collection || []);\n gantt.resetLightbox();\n };\n\n gantt.getLightboxType = function () {\n return this.getTaskType(this._lightbox_type);\n };\n\n gantt.getLightbox = function (type) {\n var lightboxDiv;\n var fullWidth;\n var html;\n var sns;\n var ds;\n var classNames = \"\";\n if (type === undefined) type = this.getLightboxType();\n\n if (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n this._lightbox_type = this.getTaskType(type);\n lightboxDiv = document.createElement(\"div\");\n classNames = \"gantt_cal_light\";\n fullWidth = this._is_lightbox_timepicker();\n if (gantt.config.wide_form || fullWidth) classNames += \" gantt_cal_light_wide\";\n\n if (fullWidth) {\n gantt.config.wide_form = true;\n classNames += \" gantt_cal_light_full\";\n }\n\n lightboxDiv.className = classNames;\n lightboxDiv.style.visibility = \"hidden\";\n html = this._lightbox_template;\n html += getHtmlButtons(this.config.buttons_left);\n html += getHtmlButtons(this.config.buttons_right, true);\n lightboxDiv.innerHTML = html;\n\n gantt._waiAria.lightboxAttr(lightboxDiv);\n\n if (gantt.config.drag_lightbox) {\n lightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\n lightboxDiv.firstChild.onselectstart = function () {\n return false;\n };\n\n lightboxDiv.firstChild.style.cursor = \"pointer\";\n\n gantt._init_dnd_events();\n }\n\n document.body.insertBefore(lightboxDiv, document.body.firstChild);\n this._lightbox = lightboxDiv;\n sns = this._get_typed_lightbox_config(type);\n html = this._render_sections(sns);\n ds = lightboxDiv.querySelector(\"div.gantt_cal_larea\"); //GS-1131. If gantt_cal_larea is displayed, Firefox renders buttons incorrectly;\n\n var backup_overflow = ds.style.overflow;\n ds.style.overflow = 'hidden';\n ds.innerHTML = html;\n bindLabelsToInputs(sns); //sizes\n\n this.resizeLightbox();\n ds.style.overflow = backup_overflow;\n\n this._init_lightbox_events(this);\n\n lightboxDiv.style.display = \"none\";\n lightboxDiv.style.visibility = \"visible\";\n }\n\n return this._lightbox;\n };\n\n gantt._render_sections = function (sns) {\n var html = \"\";\n\n for (var i = 0; i < sns.length; i++) {\n var block = this.form_blocks[sns[i].type];\n if (!block) continue; //ignore incorrect blocks\n\n sns[i].id = \"area_\" + this.uid();\n var display = sns[i].hidden ? \" style='display:none'\" : \"\";\n var button = \"\";\n\n if (sns[i].button) {\n button = \"<div class='gantt_custom_button' data-index='\" + i + \"'><div class='gantt_custom_button_\" + sns[i].button + \"'></div><div class='gantt_custom_button_label'>\" + this.locale.labels[\"button_\" + sns[i].button] + \"</div></div>\";\n }\n\n if (this.config.wide_form) {\n html += \"<div class='gantt_wrap_section' \" + display + \">\";\n }\n\n html += \"<div id='\" + sns[i].id + \"' class='gantt_cal_lsection'><label>\" + button + this.locale.labels[\"section_\" + sns[i].name] + \"</label></div>\" + block.render.call(this, sns[i]);\n html += \"</div>\";\n }\n\n return html;\n };\n\n gantt.resizeLightbox = function () {\n if (!this._lightbox) return;\n\n var con = this._lightbox.querySelector(\".gantt_cal_larea\");\n\n con.style.height = \"0px\";\n con.style.height = con.scrollHeight + \"px\";\n this._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n con.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n };\n\n gantt._center_lightbox = function (box) {\n if (box) {\n box.style.display = \"block\";\n var scroll_top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n var scroll_left = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;\n var view_height = window.innerHeight || document.documentElement.clientHeight;\n if (scroll_top) // if vertical scroll on window\n box.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";else // vertical scroll on body\n box.style.top = Math.round(Math.max((view_height - box.offsetHeight) / 2, 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n // not quite accurate but used for compatibility reasons\n\n if (document.documentElement.scrollWidth > document.body.offsetWidth) // if horizontal scroll on the window\n box.style.left = Math.round(scroll_left + (document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";else // horizontal scroll on the body\n box.style.left = Math.round((document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n }\n };\n\n gantt.showCover = function () {\n if (this._cover) return;\n this._cover = document.createElement(\"DIV\");\n this._cover.className = \"gantt_cal_cover\";\n document.body.appendChild(this._cover);\n };\n\n gantt.event(window, \"deviceorientation\", function () {\n if (gantt.getState().lightbox) {\n gantt._center_lightbox(gantt.getLightbox());\n }\n });\n\n gantt._init_lightbox_events = function () {\n gantt.lightbox_events = {};\n\n gantt.lightbox_events.gantt_save_btn = function () {\n gantt._save_lightbox();\n };\n\n gantt.lightbox_events.gantt_delete_btn = function () {\n gantt._lightbox_new_type = null;\n if (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id])) return;\n\n if (gantt.isTaskExists(gantt._lightbox_id)) {\n gantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n } else {\n gantt.hideLightbox();\n }\n };\n\n gantt.lightbox_events.gantt_cancel_btn = function () {\n gantt._cancel_lightbox();\n };\n\n gantt.lightbox_events[\"default\"] = function (e, src) {\n if (src.getAttribute(\"data-dhx-button\")) {\n gantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n } else {\n var index, block, sec;\n var className = domHelpers.getClassName(src);\n\n if (className.indexOf(\"gantt_custom_button\") != -1) {\n if (className.indexOf(\"gantt_custom_button_\") != -1) {\n index = src.parentNode.getAttribute(\"data-index\");\n sec = src;\n\n while (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n sec = sec.parentNode;\n }\n } else {\n index = src.getAttribute(\"data-index\");\n sec = src.parentNode;\n src = src.firstChild;\n }\n }\n\n var sections = gantt._get_typed_lightbox_config();\n\n if (index) {\n index = index * 1;\n block = gantt.form_blocks[sections[index * 1].type];\n block.button_click(index, src, sec, sec.nextSibling);\n }\n }\n };\n\n this.event(gantt.getLightbox(), \"click\", function (e) {\n e = e || window.event;\n var src = domHelpers.getTargetNode(e);\n var className = domHelpers.getClassName(src);\n\n if (!className) {\n src = src.previousSibling;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n src = src.firstChild;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className) {\n var func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n return func(e, src);\n }\n\n return false;\n });\n\n gantt.getLightbox().onkeydown = function (e) {\n var event = e || window.event;\n var target = e.target || e.srcElement;\n var buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n switch ((e || event).keyCode) {\n case gantt.constants.KEY_CODES.SPACE:\n {\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n }\n\n break;\n }\n\n case gantt.keys.edit_save:\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n } else {\n gantt._save_lightbox();\n }\n\n break;\n\n case gantt.keys.edit_cancel:\n gantt._cancel_lightbox();\n\n break;\n\n default:\n break;\n }\n };\n };\n\n gantt._cancel_lightbox = function () {\n var task = this.getLightboxValues();\n this.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\n if (gantt.isTaskExists(task.id) && task.$new) {\n this.silent(function () {\n gantt.$data.tasksStore.removeItem(task.id);\n\n gantt._update_flags(task.id, null);\n });\n }\n\n this.refreshData();\n this.hideLightbox();\n };\n\n gantt._save_lightbox = function () {\n var task = this.getLightboxValues();\n if (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new])) return;\n\n if (task.$new) {\n delete task.$new;\n this.addTask(task, task.parent, this.getTaskIndex(task.id));\n } else if (this.isTaskExists(task.id)) {\n this.mixin(this.getTask(task.id), task, true);\n this.refreshTask(task.id);\n this.updateTask(task.id);\n }\n\n this.refreshData(); // TODO: do we need any blockable events here to prevent closing lightbox?\n\n this.hideLightbox();\n };\n\n gantt._resolve_default_mapping = function (section) {\n var mapping = section.map_to;\n var time_controls = {\n \"time\": true,\n \"time_optional\": true,\n \"duration\": true,\n \"duration_optional\": true\n };\n\n if (time_controls[section.type]) {\n if (section.map_to == \"auto\") {\n mapping = {\n start_date: \"start_date\",\n end_date: \"end_date\",\n duration: \"duration\"\n };\n } else if (typeof section.map_to === \"string\") {\n mapping = {\n start_date: section.map_to\n };\n }\n } else if (section.type === \"constraint\") {\n if (!section.map_to || typeof section.map_to === \"string\") {\n mapping = {\n constraint_type: \"constraint_type\",\n constraint_date: \"constraint_date\"\n };\n }\n }\n\n return mapping;\n };\n\n gantt.getLightboxValues = function () {\n var task = {};\n\n if (gantt.isTaskExists(this._lightbox_id)) {\n task = this.mixin({}, this.getTask(this._lightbox_id));\n }\n\n var sns = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sns.length; i++) {\n var node = document.getElementById(sns[i].id);\n node = node ? node.nextSibling : node;\n var block = this.form_blocks[sns[i].type];\n if (!block) continue;\n var res = block.get_value.call(this, node, task, sns[i]);\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n if (typeof map_to == \"string\" && map_to != \"auto\") {\n task[map_to] = res;\n } else if (_typeof(map_to) == \"object\") {\n for (var property in map_to) {\n if (map_to[property]) task[map_to[property]] = res[property];\n }\n }\n } // GS-1282 We need to preserve the task type even if the lightbox doesn't have the typeselect section\n\n\n if (gantt._lightbox_new_type == \"task\") {\n task.type = gantt.config.types.task;\n gantt._lightbox_new_type = null;\n }\n\n return task;\n };\n\n gantt.hideLightbox = function () {\n var box = this.getLightbox();\n if (box) box.style.display = \"none\";\n\n this._waiAria.lightboxHiddenAttr(box);\n\n this._lightbox_id = null;\n this.hideCover();\n this.callEvent(\"onAfterLightbox\", []);\n };\n\n gantt.hideCover = function () {\n if (this._cover) this._cover.parentNode.removeChild(this._cover);\n this._cover = null;\n };\n\n gantt.resetLightbox = function () {\n if (gantt._lightbox && !gantt._custom_lightbox) gantt._lightbox.parentNode.removeChild(gantt._lightbox);\n gantt._lightbox = null;\n gantt.hideCover();\n };\n\n gantt._set_lightbox_values = function (data, box) {\n var task = data;\n var s = box.getElementsByTagName(\"span\");\n var lightboxHeader = [];\n\n if (gantt.templates.lightbox_header) {\n lightboxHeader.push(\"\");\n lightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n s[1].innerHTML = \"\";\n s[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n } else {\n lightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n lightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\n s[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n s[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n }\n\n s[1].innerHTML = lightboxHeader[0];\n s[2].innerHTML = lightboxHeader[1];\n\n gantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n var sns = this._get_typed_lightbox_config(this.getLightboxType());\n\n for (var i = 0; i < sns.length; i++) {\n var section = sns[i];\n\n if (!this.form_blocks[section.type]) {\n continue; //skip incorrect sections, same check is done during rendering\n }\n\n var node = document.getElementById(section.id).nextSibling;\n var block = this.form_blocks[section.type];\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n var value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n block.set_value.call(gantt, node, value, task, section);\n if (section.focus) block.focus.call(gantt, node);\n }\n\n if (gantt.isTaskExists(data.id)) {\n gantt._lightbox_id = data.id;\n }\n };\n\n gantt._fill_lightbox = function (id, box) {\n var task = this.getTask(id);\n\n this._set_lightbox_values(task, box);\n };\n\n gantt.getLightboxSection = function (name) {\n var config = this._get_typed_lightbox_config();\n\n var i = 0;\n\n for (i; i < config.length; i++) {\n if (config[i].name == name) break;\n }\n\n var section = config[i];\n if (!section) return null;\n if (!this._lightbox) this.getLightbox();\n var header = document.getElementById(section.id);\n var node = header.nextSibling;\n var result = {\n section: section,\n header: header,\n node: node,\n getValue: function getValue(ev) {\n return gantt.form_blocks[section.type].get_value.call(gantt, node, ev || {}, section);\n },\n setValue: function setValue(value, ev) {\n return gantt.form_blocks[section.type].set_value.call(gantt, node, value, ev || {}, section);\n }\n };\n var handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n return handler ? handler(result) : result;\n };\n\n gantt._lightbox_methods.get_template_control = function (result) {\n result.control = result.node;\n return result;\n };\n\n gantt._lightbox_methods.get_select_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_textarea_control = function (result) {\n result.control = result.node.getElementsByTagName(\"textarea\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_time_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\"); // array\n\n return result;\n };\n\n gantt._init_dnd_events = function () {\n var eventElement = document.body;\n this.event(eventElement, \"mousemove\", gantt._move_while_dnd);\n this.event(eventElement, \"mouseup\", gantt._finish_dnd);\n\n gantt._init_dnd_events = function () {};\n };\n\n gantt._move_while_dnd = function (event) {\n if (gantt._dnd_start_lb) {\n if (!document.gantt_unselectable) {\n document.body.className += \" gantt_unselectable\";\n document.gantt_unselectable = true;\n }\n\n var lb = gantt.getLightbox();\n var now = [event.pageX, event.pageY];\n lb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n lb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n }\n };\n\n gantt._ready_to_dnd = function (event) {\n var lb = gantt.getLightbox();\n gantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n gantt._dnd_start_lb = [event.pageX, event.pageY];\n };\n\n gantt._finish_dnd = function () {\n if (gantt._lb_start) {\n gantt._lb_start = gantt._dnd_start_lb = false;\n document.body.className = document.body.className.replace(\" gantt_unselectable\", \"\");\n document.gantt_unselectable = false;\n }\n };\n\n gantt._focus = function (node, select) {\n if (node && node.focus) {\n if (gantt.config.touch) {//do not focus editor, to prevent auto-zoom\n } else {\n try {\n if (select && node.select) node.select();\n node.focus();\n } catch (e) {// silent errors\n }\n }\n }\n };\n\n gantt.form_blocks = {\n getTimePicker: function getTimePicker(sns, hidden) {\n var html = \"\";\n var cfg = this.config;\n var i;\n var options;\n var ariaAttrs;\n var readonly;\n var display;\n var settings = {\n first: 0,\n last: 24 * 60,\n date: this.date.date_part(new Date(gantt._min_date.valueOf())),\n timeFormat: getTimeFormat(sns)\n }; // map: default order => real one\n\n sns._time_format_order = {\n size: 0\n };\n\n if (gantt.config.limit_time_select) {\n settings.first = 60 * cfg.first_hour;\n settings.last = 60 * cfg.last_hour + 1;\n settings.date.setHours(cfg.first_hour);\n }\n\n for (i = 0; i < settings.timeFormat.length; i++) {\n // adding spaces between selects\n if (i > 0) {\n html += \" \";\n }\n\n options = getHtmlTimePickerOptions(sns, i, settings);\n\n if (options) {\n ariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n display = hidden ? \" style='display:none' \" : \"\";\n html += \"<select \" + readonly + display + ariaAttrs + \">\" + options + \"</select>\";\n }\n }\n\n return html;\n },\n getTimePickerValue: function getTimePickerValue(selects, config, offset) {\n var map = config._time_format_order;\n var needSetTime = gantt.defined(map[3]);\n var time;\n var hours = 0;\n var minutes = 0;\n var mapOffset = offset || 0;\n\n if (needSetTime) {\n time = parseInt(selects[map[3] + mapOffset].value, 10);\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n },\n _fill_lightbox_select: function _fill_lightbox_select(s, i, d, map) {\n s[i + map[0]].value = d.getDate();\n s[i + map[1]].value = d.getMonth();\n s[i + map[2]].value = d.getFullYear();\n\n if (gantt.defined(map[3])) {\n var v = d.getHours() * 60 + d.getMinutes();\n v = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n var input = s[i + map[3]];\n input.value = v; //in case option not shown\n\n input.setAttribute(\"data-value\", v);\n }\n },\n template: new TemplateControl(),\n textarea: new TextareaControl(),\n select: new SelectControl(),\n time: new TimeControl(),\n duration: new DurationControl(),\n parent: new ParentControl(),\n radio: new RadioControl(),\n checkbox: new CheckboxControl(),\n resources: new ResourcesControl(),\n constraint: new ConstraintControl(),\n typeselect: new TypeselectControl()\n };\n\n gantt._is_lightbox_timepicker = function () {\n var s = this._get_typed_lightbox_config();\n\n for (var i = 0; i < s.length; i++) {\n if (s[i].name == \"time\" && s[i].type == \"time\") return true;\n }\n\n return false;\n };\n\n gantt._dhtmlx_confirm = function (message, title, callback, ok) {\n if (!message) return callback();\n var opts = {\n text: message\n };\n if (title) opts.title = title;\n\n if (ok) {\n opts.ok = ok;\n }\n\n if (callback) {\n opts.callback = function (result) {\n if (result) callback();\n };\n }\n\n gantt.confirm(opts);\n };\n\n function _get_type_name(type_value) {\n for (var i in this.config.types) {\n if (this.config.types[i] == type_value) {\n return i;\n }\n }\n\n return \"task\";\n }\n\n gantt._get_typed_lightbox_config = function (type) {\n if (type === undefined) {\n type = this.getLightboxType();\n }\n\n var field = _get_type_name.call(this, type);\n\n if (gantt.config.lightbox[field + \"_sections\"]) {\n return gantt.config.lightbox[field + \"_sections\"];\n } else {\n return gantt.config.lightbox.sections;\n }\n };\n\n gantt._silent_redraw_lightbox = function (type) {\n var oldType = this.getLightboxType();\n\n if (this.getState().lightbox) {\n var taskId = this.getState().lightbox;\n var formData = this.getLightboxValues(),\n task = this.copy(this.getTask(taskId));\n this.resetLightbox();\n var updTask = this.mixin(task, formData, true);\n var box = this.getLightbox(type ? type : undefined);\n\n this._center_lightbox(this.getLightbox());\n\n this._set_lightbox_values(updTask, box);\n\n this.showCover();\n } else {\n this.resetLightbox();\n this.getLightbox(type ? type : undefined);\n }\n\n this.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n };\n\n function bindLabelsToInputs(sns) {\n var section;\n var label;\n var labelBlock;\n var inputBlock;\n var input;\n var i;\n\n for (i = 0; i < sns.length; i++) {\n section = sns[i];\n labelBlock = document.getElementById(section.id);\n if (!section.id || !labelBlock) continue;\n label = labelBlock.querySelector(\"label\");\n inputBlock = labelBlock.nextSibling;\n if (!inputBlock) continue;\n input = inputBlock.querySelector(\"input, select, textarea\");\n\n if (input) {\n input.id = input.id || \"input_\" + gantt.uid();\n section.inputId = input.id;\n label.setAttribute(\"for\", section.inputId);\n }\n }\n }\n\n function getHtmlButtons(buttons, floatRight) {\n var button;\n var ariaAttr;\n var html = \"\";\n var i;\n\n for (i = 0; i < buttons.length; i++) {\n // needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n button = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n ariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n html += \"<div \" + ariaAttr + \" class='gantt_btn_set gantt_left_btn_set \" + button + \"_set'\" + (floatRight ? \" style='float:right;'\" : \"\") + \"><div dhx_button='1' data-dhx-button='1' class='\" + button + \"'></div><div>\" + gantt.locale.labels[button] + \"</div></div>\";\n }\n\n return html;\n }\n\n function getTimeFormat(sns) {\n var scale;\n var unit;\n var result;\n if (sns.time_format) return sns.time_format; // default order\n\n result = [\"%d\", \"%m\", \"%Y\"];\n scale = gantt.getScale();\n unit = scale ? scale.unit : gantt.config.duration_unit;\n\n if (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n result.push(\"%H:%i\");\n }\n\n return result;\n }\n\n function getHtmlTimePickerOptions(sns, index, settings) {\n var range;\n var offset;\n var start_year;\n var end_year;\n var i;\n var time;\n var diff;\n var tdate;\n var html = \"\";\n\n switch (settings.timeFormat[index]) {\n case \"%Y\":\n sns._time_format_order[2] = index;\n sns._time_format_order.size++; //year\n\n if (sns.year_range) {\n if (!isNaN(sns.year_range)) {\n range = sns.year_range;\n } else if (sns.year_range.push) {\n // if\n start_year = sns.year_range[0];\n end_year = sns.year_range[1];\n }\n }\n\n range = range || 10;\n offset = offset || Math.floor(range / 2);\n start_year = start_year || settings.date.getFullYear() - offset;\n end_year = end_year || start_year + range;\n\n for (i = start_year; i < end_year; i++) {\n html += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n }\n\n break;\n\n case \"%m\":\n sns._time_format_order[1] = index;\n sns._time_format_order.size++; //month\n\n for (i = 0; i < 12; i++) {\n html += \"<option value='\" + i + \"'>\" + gantt.locale.date.month_full[i] + \"</option>\";\n }\n\n break;\n\n case \"%d\":\n sns._time_format_order[0] = index;\n sns._time_format_order.size++; //days\n\n for (i = 1; i < 32; i++) {\n html += \"<option value='\" + i + \"'>\" + i + \"</option>\";\n }\n\n break;\n\n case \"%H:%i\":\n // var last = 24*60, first = 0;\n sns._time_format_order[3] = index;\n sns._time_format_order.size++; //hours\n\n i = settings.first;\n tdate = settings.date.getDate();\n sns._time_values = [];\n\n while (i < settings.last) {\n time = gantt.templates.time_picker(settings.date);\n html += \"<option value='\" + i + \"'>\" + time + \"</option>\";\n\n sns._time_values.push(i);\n\n settings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\n diff = settings.date.getDate() != tdate ? 1 : 0; // moved or not to the next day\n\n i = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\n }\n\n break;\n\n default:\n break;\n }\n\n return html;\n }\n};","module.exports = function (gantt) {\n gantt.config.touch_drag = 500; //nearly immediate dnd\n\n gantt.config.touch = true;\n gantt.config.touch_feedback = true;\n gantt.config.touch_feedback_duration = 1;\n gantt._prevent_touch_scroll = false;\n\n gantt._touch_feedback = function () {\n if (gantt.config.touch_feedback) {\n if (navigator.vibrate) navigator.vibrate(gantt.config.touch_feedback_duration);\n }\n };\n\n gantt.attachEvent(\"onGanttReady\", gantt.bind(function () {\n if (this.config.touch != \"force\") this.config.touch = this.config.touch && (navigator.userAgent.indexOf(\"Mobile\") != -1 || navigator.userAgent.indexOf(\"iPad\") != -1 || navigator.userAgent.indexOf(\"Android\") != -1 || navigator.userAgent.indexOf(\"Touch\") != -1) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (this.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n this._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: ev.target,\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }, function () {\n return false;\n });\n } else if (window.navigator.pointerEnabled) {\n this._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }, function (ev) {\n return !ev || ev.pointerType == \"mouse\";\n });\n } else if (window.navigator.msPointerEnabled) {\n this._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }, function (ev) {\n return !ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE;\n });\n }\n }\n }, gantt));\n\n function findTargetView(event) {\n var allViews = gantt.$layout.getCellsByType(\"viewCell\");\n\n for (var i = 0; i < allViews.length; i++) {\n var box = allViews[i].$view.getBoundingClientRect();\n\n if (event.clientX >= box.left && event.clientX <= box.right && event.clientY <= box.bottom && event.clientY >= box.top) {\n return allViews[i];\n }\n }\n }\n\n function getScrollState(view) {\n var scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n var scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n var scrollState = {\n x: null,\n y: null\n };\n\n if (scrollX) {\n var state = scrollX.getScrollState();\n\n if (state.visible) {\n scrollState.x = scrollX.$view.scrollLeft;\n }\n }\n\n if (scrollY) {\n var state = scrollY.getScrollState();\n\n if (state.visible) {\n scrollState.y = scrollY.$view.scrollTop;\n }\n }\n\n return scrollState;\n }\n\n function scrollView(view, left, top) {\n var scrollX = view.$config.scrollX ? gantt.$ui.getView(view.$config.scrollX) : null;\n var scrollY = view.$config.scrollY ? gantt.$ui.getView(view.$config.scrollY) : null;\n\n if (scrollX) {\n scrollX.scrollTo(left, null);\n }\n\n if (scrollY) {\n scrollY.scrollTo(null, top);\n }\n }\n\n function getTaskDND() {\n var tasksDnD;\n\n if (gantt.$ui.getView(\"timeline\")) {\n tasksDnD = gantt.$ui.getView(\"timeline\")._tasks_dnd;\n }\n\n return tasksDnD;\n }\n\n var touchHandlers = []; //we can't use native scrolling, as we need to sync momentum between different parts\n //so we will block native scroll and use the custom one\n //in future we can add custom momentum\n\n gantt._touch_events = function (names, accessor, ignore) {\n //webkit on android need to be handled separately\n var dblclicktime = 0;\n var actionMode = false;\n var scrollMode = false;\n var actionStart = null;\n var scrollState;\n var longTapTimer = null;\n var currentDndId = null;\n var dndNodes = [];\n var targetView = null;\n\n for (var i = 0; i < touchHandlers.length; i++) {\n gantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n }\n\n touchHandlers = []; //touch move\n\n touchHandlers.push([gantt.$container, names[0], function (e) {\n var tasksDnD = getTaskDND();\n if (ignore(e)) return; //ignore common and scrolling moves\n\n if (!actionMode) return;\n if (longTapTimer) clearTimeout(longTapTimer);\n var source = accessor(e);\n\n if (tasksDnD && (tasksDnD.drag.id || tasksDnD.drag.start_drag)) {\n tasksDnD.on_mouse_move(source);\n if (e.preventDefault) e.preventDefault();\n e.cancelBubble = true;\n return false;\n }\n\n if (!gantt._prevent_touch_scroll) {\n if (source && actionStart) {\n var dx = actionStart.pageX - source.pageX;\n var dy = actionStart.pageY - source.pageY;\n\n if (!scrollMode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\n scrollMode = true; //gantt._touch_scroll_active = scroll_mode = true;\n\n dblclicktime = 0;\n\n if (targetView) {\n scrollState = getScrollState(targetView);\n } else {\n scrollState = gantt.getScrollState();\n }\n }\n\n if (scrollMode) {\n var newScrollState;\n var scrollX = scrollState.x + dx;\n var scrollY = scrollState.y + dy;\n\n if (targetView) {\n scrollView(targetView, scrollX, scrollY);\n newScrollState = getScrollState(targetView);\n } else {\n gantt.scrollTo(scrollX, scrollY);\n newScrollState = gantt.getScrollState();\n }\n\n if (scrollState.x != newScrollState.x && dy > 2 * dx || scrollState.y != newScrollState.y && dx > 2 * dy) {\n return block_action(e);\n }\n }\n }\n\n return block_action(e);\n }\n\n return true;\n }]); //block touch context menu in IE10\n\n touchHandlers.push([this.$container, \"contextmenu\", function (e) {\n if (actionMode) return block_action(e);\n }]); //touch start\n\n touchHandlers.push([this.$container, names[1], function (e) {\n // block pull-to-refresh\n if (document && document.body) {\n document.body.classList.add(\"gantt_touch_active\");\n }\n\n if (ignore(e)) return;\n\n if (e.touches && e.touches.length > 1) {\n actionMode = false;\n return;\n }\n\n actionStart = accessor(e);\n targetView = findTargetView(actionStart);\n\n if (!gantt._locate_css(actionStart, \"gantt_hor_scroll\") && !gantt._locate_css(actionStart, \"gantt_ver_scroll\")) {\n actionMode = true;\n }\n\n var tasksDnD = getTaskDND(); //long tap\n\n longTapTimer = setTimeout(function () {\n var taskId = gantt.locate(actionStart);\n\n if (tasksDnD && taskId && !gantt._locate_css(actionStart, \"gantt_link_control\") && !gantt._locate_css(actionStart, \"gantt_grid_data\")) {\n tasksDnD.on_mouse_down(actionStart);\n\n if (tasksDnD.drag && tasksDnD.drag.start_drag) {\n cloneTaskRendered(taskId);\n\n tasksDnD._start_dnd(actionStart);\n\n gantt._touch_drag = true;\n gantt.refreshTask(taskId);\n\n gantt._touch_feedback();\n }\n }\n\n longTapTimer = null;\n }, gantt.config.touch_drag);\n }]); //touch end\n\n touchHandlers.push([this.$container, names[2], function (e) {\n if (document && document.body) {\n document.body.classList.remove(\"gantt_touch_active\");\n }\n\n if (ignore(e)) return;\n if (longTapTimer) clearTimeout(longTapTimer);\n gantt._touch_drag = false;\n actionMode = false;\n var source = accessor(e);\n var tasksDnD = getTaskDND();\n if (tasksDnD) tasksDnD.on_mouse_up(source);\n\n if (currentDndId && gantt.isTaskExists(currentDndId)) {\n gantt.refreshTask(currentDndId);\n\n if (dndNodes.length) {\n dndNodes.forEach(function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n\n gantt._touch_feedback();\n }\n } //gantt._touch_scroll_active = action_mode = scroll_mode = false;\n\n\n actionMode = scrollMode = false;\n dndNodes = [];\n currentDndId = null; //dbl-tap handling\n\n if (actionStart && dblclicktime) {\n var now = new Date();\n\n if (now - dblclicktime < 500) {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.onDoubleClick(actionStart);\n block_action(e);\n } else dblclicktime = now;\n } else {\n dblclicktime = new Date();\n }\n }]);\n\n for (var i = 0; i < touchHandlers.length; i++) {\n gantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n } //common helper, prevents event\n\n\n function block_action(e) {\n if (e && e.preventDefault) {\n e.preventDefault();\n }\n\n e.cancelBubble = true;\n return false;\n }\n\n function cloneTaskRendered(taskId) {\n var renders = gantt._getTaskLayers();\n\n var task = gantt.getTask(taskId);\n\n if (task && gantt.isTaskVisible(taskId)) {\n currentDndId = taskId;\n\n for (var i = 0; i < renders.length; i++) {\n task = renders[i].rendered[taskId];\n\n if (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\n var copy = task.cloneNode(true);\n dndNodes.push(task);\n renders[i].rendered[taskId] = copy;\n task.style.display = \"none\";\n copy.className += \" gantt_drag_move \";\n task.parentNode.appendChild(copy); //return copy;\n }\n }\n }\n }\n };\n};","import * as env from \"../../../utils/env\";\nimport * as eventable from \"../../../utils/eventable\";\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\t// GS-1354 and GS-1318. If we check the headless mode using the function,\n\t\t// it will return false when Gantt is not initialized, but we may want to do it later\n\t\tif(this.$gantt.env.isNode){\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), {passive: false});\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 if (!window.dhtmlx.attaches) window.dhtmlx.attaches = {};\n\n window.dhtmlx.attaches.attachGantt = function (start, end, gantt) {\n var obj = document.createElement(\"DIV\");\n gantt = gantt || window.gantt;\n obj.id = \"gantt_\" + gantt.uid();\n obj.style.width = \"100%\";\n obj.style.height = \"100%\";\n obj.cmp = \"grid\";\n document.body.appendChild(obj);\n this.attachObject(obj.id);\n this.dataType = \"gantt\";\n this.dataObj = gantt;\n var that = this.vs[this.av];\n that.grid = gantt;\n gantt.init(obj.id, start, end);\n obj.firstChild.style.border = \"none\";\n that.gridId = obj.id;\n that.gridObj = obj;\n var method_name = \"_viewRestore\";\n return this.vs[this[method_name]()].grid;\n };\n}\n\nif (typeof window.dhtmlXCellObject != \"undefined\") {\n window.dhtmlXCellObject.prototype.attachGantt = function (start, end, gantt) {\n gantt = gantt || window.gantt;\n var obj = document.createElement(\"DIV\");\n obj.id = \"gantt_\" + gantt.uid();\n obj.style.width = \"100%\";\n obj.style.height = \"100%\";\n obj.cmp = \"grid\";\n document.body.appendChild(obj);\n this.attachObject(obj.id);\n this.dataType = \"gantt\";\n this.dataObj = gantt;\n gantt.init(obj.id, start, end);\n obj.firstChild.style.border = \"none\";\n obj = null;\n this.callEvent(\"_onContentAttach\", []);\n return this.dataObj;\n };\n}\n\nmodule.exports = null;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nif (window.jQuery) {\n (function ($) {\n var methods = [];\n\n $.fn.dhx_gantt = function (config) {\n config = config || {};\n\n if (typeof config === 'string') {\n if (methods[config]) {\n return methods[config].apply(this, []);\n } else {\n $.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\n }\n } else {\n var views = [];\n this.each(function () {\n if (this && this.getAttribute) {\n if (!this.gantt && !(window.gantt.$root == this)) {\n var newgantt = window.gantt.$container && window.Gantt ? window.Gantt.getGanttInstance() : window.gantt;\n\n for (var key in config) {\n if (key != \"data\") newgantt.config[key] = config[key];\n }\n\n newgantt.init(this);\n if (config.data) newgantt.parse(config.data);\n views.push(newgantt);\n } else views.push(_typeof(this.gantt) == \"object\" ? this.gantt : window.gantt);\n }\n });\n if (views.length === 1) return views[0];\n return views;\n }\n };\n })(window.jQuery);\n}\n\nmodule.exports = null;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isHeadless = require(\"../../../utils/is_headless\");\n\nmodule.exports = function (gantt) {\n var scrollRange = 50,\n scrollStep = 30,\n scrollDelay = 10,\n scrollSpeed = 50;\n var interval = null,\n isMove = false,\n delayTimeout = null,\n startPos = {\n started: false\n },\n eventPos = {};\n\n function isDisplayed(element) {\n return element && domHelpers.isChildOf(element, gantt.$root) && element.offsetHeight;\n }\n\n function getAutoscrollContainer() {\n var element;\n\n if (isDisplayed(gantt.$task)) {\n element = gantt.$task;\n } else if (isDisplayed(gantt.$grid)) {\n element = gantt.$grid;\n } else {\n element = gantt.$root;\n }\n\n return element;\n }\n\n function isScrollState() {\n var dragMarker = !!document.querySelector(\".gantt_drag_marker\");\n var isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\") || !!document.querySelector(\".gantt_drag_marker.gantt_row_grid_resize_area\");\n var isLink = !!document.querySelector(\".gantt_link_direction\");\n var state = gantt.getState();\n var isClickDrag = state.autoscroll;\n isMove = dragMarker && !isResize && !isLink;\n return !(!state.drag_mode && !dragMarker || isResize) || isClickDrag;\n }\n\n function defineDelayTimeout(state) {\n if (delayTimeout) {\n clearTimeout(delayTimeout);\n delayTimeout = null;\n }\n\n if (state) {\n var speed = gantt.config.autoscroll_speed;\n if (speed && speed < 10) // limit speed value to 10\n speed = 10;\n delayTimeout = setTimeout(function () {\n interval = setInterval(tick, speed || scrollSpeed);\n }, gantt.config.autoscroll_delay || scrollDelay);\n }\n }\n\n function defineScrollInterval(state) {\n if (state) {\n defineDelayTimeout(true);\n\n if (!startPos.started) {\n startPos.x = eventPos.x;\n startPos.y = eventPos.y;\n startPos.started = true;\n }\n } else {\n if (interval) {\n clearInterval(interval);\n interval = null;\n }\n\n defineDelayTimeout(false);\n startPos.started = false;\n }\n }\n\n function autoscrollInterval(event) {\n var isScroll = isScrollState();\n\n if ((interval || delayTimeout) && !isScroll) {\n defineScrollInterval(false);\n }\n\n if (!gantt.config.autoscroll || !isScroll) {\n return false;\n }\n\n eventPos = {\n x: event.clientX,\n y: event.clientY\n }; // if it is a mobile device, we need to detect the touch event coords\n\n if (event.type == \"touchmove\") {\n eventPos.x = event.targetTouches[0].clientX;\n eventPos.y = event.targetTouches[0].clientY;\n }\n\n if (!interval && isScroll) {\n defineScrollInterval(true);\n }\n }\n\n function tick() {\n if (!isScrollState()) {\n defineScrollInterval(false);\n return false;\n }\n\n var container = getAutoscrollContainer();\n\n if (!container) {\n return;\n }\n\n var box = domHelpers.getNodePosition(container);\n var posX = eventPos.x - box.x;\n var posY = eventPos.y - box.y;\n var scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n var scrollTop = need_scroll(posY, box.height, startPos.y - box.y);\n var scrollState = gantt.getScrollState();\n var currentScrollTop = scrollState.y,\n scrollOuterHeight = scrollState.inner_height,\n scrollInnerHeight = scrollState.height,\n currentScrollLeft = scrollState.x,\n scrollOuterWidth = scrollState.inner_width,\n scrollInnerWidth = scrollState.width; // do scrolling only if we have scrollable area to do so\n\n if (scrollTop && !scrollOuterHeight) {\n scrollTop = 0;\n } else if (scrollTop < 0 && !currentScrollTop) {\n scrollTop = 0;\n } else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n scrollTop = 0;\n }\n\n if (scrollLeft && !scrollOuterWidth) {\n scrollLeft = 0;\n } else if (scrollLeft < 0 && !currentScrollLeft) {\n scrollLeft = 0;\n } else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n scrollLeft = 0;\n }\n\n var step = gantt.config.autoscroll_step;\n if (step && step < 2) // limit step value to 2\n step = 2;\n scrollLeft = scrollLeft * (step || scrollStep);\n scrollTop = scrollTop * (step || scrollStep);\n\n if (scrollLeft || scrollTop) {\n scroll(scrollLeft, scrollTop);\n }\n }\n\n function need_scroll(pos, boxSize, startCoord) {\n if (pos - scrollRange < 0 && pos < startCoord) return -1;else if (pos > boxSize - scrollRange && pos > startCoord) return 1;\n return 0;\n }\n\n function scroll(left, top) {\n var scrollState = gantt.getScrollState();\n var scrollLeft = null,\n scrollTop = null;\n\n if (left) {\n scrollLeft = scrollState.x + left;\n scrollLeft = Math.min(scrollState.width, scrollLeft);\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (top) {\n scrollTop = scrollState.y + top;\n scrollTop = Math.min(scrollState.height, scrollTop);\n scrollTop = Math.max(0, scrollTop);\n }\n\n gantt.scrollTo(scrollLeft, scrollTop);\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\n gantt.eventRemove(eventElement, \"mousemove\", autoscrollInterval);\n gantt.event(eventElement, \"mousemove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"touchmove\", autoscrollInterval);\n gantt.event(eventElement, \"touchmove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"pointermove\", autoscrollInterval);\n gantt.event(eventElement, \"pointermove\", autoscrollInterval);\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n defineScrollInterval(false);\n });\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./autoscroll\"), require(\"./jquery_hooks\"), require(\"./dhtmlx_hooks\")];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n\n var TimelineZoom = require(\"./timeline_zoom\")[\"default\"];\n\n gantt.ext.zoom = new TimelineZoom(gantt);\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_white\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_black\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.material = {\n config: {\n grid_width: 411,\n row_height: 34,\n task_height_offset: 6,\n scale_height: 36,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 80\n },\n _second_column_width: 110,\n _third_column_width: 75,\n _redefine_lightbox_buttons: {\n \"buttons_left\": [\"dhx_delete_btn\"],\n \"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n }\n };\n gantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n var t = gantt.getTaskNode(id);\n\n if (t) {\n t.className += \" gantt_drag_animation\";\n setTimeout(function () {\n var indx = t.className.indexOf(\" gantt_drag_animation\");\n\n if (indx > -1) {\n t.className = t.className.slice(0, indx);\n }\n }, 200);\n }\n });\n};","module.exports = function (gantt) {\n gantt.skins.broadway = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 1,\n link_arrow_size: 7,\n lightbox_additional_height: 86\n },\n _second_column_width: 90,\n _third_column_width: 80,\n _lightbox_template: \"<div class='gantt_cal_ltitle'><span class='gantt_mark'>&nbsp;</span><span class='gantt_time'></span><span class='gantt_title'></span><div class='gantt_cancel_btn'></div></div><div class='gantt_cal_larea'></div>\",\n _config_buttons_left: {},\n _config_buttons_right: {\n \"gantt_delete_btn\": \"icon_delete\",\n \"gantt_save_btn\": \"icon_save\"\n }\n };\n};","module.exports = function (gantt) {\n gantt.skins.terrace = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 90,\n _third_column_width: 70\n };\n};","module.exports = function (gantt) {\n gantt.skins.meadow = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 30,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 72\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.skyblue = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 27,\n link_line_width: 1,\n link_arrow_size: 8,\n lightbox_additional_height: 75\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","function _configure(col, data, force) {\n for (var key in data) {\n if (typeof col[key] == \"undefined\" || force) col[key] = data[key];\n }\n}\n\nfunction _get_skin(force, gantt) {\n var skin = gantt.skin;\n\n if (!skin || force) {\n var links = document.getElementsByTagName(\"link\");\n\n for (var i = 0; i < links.length; i++) {\n var res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\n\n if (res) {\n if (gantt.skins[res[1]] || !skin) {\n skin = res[1];\n break;\n }\n }\n }\n }\n\n gantt.skin = skin || \"terrace\";\n var skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"]; //apply skin related settings\n\n _configure(gantt.config, skinset.config, force);\n\n var config = gantt.getGridColumns();\n if (config[1] && !gantt.defined(config[1].width)) config[1].width = skinset._second_column_width;\n if (config[2] && !gantt.defined(config[2].width)) config[2].width = skinset._third_column_width;\n\n for (var i = 0; i < config.length; i++) {\n var column = config[i];\n\n if (column.name == \"add\") {\n if (!column.width) {\n column.width = 44;\n }\n\n if (!(gantt.defined(column.min_width) && gantt.defined(column.max_width))) {\n column.min_width = column.min_width || column.width;\n column.max_width = column.max_width || column.width;\n }\n\n if (column.min_width) column.min_width = +column.min_width;\n if (column.max_width) column.max_width = +column.max_width;\n\n if (column.width) {\n column.width = +column.width;\n column.width = column.min_width && column.min_width > column.width ? column.min_width : column.width;\n column.width = column.max_width && column.max_width < column.width ? column.max_width : column.width;\n }\n }\n }\n\n if (skinset.config.task_height) {\n gantt.config.task_height = skinset.config.task_height || \"full\";\n }\n\n if (skinset.config.bar_height) {\n gantt.config.bar_height = skinset.config.bar_height || \"full\";\n }\n\n if (skinset._lightbox_template) gantt._lightbox_template = skinset._lightbox_template;\n\n if (skinset._redefine_lightbox_buttons) {\n gantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n gantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n }\n\n gantt.resetLightbox();\n}\n\nmodule.exports = function (gantt) {\n if (!gantt.resetSkin) {\n gantt.resetSkin = function () {\n this.skin = \"\";\n\n _get_skin(true, this);\n };\n\n gantt.skins = {};\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n _get_skin(false, this);\n });\n }\n};","function createLayoutFacade() {\n function getTimeline(gantt) {\n return gantt.$ui.getView(\"timeline\");\n }\n\n function getGrid(gantt) {\n return gantt.$ui.getView(\"grid\");\n }\n\n function getVerticalScrollbar(gantt) {\n return gantt.$ui.getView(\"scrollVer\");\n }\n\n function getHorizontalScrollbar(gantt) {\n return gantt.$ui.getView(\"scrollHor\");\n }\n\n var DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n function tryCall(getView, method, args, fallback) {\n var view = getView(this);\n\n if (!(view && view.isVisible())) {\n if (fallback) {\n return fallback();\n } else {\n return DEFAULT_VALUE;\n }\n } else {\n return view[method].apply(view, args);\n }\n }\n\n return {\n getColumnIndex: function getColumnIndex(name) {\n var res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n dateFromPos: function dateFromPos(x) {\n var res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\n if (res === DEFAULT_VALUE) {\n return this.getState().min_date;\n } else {\n return res;\n }\n },\n posFromDate: function posFromDate(date) {\n var res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getRowTop: function getRowTop(index) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getRowTop\", [index], function () {\n return tryCall.call(self, getGrid, \"getRowTop\", [index]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskTop: function getTaskTop(id) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemTop\", [id], function () {\n return tryCall.call(self, getGrid, \"getItemTop\", [id]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskPosition: function getTaskPosition(task, start_date, end_date) {\n var res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n if (res === DEFAULT_VALUE) {\n var top = this.getTaskTop(task.id);\n var height = this.getTaskBarHeight(task.id);\n return {\n left: 0,\n top: top,\n height: height,\n width: 0\n };\n } else {\n return res;\n }\n },\n getTaskBarHeight: function getTaskBarHeight(taskId, isMilestoneRender) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getBarHeight\", [taskId, isMilestoneRender], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskHeight: function getTaskHeight(taskId) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemHeight\", [taskId], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n roundTaskDates: function roundTaskDates() {\n tryCall.call(this, getTimeline, \"roundTaskDates\", []);\n },\n getScale: function getScale() {\n var res = tryCall.call(this, getTimeline, \"getScale\", []);\n\n if (res === DEFAULT_VALUE) {\n return null;\n } else {\n return res;\n }\n },\n getTaskNode: function getTaskNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline || !timeline.isVisible()) {\n return null;\n } else {\n var node = timeline._taskRenderer.rendered[id];\n\n if (!node) {\n var domAttr = timeline.$config.item_attribute;\n node = timeline.$task_bars.querySelector(\"[\" + domAttr + \"='\" + id + \"']\");\n }\n\n return node || null;\n }\n },\n getLinkNode: function getLinkNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline.isVisible()) {\n return null;\n } else {\n return timeline._linkRenderer.rendered[id];\n }\n },\n scrollTo: function scrollTo(left, top) {\n var vertical = getVerticalScrollbar(this);\n var horizontal = getHorizontalScrollbar(this);\n var oldH = {\n position: 0\n },\n oldV = {\n position: 0\n };\n\n if (vertical) {\n oldV = vertical.getScrollState();\n }\n\n if (horizontal) {\n oldH = horizontal.getScrollState();\n }\n\n var scrollHorizontal = horizontal && left * 1 == left;\n var scrollVertical = vertical && top * 1 == top;\n var scrollBoth = scrollHorizontal && scrollVertical;\n\n if (scrollBoth) {\n // some views will be scrolled both horizontally and vertically and smart rendering can be called twice\n // set flag in order not to invoke smart rendering at the horizontal scroll stage\n // so it will repaint only once when the scroll is completed\n var verticalViews = vertical._getLinkedViews();\n\n var horizontalViews = horizontal._getLinkedViews();\n\n var commonViews = [];\n\n for (var i = 0; i < verticalViews.length; i++) {\n for (var j = 0; j < horizontalViews.length; j++) {\n if (verticalViews[i].$config.id && verticalViews[j].$config.id && verticalViews[i].$config.id === verticalViews[j].$config.id) {\n commonViews.push(verticalViews[i].$config.id);\n }\n }\n }\n }\n\n if (scrollHorizontal) {\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = true;\n }.bind(this));\n }\n\n horizontal.scroll(left);\n\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = false;\n }.bind(this));\n }\n }\n\n if (scrollVertical) {\n vertical.scroll(top);\n }\n\n var newV = {\n position: 0\n },\n newH = {\n position: 0\n };\n\n if (vertical) {\n newV = vertical.getScrollState();\n }\n\n if (horizontal) {\n newH = horizontal.getScrollState();\n }\n\n this.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n },\n showDate: function showDate(date) {\n var date_x = this.posFromDate(date);\n var scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n this.scrollTo(scroll_to);\n },\n showTask: function showTask(id) {\n var pos = this.getTaskPosition(this.getTask(id)); // GS-1261: we need to show the start_date even in the RTL mode\n\n var leftPos = pos.left;\n if (this.config.rtl) leftPos = pos.left + pos.width;\n var left = Math.max(leftPos - this.config.task_scroll_offset, 0);\n\n var dataHeight = this._scroll_state().y;\n\n var top;\n\n if (!dataHeight) {\n top = pos.top;\n } else {\n top = pos.top - (dataHeight - this.getTaskBarHeight(id)) / 2;\n }\n\n this.scrollTo(left, top);\n },\n _scroll_state: function _scroll_state() {\n var result = {\n x: false,\n y: false,\n x_pos: 0,\n y_pos: 0,\n scroll_size: this.config.scroll_size + 1,\n //1px for inner content\n x_inner: 0,\n y_inner: 0\n };\n var scrollVer = getVerticalScrollbar(this),\n scrollHor = getHorizontalScrollbar(this);\n\n if (scrollHor) {\n var horState = scrollHor.getScrollState();\n\n if (horState.visible) {\n result.x = horState.size;\n result.x_inner = horState.scrollSize;\n }\n\n result.x_pos = horState.position || 0;\n }\n\n if (scrollVer) {\n var verState = scrollVer.getScrollState();\n\n if (verState.visible) {\n result.y = verState.size;\n result.y_inner = verState.scrollSize;\n }\n\n result.y_pos = verState.position || 0;\n }\n\n return result;\n },\n getScrollState: function getScrollState() {\n var state = this._scroll_state();\n\n return {\n x: state.x_pos,\n y: state.y_pos,\n inner_width: state.x,\n inner_height: state.y,\n width: state.x_inner,\n height: state.y_inner\n };\n }\n };\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function (gantt) {\n delete gantt.addTaskLayer;\n delete gantt.addLinkLayer;\n};","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n getVerticalScrollbar: function getVerticalScrollbar() {\n return gantt.$ui.getView(\"scrollVer\");\n },\n getHorizontalScrollbar: function getHorizontalScrollbar() {\n return gantt.$ui.getView(\"scrollHor\");\n },\n _legacyGridResizerClass: function _legacyGridResizerClass(layout) {\n var resizers = layout.getCellsByType(\"resizer\");\n\n for (var i = 0; i < resizers.length; i++) {\n var r = resizers[i];\n var gridResizer = false;\n var prev = r.$parent.getPrevSibling(r.$id);\n\n if (prev && prev.$config && prev.$config.id === \"grid\") {\n gridResizer = true;\n } else {\n var next = r.$parent.getNextSibling(r.$id);\n\n if (next && next.$config && next.$config.id === \"grid\") {\n gridResizer = true;\n }\n }\n\n if (gridResizer) {\n r.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n }\n }\n },\n onCreated: function onCreated(layout) {\n var first = true;\n\n this._legacyGridResizerClass(layout);\n\n layout.attachEvent(\"onBeforeResize\", function () {\n var mainTimeline = gantt.$ui.getView(\"timeline\");\n if (mainTimeline) mainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n var mainGrid = gantt.$ui.getView(\"grid\");\n if (!mainGrid) return;\n\n var colsWidth = mainGrid._getColsTotalWidth();\n\n var hideGrid = !gantt.config.show_grid || !gantt.config.grid_width || colsWidth === 0;\n\n if (first && !hideGrid && colsWidth !== false) {\n gantt.config.grid_width = colsWidth;\n }\n\n mainGrid.$config.hidden = mainGrid.$parent.$config.hidden = hideGrid;\n\n if (!mainGrid.$config.hidden) {\n /* restrict grid width due to min_width, max_width, min_grid_column_width */\n var grid_limits = mainGrid._getGridWidthLimits();\n\n if (grid_limits[0] && gantt.config.grid_width < grid_limits[0]) gantt.config.grid_width = grid_limits[0];\n if (grid_limits[1] && gantt.config.grid_width > grid_limits[1]) gantt.config.grid_width = grid_limits[1];\n\n if (mainTimeline && gantt.config.show_chart) {\n mainGrid.$config.width = gantt.config.grid_width - 1; // GS-1314: Don't let the non-scrollable grid to be larger than the container\n\n if (!mainGrid.$config.scrollable && mainGrid.$config.scrollY) {\n var ganttContainerWidth = mainGrid.$gantt.$layout.$container.offsetWidth;\n var verticalScrollbar = gantt.$ui.getView(mainGrid.$config.scrollY);\n var verticalScrollbarWidth = verticalScrollbar.$config.width;\n var gridOverflow = ganttContainerWidth - (mainGrid.$config.width + verticalScrollbarWidth);\n\n if (gridOverflow < 0) {\n mainGrid.$config.width += gridOverflow;\n gantt.config.grid_width += gridOverflow;\n }\n }\n\n if (!first) {\n if (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // timeline is being displayed after being not visible, reset grid with from full screen\n if (!mainGrid.$config.original_grid_width) {\n var skinSettings = gantt.skins[gantt.skin];\n\n if (skinSettings && skinSettings.config && skinSettings.config.grid_width) {\n mainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n } else {\n mainGrid.$config.original_grid_width = 0;\n }\n }\n\n gantt.config.grid_width = mainGrid.$config.original_grid_width;\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n } else {\n mainGrid.$parent._setContentSize(mainGrid.$config.width, null);\n\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: gantt.config.grid_width,\n isGravity: false\n });\n }\n } else {\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n\n if (mainGrid.$parent.$config.group) {\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: mainGrid.$parent.$config.width,\n isGravity: false\n });\n }\n }\n } else {\n if (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // hiding timeline, remember grid with to restore it when timeline is displayed again\n mainGrid.$config.original_grid_width = gantt.config.grid_width;\n }\n\n if (!first) {\n mainGrid.$parent.$config.width = 0;\n }\n }\n }\n\n first = false;\n });\n\n this._initScrollStateEvents(layout);\n },\n _initScrollStateEvents: function _initScrollStateEvents(layout) {\n gantt._getVerticalScrollbar = this.getVerticalScrollbar;\n gantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n var vertical = this.getVerticalScrollbar();\n var horizontal = this.getHorizontalScrollbar();\n\n if (vertical) {\n vertical.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n });\n }\n\n if (horizontal) {\n horizontal.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]); // if the grid doesn't fit the width, scroll the row container\n\n var grid = gantt.$ui.getView(\"grid\");\n\n if (grid && grid.$grid_data && !grid.$config.scrollable) {\n grid.$grid_data.style.left = grid.$grid.scrollLeft + \"px\";\n grid.$grid_data.scrollLeft = grid.$grid.scrollLeft;\n }\n });\n }\n\n layout.attachEvent(\"onResize\", function () {\n if (vertical && !gantt.$scroll_ver) {\n gantt.$scroll_ver = vertical.$scroll_ver;\n }\n\n if (horizontal && !gantt.$scroll_hor) {\n gantt.$scroll_hor = horizontal.$scroll_hor;\n }\n });\n },\n _findGridResizer: function _findGridResizer(layout, grid) {\n var resizers = layout.getCellsByType(\"resizer\");\n var gridFirst = true;\n var gridResizer;\n\n for (var i = 0; i < resizers.length; i++) {\n var res = resizers[i];\n\n res._getSiblings();\n\n var prev = res._behind;\n var next = res._front;\n\n if (prev && prev.$content === grid || prev.isChild && prev.isChild(grid)) {\n gridResizer = res;\n gridFirst = true;\n break;\n } else if (next && next.$content === grid || next.isChild && next.isChild(grid)) {\n gridResizer = res;\n gridFirst = false;\n break;\n }\n }\n\n return {\n resizer: gridResizer,\n gridFirst: gridFirst\n };\n },\n onInitialized: function onInitialized(layout) {\n var grid = gantt.$ui.getView(\"grid\");\n\n var resizeInfo = this._findGridResizer(layout, grid); // expose grid resize events\n\n\n if (resizeInfo.resizer) {\n var gridFirst = resizeInfo.gridFirst,\n next = resizeInfo.resizer;\n\n if (next.$config.mode !== \"x\") {\n return; // track only horizontal resize\n }\n\n var initialWidth;\n next.attachEvent(\"onResizeStart\", function (prevCellWidth, nextCellWidth) {\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n var limits = grid._getGridWidthLimits(); // min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\n\n if (!grid.$config.scrollable) viewCell.$config.minWidth = limits[0];\n viewCell.$config.maxWidth = limits[1];\n }\n\n initialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n return gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n });\n next.attachEvent(\"onResize\", function (newBehindSize, newFrontSize) {\n var newSize = gridFirst ? newBehindSize : newFrontSize;\n return gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n });\n next.attachEvent(\"onResizeEnd\", function (oldBackSize, oldFrontSize, newBackSize, newFrontSize) {\n var oldSize = gridFirst ? oldBackSize : oldFrontSize;\n var newSize = gridFirst ? newBackSize : newFrontSize;\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n viewCell.$config.minWidth = undefined;\n }\n\n var res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\n if (res && newSize !== 0) {\n // new size may be numeric zero when cell size is defined by 'gravity', actual size will be calculated by layout later\n gantt.config.grid_width = newSize;\n }\n\n return res;\n });\n }\n },\n onDestroyed: function onDestroyed(timeline) {}\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar initLinksDND = function initLinksDND(timeline, gantt) {\n var _link_landing,\n _link_target_task,\n _link_target_task_start,\n _link_source_task,\n _link_source_task_start,\n markerDefaultOffset = 10,\n scrollDefaultSize = 18;\n\n function getVisibleMilestoneWidth(taskId) {\n var origWidth = timeline.getBarHeight(taskId, true); //m-s have square shape\n\n return Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n }\n\n function isMilestone(task) {\n return gantt.getTaskType(task.type) == gantt.config.types.milestone;\n }\n\n function getDndState() {\n return {\n link_source_id: _link_source_task,\n link_target_id: _link_target_task,\n link_from_start: _link_source_task_start,\n link_to_start: _link_target_task_start,\n link_landing_area: _link_landing\n };\n }\n\n var services = gantt.$services;\n var state = services.getService(\"state\");\n var DnD = services.getService(\"dnd\");\n state.registerProvider(\"linksDnD\", getDndState);\n var start_marker = \"task_start_date\",\n end_marker = \"task_end_date\",\n link_edge_marker = \"gantt_link_point\",\n link_landing_hover_area = \"gantt_link_control\";\n var dnd = new DnD(timeline.$task_bars, {\n sensitivity: 0,\n updates_per_second: 60,\n mousemoveContainer: gantt.$root,\n selector: \".\" + link_edge_marker,\n preventDefault: true\n });\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var target = e.target || e.srcElement;\n resetDndState();\n if (gantt.getState(\"tasksDnd\").drag_id) return false;\n\n if (domHelpers.locateClassName(target, link_edge_marker)) {\n if (domHelpers.locateClassName(target, start_marker)) _link_source_task_start = true;\n var sid = gantt.locate(e);\n _link_source_task = sid;\n var t = gantt.getTask(sid);\n\n if (gantt.isReadonly(t)) {\n resetDndState();\n return false;\n }\n\n var shift = 0;\n this._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n return true;\n } else {\n return false;\n }\n }, this));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n if (gantt.config.touch) {\n gantt.refreshData();\n }\n\n updateMarkedHtml(dnd.config.marker);\n }, this));\n\n function getLinePos(task, to_start, shift, cfg, isStart) {\n var taskPos = getMilestonePosition(task, function (task) {\n return gantt.getTaskPosition(task);\n }, cfg);\n var pos = {\n x: taskPos.x,\n y: taskPos.y\n };\n\n if (!to_start) {\n pos.x = taskPos.xEnd;\n } //var pos = gantt._get_task_pos(task, !!to_start);\n\n\n pos.y += gantt.getTaskHeight(task.id) / 2;\n var offset = isMilestone(task) && isStart ? 2 : 0;\n shift = shift || 0;\n if (cfg.rtl) shift = shift * -1;\n pos.x += (to_start ? -1 : 1) * shift - offset;\n return pos;\n }\n\n function getMilestonePosition(task, getTaskPosition, cfg) {\n var pos = getTaskPosition(task);\n var res = {\n x: pos.left,\n y: pos.top,\n width: pos.width,\n height: pos.height\n };\n\n if (cfg.rtl) {\n res.xEnd = res.x;\n res.x = res.xEnd + res.width;\n } else {\n res.xEnd = res.x + res.width;\n }\n\n res.yEnd = res.y + res.height;\n\n if (gantt.getTaskType(task.type) == gantt.config.types.milestone) {\n var milestoneWidth = getVisibleMilestoneWidth(task.id);\n res.x += (!cfg.rtl ? -1 : 1) * (milestoneWidth / 2);\n res.xEnd += (!cfg.rtl ? 1 : -1) * (milestoneWidth / 2); //pos.x -= milestoneWidth / 2;\n //pos.xEnd += milestoneWidth / 2;\n\n res.width = pos.xEnd - pos.x;\n }\n\n return res;\n }\n\n function getVieportSize() {\n var root = gantt.$root;\n return {\n right: root.offsetWidth,\n bottom: root.offsetHeight\n };\n }\n\n function getMarkerSize(marker) {\n var width = 0,\n height = 0;\n\n if (marker) {\n width = marker.offsetWidth || 0;\n height = marker.offsetHeight || 0;\n }\n\n return {\n width: width,\n height: height\n };\n }\n\n function getPosition(e, marker) {\n var oldPos = dnd.getPosition(e);\n var markerSize = getMarkerSize(marker);\n var viewportSize = getVieportSize();\n var offsetX = gantt.config.tooltip_offset_x || markerDefaultOffset;\n var offsetY = gantt.config.tooltip_offset_y || markerDefaultOffset;\n var scrollSize = gantt.config.scroll_size || scrollDefaultSize;\n var position = {\n y: oldPos.y + offsetY,\n x: oldPos.x + offsetX,\n bottom: oldPos.y + markerSize.height + offsetY + scrollSize,\n right: oldPos.x + markerSize.width + offsetX + scrollSize\n };\n\n if (position.bottom > viewportSize.bottom) {\n position.y = viewportSize.bottom - markerSize.height - offsetY;\n }\n\n if (position.right > viewportSize.right) {\n position.x = viewportSize.right - markerSize.width - offsetX;\n }\n\n return position;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var dd = dnd.config;\n var pos = getPosition(e, dd.marker);\n advanceMarker(dd.marker, pos);\n var landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n var prevTarget = _link_target_task;\n var prevLanding = _link_landing;\n var prevToStart = _link_target_task_start;\n var targ = gantt.locate(e),\n to_start = true; // can drag and drop link to another gantt on the page, such links are not supported\n\n var eventTarget = domHelpers.getTargetNode(e);\n var sameGantt = domHelpers.isChildOf(eventTarget, gantt.$root);\n\n if (!sameGantt) {\n landing = false;\n targ = null;\n }\n\n if (landing) {\n //refreshTask\n to_start = !domHelpers.locateClassName(e, end_marker);\n landing = !!targ;\n }\n\n _link_target_task = targ;\n _link_landing = landing;\n _link_target_task_start = to_start;\n\n if (landing) {\n var t = gantt.getTask(targ);\n var config = timeline.$getConfig();\n var node = domHelpers.locateClassName(e, link_landing_hover_area);\n var shift = 0;\n\n if (node) {\n shift = Math.floor(node.offsetWidth / 2);\n }\n\n this._dir_end = getLinePos(t, !!_link_target_task_start, shift, config);\n } else {\n this._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\n if (gantt.env.isEdge) {\n // to fix margin collapsing\n this._dir_end.y += window.scrollY;\n }\n }\n\n var targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\n if (targetChanged) {\n if (prevTarget) gantt.refreshTask(prevTarget, false);\n if (targ) gantt.refreshTask(targ, false);\n }\n\n if (targetChanged) {\n updateMarkedHtml(dd.marker);\n }\n\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n return true;\n }, this));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var drag = getDndState();\n\n if (drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id) {\n var type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n var link = {\n source: drag.link_source_id,\n target: drag.link_target_id,\n type: type\n };\n\n if (link.type && gantt.isLinkAllowed(link)) {\n if (gantt.callEvent(\"onLinkCreated\", [link])) {\n gantt.addLink(link);\n }\n }\n }\n\n resetDndState();\n\n if (gantt.config.touch) {\n gantt.refreshData();\n } else {\n if (drag.link_source_id) gantt.refreshTask(drag.link_source_id, false);\n if (drag.link_target_id) gantt.refreshTask(drag.link_target_id, false);\n }\n\n removeDirectionLine();\n }, this));\n\n function updateMarkedHtml(marker) {\n var link = getDndState();\n var css = [\"gantt_link_tooltip\"];\n\n if (link.link_source_id && link.link_target_id) {\n if (gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)) {\n css.push(\"gantt_allowed_link\");\n } else {\n css.push(\"gantt_invalid_link\");\n }\n }\n\n var className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n if (className) css.push(className);\n var html = \"<div class='\" + className + \"'>\" + gantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) + \"</div>\";\n marker.innerHTML = html;\n }\n\n function advanceMarker(marker, pos) {\n marker.style.left = pos.x + \"px\";\n marker.style.top = pos.y + \"px\";\n }\n\n function resetDndState() {\n _link_source_task = _link_source_task_start = _link_target_task = null;\n _link_target_task_start = true;\n }\n\n function showDirectingLine(s_x, s_y, e_x, e_y) {\n var div = getDirectionLine();\n var link = getDndState();\n var css = [\"gantt_link_direction\"];\n\n if (gantt.templates.link_direction_class) {\n css.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n }\n\n var dist = Math.sqrt(Math.pow(e_x - s_x, 2) + Math.pow(e_y - s_y, 2));\n dist = Math.max(0, dist - 3);\n if (!dist) return;\n div.className = css.join(\" \");\n var tan = (e_y - s_y) / (e_x - s_x),\n angle = Math.atan(tan);\n\n if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2) {\n angle += Math.PI;\n } else if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3) {\n angle -= Math.PI;\n }\n\n var sin = Math.sin(angle),\n cos = Math.cos(angle),\n top = Math.round(s_y),\n left = Math.round(s_x);\n var style = [\"-webkit-transform: rotate(\" + angle + \"rad)\", \"-moz-transform: rotate(\" + angle + \"rad)\", \"-ms-transform: rotate(\" + angle + \"rad)\", \"-o-transform: rotate(\" + angle + \"rad)\", \"transform: rotate(\" + angle + \"rad)\", \"width:\" + Math.round(dist) + \"px\"];\n\n if (window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1) {\n //ms-filter breaks styles in ie9, so add it only for 8th\n style.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n var shiftLeft = Math.abs(Math.round(s_x - e_x)),\n shiftTop = Math.abs(Math.round(e_y - s_y)); //fix rotation axis\n\n switch (coordinateCircleQuarter(s_x, e_x, s_y, e_y)) {\n case 1:\n top -= shiftTop;\n break;\n\n case 2:\n left -= shiftLeft;\n top -= shiftTop;\n break;\n\n case 3:\n left -= shiftLeft;\n break;\n\n default:\n break;\n }\n }\n\n style.push(\"top:\" + top + \"px\");\n style.push(\"left:\" + left + \"px\");\n div.style.cssText = style.join(\";\");\n }\n\n function ieTransform(sin, cos) {\n return \"progid:DXImageTransform.Microsoft.Matrix(\" + \"M11 = \" + cos + \",\" + \"M12 = -\" + sin + \",\" + \"M21 = \" + sin + \",\" + \"M22 = \" + cos + \",\" + \"SizingMethod = 'auto expand'\" + \")\";\n }\n\n function coordinateCircleQuarter(sX, eX, sY, eY) {\n if (eX >= sX) {\n if (eY <= sY) {\n return 1;\n } else {\n return 4;\n }\n } else {\n if (eY <= sY) {\n return 2;\n } else {\n return 3;\n }\n }\n }\n\n function getDirectionLine() {\n if (!dnd._direction || !dnd._direction.parentNode) {\n dnd._direction = document.createElement(\"div\");\n timeline.$task_links.appendChild(dnd._direction);\n }\n\n return dnd._direction;\n }\n\n function removeDirectionLine() {\n if (dnd._direction) {\n if (dnd._direction.parentNode) //the event line can be detached because of data refresh\n dnd._direction.parentNode.removeChild(dnd._direction);\n dnd._direction = null;\n }\n }\n\n gantt.attachEvent(\"onGanttRender\", gantt.bind(function () {\n if (dnd._direction) {\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n }\n }, this));\n};\n\nmodule.exports = {\n createLinkDND: function createLinkDND() {\n return {\n init: initLinksDND\n };\n }\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar timeout = require(\"../../../utils/timeout\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nfunction createTaskDND(timeline, gantt) {\n var services = gantt.$services;\n return {\n drag: null,\n dragMultiple: {},\n _events: {\n before_start: {},\n before_finish: {},\n after_finish: {}\n },\n _handlers: {},\n init: function init() {\n this._domEvents = gantt._createDomEventScope();\n this.clear_drag_state();\n var drag = gantt.config.drag_mode;\n this.set_actions();\n var stateService = services.getService(\"state\");\n stateService.registerProvider(\"tasksDnd\", utils.bind(function () {\n return {\n drag_id: this.drag ? this.drag.id : undefined,\n drag_mode: this.drag ? this.drag.mode : undefined,\n drag_from_start: this.drag ? this.drag.left : undefined\n };\n }, this));\n var evs = {\n \"before_start\": \"onBeforeTaskDrag\",\n \"before_finish\": \"onBeforeTaskChanged\",\n \"after_finish\": \"onAfterTaskDrag\"\n }; //for now, all drag operations will trigger the same events\n\n for (var stage in this._events) {\n for (var mode in drag) {\n this._events[stage][mode] = evs[stage];\n }\n }\n\n this._handlers[drag.move] = this._move;\n this._handlers[drag.resize] = this._resize;\n this._handlers[drag.progress] = this._resize_progress;\n },\n set_actions: function set_actions() {\n var data = timeline.$task_data;\n\n this._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\n this.on_mouse_move(e);\n }, this));\n\n this._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\n this.on_mouse_down(e);\n }, this));\n\n this._domEvents.attach(document.body, \"mouseup\", gantt.bind(function (e) {\n this.on_mouse_up(e);\n }, this));\n },\n clear_drag_state: function clear_drag_state() {\n this.drag = {\n id: null,\n mode: null,\n pos: null,\n start_x: null,\n start_y: null,\n obj: null,\n left: null\n };\n this.dragMultiple = {};\n },\n _resize: function _resize(task, shift, drag) {\n var cfg = timeline.$getConfig();\n\n var coords_x = this._drag_task_coords(task, drag);\n\n if (drag.left) {\n task.start_date = gantt.dateFromPos(coords_x.start + shift);\n\n if (!task.start_date) {\n task.start_date = new Date(gantt.getState().min_date);\n }\n } else {\n task.end_date = gantt.dateFromPos(coords_x.end + shift);\n\n if (!task.end_date) {\n task.end_date = new Date(gantt.getState().max_date);\n }\n }\n\n var minDurationInUnits = this._calculateMinDuration(cfg.min_duration, cfg.duration_unit);\n\n if (task.end_date - task.start_date < cfg.min_duration) {\n if (drag.left) task.start_date = gantt.calculateEndDate(task.end_date, -minDurationInUnits, cfg.duration_unit, task);else task.end_date = gantt.calculateEndDate(task.start_date, minDurationInUnits, cfg.duration_unit, task);\n }\n\n gantt._init_task_timing(task);\n },\n _calculateMinDuration: function _calculateMinDuration(duration, unit) {\n var inMs = {\n \"minute\": 60000,\n \"hour\": 3600000,\n \"day\": 86400000,\n \"week\": 604800000,\n \"month\": 2419200000,\n \"year\": 31356000000\n };\n return Math.ceil(duration / inMs[unit]);\n },\n _resize_progress: function _resize_progress(task, shift, drag) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var config = timeline.$getConfig();\n var diffValue = !config.rtl ? drag.pos.x - coords_x.start : coords_x.start - drag.pos.x;\n var diff = Math.max(0, diffValue);\n task.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n },\n _find_max_shift: function _find_max_shift(dragItems, shift) {\n var correctShift;\n\n for (var i in dragItems) {\n var drag = dragItems[i];\n var task = gantt.getTask(drag.id);\n\n var coords_x = this._drag_task_coords(task, drag);\n\n var minX = gantt.posFromDate(new Date(gantt.getState().min_date));\n var maxX = gantt.posFromDate(new Date(gantt.getState().max_date));\n\n if (coords_x.end + shift > maxX) {\n var maxShift = maxX - coords_x.end;\n\n if (maxShift < correctShift || correctShift === undefined) {\n correctShift = maxShift;\n }\n } else if (coords_x.start + shift < minX) {\n var minShift = minX - coords_x.start;\n\n if (minShift > correctShift || correctShift === undefined) {\n correctShift = minShift;\n }\n }\n }\n\n return correctShift;\n },\n _move: function _move(task, shift, drag) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var new_start = gantt.dateFromPos(coords_x.start + shift),\n new_end = gantt.dateFromPos(coords_x.end + shift);\n\n if (!new_start) {\n task.start_date = new Date(gantt.getState().min_date);\n task.end_date = gantt.dateFromPos(gantt.posFromDate(task.start_date) + (coords_x.end - coords_x.start));\n } else if (!new_end) {\n task.end_date = new Date(gantt.getState().max_date);\n task.start_date = gantt.dateFromPos(gantt.posFromDate(task.end_date) - (coords_x.end - coords_x.start));\n } else {\n task.start_date = new_start;\n task.end_date = new_end;\n }\n },\n _drag_task_coords: function _drag_task_coords(t, drag) {\n var start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n var end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n return {\n start: start,\n end: end\n };\n },\n _mouse_position_change: function _mouse_position_change(oldPos, newPos) {\n var dx = oldPos.x - newPos.x,\n dy = oldPos.y - newPos.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n _is_number: function _is_number(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n },\n on_mouse_move: function on_mouse_move(e) {\n if (this.drag.start_drag) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var sX = this.drag.start_drag.start_x,\n sY = this.drag.start_drag.start_y;\n\n if (Date.now() - this.drag.timestamp > 50 || this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n x: sX,\n y: sY\n }, pos) > 20) {\n this._start_dnd(e);\n }\n }\n\n var drag = this.drag;\n\n if (drag.mode) {\n if (!timeout(this, 40)) //limit update frequency\n return;\n\n this._update_on_move(e);\n }\n },\n _update_item_on_move: function _update_item_on_move(shift, id, mode, drag, e) {\n var task = gantt.getTask(id);\n var original = gantt.mixin({}, task);\n var copy = gantt.mixin({}, task);\n\n this._handlers[mode].apply(this, [copy, shift, drag]);\n\n gantt.mixin(task, copy, true); //gantt._update_parents(drag.id, true);\n\n gantt.callEvent(\"onTaskDrag\", [task.id, mode, copy, original, e]);\n gantt.mixin(task, copy, true);\n gantt.refreshTask(id);\n },\n _update_on_move: function _update_on_move(e) {\n var drag = this.drag;\n var config = timeline.$getConfig();\n\n if (drag.mode) {\n var pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n if (drag.pos && drag.pos.x == pos.x) return;\n drag.pos = pos;\n var curr_date = gantt.dateFromPos(pos.x);\n if (!curr_date || isNaN(curr_date.getTime())) return;\n var shift = pos.x - drag.start_x;\n var task = gantt.getTask(drag.id);\n\n if (this._handlers[drag.mode]) {\n if (drag.mode === config.drag_mode.move) {\n var dragHash = {};\n\n if (this._isMultiselect()) {\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n dragHash = this.dragMultiple;\n }\n }\n\n var dragProject = false;\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project) {\n var initialDrag = {};\n initialDrag[drag.id] = utils.copy(drag);\n dragProject = true;\n dragHash = utils.mixin(initialDrag, this.dragMultiple);\n }\n\n var maxShift = this._find_max_shift(dragHash, shift);\n\n if (maxShift !== undefined) {\n shift = maxShift;\n }\n\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\n for (var i in dragHash) {\n var childDrag = dragHash[i];\n\n if (dragProject && childDrag.id != drag.id) {\n gantt._bulk_dnd = true;\n }\n\n this._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e);\n }\n\n gantt._bulk_dnd = false;\n } else {\n // for resize and progress\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n }\n\n gantt._update_parents(drag.id);\n }\n }\n },\n on_mouse_down: function on_mouse_down(e, src) {\n // on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n // let's ignore right mouse button then\n if (e.button == 2 && e.button !== undefined) return;\n var config = timeline.$getConfig();\n var id = gantt.locate(e);\n var task = null;\n\n if (gantt.isTaskExists(id)) {\n task = gantt.getTask(id);\n }\n\n if (gantt.isReadonly(task) || this.drag.mode) return;\n this.clear_drag_state();\n src = src || e.target || e.srcElement;\n var className = domHelpers.getClassName(src);\n\n var drag = this._get_drag_mode(className, src);\n\n if (!className || !drag) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);else return;\n }\n\n if (!drag) {\n if (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);\n }\n } else {\n if (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n id = gantt.locate(src);\n task = gantt.copy(gantt.getTask(id) || {});\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return false;\n }\n\n if (gantt.isSummaryTask(task) && !config.drag_project && drag.mode != config.drag_mode.progress) {\n //only progress drag is allowed for tasks with flexible duration\n this.clear_drag_state();\n return;\n }\n\n drag.id = id;\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n drag.start_x = pos.x;\n drag.start_y = pos.y;\n drag.obj = task;\n this.drag.start_drag = drag;\n this.drag.timestamp = Date.now();\n } else this.clear_drag_state();\n }\n },\n _fix_dnd_scale_time: function _fix_dnd_scale_time(task, drag) {\n var config = timeline.$getConfig();\n var unit = gantt.getScale().unit,\n step = gantt.getScale().step;\n\n if (!config.round_dnd_dates) {\n unit = 'minute';\n step = config.time_step;\n }\n\n function fixStart(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(task.start_date, undefined, task)) task.start_date = gantt.calculateEndDate({\n start_date: task.start_date,\n duration: -1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n function fixEnd(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task)) task.end_date = gantt.calculateEndDate({\n start_date: task.end_date,\n duration: 1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n } else {\n task.end_date = gantt.roundDate({\n date: task.end_date,\n unit: unit,\n step: step\n });\n fixEnd(task);\n }\n } else if (drag.mode == config.drag_mode.move) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n task.end_date = gantt.calculateEndDate(task);\n }\n },\n _fix_working_times: function _fix_working_times(task, drag) {\n var config = timeline.$getConfig();\n var drag = drag || {\n mode: config.drag_mode.move\n };\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n } else {\n task.end_date = gantt.getClosestWorkTime({\n date: task.end_date,\n dir: 'past',\n task: task\n });\n }\n } else if (drag.mode == config.drag_mode.move) {\n gantt.correctTaskWorkTime(task);\n }\n },\n _finalize_mouse_up: function _finalize_mouse_up(taskId, config, drag, e) {\n var task = gantt.getTask(taskId);\n\n if (config.work_time && config.correct_work_time) {\n this._fix_working_times(task, drag);\n }\n\n this._fix_dnd_scale_time(task, drag);\n\n if (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n //drag.obj._dhx_changed = false;\n this.clear_drag_state();\n\n if (taskId == drag.id) {\n drag.obj._dhx_changed = false;\n gantt.mixin(task, drag.obj, true);\n }\n\n gantt.refreshTask(task.id);\n } else {\n var drag_id = taskId;\n\n gantt._init_task_timing(task);\n\n this.clear_drag_state();\n gantt.updateTask(task.id);\n\n this._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n }\n },\n on_mouse_up: function on_mouse_up(e) {\n var drag = this.drag;\n\n if (drag.mode && drag.id) {\n var config = timeline.$getConfig(); //drop\n\n var task = gantt.getTask(drag.id);\n var dragMultiple = this.dragMultiple;\n var finalizingBulkMove = false;\n var moveCount = 0;\n\n if (drag.mode === config.drag_mode.move) {\n if (gantt.isSummaryTask(task) && config.drag_project || this._isMultiselect()) {\n finalizingBulkMove = true;\n moveCount = Object.keys(dragMultiple).length;\n }\n }\n\n var doFinalize = function doFinalize() {\n if (finalizingBulkMove) {\n for (var i in dragMultiple) {\n this._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n }\n }\n\n this._finalize_mouse_up(drag.id, config, drag, e);\n };\n\n if (finalizingBulkMove && moveCount > 10) {\n // 10 - arbitrary threshold for bulk dnd at which we start doing complete repaint to refresh\n gantt.batchUpdate(function () {\n doFinalize.call(this);\n }.bind(this));\n } else {\n doFinalize.call(this);\n }\n }\n\n this.clear_drag_state();\n },\n _get_drag_mode: function _get_drag_mode(className, el) {\n var config = timeline.$getConfig();\n var modes = config.drag_mode;\n var classes = (className || \"\").split(\" \");\n var classname = classes[0];\n var drag = {\n mode: null,\n left: null\n };\n\n switch (classname) {\n case \"gantt_task_line\":\n case \"gantt_task_content\":\n drag.mode = modes.move;\n break;\n\n case \"gantt_task_drag\":\n drag.mode = modes.resize;\n var dragProperty = el.getAttribute(\"data-bind-property\");\n\n if (dragProperty == \"start_date\") {\n drag.left = true;\n } else {\n drag.left = false;\n }\n\n break;\n\n case \"gantt_task_progress_drag\":\n drag.mode = modes.progress;\n break;\n\n case \"gantt_link_control\":\n case \"gantt_link_point\":\n drag.mode = modes.ignore;\n break;\n\n default:\n drag = null;\n break;\n }\n\n return drag;\n },\n _start_dnd: function _start_dnd(e) {\n var drag = this.drag = this.drag.start_drag;\n delete drag.start_drag;\n var cfg = timeline.$getConfig();\n var id = drag.id;\n\n if (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n this.clear_drag_state();\n } else {\n delete drag.start_drag;\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return;\n }\n\n if (this._isMultiselect()) {\n // for don't move selected tasks when drag unselected task\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n helpers.forEach(selectedTasksIds, gantt.bind(function (taskId) {\n var selectedTask = gantt.getTask(taskId);\n\n if (gantt.isSummaryTask(selectedTask) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(selectedTask.id);\n }\n\n this.dragMultiple[taskId] = gantt.mixin({\n id: selectedTask.id,\n obj: gantt.copy(selectedTask)\n }, this.drag);\n }, this));\n }\n } // for move unselected summary\n\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(task.id);\n }\n\n gantt.callEvent(\"onTaskDragStart\", []);\n }\n },\n _fireEvent: function _fireEvent(stage, mode, params) {\n gantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n var trigger = this._events[stage][mode];\n gantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n gantt.assert(params, \"Invalid event arguments\");\n if (!gantt.checkEvent(trigger)) return true;\n return gantt.callEvent(trigger, params);\n },\n round_task_dates: function round_task_dates(task) {\n var drag_state = this.drag;\n var config = timeline.$getConfig();\n\n if (!drag_state) {\n drag_state = {\n mode: config.drag_mode.move\n };\n }\n\n this._fix_dnd_scale_time(task, drag_state);\n },\n destructor: function destructor() {\n this._domEvents.detachAll();\n },\n _isMultiselect: function _isMultiselect() {\n return gantt.config.drag_multiple && !!(gantt.getSelectedTasks && gantt.getSelectedTasks().length > 0);\n },\n _addSubtasksToDragMultiple: function _addSubtasksToDragMultiple(summaryId) {\n gantt.eachTask(function (child) {\n this.dragMultiple[child.id] = gantt.mixin({\n id: child.id,\n obj: gantt.copy(child)\n }, this.drag);\n }, summaryId, this);\n }\n };\n}\n\nfunction initTaskDND() {\n var _tasks_dnd;\n\n return {\n extend: function extend(timeline) {\n timeline.roundTaskDates = function (task) {\n _tasks_dnd.round_task_dates(task);\n };\n },\n init: function init(timeline, gantt) {\n _tasks_dnd = createTaskDND(timeline, gantt); // TODO: entry point for touch handlers, move touch to timeline\n\n timeline._tasks_dnd = _tasks_dnd;\n return _tasks_dnd.init(gantt);\n },\n destructor: function destructor() {\n if (_tasks_dnd) {\n _tasks_dnd.destructor();\n\n _tasks_dnd = null;\n }\n }\n };\n}\n\nmodule.exports = {\n createTaskDND: initTaskDND\n};","var utils = require(\"../../../utils/utils\"),\n taskDnD = require(\"./tasks_dnd\"),\n linkDnD = require(\"./links_dnd\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n var services = gantt.$services;\n return {\n onCreated: function onCreated(timeline) {\n var config = timeline.$config;\n config.bind = utils.defined(config.bind) ? config.bind : \"task\";\n config.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n timeline._linksDnD = linkDnD.createLinkDND();\n timeline._tasksDnD = taskDnD.createTaskDND();\n\n timeline._tasksDnD.extend(timeline);\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(timeline) {\n this._attachDomEvents(gantt);\n\n this._attachStateProvider(gantt, timeline);\n\n timeline._tasksDnD.init(timeline, gantt);\n\n timeline._linksDnD.init(timeline, gantt);\n\n if (timeline.$config.id == \"timeline\") {\n this.extendDom(timeline);\n }\n },\n onDestroyed: function onDestroyed(timeline) {\n this._clearDomEvents(gantt);\n\n this._clearStateProvider(gantt);\n\n if (timeline._tasksDnD) {\n timeline._tasksDnD.destructor();\n }\n },\n extendDom: function extendDom(timeline) {\n gantt.$task = timeline.$task;\n gantt.$task_scale = timeline.$task_scale;\n gantt.$task_data = timeline.$task_data;\n gantt.$task_bg = timeline.$task_bg;\n gantt.$task_links = timeline.$task_links;\n gantt.$task_bars = timeline.$task_bars;\n },\n _clearDomEvents: function _clearDomEvents() {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n _attachDomEvents: function _attachDomEvents(gantt) {\n function _delete_link_handler(id, e) {\n if (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n var link = this.getLink(id);\n if (this.isReadonly(link)) return;\n var title = \"\";\n var question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n window.setTimeout(function () {\n gantt._dhtmlx_confirm(question, title, function () {\n gantt.deleteLink(id);\n });\n }, this.config.touch ? 300 : 1);\n }\n }\n\n this._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n var id = this.locate(e, this.config.link_attribute);\n\n if (id) {\n this.callEvent(\"onLinkClick\", [id, e]);\n }\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var date = gantt.dateFromPos(pos.x);\n var coll = Math.floor(gantt.columnIndexByDate(date));\n var coll_date = gantt.getScale().trace_x[coll];\n gantt.callEvent(\"onScaleClick\", [e, coll_date]);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e, gantt.config.link_attribute);\n\n _delete_link_handler.call(this, id, e);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e),\n task = this.getTask(id);\n var link = null;\n\n if (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n if (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n link = task.$target[0];\n } else {\n link = task.$source[0];\n }\n }\n\n if (link) _delete_link_handler.call(this, link, e);\n return false;\n }, gantt), this.$task);\n },\n _attachStateProvider: function _attachStateProvider(gantt, timeline) {\n var self = timeline;\n var state = services.getService(\"state\");\n state.registerProvider(\"tasksTimeline\", function () {\n return {\n scale_unit: self._tasks ? self._tasks.unit : undefined,\n scale_step: self._tasks ? self._tasks.step : undefined\n };\n });\n },\n _clearStateProvider: function _clearStateProvider() {\n var state = services.getService(\"state\");\n state.unregisterProvider(\"tasksTimeline\");\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../utils/dom_helpers\");\n/**\n * methods for highlighting current drag and drop position\n */\n\n\nfunction highlightPosition(target, root, grid) {\n var markerPos = getTaskMarkerPosition(target, grid); // setting position of row\n\n root.marker.style.left = markerPos.x + 9 + \"px\";\n root.marker.style.top = markerPos.y + \"px\";\n var markerLine = root.markerLine;\n\n if (!markerLine) {\n markerLine = document.createElement(\"div\");\n markerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n markerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n markerLine.style.pointerEvents = \"none\";\n }\n\n if (target.child) {\n highlightFolder(target, markerLine, grid);\n } else {\n highlightRow(target, markerLine, grid);\n }\n\n if (!root.markerLine) {\n document.body.appendChild(markerLine);\n root.markerLine = markerLine;\n }\n}\n\nfunction removeLineHighlight(root) {\n if (root.markerLine && root.markerLine.parentNode) {\n root.markerLine.parentNode.removeChild(root.markerLine);\n }\n\n root.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid) {\n var linePos = getLineMarkerPosition(target, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom;\n markerLine.innerHTML = \"<div class='gantt_grid_dnd_marker_line'></div>\";\n markerLine.style.left = linePos.x + \"px\";\n markerLine.style.height = \"4px\";\n var markerLineTop = linePos.y - 2;\n markerLine.style.top = markerLineTop + \"px\";\n markerLine.style.width = linePos.width + \"px\";\n\n if (markerLineTop > maxBottom) {\n markerLine.style.top = maxBottom + 'px';\n }\n\n return markerLine;\n}\n\nfunction highlightFolder(target, markerFolder, grid) {\n var id = target.targetParent;\n var pos = gridToPageCoordinates({\n x: 0,\n y: grid.getItemTop(id)\n }, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom;\n markerFolder.innerHTML = \"<div class='gantt_grid_dnd_marker_folder'></div>\";\n markerFolder.style.width = grid.$grid_data.offsetWidth + \"px\";\n markerFolder.style.top = pos.y + \"px\";\n markerFolder.style.left = pos.x + \"px\";\n markerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\n if (pos.y > maxBottom) {\n markerFolder.style.top = maxBottom + 'px';\n }\n\n return markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid) {\n var store = grid.$config.rowStore;\n var pos = {\n x: 0,\n y: 0\n };\n var indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n var indent = 15;\n var level = 0;\n\n if (indentNode) {\n indent = indentNode.offsetWidth;\n }\n\n var iconWidth = 40;\n\n if (target.targetId !== store.$getRootId()) {\n var itemTop = grid.getItemTop(target.targetId);\n var itemHeight = grid.getItemHeight(target.targetId);\n level = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n if (target.prevSibling) {\n pos.y = itemTop;\n } else if (target.nextSibling) {\n var childCount = 0;\n store.eachItem(function (child) {\n if (store.getIndexById(child.id) !== -1) childCount++;\n }, target.targetId);\n pos.y = itemTop + itemHeight + childCount * itemHeight;\n } else {\n pos.y = itemTop + itemHeight;\n level += 1;\n }\n }\n\n pos.x = iconWidth + level * indent;\n pos.width = Math.max(grid.$grid_data.offsetWidth - pos.x, 0);\n return gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid) {\n var gridPos = domHelpers.getNodePosition(grid.$grid_data);\n pos.x += gridPos.x - grid.$grid.scrollLeft;\n pos.y += gridPos.y - grid.$grid_data.scrollTop;\n return pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data); // row offset\n\n var x = pos.x;\n var y = ePos.y - 10;\n var rowHeight = grid.getItemHeight(e.targetId); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n pos.x = x;\n pos.y = y;\n return pos;\n}\n\nmodule.exports = {\n removeLineHighlight: removeLineHighlight,\n highlightPosition: highlightPosition\n};","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = true\n */\nvar dropTarget = require(\"./drop_target\");\n\nmodule.exports = function getMultiLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store) {\n var result;\n\n if (targetTaskId !== store.$getRootId()) {\n if (relTargetPos < 0.25) {\n result = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n } else if (relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)) {\n result = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n } else {\n result = dropTarget.firstChildTarget(dndTaskId, targetTaskId, store);\n }\n } else {\n var rootId = store.$getRootId();\n\n if (store.hasChild(rootId) && eventTop >= 0) {\n result = dropTarget.lastChildTarget(dndTaskId, rootId, store);\n } else {\n result = dropTarget.firstChildTarget(dndTaskId, rootId, store);\n }\n }\n\n return result;\n};","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = false\n */\nvar dropTarget = require(\"./drop_target\");\n\nfunction getLast(store) {\n var current = store.getNext();\n\n while (store.exists(current)) {\n var next = store.getNext(current);\n\n if (!store.exists(next)) {\n return current;\n } else {\n current = next;\n }\n }\n\n return null;\n}\n\nfunction findClosesTarget(dndTaskId, taskId, allowedLevel, store, up) {\n var prev = taskId;\n\n while (store.exists(prev)) {\n var targetLevel = store.calculateItemLevel(store.getItem(prev));\n\n if ((targetLevel === allowedLevel || targetLevel === allowedLevel - 1) && store.getBranchIndex(prev) > -1) {\n break;\n } else {\n prev = up ? store.getPrev(prev) : store.getNext(prev);\n }\n }\n\n if (store.exists(prev)) {\n if (store.calculateItemLevel(store.getItem(prev)) === allowedLevel) {\n return up ? dropTarget.nextSiblingTarget(dndTaskId, prev, store) : dropTarget.prevSiblingTarget(dndTaskId, prev, store);\n } else {\n return dropTarget.firstChildTarget(dndTaskId, prev, store);\n }\n }\n\n return null;\n}\n\nfunction findTargetAbove(dndTaskId, taskId, allowedLevel, store) {\n return findClosesTarget(dndTaskId, taskId, allowedLevel, store, true);\n}\n\nfunction findTargetBelow(dndTaskId, taskId, allowedLevel, store) {\n return findClosesTarget(dndTaskId, taskId, allowedLevel, store, false);\n}\n\nmodule.exports = function getSameLevelDropPosition(dndTaskId, targetTaskId, relTargetPos, eventTop, store, level) {\n var result;\n\n if (targetTaskId !== store.$getRootId()) {\n var targetTask = store.getItem(targetTaskId);\n var targetLevel = store.calculateItemLevel(targetTask);\n\n if (targetLevel === level) {\n var prevSibling = store.getPrevSibling(targetTaskId);\n\n if (relTargetPos < 0.5 && !prevSibling) {\n result = dropTarget.prevSiblingTarget(dndTaskId, targetTaskId, store);\n } else {\n if (relTargetPos < 0.5) {\n targetTaskId = prevSibling;\n }\n\n result = dropTarget.nextSiblingTarget(dndTaskId, targetTaskId, store);\n }\n } else if (targetLevel > level) {\n store.eachParent(function (parent) {\n if (store.calculateItemLevel(parent) === level) {\n targetTaskId = parent.id;\n }\n }, targetTask);\n result = findTargetAbove(dndTaskId, targetTaskId, level, store);\n } else {\n var targetAbove = findTargetAbove(dndTaskId, targetTaskId, level, store);\n var targetBelow = findTargetBelow(dndTaskId, targetTaskId, level, store);\n result = relTargetPos < 0.5 ? targetAbove : targetBelow;\n }\n } else {\n var rootId = store.$getRootId();\n var rootLevel = store.getChildren(rootId);\n result = dropTarget.createDropTargetObject();\n\n if (rootLevel.length && eventTop >= 0) {\n result = findTargetAbove(dndTaskId, getLast(store), level, store);\n } else {\n result = findTargetBelow(dndTaskId, rootId, level, store);\n }\n }\n\n return result;\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\n\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\n\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\n\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n var datastore = grid.$config.rowStore;\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task) || checkPlaceholderTask(id)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n dnd.config.marker.style.opacity = 0.4;\n element.style.position = \"static\";\n element.style.pointerEvents = \"none\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n dnd.config.level = store.calculateItemLevel(task);\n dnd.config.drop_target = dropTarget.createDropTargetObject({\n targetParent: store.getParent(task.id),\n targetIndex: store.getBranchIndex(task.id),\n targetId: task.id,\n nextSibling: true\n });\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n function getTargetTaskId(e) {\n var y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n var store = grid.$config.rowStore;\n y = y || 0; // limits for the marker according to the layout layer\n\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n var minTop = scrollPos;\n var firstVisibleTaskIndex = grid.getItemIndexByTopPosition(grid.$state.scrollTop);\n\n if (!store.exists(firstVisibleTaskIndex)) {\n firstVisibleTaskIndex = store.countVisible() - 1;\n }\n\n if (firstVisibleTaskIndex < 0) {\n return store.$getRootId();\n }\n\n var firstVisibleTaskId = store.getIdByIndex(firstVisibleTaskIndex);\n var firstVisibleTaskPos = grid.$state.scrollTop / grid.getItemHeight(firstVisibleTaskId);\n var hiddenTaskPart = firstVisibleTaskPos - Math.floor(firstVisibleTaskPos);\n\n if (hiddenTaskPart > 0.1 && hiddenTaskPart < 0.9) {\n maxBottom = maxBottom - grid.getItemHeight(firstVisibleTaskId) * hiddenTaskPart;\n minTop = minTop + grid.getItemHeight(firstVisibleTaskId) * (1 - hiddenTaskPart);\n }\n\n if (y >= maxBottom) {\n y = maxBottom;\n } else if (y <= minTop) {\n y = minTop;\n }\n\n var index = grid.getItemIndexByTopPosition(y);\n\n if (index > store.countVisible() - 1 || index < 0) {\n return store.$getRootId();\n }\n\n var targetId = store.getIdByIndex(index);\n\n if (checkPlaceholderTask(targetId)) {\n return store.getPrevSibling(targetId);\n }\n\n return store.getIdByIndex(index);\n }\n\n function getDropPosition(e) {\n var targetTaskId = getTargetTaskId(e);\n var relTargetPos = null;\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var lockLevel = !config.order_branch_free;\n var eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n if (targetTaskId !== store.$getRootId()) {\n var rowTop = grid.getItemTop(targetTaskId);\n var rowHeight = grid.getItemHeight(targetTaskId);\n relTargetPos = (eventTop - rowTop) / rowHeight;\n }\n\n var result;\n\n if (!lockLevel) {\n result = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\n } else {\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\n if (result && result.targetParent && checkPlaceholderTask(result.targetParent)) {\n targetTaskId = store.getPrevSibling(result.targetParent);\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n }\n }\n\n return result;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var target = getDropPosition(e);\n\n if (!target || gantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n target = dropTarget.createDropTargetObject(dnd.config.drop_target);\n }\n\n higlighter.highlightPosition(target, dnd.config, grid);\n dnd.config.drop_target = target;\n this.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n higlighter.removeLineHighlight(dnd.config);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n var target = dnd.config.drop_target;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n task.$drop_target = null;\n } else {\n store.move(dnd.config.id, target.targetIndex, target.targetParent);\n gantt.render();\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n }\n\n store.refresh(task.id);\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n if (checkPlaceholderTask(id)) return false;\n var datastore = getStore();\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n element.style.position = \"static\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n dnd.config.index = store.getBranchIndex(dnd.config.id);\n dnd.config.parent = task.parent;\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n dnd.lastTaskOfLevel = function (level) {\n var last_item = null;\n var store = getStore();\n var tasks = store.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n if (tasks[i].$level == level) {\n last_item = tasks[i];\n }\n }\n\n return last_item ? last_item.id : null;\n };\n\n dnd._getGridPos = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data); // row offset\n\n var x = pos.x;\n var y = e.pos.y - 10;\n var rowHeight = grid.getItemHeight(dnd.config.id); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n pos.x = x;\n pos.y = y;\n return pos;\n }, gantt);\n dnd._getTargetY = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n var y = e.pageY - pos.y + scrollPos;\n\n if (y > maxBottom) {\n y = maxBottom;\n } else if (y < scrollPos) {\n y = scrollPos;\n }\n\n return y;\n }, gantt);\n dnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n var store = getStore();\n y = y || 0;\n var index = grid.getItemIndexByTopPosition(y);\n index = dropIndex < index ? index - 1 : index;\n if (index > store.countVisible() - 1) return null;\n return store.getIdByIndex(index);\n }, gantt);\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + (grid.$state.scrollTop || 0);\n var dd = dnd.config;\n\n var pos = dnd._getGridPos(e);\n\n var config = grid.$getConfig(),\n store = getStore(); // setting position of row\n\n if (pos.y < maxBottom) {\n dd.marker.style.top = pos.y + \"px\";\n } else {\n dd.marker.style.top = maxBottom + \"px\";\n }\n\n dd.marker.style.left = pos.x + 10 + \"px\"; // highlight row when mouseover\n\n var item = store.getItem(dnd.config.id);\n\n var targetY = dnd._getTargetY(e);\n\n var el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n if (!store.exists(el)) {\n el = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\n if (el == dnd.config.id) {\n el = null;\n }\n }\n\n function allowedLevel(next, item) {\n return !store.isChildOf(over.id, item.id) && (next.$level == item.$level || config.order_branch_free);\n }\n\n if (store.exists(el)) {\n var over = store.getItem(el);\n var itemTop = grid.getItemTop(over.id);\n var itemHeight = grid.getItemHeight(over.id);\n\n if (itemTop + itemHeight / 2 < targetY) {\n //hovering over bottom part of item, check can be drop to bottom\n var index = store.getIndexById(over.id);\n var nextId = store.getNext(over.id); //adds +1 when hovering over placeholder\n\n var next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (next) {\n if (next.id != item.id) {\n over = next; //there is a valid target\n } else {\n if (config.order_branch_free) {\n if (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1)) return;else {\n store.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n return;\n }\n } else {\n return;\n }\n }\n } else {\n //we at end of the list, check and drop at the end of list\n nextId = store.getIdByIndex(index);\n next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (allowedLevel(next, item) && next.id != item.id) {\n store.move(item.id, -1, store.getParent(next.id));\n return;\n }\n }\n } else if (config.order_branch_free) {\n if (over.id != item.id && allowedLevel(over, item) && !checkPlaceholderTask(over.id)) {\n if (!store.hasChild(over.id)) {\n over.$open = true;\n store.move(item.id, -1, over.id);\n return;\n }\n\n if (store.getIndexById(over.id) || itemHeight / 3 < targetY) return;\n }\n } //if item is on different level, check the one before it\n\n\n var index = store.getIndexById(over.id),\n prevId = store.getIdByIndex(index - 1);\n var prev = store.getItem(prevId);\n var shift = 1;\n\n while ((!prev || prev.id == over.id) && index - shift >= 0) {\n prevId = store.getIdByIndex(index - shift);\n prev = store.getItem(prevId);\n shift++;\n }\n\n if (item.id == over.id || checkPlaceholderTask(over.id)) return; //replacing item under cursor\n\n if (allowedLevel(over, item) && item.id != over.id) {\n store.move(item.id, 0, 0, over.id);\n } else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n store.move(item.id, 0, over.id);\n } else if (prev && allowedLevel(prev, item) && item.id != prev.id) {\n store.move(item.id, -1, store.getParent(prev.id));\n }\n }\n\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n store.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n task.$drop_target = null;\n } else {\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n }\n\n gantt.render();\n this.refreshData();\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\n\nvar rowDnd = require(\"./tasks_grid_dnd\");\n\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n onCreated: function onCreated(grid) {\n grid.$config = utils.mixin(grid.$config, {\n bind: \"task\"\n });\n\n if (grid.$config.id == \"grid\") {\n this.extendGantt(grid);\n gantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n gantt.ext.inlineEditors.init();\n }\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(grid) {\n var config = grid.$getConfig();\n\n if (config.order_branch) {\n if (config.order_branch == \"marker\") {\n rowDndMarker.init(grid.$gantt, grid);\n } else {\n rowDnd.init(grid.$gantt, grid);\n }\n }\n\n this.initEvents(grid, gantt);\n\n if (grid.$config.id == \"grid\") {\n this.extendDom(grid);\n }\n },\n onDestroyed: function onDestroyed(grid) {\n if (grid.$config.id == \"grid\") {\n gantt.ext.inlineEditors.destructor();\n }\n\n this.clearEvents(grid, gantt);\n },\n initEvents: function initEvents(grid, gantt) {\n this._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n\n if (id !== null) {\n var task = this.getTask(id);\n if (config.scroll_on_click && !gantt._is_icon_open_click(e)) this.showDate(task.start_date);\n gantt.callEvent(\"onTaskRowClick\", [id, trg]);\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n var column = trg.getAttribute(\"data-column-id\");\n if (!gantt.callEvent(\"onGridHeaderClick\", [column, e])) return;\n var config = grid.$getConfig();\n\n if (column == \"add\") {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n return;\n }\n\n if (config.sort && column) {\n // GS-929: if there is no column name, we cannot sort the column\n var sorting_method = column,\n conf;\n\n for (var i = 0; i < config.columns.length; i++) {\n if (config.columns[i].name == column) {\n conf = config.columns[i];\n break;\n }\n }\n\n if (conf && conf.sort !== undefined && conf.sort !== true) {\n sorting_method = conf.sort;\n\n if (!sorting_method) {\n // column sort property 'false', no sorting\n return;\n }\n }\n\n var sort = this._sort && this._sort.direction && this._sort.name == column ? this._sort.direction : \"desc\"; // invert sort direction\n\n sort = sort == \"desc\" ? \"asc\" : \"desc\";\n this._sort = {\n name: column,\n direction: sort\n };\n this.sort(sorting_method, sort == \"desc\");\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n if (config.readonly) return;\n var item = {};\n this.createTask(item, id ? id : gantt.config.root_id);\n return false;\n }, gantt), grid.$grid);\n },\n clearEvents: function clearEvents(grid, gantt) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n extendDom: function extendDom(grid) {\n gantt.$grid = grid.$grid;\n gantt.$grid_scale = grid.$grid_scale;\n gantt.$grid_data = grid.$grid_data;\n },\n extendGantt: function extendGantt(grid) {\n gantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n grid.attachEvent(\"onColumnResizeStart\", function () {\n return gantt.callEvent(\"onColumnResizeStart\", arguments);\n });\n grid.attachEvent(\"onColumnResize\", function () {\n return gantt.callEvent(\"onColumnResize\", arguments);\n });\n grid.attachEvent(\"onColumnResizeEnd\", function () {\n return gantt.callEvent(\"onColumnResizeEnd\", arguments);\n });\n grid.attachEvent(\"onColumnResizeComplete\", function (columns, totalWidth) {\n gantt.config.grid_width = totalWidth;\n });\n grid.attachEvent(\"onBeforeRowResize\", function () {\n return gantt.callEvent(\"onBeforeRowResize\", arguments);\n });\n grid.attachEvent(\"onRowResize\", function () {\n return gantt.callEvent(\"onRowResize\", arguments);\n });\n grid.attachEvent(\"onBeforeRowResizeEnd\", function () {\n return gantt.callEvent(\"onBeforeRowResizeEnd\", arguments);\n });\n grid.attachEvent(\"onAfterRowResize\", function () {\n return gantt.callEvent(\"onAfterRowResize\", arguments);\n });\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridTaskRowResizerRender(gantt) {\n function _render_grid_item(item, view, viewport) {\n var config = view.$getConfig();\n var resize_el = document.createElement(\"div\");\n resize_el.className = \"gantt_task_grid_row_resize_wrap\";\n resize_el.style.top = view.getItemTop(item.id) + view.getItemHeight(item.id) + \"px\";\n resize_el.innerHTML = \"<div class='gantt_task_grid_row_resize'></div>\";\n resize_el.setAttribute(config.task_grid_row_resizer_attribute, item.id);\n\n gantt._waiAria.gridSeparatorAttr(resize_el);\n\n return resize_el;\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createGridTaskRowResizerRender;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction renderBar(level, start, end, timeline) {\n var top = (1 - (level * 1 || 0)) * 100;\n var left = timeline.posFromDate(start);\n var right = timeline.posFromDate(end);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_hor_bar\";\n element.style.top = top + '%';\n element.style.left = left + \"px\";\n element.style.width = right - left + 1 + \"px\";\n return element;\n}\n\nfunction renderConnection(prevLevel, nextLevel, left) {\n if (prevLevel === nextLevel) {\n return null;\n }\n\n var top = 1 - Math.max(prevLevel, nextLevel);\n var height = Math.abs(prevLevel - nextLevel);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_vert_bar\";\n element.style.top = top * 100 + \"%\";\n element.style.height = height * 100 + \"%\";\n element.style.left = left + \"px\";\n return element;\n}\n\nfunction generateRenderResourceHistogram(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedHistogramCells = {};\n var renderedHistogramRows = {};\n var renderedHistogramCapacity = {};\n\n function detachRenderedHistogramCell(id, index) {\n var renderedRow = renderedHistogramCells[id];\n\n if (renderedRow && renderedRow[index] && renderedRow[index].parentNode) {\n renderedRow[index].parentNode.removeChild(renderedRow[index]);\n }\n }\n\n function renderHistogramLine(capacity, timeline, maxCapacity, viewport) {\n var scale = timeline.getScale();\n var el = document.createElement(\"div\");\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var i = range.start; i <= range.end; i++) {\n var colStart = scale.trace_x[i];\n var colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n var col = scale.trace_x[i].valueOf();\n var level = Math.min(capacity[col] / maxCapacity, 1) || 0; // do not render histogram for lines with below zero capacity, as it's reserved for folders\n\n if (level < 0) {\n return null;\n }\n\n var nextLevel = Math.min(capacity[colEnd.valueOf()] / maxCapacity, 1) || 0;\n var bar = renderBar(level, colStart, colEnd, timeline);\n\n if (bar) {\n el.appendChild(bar);\n }\n\n var connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\n if (connection) {\n el.appendChild(connection);\n }\n }\n\n return el;\n }\n\n function renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport) {\n var renderedElement = renderedHistogramCapacity[resource.id];\n\n if (renderedElement && renderedElement.parentNode) {\n renderedElement.parentNode.removeChild(renderedElement);\n }\n\n var capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\n\n if (capacityElement && sizes) {\n capacityElement.setAttribute(\"data-resource-id\", resource.id);\n capacityElement.setAttribute(timeline.$config.item_attribute, resource.id);\n capacityElement.style.position = \"absolute\";\n capacityElement.style.top = sizes.top + 1 + \"px\";\n capacityElement.style.height = timeline.getItemHeight(resource.id) - 1 + \"px\";\n capacityElement.style.left = 0;\n }\n\n return capacityElement;\n }\n\n function renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline) {\n var css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var el = document.createElement('div');\n el.className = [\"gantt_histogram_cell\", css].join(\" \");\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + (sizes.top + 1) + 'px'].join(\";\");\n\n if (content) {\n content = \"<div class='gantt_histogram_label'>\" + content + \"</div>\";\n }\n\n if (fill) {\n content = \"<div class='gantt_histogram_fill' style='height:\" + Math.min(fill / maxCapacity || 0, 1) * 100 + \"%;'></div>\" + content;\n }\n\n if (content) {\n el.innerHTML = content;\n }\n\n return el;\n }\n\n return null;\n }\n\n function renderResourceHistogram(resource, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n var cells = [];\n var capacityMatrix = {};\n var maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n renderedHistogramCells[resource.id] = {};\n renderedHistogramRows[resource.id] = null;\n renderedHistogramCapacity[resource.id] = null;\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n\n if (!day) {\n continue;\n }\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n continue;\n }\n\n var capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n capacityMatrix[day.start_date.valueOf()] = capacity || 0;\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n var el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\n if (el) {\n cells.push(el);\n renderedHistogramCells[resource.id][columnIndex] = el;\n }\n }\n\n var row = null;\n\n if (cells.length) {\n row = document.createElement(\"div\");\n\n for (var i = 0; i < cells.length; i++) {\n row.appendChild(cells[i]);\n }\n\n var capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\n if (capacityElement) {\n row.appendChild(capacityElement);\n renderedHistogramCapacity[resource.id] = capacityElement;\n }\n\n renderedHistogramRows[resource.id] = row;\n }\n\n return row;\n }\n\n function updateResourceHistogram(resource, node, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, scale, timeline);\n var maxCapacity = resource.capacity || timeline.$config.capacity || 24;\n var capacityMatrix = {};\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var range = getVisibleCellsRange(scale, viewport);\n var checkedColumns = {};\n\n if (renderedHistogramCells && renderedHistogramCells[resource.id]) {\n for (var i in renderedHistogramCells[resource.id]) {\n checkedColumns[i] = i;\n }\n }\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n checkedColumns[columnIndex] = false;\n\n if (!day) {\n continue;\n }\n\n var capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n capacityMatrix[day.start_date.valueOf()] = capacity || 0;\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n detachRenderedHistogramCell(resource.id, columnIndex);\n continue;\n }\n\n var renderedCell = renderedHistogramCells[resource.id];\n\n if (!renderedCell || !renderedCell[columnIndex]) {\n var el = renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline);\n\n if (el) {\n node.appendChild(el);\n renderedHistogramCells[resource.id][columnIndex] = el;\n }\n } else if (renderedCell && renderedCell[columnIndex] && !renderedCell[columnIndex].parentNode) {\n node.appendChild(renderedCell[columnIndex]);\n }\n }\n\n for (var i in checkedColumns) {\n if (checkedColumns[i] !== false) {\n detachRenderedHistogramCell(resource.id, i);\n }\n }\n\n var capacityElement = renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport);\n\n if (capacityElement) {\n node.appendChild(capacityElement);\n renderedHistogramCapacity[resource.id] = capacityElement;\n }\n }\n\n return {\n render: renderResourceHistogram,\n update: updateResourceHistogram,\n getRectangle: getRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = generateRenderResourceHistogram;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction generateRenderResourceLine(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedResourceLines = {};\n\n function renderResourceLineCell(resource, day, templates, config, timeline) {\n var css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n var el = document.createElement('div');\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.className = [\"gantt_resource_marker\", css].join(\" \");\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + sizes.top + 'px'].join(\";\");\n if (content) el.innerHTML = content;\n return el;\n }\n\n return null;\n }\n\n function detachRenderedResourceLine(id, index) {\n if (renderedResourceLines[id] && renderedResourceLines[id][index] && renderedResourceLines[id][index].parentNode) {\n renderedResourceLines[id][index].parentNode.removeChild(renderedResourceLines[id][index]);\n }\n }\n\n function renderResourceLine(resource, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n var smartRendering = !!viewport; //no viewport means smart rendering is disabled\n\n var cells = [];\n renderedResourceLines[resource.id] = {};\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n\n if (!day) {\n continue;\n }\n\n if (smartRendering && !isColumnVisible(columnIndex, scale, viewport, gantt)) {\n continue;\n }\n\n var cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\n if (cell) {\n cells.push(cell);\n renderedResourceLines[resource.id][columnIndex] = cell;\n }\n }\n\n var row = null;\n\n if (cells.length) {\n row = document.createElement(\"div\");\n\n for (var i = 0; i < cells.length; i++) {\n row.appendChild(cells[i]);\n }\n }\n\n return row;\n }\n\n function updateResourceLine(resource, node, timeline, config, viewport) {\n var templates = timeline.$getTemplates();\n var scale = timeline.getScale();\n var timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n var range = getVisibleCellsRange(scale, viewport);\n var checkedColumns = {};\n\n if (renderedResourceLines && renderedResourceLines[resource.id]) {\n for (var i in renderedResourceLines[resource.id]) {\n checkedColumns[i] = i;\n }\n }\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var day = timetable[columnIndex];\n checkedColumns[columnIndex] = false;\n\n if (!day) {\n continue;\n }\n\n if (!isColumnVisible(columnIndex, scale, viewport, gantt)) {\n detachRenderedResourceLine(resource.id, columnIndex);\n continue;\n }\n\n if (!renderedResourceLines[resource.id] || !renderedResourceLines[resource.id][columnIndex]) {\n var cell = renderResourceLineCell(resource, day, templates, config, timeline);\n\n if (cell) {\n node.appendChild(cell);\n renderedResourceLines[resource.id][columnIndex] = cell;\n }\n } else if (renderedResourceLines[resource.id] && renderedResourceLines[resource.id][columnIndex] && !renderedResourceLines[resource.id][columnIndex].parentNode) {\n node.appendChild(renderedResourceLines[resource.id][columnIndex]);\n }\n }\n\n for (var i in checkedColumns) {\n if (checkedColumns[i] !== false) {\n detachRenderedResourceLine(resource.id, i);\n }\n }\n }\n\n return {\n render: renderResourceLine,\n update: updateResourceLine,\n getRectangle: getRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = generateRenderResourceLine;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"../../../utils/helpers\");\n\nvar getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridLineRender(gantt) {\n function _render_grid_item(item, view, config, viewport) {\n var columns = view.getGridColumns();\n var templates = view.$getTemplates();\n var store = view.$config.rowStore;\n var cells = [];\n var has_child;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i];\n var cell;\n var value;\n var textValue;\n\n if (col.name == \"add\") {\n var aria = gantt._waiAria.gridAddButtonAttrString(col);\n\n value = \"<div \" + aria + \" class='gantt_add'></div>\";\n textValue = \"\";\n } else {\n if (col.template) value = col.template(item);else value = item[col.name];\n\n if (helpers.isDate(value)) {\n value = templates.date_grid(value, item, col.name);\n }\n\n if (value === null || value === undefined) {\n value = \"\";\n }\n\n textValue = value;\n value = \"<div class='gantt_tree_content'>\" + value + \"</div>\";\n }\n\n var css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\n var tree = [];\n\n if (col.tree) {\n css += \" gantt_cell_tree\";\n\n for (var j = 0; j < item.$level; j++) {\n tree.push(templates.grid_indent(item));\n }\n\n has_child = store.hasChild(item.id) && !(gantt.isSplitTask(item) && !gantt.config.open_split_tasks);\n\n if (has_child) {\n tree.push(templates.grid_open(item));\n tree.push(templates.grid_folder(item));\n } else {\n tree.push(templates.grid_blank(item));\n tree.push(templates.grid_file(item));\n }\n }\n\n var style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\n\n if (this.defined(col.align)) {\n var flexAlign = {\n right: \"flex-end\",\n left: \"flex-start\",\n center: \"center\"\n };\n var justifyContent = flexAlign[col.align];\n style += \"text-align:\" + col.align + \";justify-content:\" + justifyContent + \";\";\n }\n\n var aria = gantt._waiAria.gridCellAttrString(col, textValue, item);\n\n tree.push(value);\n cell = \"<div class='\" + css + \"' data-column-index='\" + i + \"' data-column-name='\" + col.name + \"' style='\" + style + \"' \" + aria + \">\" + tree.join(\"\") + \"</div>\";\n cells.push(cell);\n }\n\n var css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n css += item.$transparent ? \" gantt_transparent\" : \"\";\n css += item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\";\n\n if (templates.grid_row_class) {\n var css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n if (css_template) css += \" \" + css_template;\n }\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n var height = view.getItemHeight(item.id);\n el.style.height = height + \"px\";\n el.style.lineHeight = height + \"px\";\n\n if (config.smart_rendering) {\n el.style.position = \"absolute\";\n el.style.left = \"0px\";\n el.style.top = view.getItemTop(item.id) + \"px\";\n }\n\n if (view.$config.item_attribute) {\n el.setAttribute(view.$config.item_attribute, item.id);\n el.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n gantt._waiAria.taskRowAttr(item, el);\n\n el.innerHTML = cells.join(\"\");\n return el;\n }\n\n function onrender(item, rowNode, view) {\n var columns = view.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n var column = columns[i];\n\n if (column.onrender) {\n // find cell node for current column\n var cellNode = rowNode.querySelector(\"[data-column-name=\" + column.name + \"]\");\n\n if (cellNode) {\n var content = column.onrender(item, cellNode);\n\n if (content && typeof content === \"string\") {\n cellNode.innerHTML = content;\n } else if (content && _typeof(content) === \"object\") {\n // render object to node using additional functionality\n if (gantt.config.external_render) {\n var adapter = gantt.config.external_render;\n\n if (adapter.isElement(content)) {\n adapter.renderElement(content, cellNode);\n }\n }\n }\n }\n }\n }\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n onrender: onrender\n };\n}\n\nmodule.exports = createGridLineRender;","// optimized checker for links smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isLinkInViewPort(item, viewport, view, config, gantt) {\n var source = view.$gantt.getTask(item.source);\n var target = view.$gantt.getTask(item.target); // check vertical visibility first since it's a lighter check\n\n var sourceTop = view.getItemTop(source.id);\n var sourceHeight = view.getItemHeight(source.id);\n var targetTop = view.getItemTop(target.id);\n var targetHeight = view.getItemHeight(target.id);\n\n if (viewport.y > sourceTop + sourceHeight && viewport.y > targetTop + targetHeight) {\n return false;\n }\n\n if (viewport.y_end < targetTop && viewport.y_end < sourceTop) {\n return false;\n }\n\n var padding = 100;\n var sourceLeft = view.posFromDate(source.start_date);\n var sourceRight = view.posFromDate(source.end_date);\n var targetLeft = view.posFromDate(target.start_date);\n var targetRight = view.posFromDate(target.end_date);\n\n if (sourceLeft > sourceRight) {\n // rtl\n var tmp = sourceRight;\n sourceRight = sourceLeft;\n sourceLeft = tmp;\n }\n\n if (targetLeft > targetRight) {\n // rtl\n var tmp = targetRight;\n targetRight = targetLeft;\n targetLeft = tmp;\n }\n\n sourceLeft += -padding; // add buffer for custom elements\n\n sourceRight += padding;\n targetLeft += -padding; // add buffer for custom elements\n\n targetRight += padding;\n\n if (viewport.x > sourceRight && viewport.x > targetRight) {\n return false;\n }\n\n if (viewport.x_end < sourceLeft && viewport.x_end < targetLeft) {\n return false;\n }\n\n return true;\n};","var isInViewPort = require(\"./viewport/is_link_in_viewport\");\n\nfunction createLinkRender(gantt) {\n function _render_link_element(link, view, config) {\n var source = gantt.getTask(link.source);\n\n if (source.hide_bar) {\n return;\n }\n\n var target = gantt.getTask(link.target);\n\n if (target.hide_bar) {\n return;\n }\n\n var pt = path_builder.get_endpoint(link, view, source, target);\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n\n if (!dx && !dy) {\n return null;\n }\n\n var dots = path_builder.get_points(link, view, source, target);\n var lines = drawer.get_lines(dots, view);\n var div = document.createElement(\"div\");\n var css = \"gantt_task_link\";\n\n if (link.color) {\n css += \" gantt_link_inline_color\";\n }\n\n var cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\n if (cssTemplate) {\n css += \" \" + cssTemplate;\n }\n\n if (config.highlight_critical_path && gantt.isCriticalLink) {\n if (gantt.isCriticalLink(link)) css += \" gantt_critical_link\";\n }\n\n div.className = css;\n\n if (view.$config.link_attribute) {\n div.setAttribute(view.$config.link_attribute, link.id);\n div.setAttribute(\"link_id\", link.id);\n }\n\n for (var i = 0; i < lines.length; i++) {\n if (i == lines.length - 1) {\n lines[i].size -= config.link_arrow_size;\n }\n\n var el = drawer.render_line(lines[i], lines[i + 1], view, link.source);\n\n if (link.color) {\n el.firstChild.style.backgroundColor = link.color;\n }\n\n div.appendChild(el);\n }\n\n var direction = lines[lines.length - 1].direction;\n\n var endpoint = _render_link_arrow(dots[dots.length - 1], direction, view, link.source);\n\n if (link.color) {\n endpoint.style.borderColor = link.color;\n }\n\n div.appendChild(endpoint);\n\n gantt._waiAria.linkAttr(link, div);\n\n return div;\n }\n\n function _render_link_arrow(point, direction, view, targetId) {\n var config = view.$getConfig();\n var div = document.createElement(\"div\");\n var top = point.y;\n var left = point.x;\n var size = config.link_arrow_size;\n var className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\n switch (direction) {\n case drawer.dirs.right:\n top -= size / 2;\n left -= size;\n break;\n\n case drawer.dirs.left:\n top -= size / 2;\n break;\n\n case drawer.dirs.up:\n left -= size;\n break;\n\n case drawer.dirs.down:\n top += size * 2;\n left -= size;\n break;\n\n default:\n break;\n }\n\n div.style.cssText = [\"top:\" + top + \"px\", \"left:\" + left + 'px'].join(';');\n div.className = className;\n return div;\n }\n\n var drawer = {\n current_pos: null,\n dirs: {\n \"left\": 'left',\n \"right\": 'right',\n \"up\": 'up',\n \"down\": 'down'\n },\n path: [],\n clear: function clear() {\n this.current_pos = null;\n this.path = [];\n },\n point: function point(pos) {\n this.current_pos = gantt.copy(pos);\n },\n get_lines: function get_lines(dots) {\n this.clear();\n this.point(dots[0]);\n\n for (var i = 1; i < dots.length; i++) {\n this.line_to(dots[i]);\n }\n\n return this.get_path();\n },\n line_to: function line_to(pos) {\n var next = gantt.copy(pos);\n var prev = this.current_pos;\n\n var line = this._get_line(prev, next);\n\n this.path.push(line);\n this.current_pos = next;\n },\n get_path: function get_path() {\n return this.path;\n },\n get_wrapper_sizes: function get_wrapper_sizes(v, view, itemId) {\n var config = view.$getConfig();\n var res,\n wrapper_size = config.link_wrapper_width,\n y = v.y - wrapper_size / 2;\n\n switch (v.direction) {\n case this.dirs.left:\n res = {\n top: y,\n height: wrapper_size,\n lineHeight: wrapper_size,\n left: v.x - v.size - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.right:\n res = {\n top: y,\n lineHeight: wrapper_size,\n height: wrapper_size,\n left: v.x - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.up:\n res = {\n top: y - v.size,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n case this.dirs.down:\n res = {\n top: y\n /*- wrapper_size/2*/\n ,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n get_line_sizes: function get_line_sizes(v, view) {\n var config = view.$getConfig();\n var res,\n line_size = config.link_line_width,\n wrapper_size = config.link_wrapper_width,\n size = v.size + line_size;\n\n switch (v.direction) {\n case this.dirs.left:\n case this.dirs.right:\n res = {\n height: line_size,\n width: size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n case this.dirs.up:\n case this.dirs.down:\n res = {\n height: size,\n width: line_size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n render_line: function render_line(v, end, view, itemId) {\n var pos = this.get_wrapper_sizes(v, view, itemId);\n var wrapper = document.createElement(\"div\");\n wrapper.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"height:\" + pos.height + \"px\", \"width:\" + pos.width + \"px\"].join(';');\n wrapper.className = \"gantt_line_wrapper\";\n var innerPos = this.get_line_sizes(v, view);\n var inner = document.createElement(\"div\");\n inner.style.cssText = [\"height:\" + innerPos.height + \"px\", \"width:\" + innerPos.width + \"px\", \"margin-top:\" + innerPos.marginTop + \"px\", \"margin-left:\" + innerPos.marginLeft + \"px\"].join(\";\");\n inner.className = \"gantt_link_line_\" + v.direction;\n wrapper.appendChild(inner);\n return wrapper;\n },\n _get_line: function _get_line(from, to) {\n var direction = this.get_direction(from, to);\n var vect = {\n x: from.x,\n y: from.y,\n direction: this.get_direction(from, to)\n };\n\n if (direction == this.dirs.left || direction == this.dirs.right) {\n vect.size = Math.abs(from.x - to.x);\n } else {\n vect.size = Math.abs(from.y - to.y);\n }\n\n return vect;\n },\n get_direction: function get_direction(from, to) {\n var direction = 0;\n\n if (to.x < from.x) {\n direction = this.dirs.left;\n } else if (to.x > from.x) {\n direction = this.dirs.right;\n } else if (to.y > from.y) {\n direction = this.dirs.down;\n } else {\n direction = this.dirs.up;\n }\n\n return direction;\n }\n };\n var path_builder = {\n path: [],\n clear: function clear() {\n this.path = [];\n },\n current: function current() {\n return this.path[this.path.length - 1];\n },\n point: function point(next) {\n if (!next) return this.current();\n this.path.push(gantt.copy(next));\n return next;\n },\n point_to: function point_to(direction, diff, point) {\n if (!point) point = gantt.copy(this.point());else point = {\n x: point.x,\n y: point.y\n };\n var dir = drawer.dirs;\n\n switch (direction) {\n case dir.left:\n point.x -= diff;\n break;\n\n case dir.right:\n point.x += diff;\n break;\n\n case dir.up:\n point.y -= diff;\n break;\n\n case dir.down:\n point.y += diff;\n break;\n\n default:\n break;\n }\n\n return this.point(point);\n },\n get_points: function get_points(link, view, source, target) {\n var pt = this.get_endpoint(link, view, source, target);\n var xy = gantt.config;\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n var dir = drawer.dirs;\n var rowHeight = view.getItemHeight(link.source);\n this.clear();\n this.point({\n x: pt.x,\n y: pt.y\n });\n var shiftX = 2 * xy.link_arrow_size; //just random size for first line\n\n var lineType = this.get_line_type(link, view.$getConfig());\n var forward = pt.e_x > pt.x;\n\n if (lineType.from_start && lineType.to_start) {\n this.point_to(dir.left, shiftX);\n\n if (forward) {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n }\n\n this.point_to(dir.right, shiftX);\n } else if (!lineType.from_start && lineType.to_start) {\n forward = pt.e_x > pt.x + 2 * shiftX;\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n dx -= shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx -= 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.right, shiftX);\n }\n } else if (!lineType.from_start && !lineType.to_start) {\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n } else {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n }\n\n this.point_to(dir.left, shiftX);\n } else if (lineType.from_start && !lineType.to_start) {\n forward = pt.e_x > pt.x - 2 * shiftX;\n this.point_to(dir.left, shiftX);\n\n if (!forward) {\n dx += shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx += 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.left, shiftX);\n }\n }\n\n return this.path;\n },\n get_line_type: function get_line_type(link, config) {\n var types = config.links;\n var from_start = false,\n to_start = false;\n\n if (link.type == types.start_to_start) {\n from_start = to_start = true;\n } else if (link.type == types.finish_to_finish) {\n from_start = to_start = false;\n } else if (link.type == types.finish_to_start) {\n from_start = false;\n to_start = true;\n } else if (link.type == types.start_to_finish) {\n from_start = true;\n to_start = false;\n } else {\n gantt.assert(false, \"Invalid link type\");\n }\n\n if (config.rtl) {\n from_start = !from_start;\n to_start = !to_start;\n }\n\n return {\n from_start: from_start,\n to_start: to_start\n };\n },\n get_endpoint: function get_endpoint(link, view, source, target) {\n var config = view.$getConfig();\n var lineType = this.get_line_type(link, config);\n var from_start = lineType.from_start,\n to_start = lineType.to_start;\n var from = getMilestonePosition(source, view, config),\n to = getMilestonePosition(target, view, config);\n return {\n x: from_start ? from.left : from.left + from.width,\n e_x: to_start ? to.left : to.left + to.width,\n y: from.top + from.rowHeight / 2 - 1,\n e_y: to.top + to.rowHeight / 2 - 1\n };\n }\n };\n\n function getMilestonePosition(task, view, config) {\n var pos = view.getItemPosition(task);\n\n if (gantt.getTaskType(task.type) == config.types.milestone) {\n var milestoneHeight = view.getBarHeight(task.id, true);\n var milestoneWidth = Math.sqrt(2 * milestoneHeight * milestoneHeight);\n pos.left -= milestoneWidth / 2;\n pos.width = milestoneWidth;\n }\n\n return pos;\n }\n\n return {\n render: _render_link_element,\n update: null,\n //getRectangle: getLinkRectangle\n isInViewPort: isInViewPort\n };\n}\n\nmodule.exports = createLinkRender;","var getRowRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nfunction createTaskBgRender(gantt) {\n var renderedCells = {};\n var visibleCells = {};\n\n function isRendered(item, columnIndex) {\n if (renderedCells[item.id][columnIndex] && renderedCells[item.id][columnIndex].parentNode) {\n return true;\n } else {\n return false;\n }\n }\n\n function detachRenderedCell(itemId, columnIndex) {\n if (renderedCells[itemId] && renderedCells[itemId][columnIndex] && renderedCells[itemId][columnIndex].parentNode) {\n renderedCells[itemId][columnIndex].parentNode.removeChild(renderedCells[itemId][columnIndex]);\n }\n }\n\n function getCellTemplate(view) {\n var templates = view.$getTemplates();\n var cssTemplate;\n\n if (typeof templates.task_cell_class !== \"undefined\") {\n cssTemplate = templates.task_cell_class; // eslint-disable-next-line no-console\n\n var log = console.warn || console.log;\n log('gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.');\n } else {\n cssTemplate = templates.timeline_cell_class;\n }\n\n return cssTemplate;\n }\n\n function renderCells(item, node, view, config, viewPort) {\n var cfg = view.getScale();\n var count = cfg.count;\n var cssTemplate = getCellTemplate(view);\n\n if (config.show_task_cells) {\n if (!renderedCells[item.id]) {\n renderedCells[item.id] = {};\n }\n\n if (!visibleCells[item.id]) {\n visibleCells[item.id] = {};\n }\n\n var range = getVisibleCellsRange(cfg, viewPort);\n\n for (var i in visibleCells[item.id]) {\n var index = visibleCells[item.id][i];\n\n if (Number(index) < range.start || Number(index) > range.end) {\n detachRenderedCell(item.id, index);\n }\n }\n\n visibleCells[item.id] = {}; // TODO: do not iterate all cell, only ones in the viewport and once that are already rendered\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cssTemplate, config);\n\n if (!cell && isRendered(item, columnIndex)) {\n detachRenderedCell(item.id, columnIndex);\n } else if (cell && !cell.parentNode) {\n node.appendChild(cell);\n }\n }\n }\n }\n\n function renderOneCell(scale, columnIndex, item, viewPort, count, cssTemplate, config) {\n var width = scale.width[columnIndex],\n cssclass = \"\";\n\n if (isColumnVisible(columnIndex, scale, viewPort, gantt)) {\n //do not render skipped columns\n var cssTemplateContent = cssTemplate(item, scale.trace_x[columnIndex]);\n\n if (config.static_background) {\n // if cell render in static background is not allowed, or if it's a blank cell\n if (!(config.static_background_cells && cssTemplateContent)) {\n return null;\n }\n }\n\n if (renderedCells[item.id][columnIndex]) {\n visibleCells[item.id][columnIndex] = columnIndex;\n return renderedCells[item.id][columnIndex];\n }\n\n var cell = document.createElement(\"div\");\n cell.style.width = width + \"px\";\n cssclass = \"gantt_task_cell\" + (columnIndex == count - 1 ? \" gantt_last_cell\" : \"\");\n\n if (cssTemplateContent) {\n cssclass += \" \" + cssTemplateContent;\n }\n\n cell.className = cssclass;\n cell.style.position = \"absolute\";\n cell.style.left = scale.left[columnIndex] + \"px\";\n renderedCells[item.id][columnIndex] = cell;\n visibleCells[item.id][columnIndex] = columnIndex;\n return cell;\n }\n\n return null;\n }\n\n function _render_bg_line(item, view, config, viewPort) {\n var templates = view.$getTemplates();\n var cfg = view.getScale();\n var count = cfg.count;\n\n if (config.static_background && !config.static_background_cells) {\n return null;\n }\n\n var row = document.createElement(\"div\");\n var cellTemplate = getCellTemplate(view);\n var range;\n\n if (!viewPort || !config.smart_rendering || isLegacyRender(gantt)) {\n range = {\n start: 0,\n end: count - 1\n };\n } else {\n range = getVisibleCellsRange(cfg, viewPort.x);\n }\n\n if (config.show_task_cells) {\n renderedCells[item.id] = {};\n visibleCells[item.id] = {};\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cellTemplate, config);\n\n if (cell) {\n row.appendChild(cell);\n }\n }\n }\n\n var odd = gantt.getGlobalTaskIndex(item.id) % 2 !== 0;\n var cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n var css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n var store = view.$config.rowStore;\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n row.className = css;\n\n if (config.smart_rendering) {\n row.style.position = \"absolute\";\n row.style.top = view.getItemTop(item.id) + \"px\";\n row.style.width = \"100%\";\n } else {\n row.style.position = \"relative\";\n }\n\n row.style.height = view.getItemHeight(item.id) + \"px\";\n\n if (view.$config.item_attribute) {\n row.setAttribute(view.$config.item_attribute, item.id);\n row.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n return row;\n }\n\n return {\n render: _render_bg_line,\n update: renderCells,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskBgRender;","var createBaseBarRender = require(\"./task_bar_render\");\n\nvar isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n\n function renderSplitTask(task, timeline) {\n if (task.$rollup && task.$rollup.length) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n task.$rollup.forEach(function (itemId) {\n var child = gantt.getTask(itemId);\n var element = defaultRender(child, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_rollup_child\");\n el.appendChild(element);\n });\n return el;\n }\n\n return false;\n }\n\n return {\n render: renderSplitTask,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isBarInViewport = require(\"./is_bar_in_viewport\");\n\nmodule.exports = function isSplitTaskInViewport(item, viewport, view, config, gantt) {\n if (!gantt.isSplitTask(item)) {\n return false;\n }\n\n var range = gantt.getSubtaskDates(item.id);\n return isBarInViewport({\n id: item.id,\n start_date: range.start_date,\n end_date: range.end_date,\n parent: item.parent\n }, viewport, view, gantt);\n};","var createBaseBarRender = require(\"./task_bar_render\");\n\nvar isInViewPort = require(\"./viewport/is_split_task_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n\n function renderSplitTask(task, timeline) {\n if (gantt.isSplitTask(task) && (gantt.config.open_split_tasks && !task.$open || !gantt.config.open_split_tasks)) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n\n if (gantt.hasChild(task.id)) {\n gantt.eachTask(function (child) {\n var isProject = gantt.isSummaryTask(child);\n\n if (isProject) {\n gantt.resetProjectDates(child);\n }\n\n if (child.hide_bar) {\n return;\n }\n\n var element = defaultRender(child, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_split_child\");\n\n if (isProject) {\n element.classList.add(\"gantt_split_subproject\");\n }\n\n el.appendChild(element);\n }, task.id);\n }\n\n return el;\n }\n\n return false;\n }\n\n return {\n render: renderSplitTask,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar createBaseBarRender = require(\"./task_bar_render\");\n\nmodule.exports = function createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n return {\n render: defaultRender,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n};","module.exports = function (gantt) {\n return function processTaskDateProperties(item, mapTo, mode) {\n if (mode == \"keepDates\") {\n keepDatesOnEdit(item, mapTo);\n } else if (mode == \"keepDuration\") {\n keepDurationOnEdit(item, mapTo);\n } else {\n defaultActionOnEdit(item, mapTo);\n }\n }; // resize task\n // resize task when start/end/duration changes\n\n function keepDatesOnEdit(item, mapTo) {\n if (mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\" || mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } // move task(before 6.2)\n // move task when start/end dates changes\n // resize task when duration changes\n\n\n function keepDurationOnEdit(item, mapTo) {\n if (mapTo == \"end_date\") {\n item.start_date = gantt.calculateEndDate({\n start_date: item.end_date,\n duration: -item.duration,\n task: item\n });\n } else if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n }\n } // default behavior\n // move task when start date changes\n // resize task when end date/duration changes\n\n\n function defaultActionOnEdit(item, mapTo) {\n if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n }\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.durationFormatter();\n }\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div><input type='text' name='\" + column.name + \"'></div>\";\n placeholder.innerHTML = html;\n },\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = getFormatter(column.editor).format(value);\n },\n get_value: function get_value(id, column, node) {\n return getFormatter(column.editor).parse(this.get_input(node).value || \"\");\n }\n }, true);\n return TextEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function PredecessorEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(PredecessorEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.linkFormatter();\n }\n\n function parseInputString(value, config) {\n var predecessors = (value || \"\").split(config.delimiter || \",\");\n\n for (var i = 0; i < predecessors.length; i++) {\n var val = predecessors[i].trim();\n\n if (val) {\n predecessors[i] = val;\n } else {\n predecessors.splice(i, 1);\n i--;\n }\n }\n\n predecessors.sort();\n return predecessors;\n }\n\n function formatPredecessors(task, config, gantt) {\n var links = task.$target;\n var labels = [];\n\n for (var i = 0; i < links.length; i++) {\n var link = gantt.getLink(links[i]);\n labels.push(getFormatter(config).format(link));\n }\n\n return labels.join((config.delimiter || \",\") + \" \");\n }\n\n function getSelectedLinks(taskId, predecessorCodes, config) {\n var links = [];\n predecessorCodes.forEach(function (code) {\n var link = getFormatter(config).parse(code);\n\n if (link) {\n link.target = taskId; // GS-1290 A way to preserve the link. Otherwise validation will return false\n // because the existing link ID is not passed there\n\n link.id = \"predecessor_generated\";\n\n if (gantt.isLinkAllowed(link)) {\n link.id = undefined;\n links.push(link);\n }\n }\n });\n return links;\n }\n\n function formatLinkKey(link) {\n return link.source + \"_\" + link.target + \"_\" + link.type + \"_\" + (link.lag || 0);\n }\n\n function getLinksDiff(task, predecessorCodes, config) {\n var selectedLinks = getSelectedLinks(task.id, predecessorCodes, config);\n var existingLinksSearch = {};\n task.$target.forEach(function (linkId) {\n var link = gantt.getLink(linkId);\n existingLinksSearch[formatLinkKey(link)] = link.id;\n });\n var linksToAdd = [];\n selectedLinks.forEach(function (link) {\n var linkKey = formatLinkKey(link);\n\n if (!existingLinksSearch[linkKey]) {\n linksToAdd.push(link);\n } else {\n delete existingLinksSearch[linkKey];\n }\n });\n var linksToDelete = [];\n\n for (var i in existingLinksSearch) {\n linksToDelete.push(existingLinksSearch[i]);\n }\n\n return {\n add: linksToAdd,\n remove: linksToDelete\n };\n }\n\n utils.mixin(PredecessorEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div><input type='text' name='\" + column.name + \"'></div>\";\n placeholder.innerHTML = html;\n },\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = formatPredecessors(value, column.editor, gantt);\n },\n get_value: function get_value(id, column, node) {\n return parseInputString(this.get_input(node).value || \"\", column.editor);\n },\n save: function save(id, column, node) {\n var task = gantt.getTask(id);\n var linksDiff = getLinksDiff(task, this.get_value(id, column, node), column.editor);\n\n if (linksDiff.add.length || linksDiff.remove.length) {\n gantt.batchUpdate(function () {\n linksDiff.add.forEach(function (link) {\n gantt.addLink(link);\n });\n linksDiff.remove.forEach(function (linkId) {\n gantt.deleteLink(linkId);\n });\n if (gantt.autoSchedule) gantt.autoSchedule();\n });\n }\n },\n is_changed: function is_changed(value, id, column, node) {\n var inputPredecessors = this.get_value(id, column, node);\n var taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\n return inputPredecessors.join() !== taskPredecessors.join();\n }\n }, true);\n return PredecessorEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n var html5DateFormat = \"%Y-%m-%d\";\n var dateToStr = null;\n var strToDate = null;\n\n function init() {\n if (!dateToStr) {\n dateToStr = gantt.date.date_to_str(html5DateFormat);\n }\n\n if (!strToDate) {\n strToDate = gantt.date.str_to_date(html5DateFormat);\n }\n }\n\n function DateEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(DateEditor, BaseEditor);\n\n utils.mixin(DateEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n init();\n var minValue = null;\n var maxValue = null;\n\n if (typeof config.min === \"function\") {\n minValue = config.min(id, column);\n } else {\n minValue = config.min;\n }\n\n if (typeof config.max === \"function\") {\n maxValue = config.max(id, column);\n } else {\n maxValue = config.max;\n }\n\n var minAttr = minValue ? \" min='\" + dateToStr(minValue) + \"' \" : \"\";\n var maxAttr = maxValue ? \" max='\" + dateToStr(maxValue) + \"' \" : \"\";\n var html = \"<div style='width:140px'><input type='date' \" + minAttr + maxAttr + \" name='\" + column.name + \"'></div>\";\n placeholder.innerHTML = html;\n },\n set_value: function set_value(value, id, column, node) {\n if (value && value.getFullYear) {\n this.get_input(node).value = dateToStr(value);\n } else {\n this.get_input(node).value = value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n if (!value || isNaN(value.getTime())) return false;\n return true;\n },\n get_value: function get_value(id, column, node) {\n var parsed;\n\n try {\n parsed = strToDate(this.get_input(node).value || \"\");\n } catch (e) {\n parsed = null; // return null will cancel changes\n }\n\n return parsed;\n }\n }, true);\n return DateEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function SelectEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(SelectEditor, BaseEditor);\n\n utils.mixin(SelectEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div><select name='\" + column.name + \"'>\";\n var optionsHtml = [],\n options = config.options || [];\n\n for (var i = 0; i < options.length; i++) {\n optionsHtml.push(\"<option value='\" + config.options[i].key + \"'>\" + options[i].label + \"</option>\");\n }\n\n html += optionsHtml.join(\"\") + \"</select></div>\";\n placeholder.innerHTML = html;\n },\n get_input: function get_input(node) {\n return node.querySelector(\"select\");\n }\n }, true);\n return SelectEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function NumberEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(NumberEditor, BaseEditor);\n\n utils.mixin(NumberEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var min = config.min || 0,\n max = config.max || 100;\n var html = \"<div><input type='number' min='\" + min + \"' max='\" + max + \"' name='\" + column.name + \"'></div>\";\n placeholder.innerHTML = html;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_valid: function is_valid(value, id, column, node) {\n return !isNaN(parseInt(value, 10));\n }\n }, true);\n return NumberEditor;\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"<div><input type='text' name='\" + column.name + \"'></div>\";\n placeholder.innerHTML = html;\n }\n }, true);\n return TextEditor;\n};","module.exports = {\n init: function init(controller, grid) {\n var self = controller;\n var gantt = grid.$gantt;\n var onBlurDelay = null;\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onBeforeFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n clearTimeout(onBlurDelay);\n\n if (activeCell) {\n var columnName = activeCell.columnName;\n var id = activeCell.id;\n var editorState = self.getState();\n\n if (self.isVisible()) {\n if (editorState.id == id && editorState.columnName === columnName) {\n return false;\n }\n }\n }\n\n return true;\n });\n keyNav.attachEvent(\"onFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n var state = controller.getState();\n clearTimeout(onBlurDelay);\n\n if (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n if (self.isVisible()) {\n self.save();\n }\n }\n\n return true;\n });\n controller.attachEvent(\"onHide\", function () {\n clearTimeout(onBlurDelay);\n });\n keyNav.attachEvent(\"onBlur\", function () {\n onBlurDelay = setTimeout(function () {\n self.save();\n });\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n // block lightbox on double click inside editor\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n self.save();\n return true;\n });\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var activeCell = controller.locateCell(e.target);\n var hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n var state = controller.getState();\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.ENTER:\n if (controller.isVisible()) {\n controller.save();\n e.preventDefault();\n preventKeyNav = true;\n } else if (hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.ESC:\n if (controller.isVisible()) {\n controller.hide();\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n break;\n\n case keyboard.LEFT:\n case keyboard.RIGHT:\n if (hasEditor && controller.isVisible() || state.editorType === \"date\") {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.DELETE:\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n } else if (hasEditor && controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.TAB:\n if (controller.isVisible()) {\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n var newState = controller.getState();\n\n if (newState.id) {\n keyNav.focus({\n type: \"taskCell\",\n id: newState.id,\n column: newState.columnName\n });\n }\n\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n default:\n if (controller.isVisible()) preventKeyNav = true;else {\n // start editing on character key\n if (keyCode >= 48 && keyCode <= 57 || // [0-9]\n keyCode > 95 && keyCode < 112 || // numpad\n keyCode >= 64 && keyCode <= 91 || // [a-z]\n keyCode > 185 && keyCode < 193 || //;=-,etc\n keyCode > 218 && keyCode < 223) {\n var modifiers = command.modifiers;\n var anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\n\n if (modifiers.alt) {// don't start editing on alt+key\n } else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")) {// don't start editing if command already have a keyboard shortcut\n } else if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n }\n }\n }\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n },\n onShow: function onShow(controller, placeholder, grid) {},\n onHide: function onHide(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n gantt.focus();\n },\n destroy: function destroy() {}\n};","module.exports = {\n init: function init(controller, grid) {\n var gantt = grid.$gantt;\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n if (controller.isVisible() && controller.isChanged()) {\n controller.save();\n } else {\n controller.hide();\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n //GS-933 probably, we don't need to hide the inline editor because the lightbox cannot be opened if you double-click on an inline editor\n //remove this code later if people don't complain\n //controller.hide();\n return false;\n }\n\n return true;\n });\n },\n onShow: function onShow(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n\n if (gantt.ext && gantt.ext.keyboardNavigation) {\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n }\n\n placeholder.onkeydown = function (e) {\n e = e || window.event;\n var keyboard = gantt.constants.KEY_CODES;\n\n if (e.defaultPrevented || e.shiftKey && e.keyCode != keyboard.TAB) {\n return;\n }\n\n var shouldPrevent = true;\n\n switch (e.keyCode) {\n case gantt.keys.edit_save:\n controller.save();\n break;\n\n case gantt.keys.edit_cancel:\n controller.hide();\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n if (controller.isVisible()) {\n controller.hide();\n shouldPrevent = false;\n }\n\n break;\n\n case keyboard.TAB:\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n break;\n\n default:\n shouldPrevent = false;\n break;\n }\n\n if (shouldPrevent) {\n e.preventDefault();\n }\n };\n },\n onHide: function onHide() {},\n destroy: function destroy() {}\n};","var defaultMapping = require(\"./keyboard_mappings/default\");\n\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function (gantt) {\n var mapping = null;\n return {\n setMapping: function setMapping(map) {\n mapping = map;\n },\n getMapping: function getMapping() {\n if (mapping) {\n return mapping;\n } else if (gantt.config.keyboard_navigation_cells && gantt.ext.keyboardNavigation) {\n return keyNavMappings;\n } else {\n return defaultMapping;\n }\n }\n };\n};","var getKeyboardMapping = require(\"./keyboard_mappings\");\n\nvar textEditorFactory = require(\"./editors/text\"),\n numberEditorFactory = require(\"./editors/number\"),\n selectEditorFactory = require(\"./editors/select\"),\n dateEditorFactory = require(\"./editors/date\"),\n predecessorEditorFactory = require(\"./editors/predecessor\"),\n durationEditorFactory = require(\"./editors/duration\");\n\nvar utils = require(\"../../../../utils/utils\");\n\nvar domHelpers = require(\"../../utils/dom_helpers\");\n\nvar eventable = require(\"../../../../utils/eventable\");\n\nvar linkedPropertiesProcessor = require(\"./linked_properties\");\n\nfunction initConfigs(gantt) {\n gantt.config.editor_types = {\n text: new (textEditorFactory(gantt))(),\n number: new (numberEditorFactory(gantt))(),\n select: new (selectEditorFactory(gantt))(),\n date: new (dateEditorFactory(gantt))(),\n predecessor: new (predecessorEditorFactory(gantt))(),\n duration: new (durationEditorFactory(gantt))()\n };\n}\n\nfunction create(gantt) {\n var keyboardMapping = getKeyboardMapping(gantt);\n var eventBus = {};\n eventable(eventBus);\n\n function createGridEditors(grid) {\n function _getGridCellFromNode(node) {\n if (!domHelpers.isChildOf(node, grid.$grid)) {\n return null;\n }\n\n var row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n var cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\n if (row && cell) {\n var columnName = cell.getAttribute(\"data-column-name\");\n var id = row.getAttribute(grid.$config.item_attribute);\n return {\n id: id,\n columnName: columnName\n };\n }\n\n return null;\n }\n\n function _getEditorPosition(itemId, columnName) {\n var config = grid.$getConfig();\n var top = grid.getItemTop(itemId);\n var height = grid.getItemHeight(itemId);\n var cols = grid.getGridColumns();\n var left = 0,\n right = 0,\n width = 0;\n\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].name == columnName) {\n width = cols[i].width;\n break;\n }\n\n if (config.rtl) {\n right += cols[i].width;\n } else {\n left += cols[i].width;\n }\n }\n\n if (config.rtl) {\n return {\n top: top,\n right: right,\n height: height,\n width: width\n };\n } else {\n return {\n top: top,\n left: left,\n height: height,\n width: width\n };\n }\n }\n\n function findVisibleIndex(grid, columnName) {\n var columns = grid.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n function _createPlaceholder(itemId, columnName) {\n var config = grid.$getConfig();\n\n var pos = _getEditorPosition(itemId, columnName);\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_grid_editor_placeholder\";\n el.setAttribute(grid.$config.item_attribute, itemId);\n el.setAttribute(grid.$config.bind + \"_id\", itemId); // for backward compatibility\n\n el.setAttribute(\"data-column-name\", columnName);\n var visibleIndex = findVisibleIndex(grid, columnName);\n el.setAttribute(\"data-column-index\", visibleIndex);\n\n if (config.rtl) {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"right:\" + pos.right + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n } else {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n }\n\n return el;\n }\n\n var updateTaskDateProperties = linkedPropertiesProcessor(gantt);\n var handlers = [];\n var ganttHandlers = [];\n var store = null;\n var controller = {\n _itemId: null,\n _columnName: null,\n _editor: null,\n _editorType: null,\n _placeholder: null,\n locateCell: _getGridCellFromNode,\n getEditorConfig: function getEditorConfig(columnName) {\n var column = grid.getColumn(columnName);\n return column.editor;\n },\n init: function init() {\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.init) {\n mapping.init(this, grid);\n }\n\n store = grid.$gantt.getDatastore(grid.$config.bind);\n var self = this;\n handlers.push(store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (self._itemId == oldId) {\n self._itemId = newId;\n }\n }));\n handlers.push(store.attachEvent(\"onStoreUpdated\", function () {\n if (grid.$gantt.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (self.isVisible() && !store.isVisible(self._itemId)) {\n self.hide();\n }\n }));\n ganttHandlers.push(gantt.attachEvent(\"onDataRender\", function () {\n if (self._editor && self._placeholder && !domHelpers.isChildOf(self._placeholder, gantt.$root)) {\n grid.$grid_data.appendChild(self._placeholder);\n }\n }));\n\n this.init = function () {};\n },\n getState: function getState() {\n return {\n editor: this._editor,\n editorType: this._editorType,\n placeholder: this._placeholder,\n id: this._itemId,\n columnName: this._columnName\n };\n },\n startEdit: function startEdit(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n\n if (gantt.isReadonly(store.getItem(itemId))) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n if (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n this.show(editorState.id, editorState.columnName);\n this.setValue();\n this.callEvent(\"onEditStart\", [editorState]);\n },\n isVisible: function isVisible() {\n return !!(this._editor && domHelpers.isChildOf(this._placeholder, gantt.$root));\n },\n show: function show(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n var column = grid.getColumn(editorState.columnName);\n var editorConfig = this.getEditorConfig(column.name);\n if (!editorConfig) return;\n var editor = grid.$getConfig().editor_types[editorConfig.type];\n\n var placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\n grid.$grid_data.appendChild(placeholder);\n editor.show(editorState.id, column, editorConfig, placeholder);\n this._editor = editor;\n this._placeholder = placeholder;\n this._itemId = editorState.id;\n this._columnName = editorState.columnName;\n this._editorType = editorConfig.type;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onShow) {\n mapping.onShow(this, placeholder, grid);\n }\n },\n setValue: function setValue() {\n var state = this.getState();\n var itemId = state.id,\n columnName = state.columnName;\n var column = grid.getColumn(columnName);\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n if (!editorConfig) return;\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(itemId);\n }\n\n this._editor.set_value(value, itemId, column, this._placeholder);\n\n this.focus();\n },\n focus: function focus() {\n this._editor.focus(this._placeholder);\n },\n getValue: function getValue() {\n var column = grid.getColumn(this._columnName);\n return this._editor.get_value(this._itemId, column, this._placeholder);\n },\n _getItemValue: function _getItemValue() {\n var editorConfig = this.getEditorConfig(this._columnName);\n if (!editorConfig) return;\n var item = gantt.getTask(this._itemId);\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(this._itemId);\n }\n\n return value;\n },\n isChanged: function isChanged() {\n var column = grid.getColumn(this._columnName);\n\n var value = this._getItemValue();\n\n return this._editor.is_changed(value, this._itemId, column, this._placeholder);\n },\n hide: function hide() {\n if (!this._itemId) return;\n var itemId = this._itemId,\n columnName = this._columnName;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onHide) {\n mapping.onHide(this, this._placeholder, grid);\n }\n\n this._itemId = null;\n this._columnName = null;\n this._editorType = null;\n if (!this._placeholder) return;\n\n if (this._editor && this._editor.hide) {\n this._editor.hide(this._placeholder);\n }\n\n this._editor = null;\n\n if (this._placeholder.parentNode) {\n this._placeholder.parentNode.removeChild(this._placeholder);\n }\n\n this._placeholder = null;\n this.callEvent(\"onEditEnd\", [{\n id: itemId,\n columnName: columnName\n }]);\n },\n save: function save() {\n if (!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n this.hide();\n return;\n }\n\n var itemId = this._itemId,\n columnName = this._columnName;\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n var editorState = {\n id: itemId,\n columnName: columnName,\n newValue: this.getValue(),\n oldValue: this._getItemValue()\n };\n\n if (this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n if (!this._editor.is_valid || this._editor.is_valid(editorState.newValue, editorState.id, editorState.columnName, this._placeholder)) {\n var mapTo = editorConfig.map_to;\n var value = editorState.newValue;\n\n if (mapTo != \"auto\") {\n item[mapTo] = value;\n updateTaskDateProperties(item, mapTo, gantt.config.inline_editors_date_processing);\n store.updateItem(itemId);\n } else {\n this._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n }\n\n this.callEvent(\"onSave\", [editorState]);\n }\n }\n\n this.hide();\n },\n _findEditableCell: function findEditableCell(start, direction) {\n var nextIndex = start;\n var columns = grid.getGridColumns();\n var nextColumn = columns[nextIndex];\n var columnName = nextColumn ? nextColumn.name : null;\n\n if (columnName) {\n while (columnName && !this.getEditorConfig(columnName)) {\n columnName = this._findEditableCell(start + direction, direction);\n }\n\n return columnName;\n }\n\n return null;\n },\n getNextCell: function moveCell(dir) {\n // GS-1257. true means to exclude hidden columns\n return this._findEditableCell(grid.getColumnIndex(this._columnName, true) + dir, dir);\n },\n getFirstCell: function getFirstCell() {\n return this._findEditableCell(0, 1);\n },\n getLastCell: function getLastCell() {\n return this._findEditableCell(grid.getGridColumns().length - 1, -1);\n },\n editNextCell: function nextCell(canChangeRow) {\n var cell = this.getNextCell(1);\n\n if (cell) {\n var nextColumn = this.getNextCell(1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(1)) {\n var task = this.moveRow(1);\n cell = this.getFirstCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n editPrevCell: function prevCell(canChangeRow) {\n var cell = this.getNextCell(-1);\n\n if (cell) {\n var nextColumn = this.getNextCell(-1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(-1)) {\n var task = this.moveRow(-1);\n cell = this.getLastCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n moveRow: function moveRow(dir) {\n var moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\n moveTask = gantt.bind(moveTask, gantt);\n var nextItem = moveTask(this._itemId); // skip readonly rows\n\n while (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\n nextItem = moveTask(nextItem);\n }\n\n return nextItem;\n },\n editNextRow: function nextRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var next = null;\n\n if (skipReadonly) {\n next = this.moveRow(1);\n } else {\n next = gantt.getNext(id);\n }\n\n if (gantt.isTaskExists(next)) {\n this.startEdit(next, this._columnName);\n }\n },\n editPrevRow: function prevRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var prev = null;\n\n if (skipReadonly) {\n prev = this.moveRow(-1);\n } else {\n prev = gantt.getPrev(id);\n }\n\n if (gantt.isTaskExists(prev)) {\n this.startEdit(prev, this._columnName);\n }\n },\n destructor: function destructor() {\n handlers.forEach(function (handlerId) {\n store.detachEvent(handlerId);\n });\n ganttHandlers.forEach(function (handlerId) {\n gantt.detachEvent(handlerId);\n });\n handlers = [];\n ganttHandlers = [];\n store = null;\n this.hide();\n this.detachAllEvents();\n }\n };\n utils.mixin(controller, keyboardMapping);\n utils.mixin(controller, eventBus);\n return controller;\n }\n\n var inlineEditController = {\n init: initConfigs,\n createEditors: createGridEditors\n };\n utils.mixin(inlineEditController, keyboardMapping);\n utils.mixin(inlineEditController, eventBus);\n return inlineEditController;\n}\n\nmodule.exports = create;","var createStaticBgHelper = function createStaticBgHelper() {\n return {\n render: function render() {},\n destroy: function destroy() {}\n };\n};\n\nmodule.exports = {\n create: function create() {\n return createStaticBgHelper();\n }\n};","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n env = require(\"../../../utils/env\"),\n Cell = require(\"./cell\");\n\nvar ScrollbarCell = function (_super) {\n \"use strict\";\n\n var SCROLL_MODIFIER_KEYS = [\"altKey\", \"shiftKey\", \"metaKey\"]; // it's no way to disable ctrl+wheel\n\n __extends(ScrollbarCell, _super);\n\n function ScrollbarCell(parent, config, factory, gantt) {\n var _this = _super.apply(this, arguments) || this;\n\n this.$config = utils.mixin(config, {\n scroll: \"x\"\n });\n _this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\n _this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\n _this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\n _this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\n _this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\n this.$config.hidden = true;\n var size = gantt.config.scroll_size;\n\n if (gantt.env.isIE) {\n // full element height/width must be bigger than just a browser scrollbar,\n // otherwise the scrollbar element won't be scrolled on click\n size += 1;\n }\n\n if (this._isHorizontal()) {\n _this.$config.height = size;\n _this.$parent.$config.height = size;\n } else {\n _this.$config.width = size;\n _this.$parent.$config.width = size;\n }\n\n this.$config.scrollPosition = 0;\n _this.$name = \"scroller\";\n return _this;\n }\n\n ScrollbarCell.prototype.init = function (container) {\n container.innerHTML = this.$toHTML();\n this.$view = container.firstChild;\n\n if (!this.$view) {\n this.init();\n }\n\n if (this._isVertical()) {\n this._initVertical();\n } else {\n this._initHorizontal();\n }\n\n this._initMouseWheel();\n\n this._initLinkedViews();\n };\n\n ScrollbarCell.prototype.$toHTML = function () {\n var className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\n return \"<div class='gantt_layout_cell \" + className + \"'><div style='\" + (this._isHorizontal() ? \"width:2000px\" : \"height:2000px\") + \"'></div></div>\";\n };\n\n ScrollbarCell.prototype._getRootParent = function () {\n var parent = this.$parent;\n\n while (parent && parent.$parent) {\n parent = parent.$parent;\n }\n\n if (parent) {\n return parent;\n }\n };\n\n function eachCell(root, res) {\n res.push(root);\n\n if (root.$cells) {\n for (var i = 0; i < root.$cells.length; i++) {\n eachCell(root.$cells[i], res);\n }\n }\n }\n\n ScrollbarCell.prototype._eachView = function () {\n var res = [];\n eachCell(this._getRootParent(), res);\n return res;\n };\n\n ScrollbarCell.prototype._getLinkedViews = function () {\n var views = this._eachView();\n\n var res = [];\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].$config && (this._isVertical() && views[i].$config.scrollY == this.$id || this._isHorizontal() && views[i].$config.scrollX == this.$id)) {\n res.push(views[i]);\n }\n }\n\n return res;\n };\n\n ScrollbarCell.prototype._initHorizontal = function () {\n this.$scroll_hor = this.$view;\n this.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\n };\n\n ScrollbarCell.prototype._initLinkedViews = function () {\n var views = this._getLinkedViews();\n\n var css = this._isVertical() ? \"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\n\n for (var i = 0; i < views.length; i++) {\n //views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\n domHelpers.addClassName(views[i].$view || views[i].getNode(), css);\n }\n };\n\n ScrollbarCell.prototype._initVertical = function () {\n this.$scroll_ver = this.$view;\n this.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\n };\n\n ScrollbarCell.prototype._updateLinkedViews = function () {};\n\n ScrollbarCell.prototype._initMouseWheel = function () {\n var ff = env.isFF;\n if (ff) this.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler, {\n passive: false\n });else this.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler, {\n passive: false\n });\n };\n\n ScrollbarCell.prototype.scrollHorizontally = function (left) {\n if (this._scrolling) return;\n this._scrolling = true;\n this.$scroll_hor.scrollLeft = left;\n this.$config.codeScrollLeft = left;\n left = this.$scroll_hor.scrollLeft;\n\n var views = this._getLinkedViews();\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].scrollTo) {\n views[i].scrollTo(left, undefined);\n }\n }\n\n var oldSize = this.$config.scrollPosition;\n this.$config.scrollPosition = left;\n this.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\n this._scrolling = false;\n };\n\n ScrollbarCell.prototype.scrollVertically = function (top) {\n if (this._scrolling) return;\n this._scrolling = true;\n this.$scroll_ver.scrollTop = top;\n top = this.$scroll_ver.scrollTop;\n\n var views = this._getLinkedViews();\n\n for (var i = 0; i < views.length; i++) {\n if (views[i].scrollTo) {\n views[i].scrollTo(undefined, top);\n }\n }\n\n var oldSize = this.$config.scrollPosition;\n this.$config.scrollPosition = top;\n this.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\n this._scrolling = false;\n };\n\n ScrollbarCell.prototype._isVertical = function () {\n return this.$config.scroll == \"y\";\n };\n\n ScrollbarCell.prototype._isHorizontal = function () {\n return this.$config.scroll == \"x\";\n };\n\n ScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\n if (this._isVertical() || this._scrolling) {\n return;\n } //in safari we can catch previous onscroll after setting new value from mouse-wheel event\n //set delay to prevent value drifiting\n\n\n if (new Date() - (this._wheel_time || 0) < 100) return true; //if (this.$gantt._touch_scroll_active) return;\n\n var left = this.$scroll_hor.scrollLeft;\n this.scrollHorizontally(left);\n this._oldLeft = this.$scroll_hor.scrollLeft;\n };\n\n ScrollbarCell.prototype._outerScrollHorizontalHandler = function (e) {\n if (this._isVertical()) {\n return;\n }\n };\n\n ScrollbarCell.prototype.show = function () {\n this.$parent.show();\n };\n\n ScrollbarCell.prototype.hide = function () {\n this.$parent.hide();\n };\n\n ScrollbarCell.prototype._getScrollSize = function () {\n var scrollSize = 0;\n var outerSize = 0;\n\n var isHorizontal = this._isHorizontal();\n\n var linked = this._getLinkedViews();\n\n var view;\n var scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\n innerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\n var outerProperty = isHorizontal ? \"x\" : \"y\";\n\n var offset = this._getScrollOffset();\n\n for (var i = 0; i < linked.length; i++) {\n view = linked[i];\n if (!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\n var sizes = view.$content.getSize();\n var cellScrollSize;\n\n if (sizes.hasOwnProperty(scrollProperty)) {\n cellScrollSize = sizes[scrollProperty];\n } else {\n cellScrollSize = sizes[innerSizeProperty];\n }\n\n if (offset) {\n // precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\n if (sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && cellScrollSize > sizes[outerProperty] - offset + 2) {\n scrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\n outerSize = sizes[outerProperty];\n }\n } else {\n var nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\n var scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\n cellScrollSize = cellScrollSize + nonScrollableSize;\n\n if (cellScrollSize > scrollableViewPortSize && cellScrollSize > scrollSize) {\n //|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\n scrollSize = cellScrollSize;\n outerSize = sizes[outerProperty];\n }\n }\n }\n\n return {\n outerScroll: outerSize,\n innerScroll: scrollSize\n };\n };\n\n ScrollbarCell.prototype.scroll = function (position) {\n if (this._isHorizontal()) {\n this.scrollHorizontally(position);\n } else {\n this.scrollVertically(position);\n }\n };\n\n ScrollbarCell.prototype.getScrollState = function () {\n return {\n visible: this.isVisible(),\n direction: this.$config.scroll,\n size: this.$config.outerSize,\n scrollSize: this.$config.scrollSize || 0,\n position: this.$config.scrollPosition || 0\n };\n };\n\n ScrollbarCell.prototype.setSize = function (width, height) {\n _super.prototype.setSize.apply(this, arguments);\n\n var scrollSizes = this._getScrollSize();\n\n var ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\n\n if (scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll) {\n scrollSizes.innerScroll += ownSize - scrollSizes.outerScroll;\n }\n\n this.$config.scrollSize = scrollSizes.innerScroll;\n this.$config.width = width;\n this.$config.height = height;\n\n this._setScrollSize(scrollSizes.innerScroll);\n };\n\n ScrollbarCell.prototype.isVisible = function () {\n return !!(this.$parent && this.$parent.$view.parentNode);\n };\n\n ScrollbarCell.prototype.shouldShow = function () {\n var scrollSizes = this._getScrollSize();\n\n if (!scrollSizes.innerScroll && this.$parent && this.$parent.$view.parentNode) {\n return false;\n } else if (scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)) {\n return true;\n } else {\n return false;\n }\n };\n\n ScrollbarCell.prototype.shouldHide = function () {\n var scrollSizes = this._getScrollSize();\n\n if (!scrollSizes.innerScroll && this.$parent && this.$parent.$view.parentNode) {\n return true;\n } else {\n return false;\n }\n };\n\n ScrollbarCell.prototype.toggleVisibility = function () {\n if (this.shouldHide()) {\n this.hide();\n } else if (this.shouldShow()) {\n this.show();\n }\n };\n\n ScrollbarCell.prototype._getScaleOffset = function (view) {\n var offset = 0;\n\n if (view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")) {\n offset = view.$content.$getConfig().scale_height;\n }\n\n return offset;\n };\n\n ScrollbarCell.prototype._getScrollOffset = function () {\n var offset = 0;\n\n if (this._isVertical()) {\n var parentLayout = this.$parent.$parent;\n offset = Math.max(this._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)), this._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id)));\n } else {\n var linked = this._getLinkedViews();\n\n for (var i = 0; i < linked.length; i++) {\n var view = linked[i],\n vparent = view.$parent;\n var cells = vparent.$cells;\n var last = cells[cells.length - 1];\n\n if (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\n offset = last.$config.width;\n break;\n }\n }\n }\n\n return offset || 0;\n };\n\n ScrollbarCell.prototype._setScrollSize = function (size) {\n var property = this._isHorizontal() ? \"width\" : \"height\";\n var scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\n\n var offset = this._getScrollOffset();\n\n var node = scrollbar.firstChild;\n\n if (offset) {\n if (this._isVertical()) {\n this.$config.outerSize = this.$config.height - offset + 3;\n scrollbar.style.height = this.$config.outerSize + \"px\";\n scrollbar.style.top = offset - 1 + \"px\";\n domHelpers.addClassName(scrollbar, this.$parent._borders.top);\n domHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n } else {\n this.$config.outerSize = this.$config.width - offset + 1;\n scrollbar.style.width = this.$config.outerSize + \"px\"; //domHelpers.addClassName(scrollbar, this.$parent._borders.right);\n }\n } else {\n scrollbar.style.top = \"auto\";\n domHelpers.removeClassName(scrollbar, this.$parent._borders.top);\n domHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n this.$config.outerSize = this.$config.height;\n }\n\n node.style[property] = size + \"px\";\n };\n\n ScrollbarCell.prototype._scrollVerticalHandler = function (e) {\n if (this._scrollHorizontalHandler() || this._scrolling) {\n return;\n } //if (this.$gantt._touch_scroll_active) return;\n\n\n var top = this.$scroll_ver.scrollTop;\n var prev = this._oldTop;\n if (top == prev) return;\n this.scrollVertically(top);\n this._oldTop = this.$scroll_ver.scrollTop;\n };\n\n ScrollbarCell.prototype._outerScrollVerticalHandler = function (e) {\n if (this._scrollHorizontalHandler()) {\n return;\n }\n };\n\n ScrollbarCell.prototype._checkWheelTarget = function (targetNode) {\n var connectedViews = this._getLinkedViews().concat(this);\n\n for (var i = 0; i < connectedViews.length; i++) {\n var node = connectedViews[i].$view;\n\n if (domHelpers.isChildOf(targetNode, node)) {\n return true;\n }\n }\n\n return false;\n };\n\n ScrollbarCell.prototype._mouseWheelHandler = function (e) {\n var target = e.target || e.srcElement;\n if (!this._checkWheelTarget(target)) return;\n this._wheel_time = new Date();\n var res = {};\n var wheelSpeed = {\n x: 1,\n y: 1\n };\n var wheelSpeedConfig = this.$gantt.config.wheel_scroll_sensitivity;\n\n if (typeof wheelSpeedConfig == \"number\" && !!wheelSpeedConfig) {\n wheelSpeed = {\n x: wheelSpeedConfig,\n y: wheelSpeedConfig\n };\n } else if ({}.toString.apply(wheelSpeedConfig) == \"[object Object]\") {\n wheelSpeed = {\n x: wheelSpeedConfig.x,\n y: wheelSpeedConfig.y\n };\n }\n\n var ff = env.isFF;\n var deltaX = ff ? e.deltaX : e.wheelDeltaX;\n var deltaY = ff ? e.deltaY : e.wheelDelta;\n var multiplier = -20;\n\n if (ff) {\n if (e.deltaMode !== 0) {\n multiplier = -40;\n } else {\n multiplier = -10;\n }\n }\n\n var wx = ff ? deltaX * multiplier * wheelSpeed.x : deltaX * 2 * wheelSpeed.x;\n var wy = ff ? deltaY * multiplier * wheelSpeed.y : deltaY * wheelSpeed.y;\n var horizontalScrollModifier = this.$gantt.config.horizontal_scroll_key;\n\n if (horizontalScrollModifier !== false) {\n if (SCROLL_MODIFIER_KEYS.indexOf(horizontalScrollModifier) >= 0) {\n if (e[horizontalScrollModifier] && !(e.deltaX || e.wheelDeltaX)) {\n // shift+mousewheel for horizontal scroll\n wx = wy * 2;\n wy = 0;\n }\n }\n }\n\n if (wx && Math.abs(wx) > Math.abs(wy)) {\n if (this._isVertical()) {\n return;\n }\n\n if (res.x) return true; //no horisontal scroll, must not block scrolling\n\n if (!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\n var dir = wx / -40;\n var oldLeft = this._oldLeft;\n var left = oldLeft + dir * 30;\n this.scrollHorizontally(left);\n this.$scroll_hor.scrollLeft = left; // not block scroll if position hasn't changed\n\n if (oldLeft == this.$scroll_hor.scrollLeft) {\n return true;\n }\n\n this._oldLeft = this.$scroll_hor.scrollLeft;\n } else {\n if (this._isHorizontal()) {\n return;\n }\n\n if (res.y) return true; //no vertical scroll, must not block scrolling\n\n if (!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\n var dir = wy / -40;\n if (typeof wy == \"undefined\") dir = e.detail;\n var oldTop = this._oldTop;\n var top = this.$scroll_ver.scrollTop + dir * 30; //if(!this.$gantt.config.prevent_default_scroll &&\n //\t(this.$gantt._cached_scroll_pos && ((this.$gantt._cached_scroll_pos.y == top) || (this.$gantt._cached_scroll_pos.y <= 0 && top <= 0)))) return true;\n\n this.scrollVertically(top);\n this.$scroll_ver.scrollTop = top; // not block scroll if position hasn't changed\n\n if (oldTop == this.$scroll_ver.scrollTop) {\n return true;\n }\n\n this._oldTop = this.$scroll_ver.scrollTop;\n }\n\n if (e.preventDefault) e.preventDefault();\n e.cancelBubble = true;\n return false;\n };\n\n return ScrollbarCell;\n}(Cell);\n\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\n utils = require(\"../../../utils/utils\"),\n Cell = require(\"./cell\");\n\nvar ViewCell = function (_super) {\n \"use strict\";\n\n __extends(ViewCell, _super);\n\n function ViewCell(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (config.view) {\n if (config.id) {\n // pass id to the nested view\n this.$id = utils.uid();\n }\n\n var childConfig = utils.copy(config);\n delete childConfig.config;\n delete childConfig.templates;\n this.$content = this.$factory.createView(config.view, this, childConfig, this);\n if (!this.$content) return false;\n }\n\n _this.$name = \"viewCell\";\n return _this;\n }\n\n ViewCell.prototype.destructor = function () {\n this.clear();\n\n _super.prototype.destructor.call(this);\n };\n\n ViewCell.prototype.clear = function () {\n this.$initialized = false; // call destructor\n\n if (this.$content) {\n var method = this.$content.unload || this.$content.destructor;\n\n if (method) {\n method.call(this.$content);\n }\n }\n\n _super.prototype.clear.call(this);\n };\n\n ViewCell.prototype.scrollTo = function (left, top) {\n if (this.$content && this.$content.scrollTo) {\n this.$content.scrollTo(left, top);\n } else {\n _super.prototype.scrollTo.call(this, left, top);\n }\n };\n\n ViewCell.prototype._setContentSize = function (x, y) {\n var borders = this._getBorderSizes();\n\n if (typeof x === \"number\") {\n var outerX = x + borders.horizontal;\n this.$config.width = outerX;\n }\n\n if (typeof y === \"number\") {\n var outerY = y + borders.vertical;\n this.$config.height = outerY;\n }\n };\n\n ViewCell.prototype.setSize = function (x, y) {\n _super.prototype.setSize.call(this, x, y);\n\n if (!this.$preResize && this.$content) {\n if (!this.$initialized) {\n this.$initialized = true;\n var header = this.$view.childNodes[0];\n var content = this.$view.childNodes[1];\n if (!content) content = header;\n /*if(this.$content.$config){\n \tthis.$content.$config.width = this.$lastSize.contentX;\n \tthis.$content.$config.height = this.$lastSize.contentY;\n }*/\n\n this.$content.init(content);\n }\n }\n };\n\n ViewCell.prototype.setContentSize = function () {\n if (!this.$preResize && this.$content) {\n if (this.$initialized) {\n this.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\n }\n }\n };\n\n ViewCell.prototype.getContentSize = function () {\n var size = _super.prototype.getContentSize.call(this);\n\n if (this.$content && this.$initialized) {\n var childSize = this.$content.getSize();\n size.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\n size.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\n }\n\n var borders = this._getBorderSizes();\n\n size.width += borders.horizontal;\n size.height += borders.vertical;\n return size;\n };\n\n return ViewCell;\n}(Cell);\n\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\n Layout = require(\"./layout\"),\n Cell = require(\"./cell\");\n\nvar ViewLayout = function (_super) {\n \"use strict\";\n\n __extends(ViewLayout, _super);\n\n function ViewLayout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n for (var i = 0; i < _this.$cells.length; i++) {\n _this.$cells[i].$config.hidden = i !== 0;\n }\n\n _this.$cell = _this.$cells[0];\n _this.$name = \"viewLayout\";\n return _this;\n }\n\n ViewLayout.prototype.cell = function (id) {\n var cell = _super.prototype.cell.call(this, id);\n\n if (!cell.$view) {\n this.$fill(null, this);\n }\n\n return cell;\n };\n\n ViewLayout.prototype.moveView = function (view) {\n var body = this.$view;\n\n if (this.$cell) {\n this.$cell.$config.hidden = true;\n body.removeChild(this.$cell.$view);\n }\n\n this.$cell = view;\n body.appendChild(view.$view);\n };\n\n ViewLayout.prototype.setSize = function (x, y) {\n Cell.prototype.setSize.call(this, x, y);\n };\n\n ViewLayout.prototype.setContentSize = function () {\n var size = this.$lastSize;\n this.$cell.setSize(size.contentX, size.contentY);\n };\n\n ViewLayout.prototype.getSize = function () {\n var sizes = _super.prototype.getSize.call(this);\n\n if (this.$cell) {\n var cellSize = this.$cell.getSize();\n\n if (this.$config.byMaxSize) {\n for (var i = 0; i < this.$cells.length; i++) {\n var otherCell = this.$cells[i].getSize();\n\n for (var cell in cellSize) {\n cellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\n }\n }\n }\n\n for (var size in sizes) {\n sizes[size] = sizes[size] || cellSize[size];\n }\n\n sizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\n }\n\n return sizes;\n };\n\n return ViewLayout;\n}(Layout);\n\nmodule.exports = ViewLayout;","module.exports = function (viewport, box) {\n if (!box) {\n return false;\n }\n\n if (box.left > viewport.x_end || box.left + box.width < viewport.x) {\n return false;\n }\n\n if (box.top > viewport.y_end || box.top + box.height < viewport.y) {\n return false;\n }\n\n return true;\n};","var genericViewPortChecker = require(\"./viewport/is_in_viewport\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar basicGetRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar basicGetRange = require(\"./viewport/get_visible_bars_range\");\n\nvar rendererFactory = function rendererFactory(gantt) {\n //hash of dom elements is needed to redraw single bar/link\n var task_area_pulls = {},\n task_area_renderers = {};\n\n function getView(layer) {\n var view = null;\n\n if (typeof layer.view === \"string\") {\n view = gantt.$ui.getView(layer.view);\n } else if (layer.view) {\n view = layer.view;\n }\n\n return view;\n }\n\n function getRenderer(id, layer, node) {\n if (task_area_renderers[id]) return task_area_renderers[id];\n if (!layer.renderer) gantt.assert(false, \"Invalid renderer call\");\n var renderMethod = null;\n var updateMethod = null;\n var getRectangle = null;\n var renderCallbackMethod = null;\n var specializedViewPortChecker = null;\n\n if (typeof layer.renderer === \"function\") {\n renderMethod = layer.renderer;\n getRectangle = basicGetRectangle;\n } else {\n renderMethod = layer.renderer.render;\n updateMethod = layer.renderer.update;\n renderCallbackMethod = layer.renderer.onrender;\n\n if (layer.renderer.isInViewPort) {\n specializedViewPortChecker = layer.renderer.isInViewPort;\n } else {\n getRectangle = layer.renderer.getRectangle;\n }\n\n if (!getRectangle && getRectangle !== null) {\n getRectangle = basicGetRectangle;\n }\n }\n\n var filter = layer.filter;\n if (node) node.setAttribute(gantt.config.layer_attribute, true);\n task_area_renderers[id] = {\n render_item: function render_item(item, container, viewPort, layerView, viewConfig) {\n container = container || node;\n\n if (filter) {\n if (!filter(item)) {\n this.remove_item(item.id);\n return;\n }\n }\n\n var view = layerView || getView(layer);\n var config = viewConfig || (view ? view.$getConfig() : null);\n var rendererViewPort = viewPort;\n\n if (!rendererViewPort && config && config.smart_rendering) {\n rendererViewPort = view.getViewPort();\n }\n\n var dom = null;\n\n if (!isLegacyRender(gantt) && (getRectangle || specializedViewPortChecker) && rendererViewPort) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, rendererViewPort, view, config, gantt);\n } else {\n isVisible = genericViewPortChecker(rendererViewPort, getRectangle(item, view, config, gantt));\n }\n\n if (isVisible) {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n } else {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n\n this.append(item, dom, container);\n var useBuffer = container.nodeType == 11; //DocumentFragment\n\n if (renderCallbackMethod && !useBuffer && dom) {\n renderCallbackMethod.call(gantt, item, dom, view);\n }\n },\n clear: function clear(container) {\n this.rendered = task_area_pulls[id] = {};\n if (!layer.append) this.clear_container(container);\n },\n clear_container: function clear_container(container) {\n container = container || node;\n if (container) container.innerHTML = \"\";\n },\n get_visible_range: function get_visible_range(datastore) {\n var view = getView(layer);\n var viewport;\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewport = view.getViewPort();\n }\n\n var range;\n\n if (view && viewport) {\n if (typeof layer.renderer === \"function\") {\n range = basicGetRange(gantt, view, viewConfig, datastore, viewport);\n } else if (layer.renderer && layer.renderer.getVisibleRange) {\n range = layer.renderer.getVisibleRange(gantt, view, viewConfig, datastore, viewport);\n }\n }\n\n if (!range) {\n range = {\n start: 0,\n end: datastore.count()\n };\n }\n\n return range;\n },\n render_items: function render_items(items, container) {\n container = container || node;\n var buffer = document.createDocumentFragment();\n this.clear(container);\n var viewPort = null;\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewPort = view.getViewPort();\n }\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n\n container.appendChild(buffer, container);\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n update_items: function update_items(items, container) {\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (!view || !view.$getConfig().smart_rendering || isLegacyRender(gantt)) {\n return;\n }\n\n if (!this.rendered) {\n return;\n }\n\n if (!(getRectangle || specializedViewPortChecker)) {\n return;\n }\n\n container = container || node;\n var buffer = document.createDocumentFragment();\n var viewPort = null;\n\n if (view) {\n viewPort = view.getViewPort();\n }\n\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n var nodesToRemove = {};\n\n for (var i in this.rendered) {\n nodesToRemove[i] = true;\n renderedItems[i] = true;\n }\n\n var renderCalledFor = {};\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n var item = items[i];\n var itemNode = this.rendered[item.id];\n nodesToRemove[item.id] = false;\n\n if (itemNode && itemNode.parentNode) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, viewPort, view, viewConfig, gantt);\n } else {\n isVisible = genericViewPortChecker(viewPort, getRectangle(item, view, viewConfig, gantt));\n }\n\n if (!isVisible) {\n nodesToRemove[item.id] = true;\n } else {\n if (updateMethod) {\n updateMethod.call(gantt, item, itemNode, view, viewConfig, viewPort);\n }\n\n this.restore(item, buffer);\n }\n } else {\n renderCalledFor[items[i].id] = true;\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n }\n\n for (var i in nodesToRemove) {\n if (nodesToRemove[i]) {\n this.hide(i);\n }\n }\n\n if (buffer.childNodes.length) {\n container.appendChild(buffer, container);\n }\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i] || renderCalledFor[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n append: function append(item, node, container) {\n if (!this.rendered) {\n return;\n }\n\n if (!node) {\n if (this.rendered[item.id]) {\n this.remove_item(item.id);\n }\n\n return;\n }\n\n if (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n this.replace_item(item.id, node);\n } else {\n container.appendChild(node);\n }\n\n this.rendered[item.id] = node;\n },\n replace_item: function replace_item(item_id, newNode) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.replaceChild(newNode, item);\n }\n\n this.rendered[item_id] = newNode;\n },\n remove_item: function remove_item(item_id) {\n this.hide(item_id);\n delete this.rendered[item_id];\n },\n hide: function hide(item_id) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.removeChild(item);\n }\n },\n restore: function restore(item, container) {\n var dom = this.rendered[item.id];\n\n if (dom) {\n if (!dom.parentNode) {\n this.append(item, dom, container || node);\n }\n } else {\n this.render_item(item, container || node);\n }\n },\n change_id: function change_id(oldid, newid) {\n this.rendered[newid] = this.rendered[oldid];\n delete this.rendered[oldid];\n },\n rendered: task_area_pulls[id],\n node: node,\n destructor: function destructor() {\n this.clear();\n delete task_area_renderers[id];\n delete task_area_pulls[id];\n }\n };\n return task_area_renderers[id];\n }\n\n function clearRenderers() {\n for (var i in task_area_renderers) {\n getRenderer(i).destructor();\n }\n }\n\n return {\n getRenderer: getRenderer,\n clearRenderers: clearRenderers\n };\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\n\nvar utils = require(\"../../../utils/utils\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar layerFactory = function layerFactory(gantt) {\n var renderFactory = renderFactoryProvider(gantt);\n return {\n createGroup: function createGroup(getContainer, relativeRoot, defaultFilters, initLayer) {\n var renderGroup = {\n tempCollection: [],\n renderers: {},\n container: getContainer,\n filters: [],\n getLayers: function getLayers() {\n this._add(); // add pending layers\n\n\n var res = [];\n\n for (var i in this.renderers) {\n res.push(this.renderers[i]);\n }\n\n return res;\n },\n getLayer: function getLayer(id) {\n return this.renderers[id];\n },\n _add: function _add(layer) {\n if (layer) {\n layer.id = layer.id || utils.uid();\n this.tempCollection.push(layer);\n }\n\n var container = this.container();\n var pending = this.tempCollection;\n\n for (var i = 0; i < pending.length; i++) {\n layer = pending[i];\n if (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n var node = layer.container,\n id = layer.id,\n topmost = layer.topmost;\n\n if (!node.parentNode) {\n //insert on top or below the tasks\n if (topmost) {\n container.appendChild(node);\n } else {\n var rel = relativeRoot ? relativeRoot() : container.firstChild; // GS-1274: if we don't add the second check, Gantt stops working if\n // we add the task layer without the timeline and switch to a layout with the timeline\n\n if (rel && rel.parentNode == container) container.insertBefore(node, rel);else container.appendChild(node);\n }\n }\n\n this.renderers[id] = renderFactory.getRenderer(id, layer, node);\n\n if (initLayer) {\n initLayer(layer, gantt);\n }\n\n this.tempCollection.splice(i, 1);\n i--;\n }\n },\n addLayer: function addLayer(config) {\n if (config) {\n if (typeof config == \"function\") {\n config = {\n renderer: config\n };\n }\n\n if (config.filter === undefined) {\n config.filter = mergeFilters(defaultFilters || []);\n } else if (config.filter instanceof Array) {\n config.filter.push(defaultFilters);\n config.filter = mergeFilters(config.filter);\n }\n\n if (!config.container) {\n config.container = document.createElement(\"div\");\n }\n\n var self = this;\n\n config.requestUpdate = function () {\n if (gantt.config.smart_rendering && !isLegacyRender(gantt)) {\n if (self.renderers[config.id]) {\n self.onUpdateRequest(self.renderers[config.id]);\n }\n }\n };\n }\n\n this._add(config);\n\n return config ? config.id : undefined;\n },\n onUpdateRequest: function onUpdateRequest(layer) {},\n eachLayer: function eachLayer(code) {\n for (var i in this.renderers) {\n code(this.renderers[i]);\n }\n },\n removeLayer: function removeLayer(id) {\n if (!this.renderers[id]) return;\n this.renderers[id].destructor();\n delete this.renderers[id];\n },\n clear: function clear() {\n for (var i in this.renderers) {\n this.renderers[i].destructor();\n }\n\n this.renderers = {};\n } //,\n //prepareConfig: prepareConfig\n\n };\n gantt.attachEvent(\"onDestroy\", function () {\n renderGroup.clear();\n renderGroup = null;\n });\n return renderGroup;\n }\n };\n};\n\nfunction mergeFilters(filter_methods) {\n if (!(filter_methods instanceof Array)) {\n filter_methods = Array.prototype.slice.call(arguments, 0);\n }\n\n return function (obj) {\n var res = true;\n\n for (var i = 0, len = filter_methods.length; i < len; i++) {\n var filter_method = filter_methods[i];\n\n if (filter_method) {\n res = res && filter_method(obj.id, obj) !== false;\n }\n }\n\n return res;\n };\n}\n\nmodule.exports = layerFactory;","var createLayerFactory = require(\"./render/layer_engine\");\n\nfunction initLayer(layer, gantt) {\n if (!layer.view) {\n return;\n }\n\n var view = layer.view;\n\n if (typeof view === \"string\") {\n view = gantt.$ui.getView(view);\n }\n\n if (view && view.attachEvent) {\n view.attachEvent(\"onScroll\", function () {\n var state = gantt.$services.getService(\"state\"); // don't repaint if we're inside batchUpdate, a complete repaint will be called afterwards\n\n if (!state.getState(\"batchUpdate\").batch_update && !view.$config.$skipSmartRenderOnScroll) {\n if (layer.requestUpdate) {\n layer.requestUpdate();\n }\n }\n });\n }\n}\n\nvar createLayerEngine = function createLayerEngine(gantt) {\n var factory = createLayerFactory(gantt);\n return {\n getDataRender: function getDataRender(name) {\n return gantt.$services.getService(\"layer:\" + name) || null;\n },\n createDataRender: function createDataRender(config) {\n var name = config.name,\n defaultContainer = config.defaultContainer,\n previusSiblingContainer = config.defaultContainerSibling;\n var layers = factory.createGroup(defaultContainer, previusSiblingContainer, function (itemId, item) {\n if (layers.filters) {\n for (var i = 0; i < layers.filters.length; i++) {\n if (layers.filters[i](itemId, item) === false) {\n return false;\n }\n }\n } else {\n return true;\n }\n }, initLayer);\n gantt.$services.setService(\"layer:\" + name, function () {\n return layers;\n });\n gantt.attachEvent(\"onGanttReady\", function () {\n layers.addLayer(); // init layers on start\n });\n return layers;\n },\n init: function init() {\n var taskLayers = this.createDataRender({\n name: \"task\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n },\n defaultContainerSibling: function defaultContainerSibling() {\n if (gantt.$task_links) {\n return gantt.$task_links;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_links;\n }\n },\n filter: function filter(item) {}\n }, gantt);\n var linkLayers = this.createDataRender({\n name: \"link\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n }\n }, gantt);\n return {\n addTaskLayer: function addTaskLayer(config) {\n if (typeof config === \"function\") {\n config = {\n renderer: config\n };\n }\n\n config.view = \"timeline\";\n return taskLayers.addLayer(config);\n },\n _getTaskLayers: function _getTaskLayers() {\n return taskLayers.getLayers();\n },\n removeTaskLayer: function removeTaskLayer(id) {\n taskLayers.removeLayer(id);\n },\n _clearTaskLayers: function _clearTaskLayers() {\n taskLayers.clear();\n },\n addLinkLayer: function addLinkLayer(config) {\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config\n }\n };\n }\n\n config.view = \"timeline\";\n return linkLayers.addLayer(config);\n },\n _getLinkLayers: function _getLinkLayers() {\n return linkLayers.getLayers();\n },\n removeLinkLayer: function removeLinkLayer(id) {\n linkLayers.removeLayer(id);\n },\n _clearLinkLayers: function _clearLinkLayers() {\n linkLayers.clear();\n }\n };\n }\n };\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar createMouseHandler = function (domHelpers) {\n return function (gantt) {\n var eventHandlers = {\n \"click\": {},\n \"doubleclick\": {},\n \"contextMenu\": {}\n };\n\n function addEventTarget(event, className, handler, root) {\n if (!eventHandlers[event][className]) {\n eventHandlers[event][className] = [];\n }\n\n eventHandlers[event][className].push({\n handler: handler,\n root: root\n });\n }\n\n function callHandler(eventName, className, root, args) {\n var handlers = eventHandlers[eventName][className];\n\n if (handlers) {\n for (var i = 0; i < handlers.length; i++) {\n if (!(root || handlers[i].root) || handlers[i].root === root) {\n handlers[i].handler.apply(this, args);\n }\n }\n }\n }\n\n function onClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.click);\n var res = true;\n\n if (id !== null) {\n res = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n } else {\n gantt.callEvent(\"onEmptyClick\", [e]);\n }\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return; // GS-1025: if we don't do that, the dropdown or date select will be closed for unselected tasks\n // GS-1078: or for the built-in select inline editor\n\n switch (e.target.nodeName) {\n case \"SELECT\":\n case 'INPUT':\n return;\n } //allow task selection when the multiselect plugin is not enabled\n\n\n if (id && gantt.getTask(id) && !gantt._multiselect && gantt.config.select_task) {\n gantt.selectTask(id);\n }\n }\n }\n\n function onContextMenu(e) {\n e = e || window.event;\n var src = e.target || e.srcElement,\n taskId = gantt.locate(src),\n linkId = gantt.locate(src, gantt.config.link_attribute);\n var res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\n if (!res) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n return res;\n }\n\n function findEventHandlers(e, hash) {\n var trg = e.target || e.srcElement;\n var handlers = [];\n\n while (trg) {\n var css = domHelpers.getClassName(trg);\n\n if (css) {\n css = css.split(\" \");\n\n for (var i = 0; i < css.length; i++) {\n if (!css[i]) continue;\n\n if (hash[css[i]]) {\n var delegateHandlers = hash[css[i]];\n\n for (var h = 0; h < delegateHandlers.length; h++) {\n if (delegateHandlers[h].root) {\n if (!domHelpers.isChildOf(trg, delegateHandlers[h].root)) {\n continue;\n }\n }\n\n handlers.push(delegateHandlers[h].handler);\n }\n }\n }\n }\n\n trg = trg.parentNode;\n }\n\n return handlers;\n }\n\n function callEventHandlers(handlers, e, id) {\n var res = true;\n\n for (var i = 0; i < handlers.length; i++) {\n var handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n res = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n }\n\n return res;\n }\n\n function onDoubleClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.doubleclick); // when doubleclick fired not on task, id === null\n\n var res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return;\n\n if (id !== null && gantt.getTask(id)) {\n if (res && gantt.config.details_on_dblclick && !gantt.isReadonly()) {\n gantt.showLightbox(id);\n }\n }\n }\n }\n\n function onMouseMove(e) {\n if (gantt.checkEvent(\"onMouseMove\")) {\n var id = gantt.locate(e);\n gantt._last_move_event = e;\n gantt.callEvent(\"onMouseMove\", [id, e]);\n }\n }\n\n function detach(eventName, className, handler, root) {\n if (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n var handlers = eventHandlers[eventName];\n var elementHandlers = handlers[className];\n\n for (var i = 0; i < elementHandlers.length; i++) {\n if (elementHandlers[i].root == root) {\n elementHandlers.splice(i, 1);\n i--;\n }\n }\n\n if (!elementHandlers.length) {\n delete handlers[className];\n }\n }\n }\n\n var domEvents = gantt._createDomEventScope();\n\n function reset(node) {\n domEvents.detachAll();\n\n if (node) {\n domEvents.attach(node, \"click\", onClick);\n domEvents.attach(node, \"dblclick\", onDoubleClick);\n domEvents.attach(node, \"mousemove\", onMouseMove);\n domEvents.attach(node, \"contextmenu\", onContextMenu);\n }\n }\n\n return {\n reset: reset,\n global: function global(event, classname, handler) {\n addEventTarget(event, classname, handler, null);\n },\n delegate: addEventTarget,\n detach: detach,\n callHandler: callHandler,\n onDoubleClick: onDoubleClick,\n onMouseMove: onMouseMove,\n onContextMenu: onContextMenu,\n onClick: onClick,\n destructor: function destructor() {\n reset();\n eventHandlers = null;\n domEvents = null;\n }\n };\n };\n}(domHelpers);\n\nmodule.exports = {\n init: createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction extendSettings(store, parentSettings) {\n var own = this.$config[store];\n\n if (own) {\n if (!own.$extendedConfig) {\n own.$extendedConfig = true;\n Object.setPrototypeOf(own, parentSettings);\n }\n\n return own;\n } else {\n return parentSettings;\n }\n}\n\nvar configurable = function configurable(parentView) {\n var parentConfig, parentTemplates;\n return {\n $getConfig: function $getConfig() {\n if (!parentConfig) {\n parentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n }\n\n if (!this.$config.config) {\n return parentConfig;\n } else {\n return extendSettings.call(this, \"config\", parentConfig);\n }\n },\n $getTemplates: function $getTemplates() {\n if (!parentTemplates) {\n parentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n }\n\n if (!this.$config.templates) {\n return parentTemplates;\n } else {\n return extendSettings.call(this, \"templates\", parentTemplates);\n }\n }\n };\n};\n\nmodule.exports = function (obj, parent) {\n utils.mixin(obj, configurable(parent));\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\"),\n configurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt) {\n var views = {};\n\n function ui(cell, parentView) {\n var content;\n var view = \"cell\";\n\n if (cell.view) {\n view = \"viewcell\";\n } else if (cell.resizer) {\n view = \"resizer\";\n } else if (cell.rows || cell.cols) {\n view = \"layout\";\n } else if (cell.views) {\n view = \"multiview\";\n }\n\n content = createView.call(this, view, null, cell, parentView);\n return content;\n }\n\n var createdViews = {};\n\n function createView(name, parent, config, parentView) {\n var creator = views[name];\n if (!creator || !creator.create) return false;\n\n if (name == \"resizer\" && !config.mode) {\n if (parentView.$config.cols) {\n config.mode = \"x\";\n } else {\n config.mode = \"y\";\n }\n }\n\n if (name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll) {\n if (parentView.$config.cols) {\n config.scroll = \"y\";\n } else {\n config.scroll = \"x\";\n }\n }\n\n var config = utils.copy(config);\n\n if (!config.id && !createdViews[config.view]) {\n config.id = config.view;\n }\n\n if (config.id && !config.css) {\n config.css = config.id + \"_cell\";\n }\n\n var view = new creator.create(parent, config, this, gantt);\n\n if (creator.configure) {\n creator.configure(view);\n }\n\n configurable(view, parentView);\n\n if (!view.$id) {\n view.$id = config.id || gantt.uid();\n }\n\n if (!view.$parent && _typeof(parent) == \"object\") {\n view.$parent = parent;\n }\n\n if (!view.$config) {\n view.$config = config;\n }\n\n if (createdViews[view.$id]) {\n view.$id = gantt.uid();\n }\n\n createdViews[view.$id] = view;\n return view;\n }\n\n function reset() {\n createdViews = {};\n }\n\n function register(name, viewConstructor, configure) {\n views[name] = {\n create: viewConstructor,\n configure: configure\n };\n }\n\n function getView(id) {\n return createdViews[id];\n }\n\n var factory = {\n initUI: ui,\n reset: reset,\n registerView: register,\n createView: createView,\n getView: getView\n };\n return factory;\n};\n\nmodule.exports = {\n createFactory: uiFactory\n};","var uiFactory = require(\"./ui_factory\"),\n mouseEvents = require(\"./mouse\"),\n createLayers = require(\"./gantt_layers\"),\n Cell = require(\"./layout/cell\"),\n Layout = require(\"./layout/layout\"),\n ViewLayout = require(\"./layout/view_layout\"),\n ViewCell = require(\"./layout/view_cell\"),\n Resizer = require(\"./layout/resizer_cell\"),\n Scrollbar = require(\"./layout/scrollbar_cell\"),\n Timeline = require(\"./timeline/timeline\"),\n Grid = require(\"./grid/grid\"),\n ResourceGrid = require(\"./grid/resource_grid\"),\n ResourceTimeline = require(\"./timeline/resource_timeline\"),\n ResourceHistogram = require(\"./timeline/resource_histogram\");\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\nvar renderTaskBar = require(\"./render/task_bar_smart_render\"),\n renderSplitTaskBar = require(\"./render/task_split_render\"),\n renderRollupTaskBar = require(\"./render/task_rollup_render\"),\n renderTaskBg = require(\"./render/task_bg_render\"),\n renderLink = require(\"./render/link_render\"),\n gridRenderer = require(\"./render/task_grid_line_render\"),\n resourceMatrixRenderer = require(\"./render/resource_matrix_render\"),\n resourceHistogramRenderer = require(\"./render/resource_histogram_render\"),\n gridTaskRowResizerRenderer = require(\"./render/task_grid_row_resize_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\n\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\n\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt) {\n function attachInitializer(view, initializer) {\n var ext = initializer(gantt);\n if (ext.onCreated) ext.onCreated(view);\n view.attachEvent(\"onReady\", function () {\n if (ext.onInitialized) ext.onInitialized(view);\n });\n view.attachEvent(\"onDestroy\", function () {\n if (ext.onDestroyed) ext.onDestroyed(view);\n });\n }\n\n var factory = uiFactory.createFactory(gantt);\n factory.registerView(\"cell\", Cell);\n factory.registerView(\"resizer\", Resizer);\n factory.registerView(\"scrollbar\", Scrollbar);\n factory.registerView(\"layout\", Layout, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"main\") {\n attachInitializer(view, mainLayoutInitializer);\n }\n });\n factory.registerView(\"viewcell\", ViewCell);\n factory.registerView(\"multiview\", ViewLayout);\n factory.registerView(\"timeline\", Timeline, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"timeline\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainTimelineInitializer);\n }\n });\n factory.registerView(\"grid\", Grid, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"grid\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainGridInitializer);\n }\n });\n factory.registerView(\"resourceGrid\", ResourceGrid);\n factory.registerView(\"resourceTimeline\", ResourceTimeline);\n factory.registerView(\"resourceHistogram\", ResourceHistogram);\n var layersEngine = createLayers(gantt);\n var inlineEditors = gridEditorsFactory(gantt);\n gantt.ext.inlineEditors = inlineEditors;\n gantt.ext._inlineEditors = inlineEditors;\n inlineEditors.init(gantt);\n return {\n factory: factory,\n mouseEvents: mouseEvents.init(gantt),\n layersApi: layersEngine.init(),\n render: {\n gridLine: function gridLine() {\n return gridRenderer(gantt);\n },\n taskBg: function taskBg() {\n return renderTaskBg(gantt);\n },\n taskBar: function taskBar() {\n return renderTaskBar(gantt);\n },\n taskRollupBar: function taskRollupBar() {\n return renderRollupTaskBar(gantt);\n },\n taskSplitBar: function taskSplitBar() {\n return renderSplitTaskBar(gantt);\n },\n link: function link() {\n return renderLink(gantt);\n },\n resourceRow: function resourceRow() {\n return resourceMatrixRenderer(gantt);\n },\n resourceHistogram: function resourceHistogram() {\n return resourceHistogramRenderer(gantt);\n },\n gridTaskRowResizer: function gridTaskRowResizer() {\n return gridTaskRowResizerRenderer(gantt);\n }\n },\n layersService: {\n getDataRender: function getDataRender(name) {\n return layersEngine.getDataRender(name, gantt);\n },\n createDataRender: function createDataRender(config) {\n return layersEngine.createDataRender(config, gantt);\n }\n }\n };\n}\n\nmodule.exports = {\n init: initUI\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\");\n\nvar domHelpers = require(\"./utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n var boxAttribute = \"data-dhxbox\";\n var _dhx_msg_cfg = null;\n\n function callback(config, result) {\n var usercall = config.callback;\n modalBox.hide(config.box);\n _dhx_msg_cfg = config.box = null;\n if (usercall) usercall(result);\n }\n\n function modal_key(event) {\n if (_dhx_msg_cfg) {\n var code = event.which || event.keyCode;\n var preventDefault = false;\n\n if (messageBox.keyboard) {\n if (code == 13 || code == 32) {\n // default behavior is to confirm/submit popup on space/enter\n // if browser focus is set on button element - do button click instead of default behavior\n var target = event.target || event.srcElement;\n\n if (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n target.click();\n } else {\n callback(_dhx_msg_cfg, true);\n preventDefault = true;\n }\n }\n\n if (code == 27) {\n callback(_dhx_msg_cfg, false);\n preventDefault = true;\n }\n }\n\n if (preventDefault) {\n if (event.preventDefault) {\n event.preventDefault();\n }\n\n return !(event.cancelBubble = true);\n }\n\n return;\n }\n }\n\n var eventElement = domHelpers.getRootNode(gantt.$root) || document;\n gantt.event(eventElement, \"keydown\", modal_key, true);\n\n function modality(mode) {\n if (!modality.cover) {\n modality.cover = document.createElement(\"div\"); //necessary for IE only\n\n modality.cover.onkeydown = modal_key;\n modality.cover.className = \"dhx_modal_cover\";\n document.body.appendChild(modality.cover);\n }\n\n modality.cover.style.display = mode ? \"inline-block\" : \"none\";\n }\n\n function button(text, className, result) {\n var buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\n var name = className.toLowerCase().replace(/ /g, \"_\");\n var button_css = \"gantt_\" + name + \"_button\" + \" dhtmlx_\" + name + \"_button\"; // dhtmlx_ok_button, dhtmlx_click_me_button\n\n return \"<div \" + buttonAriaAttrs + \" class='gantt_popup_button dhtmlx_popup_button \" + button_css + \"' data-result='\" + result + \"' result='\" + result + \"' ><div>\" + text + \"</div></div>\";\n }\n\n function info(text) {\n if (!messageBox.area) {\n messageBox.area = document.createElement(\"div\");\n messageBox.area.className = \"gantt_message_area dhtmlx_message_area\";\n messageBox.area.style[messageBox.position] = \"5px\";\n document.body.appendChild(messageBox.area);\n }\n\n messageBox.hide(text.id);\n var message = document.createElement(\"div\");\n message.innerHTML = \"<div>\" + text.text + \"</div>\";\n message.className = \"gantt-info dhtmlx-info gantt-\" + text.type + \" dhtmlx-\" + text.type;\n\n message.onclick = function () {\n messageBox.hide(text.id);\n text = null;\n };\n\n gantt._waiAria.messageInfoAttr(message);\n\n if (messageBox.position == \"bottom\" && messageBox.area.firstChild) messageBox.area.insertBefore(message, messageBox.area.firstChild);else messageBox.area.appendChild(message);\n if (text.expire > 0) messageBox.timers[text.id] = window.setTimeout(function () {\n // GS-1213: We need that when Gantt is destroyed\n if (messageBox) messageBox.hide(text.id);\n }, text.expire);\n messageBox.pull[text.id] = message;\n message = null;\n return text.id;\n }\n\n function getFirstDefined() {\n var values = [].slice.apply(arguments, [0]);\n\n for (var i = 0; i < values.length; i++) {\n if (values[i]) {\n return values[i];\n }\n }\n }\n\n function _boxStructure(config, ok, cancel) {\n var box = document.createElement(\"div\");\n var contentId = utils.uid();\n\n gantt._waiAria.messageModalAttr(box, contentId);\n\n box.className = \" gantt_modal_box dhtmlx_modal_box gantt-\" + config.type + \" dhtmlx-\" + config.type;\n box.setAttribute(boxAttribute, 1);\n var inner = '';\n if (config.width) box.style.width = config.width;\n if (config.height) box.style.height = config.height;\n if (config.title) inner += '<div class=\"gantt_popup_title dhtmlx_popup_title\">' + config.title + '</div>';\n inner += '<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 if (ok) inner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n if (cancel) inner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n if (config.buttons) {\n for (var i = 0; i < config.buttons.length; i++) {\n var btn = config.buttons[i];\n\n if (_typeof(btn) == \"object\") {\n // Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n var label = btn.label;\n var css = btn.css || \"gantt_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\";\n var value = btn.value || i;\n inner += button(label, css, value);\n } else {\n inner += button(btn, btn, i);\n }\n }\n }\n\n inner += '</div>';\n box.innerHTML = inner;\n\n if (config.content) {\n var node = config.content;\n if (typeof node == \"string\") node = document.getElementById(node);\n if (node.style.display == 'none') node.style.display = \"\";\n box.childNodes[config.title ? 1 : 0].appendChild(node);\n }\n\n box.onclick = function (event) {\n var source = event.target || event.srcElement;\n if (!source.className) source = source.parentNode;\n\n if (domHelpers.closest(source, \".gantt_popup_button\")) {\n var result = source.getAttribute(\"data-result\");\n result = result == \"true\" || (result == \"false\" ? false : result);\n callback(config, result);\n }\n };\n\n config.box = box;\n if (ok || cancel) _dhx_msg_cfg = config;\n return box;\n }\n\n function _createBox(config, ok, cancel) {\n var box = config.tagName ? config : _boxStructure(config, ok, cancel);\n if (!config.hidden) modality(true);\n document.body.appendChild(box);\n var x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n var y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n if (config.position == \"top\") box.style.top = \"-3px\";else box.style.top = y + 'px';\n box.style.left = x + 'px'; //necessary for IE only\n\n box.onkeydown = modal_key;\n modalBox.focus(box);\n if (config.hidden) modalBox.hide(box);\n gantt.callEvent(\"onMessagePopup\", [box]);\n return box;\n }\n\n function alertPopup(config) {\n return _createBox(config, true, false);\n }\n\n function confirmPopup(config) {\n return _createBox(config, true, true);\n }\n\n function boxPopup(config) {\n return _createBox(config);\n }\n\n function box_params(text, type, callback) {\n if (_typeof(text) != \"object\") {\n if (typeof type == \"function\") {\n callback = type;\n type = \"\";\n }\n\n text = {\n text: text,\n type: type,\n callback: callback\n };\n }\n\n return text;\n }\n\n function params(text, type, expire, id) {\n if (_typeof(text) != \"object\") text = {\n text: text,\n type: type,\n expire: expire,\n id: id\n };\n text.id = text.id || utils.uid();\n text.expire = text.expire || messageBox.expire;\n return text;\n }\n\n var alertBox = function alertBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"confirm\";\n return alertPopup(text);\n };\n\n var confirmBox = function confirmBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return confirmPopup(text);\n };\n\n var modalBox = function modalBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return boxPopup(text);\n };\n\n modalBox.hide = function (node) {\n while (node && node.getAttribute && !node.getAttribute(boxAttribute)) {\n node = node.parentNode;\n }\n\n if (node) {\n node.parentNode.removeChild(node);\n modality(false);\n gantt.callEvent(\"onAfterMessagePopup\", [node]);\n }\n };\n\n modalBox.focus = function (node) {\n setTimeout(function () {\n var focusable = domHelpers.getFocusableNodes(node);\n\n if (focusable.length) {\n if (focusable[0].focus) focusable[0].focus();\n }\n }, 1);\n };\n\n var messageBox = function messageBox(text, type, expire, id) {\n text = params.apply(this, arguments);\n text.type = text.type || \"info\";\n var subtype = text.type.split(\"-\")[0];\n\n switch (subtype) {\n case \"alert\":\n return alertPopup(text);\n\n case \"confirm\":\n return confirmPopup(text);\n\n case \"modalbox\":\n return boxPopup(text);\n\n default:\n return info(text);\n }\n };\n\n messageBox.seed = new Date().valueOf();\n messageBox.uid = utils.uid;\n messageBox.expire = 4000;\n messageBox.keyboard = true;\n messageBox.position = \"top\";\n messageBox.pull = {};\n messageBox.timers = {};\n\n messageBox.hideAll = function () {\n for (var key in messageBox.pull) {\n messageBox.hide(key);\n }\n };\n\n messageBox.hide = function (id) {\n var obj = messageBox.pull[id];\n\n if (obj && obj.parentNode) {\n window.setTimeout(function () {\n obj.parentNode.removeChild(obj);\n obj = null;\n }, 2000);\n obj.className += \" hidden\";\n if (messageBox.timers[id]) window.clearTimeout(messageBox.timers[id]);\n delete messageBox.pull[id];\n }\n };\n\n var popups = [];\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n popups.push(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function (box) {\n for (var i = 0; i < popups.length; i++) {\n if (popups[i] === box) {\n popups.splice(i, 1);\n i--;\n }\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n if (modality.cover && modality.cover.parentNode) {\n modality.cover.parentNode.removeChild(modality.cover);\n }\n\n for (var i = 0; i < popups.length; i++) {\n if (popups[i].parentNode) {\n popups[i].parentNode.removeChild(popups[i]);\n }\n }\n\n popups = null;\n\n if (messageBox.area && messageBox.area.parentNode) {\n messageBox.area.parentNode.removeChild(messageBox.area);\n }\n\n messageBox = null;\n });\n return {\n alert: alertBox,\n confirm: confirmBox,\n message: messageBox,\n modalbox: modalBox\n };\n};","module.exports = function (gantt) {\n var utils = require(\"../utils/utils\");\n\n var env = require(\"../utils/env\");\n\n var isHeadless = require(\"../utils/is_headless\");\n\n if (!env.isNode) {\n var domHelpers = require(\"./ui/utils/dom_helpers\");\n\n var codeHelpers = require(\"../utils/helpers\");\n\n gantt.utils = {\n arrayFind: codeHelpers.arrayFind,\n dom: domHelpers\n };\n\n var domEvents = require(\"./ui/utils/dom_event_scope\")();\n\n gantt.event = domEvents.attach;\n gantt.eventRemove = domEvents.detach;\n gantt._eventRemoveAll = domEvents.detachAll;\n gantt._createDomEventScope = domEvents.extend;\n utils.mixin(gantt, require(\"./ui/message\")(gantt));\n\n var uiApi = require(\"./ui/index\").init(gantt);\n\n gantt.$ui = uiApi.factory;\n gantt.$ui.layers = uiApi.render;\n gantt.$mouseEvents = uiApi.mouseEvents;\n gantt.$services.setService(\"mouseEvents\", function () {\n return gantt.$mouseEvents;\n });\n gantt.mixin(gantt, uiApi.layersApi);\n\n require(\"./data_task_layers\")(gantt);\n\n gantt.$services.setService(\"layers\", function () {\n return uiApi.layersService;\n });\n\n var createLayoutFacade = require(\"./facades/layout\");\n\n gantt.mixin(gantt, createLayoutFacade());\n\n require(\"./ui/skin\")(gantt);\n\n require(\"../css/skins/skyblue\")(gantt);\n\n require(\"../css/skins/meadow\")(gantt);\n\n require(\"../css/skins/terrace\")(gantt);\n\n require(\"../css/skins/broadway\")(gantt);\n\n require(\"../css/skins/material\")(gantt);\n\n require(\"../css/skins/contrast_black\")(gantt);\n\n require(\"../css/skins/contrast_white\")(gantt);\n\n require(\"./ui/plugins\")(gantt);\n\n require(\"./ui/touch\")(gantt);\n\n require(\"./ui/lightbox\")(gantt);\n\n require(\"./ui/lightbox/lightbox_optional_time\")(gantt);\n\n require(\"./ui/wai_aria\")(gantt);\n\n gantt.locate = function (e) {\n var trg = domHelpers.getTargetNode(e); // ignore empty rows/cells of the timeline\n\n if (domHelpers.closest(trg, \".gantt_task_row\")) {\n return null;\n }\n\n var targetAttribute = arguments[1] || this.config.task_attribute;\n var node = domHelpers.locateAttribute(trg, targetAttribute);\n\n if (node) {\n return node.getAttribute(targetAttribute);\n } else {\n return null;\n }\n };\n\n gantt._locate_css = function (e, classname, strict) {\n return domHelpers.locateClassName(e, classname, strict);\n };\n\n gantt._locateHTML = function (e, attribute) {\n return domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n };\n }\n\n gantt.attachEvent(\"onParse\", function () {\n if (!isHeadless(gantt)) {\n gantt.attachEvent(\"onGanttRender\", function () {\n if (gantt.config.initial_scroll) {\n var firstTask = gantt.getTaskByIndex(0);\n var id = firstTask ? firstTask.id : gantt.config.root_id;\n if (gantt.isTaskExists(id)) gantt.showTask(id);\n }\n }, {\n once: true\n });\n }\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (!this.config.scroll_size) this.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n if (!isHeadless(gantt)) {\n // detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\n this._eventRemoveAll();\n\n this.$mouseEvents.reset();\n this.resetLightbox();\n }\n }); // GS-1261: scroll the views to the right side when RTL is enabled\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt) && gantt.config.rtl) {\n gantt.$layout.getCellsByType(\"viewCell\").forEach(function (cell) {\n var attachedScrollbar = cell.$config.scrollX;\n if (!attachedScrollbar) return;\n var scrollbar = gantt.$ui.getView(attachedScrollbar);\n if (scrollbar) scrollbar.scrollTo(scrollbar.$config.scrollSize, 0);\n });\n }\n });\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&auml;kuu\", \"Hein&auml;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 gantt.destructor = function () {\n this.clearAll();\n this.callEvent(\"onDestroy\", []);\n\n if (this.$root) {\n delete this.$root.gantt;\n }\n\n if (this._eventRemoveAll) {\n this._eventRemoveAll();\n }\n\n if (this.$layout) {\n this.$layout.destructor();\n }\n\n if (this.resetLightbox) {\n this.resetLightbox();\n }\n\n if (this._dp && this._dp.destructor) {\n this._dp.destructor();\n }\n\n this.$services.destructor(); // detachAllEvents should be called last, because in components may be attached events\n\n this.detachAllEvents();\n\n for (var i in this) {\n if (i.indexOf(\"$\") === 0) {\n delete this[i];\n }\n }\n\n this.$destroyed = true;\n };\n}\n\nmodule.exports = extend;","/*\n \tasserts will be removed in final code, so you can place them anythere\n\twithout caring about performance impacts\n*/\nmodule.exports = function (gantt) {\n return function assert(check, message) {\n if (!check) {\n if (gantt.config.show_errors && gantt.callEvent(\"onError\", [message]) !== false) {\n if (gantt.message) {\n gantt.message({\n type: \"error\",\n text: message,\n expire: -1\n });\n } else {\n // eslint-disable-next-line\n console.log(message);\n } // eslint-disable-next-line no-debugger\n\n\n debugger;\n }\n }\n };\n};","function addResizeListener(gantt) {\n var containerStyles = window.getComputedStyle(gantt.$root);\n\n if (containerStyles.getPropertyValue(\"position\") == \"static\") {\n gantt.$root.style.position = \"relative\";\n }\n\n var resizeWatcher = document.createElement('iframe');\n resizeWatcher.className = \"gantt_container_resize_watcher\";\n resizeWatcher.tabIndex = -1;\n\n if (gantt.config.wai_aria_attributes) {\n resizeWatcher.setAttribute(\"role\", \"none\");\n resizeWatcher.setAttribute(\"aria-hidden\", true);\n }\n\n var salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\n\n if (salesforce_environment) {\n gantt.config.container_resize_method = \"timeout\";\n } // in some environments (namely, in SalesForce) iframe.contentWindow is not available\n\n\n gantt.$root.appendChild(resizeWatcher);\n\n if (resizeWatcher.contentWindow) {\n listenWindowResize(gantt, resizeWatcher.contentWindow);\n } else {\n // if so - ditch the iframe and fallback to listening the main window resize\n gantt.$root.removeChild(resizeWatcher);\n listenWindowResize(gantt, window);\n }\n}\n\nfunction listenWindowResize(gantt, window) {\n var resizeTimeout = gantt.config.container_resize_timeout || 20;\n var resizeDelay;\n\n if (gantt.config.container_resize_method == \"timeout\") {\n lowlevelResizeWatcher();\n } else {\n try {\n gantt.event(window, \"resize\", function () {\n if (gantt.$scrollbarRepaint) {\n gantt.$scrollbarRepaint = null;\n } else {\n repaintGantt();\n }\n });\n } catch (e) {\n lowlevelResizeWatcher();\n }\n }\n\n function repaintGantt() {\n clearTimeout(resizeDelay);\n resizeDelay = setTimeout(function () {\n if (!gantt.$destroyed) {\n gantt.render();\n }\n }, resizeTimeout);\n }\n\n var previousHeight = gantt.$root.offsetHeight;\n var previousWidth = gantt.$root.offsetWidth;\n\n function lowlevelResizeWatcher() {\n if (gantt.$root.offsetHeight != previousHeight || gantt.$root.offsetWidth != previousWidth) {\n repaintGantt();\n }\n\n previousHeight = gantt.$root.offsetHeight;\n previousWidth = gantt.$root.offsetWidth;\n setTimeout(lowlevelResizeWatcher, resizeTimeout);\n }\n}\n\nmodule.exports = addResizeListener;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar domHelpers = require(\"./ui/utils/dom_helpers\"),\n helpers = require(\"../utils/helpers\");\n\nvar isHeadless = require(\"../utils/is_headless\");\n\nvar addResizeListener = require(\"./ui/resize_listener\");\n\nmodule.exports = function (gantt) {\n var calculateScaleRange = require(\"./gantt_data_range\");\n\n gantt.assert = require(\"./common/assert\")(gantt);\n\n function isHTMLElement(node) {\n try {\n node.cloneNode(false);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n var invalidContainerMessage = \"Invalid value of the first argument of `gantt.init`. Supported values: HTMLElement, String (element id).\" + \"This error means that either invalid object is passed into `gantt.init` or that the element with the specified ID doesn't exist on the page when `gantt.init` is called.\";\n\n function validateNode(node) {\n if (!node || typeof node == 'string' && document.getElementById(node)) return true;\n if (isHTMLElement(node)) return true;\n gantt.assert(false, invalidContainerMessage);\n throw new Error(invalidContainerMessage);\n } //initial initialization\n\n\n gantt.init = function (node, from, to) {\n if (gantt.env.isNode) {\n node = null; // for the nodejs version\n } else {\n validateNode(node); // for the web version\n }\n\n if (from && to) {\n this.config.start_date = this._min_date = new Date(from);\n this.config.end_date = this._max_date = new Date(to);\n }\n\n this.date.init(); //can be called only once\n\n this.init = function (node) {\n if (gantt.env.isNode) {\n node = null; // for the nodejs version\n } else {\n validateNode(node); // for the web version\n }\n\n if (this.$container && this.$container.parentNode) {\n this.$container.parentNode.removeChild(this.$container);\n this.$container = null;\n }\n\n if (this.$layout) {\n this.$layout.clear();\n }\n\n this._reinit(node);\n };\n\n this._reinit(node);\n };\n\n gantt._quickRefresh = function (code) {\n var stores = this._getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i]._quick_refresh = true;\n }\n\n code();\n\n for (var i = 0; i < stores.length; i++) {\n stores[i]._quick_refresh = false;\n }\n };\n\n var dropLayout = function dropLayout() {\n if (this._clearTaskLayers) {\n this._clearTaskLayers();\n }\n\n if (this._clearLinkLayers) {\n this._clearLinkLayers();\n }\n\n if (this.$layout) {\n this.$layout.destructor();\n this.$layout = null;\n this.$ui.reset();\n }\n }.bind(gantt);\n\n var rebuildLayout = function rebuildLayout() {\n if (isHeadless(gantt)) {\n return;\n }\n\n this.$root.innerHTML = \"\";\n this.$root.gantt = this;\n calculateScaleRange(this);\n this.config.layout.id = \"main\";\n this.$layout = this.$ui.createView(\"layout\", this.$root, this.config.layout);\n this.$layout.attachEvent(\"onBeforeResize\", function () {\n var storeNames = gantt.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeNames.length; i++) {\n gantt.getDatastore(storeNames[i]).filter();\n gantt.getDatastore(storeNames[i]).callEvent(\"onBeforeRefreshAll\", []);\n }\n });\n this.$layout.attachEvent(\"onResize\", function () {\n gantt._quickRefresh(function () {\n gantt.refreshData();\n });\n });\n this.callEvent(\"onGanttLayoutReady\", []);\n this.$layout.render();\n this.$container = this.$layout.$container.firstChild;\n addResizeListener(this);\n }.bind(gantt);\n\n gantt.resetLayout = function () {\n dropLayout();\n rebuildLayout();\n this.render();\n };\n\n gantt._reinit = function (node) {\n this.callEvent(\"onBeforeGanttReady\", []);\n\n this._update_flags();\n\n var config = this.$services.getService(\"templateLoader\");\n config.initTemplates(this);\n dropLayout();\n this.$root = null;\n\n if (node) {\n this.$root = domHelpers.toNode(node);\n rebuildLayout();\n this.$mouseEvents.reset(this.$root);\n }\n\n this.callEvent(\"onTemplatesReady\", []);\n this.callEvent(\"onGanttReady\", []);\n this.render();\n };\n\n gantt.$click = {\n buttons: {\n \"edit\": function edit(id) {\n if (gantt.isReadonly(gantt.getTask(id))) {\n return;\n }\n\n gantt.showLightbox(id);\n },\n \"delete\": function _delete(id) {\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n return;\n }\n\n var question = gantt.locale.labels.confirm_deleting;\n var title = gantt.locale.labels.confirm_deleting_title;\n\n gantt._dhtmlx_confirm(question, title, function () {\n if (!gantt.isTaskExists(id)) {\n gantt.hideLightbox();\n return;\n }\n\n if (task.$new) {\n gantt.silent(function () {\n gantt.deleteTask(id, true);\n });\n gantt.refreshData();\n } else {\n gantt.deleteTask(id);\n }\n\n gantt.hideLightbox();\n });\n }\n }\n }; //renders self\n\n gantt.render = function () {\n this.callEvent(\"onBeforeGanttRender\", []);\n var visibleDate;\n\n if (!isHeadless(gantt)) {\n if (!this.config.sort && this._sort) {\n this._sort = undefined;\n }\n\n if (this.$root) {\n if (this.config.rtl) {\n this.$root.classList.add(\"gantt_rtl\");\n this.$root.firstChild.classList.add(\"gantt_rtl\"); // GS-1499\n } else {\n this.$root.classList.remove(\"gantt_rtl\");\n this.$root.firstChild.classList.remove(\"gantt_rtl\"); // GS-1499\n }\n }\n\n var pos = this.getScrollState();\n var posX = pos ? pos.x : 0;\n\n if (this._getHorizontalScrollbar()) {\n var scrollbar = this._getHorizontalScrollbar();\n\n posX = scrollbar.$config.codeScrollLeft || posX || 0;\n }\n\n visibleDate = null;\n\n if (posX) {\n visibleDate = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n }\n }\n\n calculateScaleRange(this);\n\n if (!isHeadless(gantt)) {\n this.$layout.$config.autosize = this.config.autosize;\n var preserveScroll = this.config.preserve_scroll;\n this.config.preserve_scroll = false; // prevent scrolling from layout resize, scroll will be called here later on\n\n this.$layout.resize();\n this.config.preserve_scroll = preserveScroll;\n\n if (this.config.preserve_scroll && pos) {\n if (posX) {\n var new_pos = gantt.getScrollState();\n var new_date = gantt.dateFromPos(new_pos.x);\n\n if (!(+visibleDate == +new_date && new_pos.y == pos.y)) {\n var posX = null;\n var posY = null;\n\n if (visibleDate) {\n var posX = Math.max(gantt.posFromDate(visibleDate) - gantt.config.task_scroll_offset, 0);\n }\n\n if (pos.y) {\n posY = pos.y;\n }\n\n gantt.scrollTo(posX, posY);\n }\n }\n }\n } else {\n gantt.refreshData();\n }\n\n this.callEvent(\"onGanttRender\", []);\n }; //TODO: add layout.resize method that wouldn't trigger data repaint\n\n\n gantt.setSizes = gantt.render;\n\n gantt.getTaskRowNode = function (id) {\n var els = this.$grid_data.childNodes;\n var attribute = this.config.task_attribute;\n\n for (var i = 0; i < els.length; i++) {\n if (els[i].getAttribute) {\n var value = els[i].getAttribute(attribute);\n if (value == id) return els[i];\n }\n }\n\n return null;\n };\n\n gantt.changeLightboxType = function (type) {\n if (this.getLightboxType() == type) return true;\n\n gantt._silent_redraw_lightbox(type);\n };\n\n gantt._get_link_type = function (from_start, to_start) {\n var type = null;\n\n if (from_start && to_start) {\n type = gantt.config.links.start_to_start;\n } else if (!from_start && to_start) {\n type = gantt.config.links.finish_to_start;\n } else if (!from_start && !to_start) {\n type = gantt.config.links.finish_to_finish;\n } else if (from_start && !to_start) {\n type = gantt.config.links.start_to_finish;\n }\n\n return type;\n };\n\n gantt.isLinkAllowed = function (from, to, from_start, to_start) {\n var link = null;\n\n if (_typeof(from) == \"object\") {\n link = from;\n } else {\n link = {\n source: from,\n target: to,\n type: this._get_link_type(from_start, to_start)\n };\n }\n\n if (!link) return false;\n if (!(link.source && link.target && link.type)) return false;\n if (link.source == link.target) return false;\n var res = true; //any custom rules\n\n if (this.checkEvent(\"onLinkValidation\")) res = this.callEvent(\"onLinkValidation\", [link]);\n return res;\n };\n\n gantt._correct_dst_change = function (date, prevOffset, step, unit) {\n var time_unit = helpers.getSecondsInUnit(unit) * step;\n\n if (time_unit > 60 * 60 && time_unit < 60 * 60 * 24) {\n //correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n var offsetChanged = date.getTimezoneOffset() - prevOffset;\n\n if (offsetChanged) {\n date = gantt.date.add(date, offsetChanged, \"minute\");\n }\n }\n\n return date;\n };\n\n gantt.isSplitTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isSplitTask. Task object was expected\");\n return this.$data.tasksStore._isSplitItem(task);\n };\n\n gantt._is_icon_open_click = function (e) {\n if (!e) return false;\n var target = e.target || e.srcElement;\n if (!(target && target.className)) return false;\n var className = domHelpers.getClassName(target);\n if (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1)) return true;\n return false;\n };\n};","/*\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 gantt._cached_functions = {\n cache: {},\n mode: false,\n critical_path_mode: false,\n wrap_methods: function wrap_methods(methods, object) {\n if (object._prefetch_originals) {\n for (var i in object._prefetch_originals) {\n object[i] = object._prefetch_originals[i];\n }\n }\n\n object._prefetch_originals = {};\n\n for (var i = 0; i < methods.length; i++) {\n this.prefetch(methods[i], object);\n }\n },\n prefetch: function prefetch(methodname, host) {\n var original = host[methodname];\n\n if (original) {\n var optimizer = this;\n host._prefetch_originals[methodname] = original;\n\n host[methodname] = function get_prefetched_value() {\n var argumentsArray = new Array(arguments.length);\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n argumentsArray[i] = arguments[i];\n }\n\n if (optimizer.active) {\n var args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\n\n if (!optimizer.cache[methodname]) {\n optimizer.cache[methodname] = {};\n }\n\n var cached_values = optimizer.cache[methodname];\n\n if (optimizer.has_cached_value(cached_values, args)) {\n return optimizer.get_cached_value(cached_values, args);\n } else {\n var value = original.apply(this, argumentsArray);\n optimizer.cache_value(cached_values, args, value);\n return value;\n }\n }\n\n return original.apply(this, argumentsArray);\n };\n }\n\n return original;\n },\n cache_value: function cache_value(cache, arguments_hash, value) {\n if (this.is_date(value)) value = new Date(value);\n cache[arguments_hash] = value;\n },\n has_cached_value: function has_cached_value(cache, arguments_hash) {\n return cache.hasOwnProperty(arguments_hash);\n },\n get_cached_value: function get_cached_value(cache, arguments_hash) {\n var data = cache[arguments_hash]; //for cached dates - return copy\n\n if (this.is_date(data)) {\n data = new Date(data);\n }\n\n return data;\n },\n is_date: function is_date(value) {\n return value && value.getUTCDate;\n },\n get_arguments_hash: function get_arguments_hash(args) {\n var values = [];\n\n for (var i = 0; i < args.length; i++) {\n values.push(this.stringify_argument(args[i]));\n }\n\n return \"(\" + values.join(\";\") + \")\";\n },\n stringify_argument: function stringify_argument(value) {\n //expecting task or link, or any other data entries, dates and primitive values\n var ret = \"\";\n\n if (value.id) {\n ret = value.id;\n } else if (this.is_date(value)) {\n ret = value.valueOf();\n } else {\n ret = value;\n }\n\n return ret + \"\";\n },\n activate: function activate() {\n this.clear();\n this.active = true;\n },\n deactivate: function deactivate() {\n this.clear();\n this.active = false;\n },\n clear: function clear() {\n this.cache = {};\n },\n setup: function setup(gantt) {\n var override_gantt = [];\n var gantt_methods = ['_isProjectEnd', '_getProjectEnd', '_getSlack'];\n\n if (this.mode == 'auto') {\n if (gantt.config.highlight_critical_path) {\n override_gantt = gantt_methods;\n }\n } else if (this.mode === true) {\n override_gantt = gantt_methods;\n }\n\n this.wrap_methods(override_gantt, gantt);\n },\n update_if_changed: function update_if_changed(gantt) {\n var changed = this.critical_path_mode != gantt.config.highlight_critical_path || this.mode !== gantt.config.optimize_render;\n\n if (changed) {\n this.critical_path_mode = gantt.config.highlight_critical_path;\n this.mode = gantt.config.optimize_render;\n this.setup(gantt);\n }\n }\n };\n\n function activate() {\n gantt._cached_functions.update_if_changed(gantt);\n\n if (!gantt._cached_functions.active) {\n gantt._cached_functions.activate();\n }\n\n return true;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", activate);\n gantt.attachEvent(\"onBeforeDataRender\", activate);\n gantt.attachEvent(\"onBeforeSmartRender\", function () {\n activate();\n });\n gantt.attachEvent(\"onBeforeParse\", activate);\n gantt.attachEvent(\"onDataRender\", function () {\n gantt._cached_functions.deactivate();\n });\n var deactivTimeout = null;\n gantt.attachEvent(\"onSmartRender\", function () {\n if (deactivTimeout) clearTimeout(deactivTimeout);\n deactivTimeout = setTimeout(function () {\n gantt._cached_functions.deactivate();\n }, 1000);\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n gantt._cached_functions.update_if_changed(gantt);\n\n return true;\n });\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (gantt) {\n gantt.getTaskType = function (type) {\n var checkType = type;\n\n if (type && _typeof(type) == \"object\") {\n checkType = type.type;\n }\n\n for (var i in this.config.types) {\n if (this.config.types[i] == checkType) {\n return checkType;\n }\n }\n\n return gantt.config.types.task;\n };\n};","// all builds except for evaluation version get this mockup\n// the evaluation build gets actual codes\nexport default () => {};","var helpers = require(\"../utils/helpers\");\n\nmodule.exports = function (gantt) {\n gantt.isUnscheduledTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isUnscheduledTask. Task object was expected\");\n return !!task.unscheduled || !task.start_date;\n };\n\n gantt._isAllowedUnscheduledTask = function (task) {\n return !!(task.unscheduled && gantt.config.show_unscheduled);\n };\n\n gantt._isTaskInTimelineLimits = function (task) {\n var taskStart = task.start_date ? task.start_date.valueOf() : null;\n var taskEnd = task.end_date ? task.end_date.valueOf() : null;\n return !!(taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf());\n };\n\n gantt.isTaskVisible = function (id) {\n if (!this.isTaskExists(id)) {\n return false;\n }\n\n var task = this.getTask(id);\n\n if (!(this._isAllowedUnscheduledTask(task) || this._isTaskInTimelineLimits(task))) {\n return false;\n }\n\n return !!(this.getGlobalTaskIndex(id) >= 0);\n };\n\n gantt._getProjectEnd = function () {\n if (gantt.config.project_end) {\n return gantt.config.project_end;\n } else {\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.end_date > +b.end_date ? 1 : -1;\n });\n return tasks.length ? tasks[tasks.length - 1].end_date : null;\n }\n };\n\n gantt._getProjectStart = function () {\n if (gantt.config.project_start) {\n return gantt.config.project_start;\n } // use timeline start if project start is not specified\n\n\n if (gantt.config.start_date) {\n return gantt.config.start_date;\n }\n\n if (gantt.getState().min_date) {\n return gantt.getState().min_date;\n } // earliest task start if neither project start nor timeline are specified\n\n\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.start_date > +b.start_date ? 1 : -1;\n });\n return tasks.length ? tasks[0].start_date : null;\n };\n\n var getDefaultTaskDate = function getDefaultTaskDate(item, parent_id) {\n var parent = parent_id && parent_id != gantt.config.root_id ? gantt.getTask(parent_id) : false,\n startDate = null;\n\n if (parent) {\n if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: parent.end_date,\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n startDate = parent.start_date;\n }\n } else if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: gantt._getProjectEnd(),\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n var first = gantt.getTaskByIndex(0);\n startDate = first ? first.start_date ? first.start_date : first.end_date ? gantt.calculateEndDate({\n start_date: first.end_date,\n duration: -gantt.config.duration_step,\n task: item\n }) : null : gantt.config.start_date || gantt.getState().min_date;\n }\n\n gantt.assert(startDate, \"Invalid dates\");\n return new Date(startDate);\n };\n\n gantt._set_default_task_timing = function (task) {\n task.start_date = task.start_date || getDefaultTaskDate(task, gantt.getParent(task));\n task.duration = task.duration || gantt.config.duration_step;\n task.end_date = task.end_date || gantt.calculateEndDate(task);\n };\n\n gantt.createTask = function (item, parent, index) {\n item = item || {};\n if (!gantt.defined(item.id)) item.id = gantt.uid();\n\n if (!item.start_date) {\n item.start_date = getDefaultTaskDate(item, parent);\n }\n\n if (item.text === undefined) {\n item.text = gantt.locale.labels.new_task;\n }\n\n if (item.duration === undefined) {\n item.duration = 1;\n }\n\n if (this.isTaskExists(parent)) {\n this.setParent(item, parent, true);\n var parentObj = this.getTask(parent);\n parentObj.$open = true;\n }\n\n if (!this.callEvent(\"onTaskCreated\", [item])) {\n return null;\n }\n\n if (this.config.details_on_create) {\n //GS-761: assert unique ID\n if (gantt.isTaskExists(item.id)) {\n var task = gantt.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n this.$data.tasksStore.updateItem(item.id, item);\n }\n } else {\n item.$new = true;\n this.silent(function () {\n gantt.$data.tasksStore.addItem(item, index);\n });\n }\n\n this.selectTask(item.id);\n this.refreshData();\n this.showLightbox(item.id);\n } else {\n if (this.addTask(item, parent, index)) {\n this.showTask(item.id);\n this.selectTask(item.id);\n }\n }\n\n return item.id;\n };\n\n gantt._update_flags = function (oldid, newid) {\n // TODO: need a proper way to update all possible flags\n var store = gantt.$data.tasksStore;\n\n if (oldid === undefined) {\n this._lightbox_id = null;\n store.silent(function () {\n store.unselect();\n });\n\n if (this._tasks_dnd && this._tasks_dnd.drag) {\n this._tasks_dnd.drag.id = null;\n }\n } else {\n if (this._lightbox_id == oldid) this._lightbox_id = newid; // TODO: probably can be removed\n\n if (store.getSelectedId() == oldid) {\n store.silent(function () {\n store.unselect(oldid);\n store.select(newid);\n });\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n this._tasks_dnd.drag.id = newid;\n }\n }\n };\n\n var getTaskTimingMode = function getTaskTimingMode(task, force) {\n var task_type = gantt.getTaskType(task.type);\n var state = {\n type: task_type,\n $no_start: false,\n $no_end: false\n };\n\n if (!force && task_type == task.$rendered_type) {\n state.$no_start = task.$no_start;\n state.$no_end = task.$no_end;\n return state;\n }\n\n if (task_type == gantt.config.types.project) {\n //project duration is always defined by children duration\n state.$no_end = state.$no_start = true;\n } else if (task_type != gantt.config.types.milestone) {\n //tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n state.$no_end = !(task.end_date || task.duration);\n state.$no_start = !task.start_date;\n\n if (gantt._isAllowedUnscheduledTask(task)) {\n state.$no_end = state.$no_start = false;\n }\n }\n\n return state;\n };\n\n gantt._init_task_timing = function (task) {\n var task_mode = getTaskTimingMode(task, true);\n var dirty = task.$rendered_type != task_mode.type;\n var task_type = task_mode.type;\n\n if (dirty) {\n task.$no_start = task_mode.$no_start;\n task.$no_end = task_mode.$no_end;\n task.$rendered_type = task_mode.type;\n }\n\n if (dirty && task_type != this.config.types.milestone) {\n if (task_type == this.config.types.project) {\n //project duration is always defined by children duration\n this._set_default_task_timing(task);\n\n task.$calculate_duration = false; // do not recalculate duration below\n }\n }\n\n if (task_type == this.config.types.milestone) {\n task.end_date = task.start_date;\n }\n\n if (task.start_date && task.end_date && task.$calculate_duration !== false) {\n task.duration = this.calculateDuration(task);\n }\n\n if (!task.$calculate_duration) {\n task.$calculate_duration = true;\n }\n\n if (!task.end_date) {\n task.end_date = task.start_date;\n }\n\n task.duration = task.duration || 0; // GS-1145. We should let tasks to have 0 duration if user wants it\n\n if (this.config.min_duration === 0 && task.duration === 0) {\n task.$no_end = false;\n } // work calendar of task has changed\n\n\n var effectiveCalendar = this.getTaskCalendar(task);\n\n if (task.$effective_calendar && task.$effective_calendar !== effectiveCalendar.id) {\n updateTaskTiming(task);\n\n if (this.config.inherit_calendar && this.isSummaryTask(task)) {\n this.eachTask(function (child) {\n updateTaskTiming(child);\n }, task.id);\n }\n }\n\n task.$effective_calendar = effectiveCalendar.id;\n };\n\n function updateTaskTiming(task) {\n task.$effective_calendar = gantt.getTaskCalendar(task).id;\n task.start_date = gantt.getClosestWorkTime({\n dir: \"future\",\n date: task.start_date,\n unit: gantt.config.duration_unit,\n task: task\n });\n task.end_date = gantt.calculateEndDate(task);\n }\n\n gantt.isSummaryTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument <b>task</b>=\" + task + \" of gantt.isSummaryTask. Task object was expected\");\n var mode = getTaskTimingMode(task);\n return !!(mode.$no_end || mode.$no_start);\n }; // downward calculation of project duration\n\n\n gantt.resetProjectDates = function (task) {\n var taskMode = getTaskTimingMode(task);\n\n if (taskMode.$no_end || taskMode.$no_start) {\n var info = getSubtaskInfo(task.id);\n assignProjectDates.call(this, task, taskMode, info.start_date, info.end_date);\n task.$rollup = info.rollup;\n }\n };\n\n function assignProjectDates(task, taskTiming, from, to) {\n if (taskTiming.$no_start) {\n if (from) {\n task.start_date = new Date(from);\n } else {\n task.start_date = getDefaultTaskDate(task, this.getParent(task));\n }\n }\n\n if (taskTiming.$no_end) {\n if (to) {\n task.end_date = new Date(to);\n } else {\n task.end_date = this.calculateEndDate({\n start_date: task.start_date,\n duration: this.config.duration_step,\n task: task\n });\n }\n }\n\n if (taskTiming.$no_start || taskTiming.$no_end) {\n this._init_task_timing(task);\n }\n }\n\n gantt.getSubtaskDuration = function (taskId) {\n var res = 0,\n root = taskId !== undefined ? taskId : gantt.config.root_id;\n this.eachTask(function (child) {\n if (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child)) return;\n res += child.duration;\n }, root);\n return res;\n };\n\n function getSubtaskInfo(taskId) {\n var min = null,\n max = null,\n root = taskId !== undefined ? taskId : gantt.config.root_id,\n rollup = [];\n gantt.eachTask(function (child) {\n if (gantt.getTaskType(child.type) == gantt.config.types.project || gantt.isUnscheduledTask(child)) return;\n\n if (child.rollup) {\n rollup.push(child.id);\n }\n\n if (child.start_date && !child.$no_start && (!min || min > child.start_date.valueOf())) min = child.start_date.valueOf();\n if (child.end_date && !child.$no_end && (!max || max < child.end_date.valueOf())) max = child.end_date.valueOf();\n }, root);\n return {\n start_date: min ? new Date(min) : null,\n end_date: max ? new Date(max) : null,\n rollup: rollup\n };\n }\n\n gantt.getSubtaskDates = function (task_id) {\n var info = getSubtaskInfo(task_id);\n return {\n start_date: info.start_date,\n end_date: info.end_date\n };\n }; // upward calculation of project duration\n\n\n gantt._update_parents = function (taskId, silent, updateAll) {\n if (!taskId) return;\n var task = this.getTask(taskId);\n\n if (task.rollup) {\n updateAll = true;\n }\n\n var pid = this.getParent(task);\n var taskTiming = getTaskTimingMode(task);\n var has_changed = true; // GS-761 the dates check is necessary for adding empty tasks: gantt.addTask({id:\"2\"})\n\n if (updateAll || task.start_date && task.end_date && (taskTiming.$no_start || taskTiming.$no_end)) {\n var oldStart = task.start_date.valueOf(),\n oldEnd = task.end_date.valueOf();\n gantt.resetProjectDates(task); // not refresh parent projects if dates hasn't changed\n\n if (!updateAll && oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\n has_changed = false;\n }\n\n if (has_changed && !silent) {\n this.refreshTask(task.id, true);\n }\n }\n\n if (has_changed && pid && this.isTaskExists(pid)) {\n this._update_parents(pid, silent, updateAll);\n }\n };\n\n gantt.roundDate = function (config) {\n var scale = gantt.getScale();\n\n if (helpers.isDate(config)) {\n config = {\n date: config,\n unit: scale ? scale.unit : gantt.config.duration_unit,\n step: scale ? scale.step : gantt.config.duration_step\n };\n }\n\n var date = config.date,\n steps = config.step,\n unit = config.unit;\n\n if (!scale) {\n return date;\n }\n\n var upper, lower, colIndex;\n\n if (unit == scale.unit && steps == scale.step && +date >= +scale.min_date && +date <= +scale.max_date) {\n //find date in time scale config\n colIndex = Math.floor(gantt.columnIndexByDate(date));\n\n if (!scale.trace_x[colIndex]) {\n colIndex -= 1; // end of time scale\n\n if (scale.rtl) {\n colIndex = 0;\n }\n }\n\n lower = new Date(scale.trace_x[colIndex]);\n upper = gantt.date.add(lower, steps, unit);\n } else {\n colIndex = Math.floor(gantt.columnIndexByDate(date));\n upper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\n\n if (scale.trace_x[colIndex]) {\n upper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]); // end of time scale\n }\n\n while (+upper < +date) {\n upper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\n var tzOffset = upper.getTimezoneOffset();\n upper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\n if (gantt.date[unit + '_start']) upper = gantt.date[unit + '_start'](upper);\n }\n\n lower = gantt.date.add(upper, -1 * steps, unit);\n }\n\n if (config.dir && config.dir == 'future') return upper;\n if (config.dir && config.dir == 'past') return lower;\n\n if (Math.abs(date - lower) < Math.abs(upper - date)) {\n return lower;\n } else {\n return upper;\n }\n };\n\n gantt.correctTaskWorkTime = function (task) {\n if (gantt.config.work_time && gantt.config.correct_work_time) {\n if (!this.isWorkTime(task.start_date, undefined, task)) {\n task.start_date = this.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n task.end_date = this.calculateEndDate(task);\n } else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\n task.end_date = this.calculateEndDate(task);\n }\n }\n };\n\n gantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\n gantt._init_task_timing(task);\n\n return true;\n });\n gantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\n gantt._init_task_timing(task);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskMove\", function (id, parent, tindex) {\n gantt._init_task_timing(gantt.getTask(id));\n\n return true;\n });\n};","// TODO: rework public api for date methods\nvar utils = require(\"../../utils/utils\");\n\nvar createWorkTimeFacade = function createWorkTimeFacade(calendarManager, timeCalculator) {\n return {\n getWorkHours: function getWorkHours(date) {\n return timeCalculator.getWorkHours(date);\n },\n setWorkTime: function setWorkTime(config) {\n return timeCalculator.setWorkTime(config);\n },\n unsetWorkTime: function unsetWorkTime(config) {\n timeCalculator.unsetWorkTime(config);\n },\n isWorkTime: function isWorkTime(date, unit, task) {\n return timeCalculator.isWorkTime(date, unit, task);\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n return timeCalculator.getClosestWorkTime(config);\n },\n calculateDuration: function calculateDuration(start_date, end_date, task) {\n return timeCalculator.calculateDuration(start_date, end_date, task);\n },\n _hasDuration: function _hasDuration(start_date, end_date, task) {\n return timeCalculator.hasDuration(start_date, end_date, task);\n },\n calculateEndDate: function calculateEndDate(start, duration, unit, task) {\n return timeCalculator.calculateEndDate(start, duration, unit, task);\n },\n mergeCalendars: utils.bind(calendarManager.mergeCalendars, calendarManager),\n createCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\n addCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\n getCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\n getCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\n getResourceCalendar: utils.bind(calendarManager.getResourceCalendar, calendarManager),\n getTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\n deleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\n };\n};\n\nmodule.exports = {\n create: createWorkTimeFacade\n};","function CalendarDisabledTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n}\n\nCalendarDisabledTimeStrategy.prototype = {\n getWorkHours: function getWorkHours() {\n return [0, 24];\n },\n setWorkTime: function setWorkTime() {\n return true;\n },\n unsetWorkTime: function unsetWorkTime() {\n return true;\n },\n isWorkTime: function isWorkTime() {\n return true;\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n var config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return config.date;\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n return this._calculateDuration(from, to, unit, step);\n },\n _calculateDuration: function _calculateDuration(start, end, unit, step) {\n var dateHelper = this.$gantt.date;\n var fixedUnits = {\n \"week\": 1000 * 60 * 60 * 24 * 7,\n \"day\": 1000 * 60 * 60 * 24,\n \"hour\": 1000 * 60 * 60,\n \"minute\": 1000 * 60\n };\n var res = 0;\n\n if (fixedUnits[unit]) {\n res = Math.round((end - start) / (step * fixedUnits[unit]));\n } else {\n var from = new Date(start),\n to = new Date(end);\n\n while (from.valueOf() < to.valueOf()) {\n res += 1;\n from = dateHelper.add(from, step, unit);\n }\n\n if (from.valueOf() != end.valueOf()) {\n res += (to - from) / (dateHelper.add(from, step, unit) - from);\n }\n }\n\n return Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit;\n\n if (!unit) {\n return false;\n }\n\n from = new Date(from);\n to = new Date(to);\n return from.valueOf() < to.valueOf();\n },\n hasWorkTime: function hasWorkTime() {\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarDisabledTimeStrategy)) {\n return false;\n }\n\n return true;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var start = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n return this.$gantt.date.add(start, step * duration, unit);\n }\n};\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\n NoWorkTimeCalendar = require(\"./strategy/no_work_time\");\n\nfunction TimeCalculator(calendarManager) {\n this.$gantt = calendarManager.$gantt;\n this.argumentsHelper = createArgumentsHelper(this.$gantt);\n this.calendarManager = calendarManager;\n this.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\n}\n\nTimeCalculator.prototype = {\n _getCalendar: function _getCalendar(config) {\n var calendar;\n\n if (!this.$gantt.config.work_time) {\n calendar = this.$disabledCalendar;\n } else {\n var manager = this.calendarManager;\n\n if (config.task) {\n calendar = manager.getTaskCalendar(config.task);\n } else if (config.id) {\n calendar = manager.getTaskCalendar(config);\n } else if (config.calendar) {\n calendar = config.calendar;\n }\n\n if (!calendar) {\n calendar = manager.getTaskCalendar();\n }\n }\n\n return calendar;\n },\n getWorkHours: function getWorkHours(config) {\n config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.getWorkHours(config.date);\n },\n setWorkTime: function setWorkTime(config, calendar) {\n config = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\n if (!calendar) calendar = this.calendarManager.getCalendar(); // Global\n\n return calendar.setWorkTime(config);\n },\n unsetWorkTime: function unsetWorkTime(config, calendar) {\n config = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\n if (!calendar) calendar = this.calendarManager.getCalendar(); // Global\n\n return calendar.unsetWorkTime(config);\n },\n isWorkTime: function isWorkTime(date, unit, task, calendar) {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n calendar = this._getCalendar(config);\n return calendar.isWorkTime(config);\n },\n getClosestWorkTime: function getClosestWorkTime(config) {\n config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.getClosestWorkTime(config);\n },\n calculateDuration: function calculateDuration() {\n // start_date_date, end_date, task\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.calculateDuration(config);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.hasDuration(config);\n },\n calculateEndDate: function calculateEndDate(config) {\n // start_date, duration, unit, task\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n var calendar = this._getCalendar(config);\n\n return calendar.calculateEndDate(config);\n }\n};\nmodule.exports = TimeCalculator;","module.exports = function () {\n function getResourcesCalendarKey(resourceAssignments) {\n return resourceAssignments.map(function (res) {\n if (res && res.resource_id) {\n return res.resource_id;\n } else {\n return res;\n }\n }).sort().join(\"-\");\n }\n\n var dynamicCalendars = {};\n\n function mergeResourceCalendars(resourceAssignments, manager) {\n return manager.mergeCalendars(resourceAssignments.map(function (assignment) {\n var resourceId = assignment && assignment.resource_id ? assignment.resource_id : assignment;\n return manager.getResourceCalendar(resourceId);\n }));\n }\n\n function getCalendarIdFromMultipleResources(resourceAssignments, manager) {\n var key = getResourcesCalendarKey(resourceAssignments);\n\n if (!resourceAssignments.length) {\n return null;\n } else if (resourceAssignments.length === 1) {\n return manager.getResourceCalendar(key).id;\n } else if (dynamicCalendars[key]) {\n return dynamicCalendars[key].id;\n } else {\n var tempCalendar = mergeResourceCalendars(resourceAssignments, manager);\n dynamicCalendars[key] = tempCalendar;\n return manager.addCalendar(tempCalendar);\n }\n }\n\n return {\n getCalendarIdFromMultipleResources: getCalendarIdFromMultipleResources\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = {\n isLegacyResourceCalendarFormat: function isLegacyResourceCalendarFormat(resourceCalendarsProperty) {\n // modern format:\n //gantt.config.resource_calendars = {\n //\tresourceId: calendarId,\n //\tresourceId: calendarId,\n //\tresourceId: calendarId\n //\t};\n // legacy format:\n // gantt.config.resource_calendars = {\n //\t\"resourceProperty\": {\n //\t\tresourceId: calendarId,\n //\t\tresourceId: calendarId,\n //\t\tresourceId: calendarId\n //\t\t}\n //\t};\n if (!resourceCalendarsProperty) {\n return false;\n }\n\n for (var i in resourceCalendarsProperty) {\n if (resourceCalendarsProperty[i] && _typeof(resourceCalendarsProperty[i]) === \"object\") {\n return true;\n }\n }\n\n return false;\n },\n getResourceProperty: function getResourceProperty(config) {\n var resourceCalendarsConfig = config.resource_calendars;\n var propertyName = config.resource_property;\n\n if (this.isLegacyResourceCalendarFormat(resourceCalendarsConfig)) {\n for (var i in config) {\n propertyName = i;\n break;\n }\n }\n\n return propertyName;\n },\n getCalendarIdFromLegacyConfig: function getCalendarIdFromLegacyConfig(task, config) {\n if (config) {\n for (var field in config) {\n var resource = config[field];\n\n if (task[field]) {\n var calendarId = resource[task[field]];\n\n if (calendarId) {\n return calendarId;\n }\n }\n }\n }\n\n return null;\n }\n};","export class DateDurationCache {\n\tprivate _cache: any;\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\t_getCacheObject(startDate: Date, unit: string, step:number){\n\t\tconst cache = this._cache;\n\t\tif (!cache[unit]) {\n\t\t\tcache[unit] = [];\n\t\t}\n\t\tlet unitCache = cache[unit];\n\t\tif(!unitCache) {\n\t\t\tunitCache = cache[unit] = {};\n\t\t}\n\n\t\tlet stepCache = unitCache[step];\n\t\tif(!stepCache) {\n\t\t\tstepCache = unitCache[step] = {};\n\t\t}\n\n\t\tconst year = startDate.getFullYear();\n\t\tlet yearCache = stepCache[year];\n\t\tif(!yearCache){\n\t\t\tyearCache = stepCache[year] = {durations: {}, endDates: {}};\n\t\t}\n\n\t\treturn yearCache;\n\t}\n\t_endDateCacheKey(startDate: number, duration: number){\n\t\treturn String(startDate) + \"-\" + String(duration);\n\t}\n\t_durationCacheKey(startDate: number, endDate: number){\n\t\treturn String(startDate) + \"-\" + String(endDate);\n\t}\n\tgetEndDate(startDate: Date, duration: number, unit: string, step: number, compute: () => Date): number|null{\n\t\tconst cache = this._getCacheObject(startDate, unit, step);\n\n\t\tconst startDateTimestamp = startDate.valueOf();\n\t\tconst key = this._endDateCacheKey(startDateTimestamp, duration);\n\t\tlet endDate;\n\t\tif(cache.endDates[key] === undefined){\n\t\t\tconst result = compute();\n\t\t\tconst resultTimestamp = result.valueOf();\n\t\t\tcache.endDates[key] = resultTimestamp;\n\t\t\tcache.durations[this._durationCacheKey(startDateTimestamp, resultTimestamp)] = duration;\n\t\t\tendDate = result;\n\t\t}else{\n\t\t\tendDate = new Date(cache.endDates[key]);\n\t\t}\n\n\t\treturn endDate;\n\t}\n\n\tgetDuration(startDate: Date, endDate: Date, unit: string, step: number, compute: () => number): number|null{\n\t\tconst cache = this._getCacheObject(startDate, unit, step);\n\n\t\tconst startDateTimestamp = startDate.valueOf();\n\t\tconst endDateTimestamp = endDate.valueOf();\n\t\tconst key = this._durationCacheKey(startDateTimestamp, endDateTimestamp);\n\t\tlet duration;\n\t\tif(cache.durations[key] === undefined){\n\t\t\tconst result = compute();\n\t\t\tcache.durations[key] = result.valueOf();\n\n\t\t\t// can't populate end date due to logic of end date calculation, current unit tests capture it\n\t\t\t// cache.endDates[this._endDateCacheKey(startDateTimestamp, result)] = endDateTimestamp;\n\t\t\tduration = result;\n\t\t}else{\n\t\t\tduration = cache.durations[key];\n\t\t}\n\n\t\treturn duration;\n\t}\n\n\tclear(): void{\n\t\tthis._cache = {};\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, value: Date): number|boolean {\n\t\tconst cache = this._cache;\n\t\tif (cache && cache[unit]) {\n\t\t\tconst units = cache[unit];\n\t\t\tif(units === undefined){\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tconst subCache = units[value.getFullYear()];\n\t\t\tif (subCache && subCache[timestamp] !== undefined) {\n\t\t\t\treturn subCache[timestamp];\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\tsetItem(unit: string, timestamp: string, value: boolean, rawValue: Date): 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\tconst unitCache = cache[unit];\n\n\t\tconst year = rawValue.getFullYear();\n\t\tlet yearCache = unitCache[year];\n\t\tif(!yearCache){\n\t\t\tyearCache = unitCache[year] = {};\n\t\t}\n\t\tyearCache[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, Array<Map<string, boolean>>>;\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tgetItem(unit: string, timestamp: string, value: Date): number|boolean {\n\t\tif (this._cache.has(unit)) {\n\t\t\tconst unitCache = this._cache.get(unit);\n\n\t\t\tconst subCache = unitCache[value.getFullYear()];\n\t\t\tif (subCache && subCache.has(timestamp)) {\n\t\t\t\treturn subCache.get(timestamp);\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n\tsetItem(unit: string, timestamp: string, value: boolean, rawValue: Date): void {\n\t\tif (!unit || !timestamp) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cache = this._cache;\n\t\tconst year = rawValue.getFullYear();\n\n\t\tlet unitCache;\n\t\tif (!cache.has(unit)) {\n\t\t\tunitCache = [];\n\t\t\tcache.set(unit, unitCache);\n\t\t} else {\n\t\t\tunitCache = cache.get(unit);\n\t\t}\n\n\t\tlet yearCache = unitCache[year];\n\t\tif(!yearCache){\n\t\t\tyearCache = unitCache[year] = new Map<string, boolean>();\n\t\t}\n\n\n\t\tyearCache.set(timestamp, value);\n\t}\n\tclear(): void{\n\t\tthis._cache = new Map<string, Array<Map<string, boolean>>>();\n\t}\n}","var createCacheObject = require(\"./work_unit_cache\").createCacheObject;\n\nvar LargerUnitsCache = require(\"./work_unit_cache\").LargerUnitsCache;\n\nvar utils = require(\"../../../utils/utils\");\n\nvar DateDurationCache = require(\"./work_unit_cache/date_duration_cache\").DateDurationCache;\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n this._workingUnitsCache = createCacheObject();\n this._largeUnitsCache = new LargerUnitsCache(this);\n this._dateDurationCache = new DateDurationCache();\n this._worktime = null;\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n}\n\nCalendarWorkTimeStrategy.prototype = {\n units: [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\"],\n _clearCaches: function _clearCaches() {\n this._workingUnitsCache.clear();\n\n this._largeUnitsCache.clear();\n\n this._dateDurationCache.clear();\n },\n // cache previously calculated worktime\n _getUnitOrder: function _getUnitOrder(unit) {\n for (var i = 0, len = this.units.length; i < len; i++) {\n if (this.units[i] == unit) return i;\n }\n },\n _resetTimestampCache: function _resetTimestampCache() {\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n },\n _timestamp: function _timestamp(settings) {\n // minor optimization, store calculated timestamps to reduce computations\n // reset cache when number of keys exceeds large number where key lookup may became more expensive than the recalculation\n if (this._cached_timestamps_count > 1000000) {\n this._resetTimestampCache();\n }\n\n var timestamp = null;\n\n if (settings.day || settings.day === 0) {\n timestamp = settings.day;\n } else if (settings.date) {\n var value = String(settings.date.valueOf());\n\n if (this._cached_timestamps[value]) {\n timestamp = this._cached_timestamps[value];\n } else {\n // store worktime datestamp in utc so it could be recognized in different timezones (e.g. opened locally and sent to the export service in different timezone)\n timestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n this._cached_timestamps[value] = timestamp;\n this._cached_timestamps_count++;\n }\n }\n\n return timestamp;\n },\n _checkIfWorkingUnit: function _checkIfWorkingUnit(date, unit) {\n if (!this[\"_is_work_\" + unit]) return true;\n return this[\"_is_work_\" + unit](date);\n },\n //checkings for particular time units\n //methods for month-year-week can be defined, otherwise always return 'true'\n _is_work_day: function _is_work_day(date) {\n var val = this._getWorkHours(date);\n\n if (Array.isArray(val)) {\n return val.length > 0;\n }\n\n return false;\n },\n _is_work_hour: function _is_work_hour(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var value = date.getHours();\n\n for (var i = 0; i < hours.length; i++) {\n if (value >= hours[i].startHour && value < hours[i].endHour) {\n return true;\n }\n }\n\n return false;\n },\n _getTimeOfDayStamp: function _getTimeOfDayStamp(date, dayEnd) {\n var hours = date.getHours();\n\n if (!date.getHours() && !date.getMinutes() && dayEnd) {\n hours = 24;\n }\n\n return hours * 60 * 60 + date.getMinutes() * 60;\n },\n _is_work_minute: function _is_work_minute(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var checkTime = this._getTimeOfDayStamp(date);\n\n for (var i = 0; i < hours.length; i++) {\n if (checkTime >= hours[i].start && checkTime < hours[i].end) {\n return true;\n }\n }\n\n return false;\n },\n _nextDate: function _nextDate(start, unit, step) {\n return this.$gantt.date.add(start, step, unit);\n },\n _getWorkUnitsBetweenGeneric: function _getWorkUnitsBetweenGeneric(from, to, unit, step) {\n var dateHelper = this.$gantt.date;\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var units = 0;\n var next = null;\n var stepStart, stepEnd; // calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n // and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n // durations must be rounded later\n\n var checkFirst = false;\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n\n if (stepStart.valueOf() != start.valueOf()) {\n checkFirst = true;\n }\n\n var checkLast = false;\n stepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\n if (stepEnd.valueOf() != to.valueOf()) {\n checkLast = true;\n }\n\n var isLastStep = false;\n\n while (start.valueOf() < end.valueOf()) {\n next = this._nextDate(start, unit, step);\n isLastStep = next.valueOf() > end.valueOf();\n\n if (this._isWorkTime(start, unit)) {\n if (checkFirst || checkLast && isLastStep) {\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n stepEnd = dateHelper.add(stepStart, step, unit);\n }\n\n if (checkFirst) {\n checkFirst = false;\n next = this._nextDate(stepStart, unit, step);\n units += (stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else if (checkLast && isLastStep) {\n checkLast = false;\n units += (end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else {\n units++;\n }\n } else {\n var unitOrder = this._getUnitOrder(unit);\n\n var biggerTimeUnit = this.units[unitOrder - 1];\n\n if (biggerTimeUnit && !this._isWorkTime(start, biggerTimeUnit)) {\n next = this._getClosestWorkTimeFuture(start, biggerTimeUnit);\n }\n }\n\n start = next;\n }\n\n return units;\n },\n _getMinutesPerHour: function _getMinutesPerHour(date) {\n var hourStart = this._getTimeOfDayStamp(date);\n\n var hourEnd = this._getTimeOfDayStamp(this._nextDate(date, \"hour\", 1));\n\n if (hourEnd === 0) {\n hourEnd = 24 * 60 * 60;\n }\n\n var worktimes = this._getWorkHours(date);\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (hourStart >= interval.start && hourEnd <= interval.end) {\n return 60; // hour inside a working interval, all hour is a work hour\n } else if (hourStart < interval.end && hourEnd > interval.start) {\n // hour is partially work time\n var duration = Math.min(hourEnd, interval.end) - Math.max(hourStart, interval.start);\n return duration / 60;\n }\n }\n\n return 0;\n },\n _getMinutesPerDay: function _getMinutesPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationMinutes;\n });\n return res;\n },\n getHoursPerDay: function getHoursPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationHours;\n });\n return res;\n },\n _getWorkUnitsForRange: function _getWorkUnitsForRange(from, to, unit, step) {\n var total = 0;\n var start = new Date(from),\n end = new Date(to);\n var getUnitsPerDay;\n\n if (unit == \"minute\") {\n getUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\n } else {\n getUnitsPerDay = utils.bind(this.getHoursPerDay, this);\n }\n\n while (start.valueOf() < end.valueOf()) {\n if (end - start > 1000 * 60 * 60 * 24 * 32 && start.getDate() === 0) {\n var units = this._largeUnitsCache.getMinutesPerMonth(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 1, \"month\");\n continue;\n } else if (end - start > 1000 * 60 * 60 * 24 * 16) {\n var weekStart = this.$gantt.date.week_start(new Date(start));\n\n if (start.valueOf() === weekStart.valueOf()) {\n var units = this._largeUnitsCache.getMinutesPerWeek(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 7, \"day\");\n continue;\n }\n } //\tif (this._isWorkTime(start, \"day\")) {\n\n\n total += getUnitsPerDay(start); //\t}\n\n start = this._nextDate(start, \"day\", 1);\n }\n\n return total / step;\n },\n _getMinutesBetweenSingleDay: function _getMinutesBetweenSingleDay(from, to) {\n var range = this._getIntervalTimestamp(from, to);\n\n var worktimes = this._getWorkHours(from);\n\n var result = 0;\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n result += (minuteTo - minuteFrom) / 60;\n range.start = minuteTo;\n }\n }\n\n return Math.floor(result);\n },\n _getMinutesBetween: function _getMinutesBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return this._getMinutesBetweenSingleDay(from, to);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd);\n\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd);\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return total;\n }\n },\n // optimized method for calculating work units duration of large time spans\n // implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\n _getHoursBetween: function _getHoursBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return Math.round(this._getMinutesBetweenSingleDay(from, to) / 60);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd, unit, step) / 60;\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd, unit, step) / 60;\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return Math.round(total);\n }\n },\n getConfig: function getConfig() {\n return this._worktime;\n },\n _setConfig: function _setConfig(settings) {\n this._worktime = settings;\n\n this._parseSettings();\n\n this._clearCaches();\n },\n _parseSettings: function _parseSettings() {\n var settings = this.getConfig();\n settings.parsed = {\n dates: {},\n hours: null,\n haveCustomWeeks: false,\n customWeeks: {},\n customWeeksRangeStart: null,\n customWeeksRangeEnd: null,\n customWeeksBoundaries: []\n };\n settings.parsed.hours = this._parseHours(settings.hours);\n\n for (var i in settings.dates) {\n settings.parsed.dates[i] = this._parseHours(settings.dates[i]);\n }\n\n if (settings.customWeeks) {\n var minCustomRangeStart = null;\n var maxCustomRangeEnd = null;\n\n for (var i in settings.customWeeks) {\n var customTime = settings.customWeeks[i];\n\n if (customTime.from && customTime.to) {\n var rangeStart = customTime.from;\n var rangeEnd = customTime.to;\n\n if (!minCustomRangeStart || minCustomRangeStart > rangeStart.valueOf()) {\n minCustomRangeStart = rangeStart.valueOf();\n }\n\n if (!maxCustomRangeEnd || maxCustomRangeEnd < rangeEnd.valueOf()) {\n maxCustomRangeEnd = rangeEnd.valueOf();\n }\n\n settings.parsed.customWeeksBoundaries.push({\n from: rangeStart.valueOf(),\n fromReadable: new Date(rangeStart),\n to: rangeEnd.valueOf(),\n toReadable: new Date(rangeEnd),\n name: i\n });\n settings.parsed.haveCustomWeeks = true;\n var currentWeek = settings.parsed.customWeeks[i] = {\n from: customTime.from,\n to: customTime.to,\n hours: this._parseHours(customTime.hours),\n dates: {}\n };\n\n for (var d in customTime.dates) {\n currentWeek.dates[d] = this._parseHours(customTime.dates[d]);\n }\n }\n }\n\n settings.parsed.customWeeksRangeStart = minCustomRangeStart;\n settings.parsed.customWeeksRangeEnd = maxCustomRangeEnd;\n }\n },\n _tryChangeCalendarSettings: function _tryChangeCalendarSettings(payload) {\n var backup = JSON.stringify(this.getConfig());\n payload();\n\n if (!this.hasWorkTime()) {\n //\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n this._setConfig(JSON.parse(backup));\n\n this._clearCaches();\n\n return false;\n }\n\n return true;\n },\n _arraysEqual: function _arraysEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n if (a.length != b.length) return false;\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n },\n _compareSettings: function _compareSettings(mySettings, thatSettings) {\n if (!this._arraysEqual(mySettings.hours, thatSettings.hours)) {\n return false;\n }\n\n var myDays = Object.keys(mySettings.dates);\n var otherDates = Object.keys(thatSettings.dates);\n myDays.sort();\n otherDates.sort();\n\n if (!this._arraysEqual(myDays, otherDates)) {\n return false;\n }\n\n for (var i = 0; i < myDays.length; i++) {\n var timestamp = myDays[i];\n var myHours = mySettings.dates[timestamp];\n var otherHours = mySettings.dates[timestamp]; // day settings not equal\n\n if (myHours !== otherHours && // but still can be two arrays with the equivalent hour settings\n !(Array.isArray(myHours) && Array.isArray(otherHours) && this._arraysEqual(myHours, otherHours))) {\n return false;\n }\n }\n\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarWorkTimeStrategy)) {\n return false;\n }\n\n var mySettings = this.getConfig();\n var thatSettings = calendar.getConfig();\n\n if (!this._compareSettings(mySettings, thatSettings)) {\n return false;\n }\n\n if (mySettings.parsed.haveCustomWeeks && thatSettings.parsed.haveCustomWeeks) {\n if (mySettings.parsed.customWeeksBoundaries.length != thatSettings.parsed.customWeeksBoundaries.length) {\n return false;\n }\n\n for (var i in mySettings.parsed.customWeeks) {\n var myWeek = mySettings.parsed.customWeeks[i];\n var thatWeek = thatSettings.parsed.customWeeks[i];\n\n if (!thatWeek) {\n return false;\n }\n\n if (!this._compareSettings(myWeek, thatWeek)) {\n return false;\n }\n }\n } else if (mySettings.parse.haveCustomWeeks !== thatSettings.parsed.haveCustomWeeks) {\n return false;\n }\n\n return true;\n },\n getWorkHours: function getWorkHours() {\n var config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n return this._getWorkHours(config.date, false);\n },\n _getWorkHours: function _getWorkHours(date, parsed) {\n var calendar = this.getConfig();\n\n if (parsed !== false) {\n calendar = calendar.parsed;\n }\n\n if (!date) {\n return calendar.hours;\n }\n\n var dateValue = this._timestamp({\n date: date\n });\n\n if (calendar.haveCustomWeeks) {\n if (calendar.customWeeksRangeStart <= dateValue && calendar.customWeeksRangeEnd > dateValue) {\n for (var i = 0; i < calendar.customWeeksBoundaries.length; i++) {\n if (calendar.customWeeksBoundaries[i].from <= dateValue && calendar.customWeeksBoundaries[i].to > dateValue) {\n calendar = calendar.customWeeks[calendar.customWeeksBoundaries[i].name];\n break;\n }\n }\n }\n }\n\n var hours = true;\n\n if (calendar.dates[dateValue] !== undefined) {\n hours = calendar.dates[dateValue]; //custom day\n } else if (calendar.dates[date.getDay()] !== undefined) {\n hours = calendar.dates[date.getDay()]; //week day\n }\n\n if (hours === true) {\n return calendar.hours;\n } else if (hours) {\n return hours;\n }\n\n return [];\n },\n _getIntervalTimestamp: function _getIntervalTimestamp(from, to) {\n var res = {\n start: 0,\n end: 0\n };\n res.start = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n var endHours = to.getHours();\n\n if (!endHours && !to.getMinutes() && !to.getSeconds() && from.valueOf() < to.valueOf()) {\n endHours = 24;\n }\n\n res.end = endHours * 60 * 60 + to.getMinutes() * 60 + to.getSeconds();\n return res;\n },\n _parseHours: function _parseHours(hours) {\n if (Array.isArray(hours)) {\n var timestampRanges = []; // worktime as seconds range\n\n hours.forEach(function (hour) {\n if (typeof hour === \"number\") {\n timestampRanges.push(hour * 60 * 60);\n } else if (typeof hour === \"string\") {\n // \"12-13\", or \"12:00-13:00\", or \"12:00:00-13:00:00\"\n hour.split(\"-\").map(function (time) {\n return time.trim();\n }).forEach(function (part) {\n var parsed = part.split(\":\").map(function (time) {\n return time.trim();\n });\n var value = parseInt(parsed[0] * 60 * 60);\n\n if (parsed[1]) {\n value += parseInt(parsed[1] * 60);\n }\n\n if (parsed[2]) {\n value += parseInt(parsed[2]);\n }\n\n timestampRanges.push(value);\n });\n }\n });\n var timerangeConfig = [];\n\n for (var i = 0; i < timestampRanges.length; i += 2) {\n var start = timestampRanges[i];\n var end = timestampRanges[i + 1];\n var duration = end - start;\n timerangeConfig.push({\n start: start,\n end: end,\n startHour: Math.floor(start / (60 * 60)),\n startMinute: Math.floor(start / 60),\n endHour: Math.ceil(end / (60 * 60)),\n endMinute: Math.ceil(end / 60),\n durationSeconds: duration,\n durationMinutes: duration / 60,\n durationHours: duration / (60 * 60)\n });\n }\n\n return timerangeConfig;\n } else {\n return hours;\n }\n },\n setWorkTime: function setWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n var hours = settings.hours !== undefined ? settings.hours : true;\n\n var timestamp = this._timestamp(settings);\n\n var calendarConfig = this.getConfig();\n\n if (timestamp !== null) {\n calendarConfig.dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.hours = hours;\n }\n\n if (settings.customWeeks) {\n if (!calendarConfig.customWeeks) {\n calendarConfig.customWeeks = {};\n }\n\n for (var i in settings.customWeeks) {\n calendarConfig.customWeeks[i] = settings.customWeeks[i];\n }\n }\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n unsetWorkTime: function unsetWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n if (!settings) {\n this.reset_calendar();\n } else {\n var timestamp = this._timestamp(settings);\n\n if (timestamp !== null) {\n delete this.getConfig().dates[timestamp];\n }\n } // Clear work units cache\n\n\n this._clearCaches();\n }, this));\n },\n _isWorkTime: function _isWorkTime(date, unit) {\n // Check if this item has in the cache\n var useCache = true; //unit === \"day\"; // use cache only for days. In case of hours/minutes cache size grows too large and the overhead exceeds the gains\n\n var isWorkUnit = -1;\n var dateKey = null;\n\n if (useCache) {\n // use string keys\n dateKey = String(date.valueOf());\n isWorkUnit = this._workingUnitsCache.getItem(unit, dateKey, date);\n }\n\n if (isWorkUnit == -1) {\n // calculate if not cached\n isWorkUnit = this._checkIfWorkingUnit(date, unit);\n\n if (useCache) {\n this._workingUnitsCache.setItem(unit, dateKey, isWorkUnit, date);\n }\n }\n\n return isWorkUnit;\n },\n isWorkTime: function isWorkTime() {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._isWorkTime(config.date, config.unit);\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n if (!config.unit) {\n return false;\n } //return this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n\n\n var self = this;\n return this._dateDurationCache.getDuration(config.start_date, config.end_date, config.unit, config.step, function () {\n return self._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n });\n },\n _calculateDuration: function _calculateDuration(from, to, unit, step) {\n var res = 0;\n var sign = 1;\n\n if (from.valueOf() > to.valueOf()) {\n var tmp = to;\n to = from;\n from = tmp;\n sign = -1;\n }\n\n if (unit == \"hour\" && step == 1) {\n res = this._getHoursBetween(from, to, unit, step);\n } else if (unit == \"minute\" && step == 1) {\n // quick calculation for minutes with 1 minute step\n res = this._getMinutesBetween(from, to, unit, step);\n } else {\n res = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n } // getWorkUnits.. returns decimal durations\n\n\n return sign * Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n\n if (!unit) {\n return false;\n }\n\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n\n while (start.valueOf() < end.valueOf()) {\n if (this._isWorkTime(start, unit)) return true;\n start = this._nextDate(start, unit, step);\n }\n\n return false;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n if (!unit) return false;\n var mult = config.duration >= 0 ? 1 : -1;\n duration = Math.abs(duration * 1); //\tvar endDate = this._calculateEndDate(from, duration, unit, step * mult);\n //\treturn endDate;\n\n var self = this;\n return this._dateDurationCache.getEndDate(from, duration, unit, step * mult, function () {\n return self._calculateEndDate(from, duration, unit, step * mult);\n });\n },\n _calculateEndDate: function _calculateEndDate(from, duration, unit, step) {\n if (!unit) return false;\n\n if (step == 1 && unit == \"minute\") {\n return this._calculateMinuteEndDate(from, duration, step);\n } else if (step == -1 && unit == \"minute\") {\n return this._subtractMinuteDate(from, duration, step);\n } else if (step == 1 && unit == \"hour\") {\n return this._calculateHourEndDate(from, duration, step);\n } else {\n var interval = this._addInterval(from, duration, unit, step, null);\n\n return interval.end;\n }\n },\n _addInterval: function _addInterval(start, duration, unit, step, stopAction) {\n var added = 0;\n var current = start;\n var previous = new Date(current.valueOf() - 1);\n var timezoneDifferenceWithPrevious = current.getTimezoneOffset() - previous.getTimezoneOffset();\n\n while (added < duration && !(stopAction && stopAction(current))) {\n var next = this._nextDate(current, unit, step);\n\n if (timezoneDifferenceWithPrevious < 0 && step > 0) {\n // the step parameter is for backward scheduling and startDate calcuation\n next.setTime(next.getTime() + 60 * 1000 * timezoneDifferenceWithPrevious);\n timezoneDifferenceWithPrevious = false;\n }\n\n var timezoneDifference = next.getTimezoneOffset() - current.getTimezoneOffset();\n\n if (timezoneDifference < 0 && step > 0 && unit != \"day\") {\n // the step parameter is for backward scheduling and startDate calcuation\n next.setTime(next.getTime() + 60 * 1000 * timezoneDifference);\n }\n\n var dateValue = new Date(next.valueOf() + 1);\n\n if (step > 0) {\n dateValue = new Date(next.valueOf() - 1);\n }\n\n var workTimeCheck = this._isWorkTime(dateValue, unit);\n\n if (workTimeCheck) {\n added++;\n }\n\n current = next;\n }\n\n return {\n end: current,\n start: start,\n added: added\n };\n },\n _addHoursUntilDayEnd: function _addHoursUntilDayEnd(from, duration) {\n var dayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(from)), 1, \"day\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, dayEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeHours = (minuteTo - minuteFrom) / (60 * 60);\n\n if (rangeHours > left) {\n rangeHours = left;\n minuteTo = minuteFrom + left * 60 * 60;\n }\n\n var addHours = Math.round((minuteTo - minuteFrom) / (60 * 60));\n added += addHours;\n left -= addHours;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = dayEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _calculateHourEndDate: function _calculateHourEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n\n var interval = this._addHoursUntilDayEnd(start, duration);\n\n added = interval.added;\n start = interval.end;\n var durationLeft = duration - added;\n\n if (durationLeft) {\n var current = start;\n\n while (added < duration) {\n var next = this._nextDate(current, \"day\", step); // reset to day start in case DST switch happens in the process\n\n\n next.setHours(0);\n next.setMinutes(0);\n next.setSeconds(0);\n var hoursPerDay = 0;\n\n if (step > 0) {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() - 1));\n } else {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() + 1));\n }\n\n if (added + hoursPerDay >= duration) {\n break;\n } else {\n added += hoursPerDay;\n }\n\n current = next;\n }\n\n start = current;\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n interval = this._addHoursUntilDayEnd(start, durationLeft);\n start = interval.end;\n }\n\n return start;\n },\n _addMinutesUntilHourEnd: function _addMinutesUntilHourEnd(from, duration) {\n if (from.getMinutes() === 0) {\n // already at hour end\n return {\n added: 0,\n end: new Date(from)\n };\n }\n\n var hourEnd = this.$gantt.date.add(this.$gantt.date.hour_start(new Date(from)), 1, \"hour\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, hourEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeMinutes = (minuteTo - minuteFrom) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom + left * 60;\n }\n\n var addMinutes = Math.round((minuteTo - minuteFrom) / 60);\n left -= addMinutes;\n added += addMinutes;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = hourEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinutesUntilHourStart: function _subtractMinutesUntilHourStart(from, duration) {\n var hourStart = this.$gantt.date.hour_start(new Date(from));\n var added = 0;\n var left = duration;\n var hourStartTimestamp = hourStart.getHours() * 60 * 60 + hourStart.getMinutes() * 60 + hourStart.getSeconds();\n var initialDateTimestamp = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = worktimes.length - 1; i >= 0 && added < duration; i--) {\n var interval = worktimes[i];\n\n if (initialDateTimestamp > interval.start && hourStartTimestamp <= interval.end) {\n var minuteFrom = Math.min(initialDateTimestamp, interval.end);\n var minuteTo = Math.max(hourStartTimestamp, interval.start); //\tvar minuteFrom = Math.max(interval.start, currentHour.start);\n //\tvar minuteTo = Math.min(interval.end, currentHour.end);\n\n var rangeMinutes = (minuteFrom - minuteTo) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom - left * 60;\n }\n\n var addMinutes = Math.abs(Math.round((minuteFrom - minuteTo) / 60));\n left -= addMinutes;\n added += addMinutes;\n initialDateTimestamp = minuteTo;\n }\n }\n\n var intervalEnd = hourStart;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, initialDateTimestamp);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinuteDate: function _subtractMinuteDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || -1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._subtractMinutesUntilHourStart(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start));\n var iterateFromDayEnd = false;\n\n if (start.valueOf() === dayStart.valueOf()) {\n dayStart = this.$gantt.date.add(dayStart, -1, \"day\");\n iterateFromDayEnd = true;\n } //var dayStartTimestamp = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n\n var dayEnd = new Date(dayStart.getFullYear(), dayStart.getMonth(), dayStart.getDate(), 23, 59, 59, 999).valueOf();\n\n if (dayEnd !== calculatedDay) {\n daySchedule = this._getWorkHours(dayStart);\n minutesInDay = this._getMinutesPerDay(dayStart);\n calculatedDay = dayEnd;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start, iterateFromDayEnd);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n\n if (daySchedule[daySchedule.length - 1].end <= timestamp) {\n if (left > minutesInDay) {\n added += minutesInDay;\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = daySchedule.length - 1; i >= 0; i--) {\n if (daySchedule[i].start < timestamp - 1 && daySchedule[i].end >= timestamp - 1) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.end && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, -workInterval.durationMinutes, \"minute\");\n } else if (left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n start = this._nextDate(start, \"hour\", step);\n } else {\n addedInterval = this._subtractMinutesUntilHourStart(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n if (start.getHours() === 0 && start.getMinutes() === 0 && start.getSeconds() === 0) {\n var prev = this._getClosestWorkTimePast(start, \"hour\");\n\n if (prev.valueOf() === start.valueOf()) {\n var prev = this.$gantt.date.add(start, -1, \"day\");\n\n var times = this._getWorkHours(prev);\n\n if (times.length) {\n var lastInterval = times[times.length - 1];\n prev.setSeconds(lastInterval.durationSeconds);\n }\n }\n\n start = prev;\n } else {\n start = this._getClosestWorkTimePast(new Date(start - 1), \"hour\");\n }\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._subtractMinutesUntilHourStart(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n _calculateMinuteEndDate: function _calculateMinuteEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._addMinutesUntilHourEnd(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n if (dayStart !== calculatedDay) {\n daySchedule = this._getWorkHours(start);\n minutesInDay = this._getMinutesPerDay(start);\n calculatedDay = dayStart;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(this.$gantt.date.day_start(start), 1, \"day\");\n continue;\n }\n\n if (daySchedule[0].start >= timestamp) {\n if (left >= minutesInDay) {\n added += minutesInDay;\n\n if (left == minutesInDay) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, daySchedule[daySchedule.length - 1].end);\n break;\n } else {\n start = this.$gantt.date.add(start, 1, \"day\");\n start = this.$gantt.date.day_start(start);\n }\n\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = 0; i < daySchedule.length; i++) {\n if (daySchedule[i].start <= timestamp && daySchedule[i].end > timestamp) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.start && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, workInterval.durationMinutes, \"minute\");\n } else if (left <= workInterval.endMinute - timestamp / 60) {\n added += left;\n start = this.$gantt.date.add(start, left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n start = this._nextDate(start, \"hour\", step);\n } else {\n addedInterval = this._addMinutesUntilHourEnd(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n start = this._getClosestWorkTimeFuture(start, \"hour\");\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._addMinutesUntilHourEnd(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n getClosestWorkTime: function getClosestWorkTime() {\n var settings = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\n },\n _getClosestWorkTime: function _getClosestWorkTime(inputDate, unit, direction) {\n var result = new Date(inputDate);\n\n if (this._isWorkTime(result, unit)) {\n return result;\n }\n\n result = this.$gantt.date[unit + '_start'](result);\n\n if (direction == 'any' || !direction) {\n var closestFuture = this._getClosestWorkTimeFuture(result, unit);\n\n var closestPast = this._getClosestWorkTimePast(result, unit);\n\n if (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\n result = closestFuture;\n } else {\n result = closestPast;\n }\n } else if (direction == \"past\") {\n result = this._getClosestWorkTimePast(result, unit);\n } else {\n result = this._getClosestWorkTimeFuture(result, unit);\n }\n\n return result;\n },\n _getClosestWorkTimeFuture: function _getClosestWorkTimeFuture(date, unit) {\n return this._getClosestWorkTimeGeneric(date, unit, 1);\n },\n _getClosestWorkTimePast: function _getClosestWorkTimePast(date, unit) {\n var result = this._getClosestWorkTimeGeneric(date, unit, -1); // should return the end of the closest work interval\n\n\n return this.$gantt.date.add(result, 1, unit);\n },\n _findClosestTimeInDay: function _findClosestTimeInDay(date, direction, worktimes) {\n var start = new Date(date);\n var resultDate = null;\n var fromDayEnd = false;\n\n if (!this._getWorkHours(start).length) {\n start = this._getClosestWorkTime(start, \"day\", direction < 0 ? \"past\" : \"future\");\n\n if (direction < 0) {\n start = new Date(start.valueOf() - 1);\n fromDayEnd = true;\n }\n\n worktimes = this._getWorkHours(start);\n }\n\n var value = this._getTimeOfDayStamp(start);\n\n if (fromDayEnd) {\n value = this._getTimeOfDayStamp(new Date(start.valueOf() + 1), fromDayEnd);\n }\n\n if (direction > 0) {\n for (var i = 0; i < worktimes.length; i++) {\n if (worktimes[i].start >= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].start);\n break;\n }\n }\n } else {\n for (var i = worktimes.length - 1; i >= 0; i--) {\n if (worktimes[i].end <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].end);\n break;\n } else if (worktimes[i].end > value && worktimes[i].start <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, value);\n break;\n }\n }\n }\n\n return resultDate;\n },\n _getClosestWorkMinute: function _getClosestWorkMinute(date, unit, direction) {\n var start = new Date(date);\n\n var worktimes = this._getWorkHours(start);\n\n var resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n\n if (!resultDate) {\n start = this.calculateEndDate(start, direction, \"day\");\n\n if (direction > 0) {\n start = this.$gantt.date.day_start(start);\n } else {\n start = this.$gantt.date.day_start(start);\n start = this.$gantt.date.add(start, 1, \"day\");\n start = new Date(start.valueOf() - 1);\n }\n\n worktimes = this._getWorkHours(start);\n resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n }\n\n if (direction < 0) {\n // getClosestWorkTimePast adds one time unit to the result date after this\n resultDate = this.$gantt.date.add(resultDate, -1, unit);\n }\n\n return resultDate;\n },\n _getClosestWorkTimeGeneric: function _getClosestWorkTimeGeneric(date, unit, increment) {\n if (unit === \"hour\" || unit === \"minute\") {\n return this._getClosestWorkMinute(date, unit, increment);\n }\n\n var unitOrder = this._getUnitOrder(unit),\n biggerTimeUnit = this.units[unitOrder - 1];\n\n var result = date; // be extra sure we won't fall into infinite loop, 3k seems big enough\n\n var maximumLoop = 3000,\n count = 0;\n\n while (!this._isWorkTime(result, unit)) {\n if (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\n // if we look for closest work hour and detect a week-end - first find the closest work day,\n // and continue iterations after that\n if (increment > 0) {\n result = this._getClosestWorkTimeFuture(result, biggerTimeUnit);\n } else {\n result = this._getClosestWorkTimePast(result, biggerTimeUnit);\n }\n\n if (this._isWorkTime(result, unit)) {\n break;\n }\n }\n\n count++;\n\n if (count > maximumLoop) {\n this.$gantt.assert(false, \"Invalid working time check\");\n return false;\n }\n\n var tzOffset = result.getTimezoneOffset();\n result = this.$gantt.date.add(result, increment, unit);\n result = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\n\n if (this.$gantt.date[unit + '_start']) {\n result = this.$gantt.date[unit + '_start'](result);\n }\n }\n\n return result;\n },\n\n /**\n * Check whether this calendar has working time. Calendar has working time only if there are regular working days of week\n *\n */\n hasWorkTime: function hasWorkTime() {\n var worktime = this.getConfig();\n var dates = worktime.dates;\n var daysOfWeek = [0, 1, 2, 3, 4, 5, 6];\n var exceptions = [];\n\n for (var i in worktime.dates) {\n if (Number(i) > 6) {\n exceptions.push(Number(i));\n }\n }\n\n var hasRegularHours = this._checkWorkHours(worktime.hours);\n\n var result = false;\n daysOfWeek.forEach(function (day) {\n if (result) {\n return;\n }\n\n var dayConfig = dates[day];\n\n if (dayConfig === true) {\n // workday uses global hours\n result = hasRegularHours;\n } else if (Array.isArray(dayConfig)) {\n // workday uses custom hours\n result = this._checkWorkHours(dayConfig);\n }\n }.bind(this));\n return result;\n },\n _checkWorkHours: function _checkWorkHours(hoursArray) {\n if (hoursArray.length === 0) {\n return false;\n }\n\n var result = false;\n\n for (var i = 0; i < hoursArray.length; i += 2) {\n if (hoursArray[i] !== hoursArray[i + 1]) {\n result = true;\n }\n }\n\n return result;\n }\n};\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../../utils/utils\");\n\nfunction WorkTimeCalendarMerger() {}\n\nWorkTimeCalendarMerger.prototype = {\n /**\n * convert hours array items into objects, e.g. [8, 12, 17, 18] -> [{start: 8, end: 12}, {start:17, end:18}]\n * @param {Array} hoursArray\n */\n _getIntervals: function _getIntervals(hoursArray) {\n var result = [];\n\n for (var i = 0; i < hoursArray.length; i += 2) {\n result.push({\n start: hoursArray[i],\n end: hoursArray[i + 1]\n });\n }\n\n return result;\n },\n\n /**\n * Convert ranges config into hours array\n * [{start: 8, end: 12}, {start:17, end:18}] --> [8, 12, 17, 18]\n * @param {*} intervalsArray\n */\n _toHoursArray: function _toHoursArray(intervalsArray) {\n var result = [];\n\n function toFixed(value) {\n var str = String(value);\n\n if (str.length < 2) {\n str = \"0\" + str;\n }\n\n return str;\n }\n\n function formatHHMM(secondsValue) {\n var hours = Math.floor(secondsValue / (60 * 60));\n var minutePart = secondsValue - hours * 60 * 60;\n var minutes = Math.floor(minutePart / 60);\n return hours + \":\" + toFixed(minutes);\n }\n\n for (var i = 0; i < intervalsArray.length; i++) {\n result.push(formatHHMM(intervalsArray[i].start) + \"-\" + formatHHMM(intervalsArray[i].end));\n }\n\n return result;\n },\n\n /**\n * Build intersection of hour intervals. e.g.\n * first: [{start: 8, end: 12}, {start:13, end:18}]\n * second: [{start: 10, end: 15}]\n * result: [{start: 10, end: 12}, {start: 13, end: 15}]\n * @param {Array} first\n * @param {Array} second\n */\n _intersectHourRanges: function _intersectHourRanges(first, second) {\n var result = [];\n var baseArray = first.length > second.length ? first : second;\n var overridesArray = first === baseArray ? second : first;\n baseArray = baseArray.slice();\n overridesArray = overridesArray.slice();\n var result = [];\n\n for (var i = 0; i < baseArray.length; i++) {\n var base = baseArray[i];\n\n for (var j = 0; j < overridesArray.length; j++) {\n var current = overridesArray[j];\n\n if (current.start < base.end && current.end > base.start) {\n result.push({\n start: Math.max(base.start, current.start),\n end: Math.min(base.end, current.end)\n });\n\n if (base.end > current.end) {\n overridesArray.splice(j, 1);\n j--;\n i--;\n }\n }\n }\n }\n\n return result;\n },\n\n /**\n * Reduce the number of ranges in config when possible,\n * joins ranges that can be merged\n * parts: [{start: 8, end: 12}, {start:12, end:13}, {start: 15, end: 17}]\n * result: [{start: 8, end: 13}, {start: 15, end: 17}]\n * @param {Array} parts\n */\n _mergeAdjacentIntervals: function _mergeAdjacentIntervals(parts) {\n var result = parts.slice();\n result.sort(function (a, b) {\n return a.start - b.start;\n });\n var base = result[0];\n\n for (var i = 1; i < result.length; i++) {\n var current = result[i];\n\n if (current.start <= base.end) {\n if (current.end > base.end) {\n base.end = current.end;\n }\n\n result.splice(i, 1);\n i--;\n } else {\n base = current;\n }\n }\n\n return result;\n },\n _mergeHoursConfig: function _mergeHoursConfig(firstHours, secondHours) {\n //var firstIntervals = this._getIntervals(firstHours);\n //var secondIntervals = this._getIntervals(secondHours);\n return this._mergeAdjacentIntervals(this._intersectHourRanges(firstHours, secondHours));\n },\n merge: function merge(first, second) {\n var firstConfig = utils.copy(first.getConfig().parsed);\n var secondConfig = utils.copy(second.getConfig().parsed);\n var mergedSettings = {\n hours: this._toHoursArray(this._mergeHoursConfig(firstConfig.hours, secondConfig.hours)),\n dates: {},\n customWeeks: {}\n };\n\n for (var i in firstConfig.dates) {\n var firstDate = firstConfig.dates[i];\n var secondDate = secondConfig.dates[i]; // if this key is a working date in both calendars\n\n if (firstDate && secondDate) {\n // if at least one of working date is set by hours config - build intersection\n if (Array.isArray(firstDate) || Array.isArray(secondDate)) {\n var firstHours = Array.isArray(firstDate) ? firstDate : firstConfig.hours;\n var secondHours = Array.isArray(secondDate) ? secondDate : secondConfig.hours;\n mergedSettings.dates[i] = this._toHoursArray(this._mergeHoursConfig(firstHours, secondHours));\n } else {\n // date will use global hours\n mergedSettings.dates[i] = true;\n }\n } else {\n mergedSettings.dates[i] = false;\n }\n } // transfer and overwrite custom week calendars\n\n\n if (firstConfig.customWeeks) {\n for (var i in firstConfig.customWeeks) {\n mergedSettings.customWeeks[i] = firstConfig.customWeeks[i];\n }\n }\n\n if (secondConfig.customWeeks) {\n for (var i in secondConfig.customWeeks) {\n mergedSettings.customWeeks[i] = secondConfig.customWeeks[i];\n }\n }\n\n return mergedSettings;\n }\n};\nmodule.exports = WorkTimeCalendarMerger;","var utils = require(\"../../utils/utils\");\n\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\n\nvar CalendarMergeHelper = require(\"./strategy/work_calendar_merger\");\n\nvar CalendarWorkTimeStrategy = require(\"./strategy/calendar_strategy\");\n\nvar legacyResourceCalendarConfig = require(\"./legacy_resource_config\");\n\nvar dynamicResourceCalendars = require(\"./dynamic_resource_calendars\")();\n\nfunction CalendarManager(gantt) {\n this.$gantt = gantt;\n this._calendars = {};\n this._legacyConfig = undefined;\n this.$gantt.attachEvent(\"onGanttReady\", function () {\n if (this.$gantt.config.resource_calendars) {\n this._isLegacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(this.$gantt.config.resource_calendars);\n }\n }.bind(this));\n this.$gantt.attachEvent(\"onBeforeGanttReady\", function () {\n this.createDefaultCalendars();\n }.bind(this));\n this.$gantt.attachEvent(\"onBeforeGanttRender\", function () {\n this.createDefaultCalendars();\n }.bind(this));\n}\n\nCalendarManager.prototype = {\n _calendars: {},\n _convertWorkTimeSettings: function _convertWorkTimeSettings(settings) {\n var days = settings.days;\n\n if (days && !settings.dates) {\n settings.dates = settings.dates || {};\n\n for (var i = 0; i < days.length; i++) {\n settings.dates[i] = days[i];\n\n if (!(days[i] instanceof Array)) {\n settings.dates[i] = !!days[i];\n }\n }\n }\n\n delete settings.days;\n return settings;\n },\n mergeCalendars: function mergeCalendars() {\n var calendars = [];\n var args = arguments;\n\n if (Array.isArray(args[0])) {\n calendars = args[0].slice();\n } else {\n for (var i = 0; i < arguments.length; i++) {\n calendars.push(arguments[i]);\n }\n }\n\n var mergeHelper = new CalendarMergeHelper();\n var result;\n calendars.forEach(function (calendar) {\n if (!result) {\n result = calendar;\n } else {\n result = this._createCalendarFromConfig(mergeHelper.merge(result, calendar));\n }\n }.bind(this));\n return this.createCalendar(result);\n },\n _createCalendarFromConfig: function _createCalendarFromConfig(config) {\n var apiCore = new CalendarWorkTimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\n apiCore.id = String(utils.uid());\n\n var preparedConfig = this._convertWorkTimeSettings(config);\n\n if (preparedConfig.customWeeks) {\n for (var i in preparedConfig.customWeeks) {\n preparedConfig.customWeeks[i] = this._convertWorkTimeSettings(preparedConfig.customWeeks[i]);\n }\n }\n\n apiCore._setConfig(preparedConfig);\n\n return apiCore;\n },\n createCalendar: function createCalendar(parentCalendar) {\n var settings;\n\n if (!parentCalendar) {\n parentCalendar = {};\n }\n\n if (parentCalendar.getConfig) {\n settings = utils.copy(parentCalendar.getConfig());\n } else if (parentCalendar.worktime) {\n settings = utils.copy(parentCalendar.worktime);\n } else {\n settings = utils.copy(parentCalendar);\n }\n\n var defaults = utils.copy(this.defaults.fulltime.worktime);\n utils.mixin(settings, defaults);\n return this._createCalendarFromConfig(settings);\n },\n getCalendar: function getCalendar(id) {\n id = id || \"global\";\n var calendar = this._calendars[id];\n\n if (!calendar) {\n this.createDefaultCalendars();\n calendar = this._calendars[id];\n }\n\n return calendar;\n },\n getCalendars: function getCalendars() {\n var res = [];\n\n for (var i in this._calendars) {\n res.push(this.getCalendar(i));\n }\n\n return res;\n },\n _getOwnCalendar: function _getOwnCalendar(task) {\n var config = this.$gantt.config;\n\n if (task[config.calendar_property]) {\n return this.getCalendar(task[config.calendar_property]);\n }\n\n if (config.resource_calendars) {\n var calendar;\n var calendarId;\n var resourceProperty;\n\n if (this._legacyConfig === false) {\n resourceProperty = config.resource_property;\n } else {\n resourceProperty = legacyResourceCalendarConfig.getResourceProperty(config);\n }\n\n if (Array.isArray(task[resourceProperty])) {\n // if multiple resources are attached to the task - merge their calendars\n if (config.dynamic_resource_calendars) {\n calendarId = dynamicResourceCalendars.getCalendarIdFromMultipleResources(task[resourceProperty], this);\n }\n } else {\n if (this._legacyConfig === undefined) {\n this._legacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars);\n }\n\n if (this._legacyConfig) {\n var calendarId = legacyResourceCalendarConfig.getCalendarIdFromLegacyConfig(task, config.resource_calendars);\n } else if (resourceProperty && task[resourceProperty] && config.resource_calendars[task[resourceProperty]]) {\n var calendar = this.getResourceCalendar(task[resourceProperty]);\n }\n }\n\n if (calendarId) {\n calendar = this.getCalendar(calendarId);\n }\n\n if (calendar) {\n return calendar;\n }\n }\n\n return null;\n },\n\n /**\n * Returns calendar assigned to the specified resource.\n * Returns the global calendar if no custom calendar is associated with the resource.\n * @param {(string|number|Object)} resource - resource object or resource id\n * @returns {object} Calendar object\n */\n getResourceCalendar: function getResourceCalendar(resource) {\n if (resource === null || resource === undefined) {\n return this.getCalendar();\n }\n\n var resourceId = null; // if task id is provided\n\n if (typeof resource === \"number\" || typeof resource === \"string\") {\n resourceId = resource;\n } else {\n resourceId = resource.id || resource.key;\n }\n\n var config = this.$gantt.config;\n var calendarsConfig = config.resource_calendars;\n var calendarId = null;\n\n if (calendarsConfig) {\n if (this._legacyConfig === undefined) {\n this._legacyConfig = legacyResourceCalendarConfig.isLegacyResourceCalendarFormat(config.resource_calendars);\n }\n\n if (this._legacyConfig) {\n for (var field in calendarsConfig) {\n if (calendarsConfig[field][resourceId]) {\n calendarId = calendarsConfig[field][resourceId];\n break;\n }\n }\n } else {\n var calendarId = calendarsConfig[resourceId];\n }\n\n if (calendarId) {\n return this.getCalendar(calendarId);\n }\n }\n\n return this.getCalendar();\n },\n\n /**\n * Returns the calendar assigned to a task.\n * - Returns a calendar assigned via task[gantt.config.calendar_property] if specified.\n * - Returns a calendar assigned to the task resource if specified.\n * - Returns the global calendar otherwise.\n * @param {(string|number|Object)} task - task object or task id\n * @returns {object} Calendar object\n */\n getTaskCalendar: function getTaskCalendar(task) {\n var gantt = this.$gantt;\n var taskObject;\n\n if (task === null || task === undefined) {\n return this.getCalendar();\n } // if task id is provided\n\n\n if ((typeof task === \"number\" || typeof task === \"string\") && gantt.isTaskExists(task)) {\n taskObject = gantt.getTask(task);\n } else {\n taskObject = task;\n }\n\n if (!taskObject) {\n return this.getCalendar();\n }\n\n var calendar = this._getOwnCalendar(taskObject);\n\n var groupMode = !!gantt.getState().group_mode;\n\n if (!calendar && gantt.config.inherit_calendar && gantt.isTaskExists(taskObject.parent)) {\n // GS-1579 group mode overrides tree hierarchy, iterate using `.parent` property, instead of using eachParent iterator\n var currentTask = taskObject;\n\n while (gantt.isTaskExists(currentTask.parent)) {\n currentTask = gantt.getTask(currentTask.parent);\n\n if (gantt.isSummaryTask(currentTask)) {\n calendar = this._getOwnCalendar(currentTask);\n\n if (calendar) {\n break;\n }\n }\n }\n\n if (groupMode && !calendar) {\n // if group mode and inherit_calendars is enabled - preserve previously applied parent calendar\n // we may need it when groupBy parses grouped data, old parent may be not loaded yet\n if (task.$effective_calendar) {\n calendar = this.getCalendar(task.$effective_calendar);\n }\n }\n }\n\n return calendar || this.getCalendar();\n },\n addCalendar: function addCalendar(calendar) {\n // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\n if (!this.isCalendar(calendar)) {\n var id = calendar.id;\n calendar = this.createCalendar(calendar);\n calendar.id = id;\n } // validate/check if empty calendar\n\n\n if (!calendar._tryChangeCalendarSettings(function () {})) {\n this.$gantt.callEvent(\"onCalendarError\", [{\n message: \"Invalid calendar settings, no worktime available\"\n }, calendar]);\n return null;\n } else {\n var config = this.$gantt.config;\n calendar.id = calendar.id || utils.uid();\n this._calendars[calendar.id] = calendar;\n if (!config.worktimes) config.worktimes = {};\n config.worktimes[calendar.id] = calendar.getConfig();\n return calendar.id;\n }\n },\n deleteCalendar: function deleteCalendar(calendar) {\n var config = this.$gantt.config;\n if (!calendar) return false;\n\n if (this._calendars[calendar]) {\n delete this._calendars[calendar];\n if (config.worktimes && config.worktimes[calendar]) delete config.worktimes[calendar];\n return true;\n } else {\n return false;\n }\n },\n restoreConfigCalendars: function restoreConfigCalendars(configs) {\n for (var i in configs) {\n if (this._calendars[i]) continue;\n var settings = configs[i];\n var calendar = this.createCalendar(settings);\n calendar.id = i;\n this.addCalendar(calendar);\n }\n },\n defaults: {\n global: {\n id: \"global\",\n worktime: {\n hours: [8, 12, 13, 17],\n days: [0, 1, 1, 1, 1, 1, 0]\n }\n },\n fulltime: {\n id: \"fulltime\",\n worktime: {\n hours: [0, 24],\n days: [1, 1, 1, 1, 1, 1, 1]\n }\n }\n },\n createDefaultCalendars: function createDefaultCalendars() {\n var config = this.$gantt.config;\n this.restoreConfigCalendars(this.defaults);\n this.restoreConfigCalendars(config.worktimes);\n },\n isCalendar: function isCalendar(possibleCalendar) {\n // because we don't have any way to check without dependency to CalendarWorkTimeStrategy\n var props = [possibleCalendar.isWorkTime, possibleCalendar.setWorkTime, possibleCalendar.getWorkHours, possibleCalendar.unsetWorkTime, possibleCalendar.getClosestWorkTime, possibleCalendar.calculateDuration, possibleCalendar.hasDuration, possibleCalendar.calculateEndDate];\n return props.every(function (entry) {\n return entry instanceof Function;\n });\n }\n};\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\n TimeCalculator = require(\"./time_calculator\"),\n worktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\n utils = require(\"../../utils/utils\");\n\nmodule.exports = function (gantt) {\n var manager = new CalendarManager(gantt),\n timeCalculator = new TimeCalculator(manager);\n var facade = worktimeFacadeFactory.create(manager, timeCalculator);\n utils.mixin(gantt, facade);\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar helpers = require(\"../utils/helpers\");\n\nmodule.exports = function (gantt) {\n gantt.load = function (url, type, callback) {\n this._load_url = url;\n this.assert(arguments.length, \"Invalid load arguments\");\n var tp = 'json',\n cl = null;\n\n if (arguments.length >= 3) {\n tp = type;\n cl = callback;\n } else {\n if (typeof arguments[1] == \"string\") tp = arguments[1];else if (typeof arguments[1] == \"function\") cl = arguments[1];\n }\n\n this._load_type = tp;\n this.callEvent(\"onLoadStart\", [url, tp]);\n return this.ajax.get(url, gantt.bind(function (l) {\n this.on_load(l, tp);\n this.callEvent(\"onLoadEnd\", [url, tp]);\n if (typeof cl == \"function\") cl.call(this);\n }, this));\n };\n\n gantt.parse = function (data, type) {\n this.on_load({\n xmlDoc: {\n responseText: data\n }\n }, type);\n };\n\n gantt.serialize = function (type) {\n type = type || \"json\";\n return this[type].serialize();\n };\n /*\n tasks and relations\n {\n data:[\n \t{\n \t\t\"id\":\"string\",\n \t\t\"text\":\"...\",\n \t\t\"start_date\":\"Date or string\",\n \t\t\"end_date\":\"Date or string\",\n \t\t\"duration\":\"number\",\n \t\t\"progress\":\"0..1\",\n \t\t\"parent_id\":\"string\",\n \t\t\"order\":\"number\"\n \t},...],\n links:[\n \t{\n \t\tid:\"string\",\n \t\tsource:\"string\",\n \t\ttarget:\"string\",\n \t\ttype:\"string\"\n \t},...],\n collections:{\n \t\tcollectionName:[\n \t\t\t{key:, label:, optional:...},...\n \t\t],...\n \t}\n }\n \t* */\n\n\n gantt.on_load = function (resp, type) {\n if (resp.xmlDoc && resp.xmlDoc.status === 404) {\n // work if we don't have a file at current url\n this.assert(false, \"Failed to load the data from <a href='\" + resp.xmlDoc.responseURL + \"' target='_blank'>\" + resp.xmlDoc.responseURL + \"</a>, server returns 404\");\n return;\n }\n\n if (gantt.$destroyed) {\n return;\n }\n\n this.callEvent(\"onBeforeParse\", []);\n if (!type) type = \"json\";\n this.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n var raw = resp.xmlDoc.responseText;\n var data = this[type].parse(raw, resp);\n\n this._process_loading(data);\n };\n\n gantt._process_loading = function (data) {\n if (data.collections) this._load_collections(data.collections);\n this.$data.tasksStore.parse(data.data || data.tasks);\n var links = data.links || (data.collections ? data.collections.links : []);\n this.$data.linksStore.parse(links); //this._sync_links();\n\n this.callEvent(\"onParse\", []);\n this.render();\n };\n\n gantt._load_collections = function (collections) {\n var collections_loaded = false;\n\n for (var key in collections) {\n if (collections.hasOwnProperty(key)) {\n collections_loaded = true;\n var collection = collections[key];\n var arr = this.serverList[key];\n if (!arr) continue;\n arr.splice(0, arr.length); //clear old options\n\n for (var j = 0; j < collection.length; j++) {\n var option = collection[j];\n var obj = this.copy(option);\n obj.key = obj.value; // resulting option object\n\n for (var option_key in option) {\n if (option.hasOwnProperty(option_key)) {\n if (option_key == \"value\" || option_key == \"label\") continue;\n obj[option_key] = option[option_key]; // obj['value'] = option['value']\n }\n }\n\n arr.push(obj);\n }\n }\n }\n\n if (collections_loaded) this.callEvent(\"onOptionsLoad\", []);\n };\n\n gantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n return !task.$ignore;\n });\n\n function jsonParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.json = {\n parse: function parse(data) {\n if (!data) {\n jsonParseError(data);\n }\n\n if (typeof data == \"string\") {\n if ((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) != undefined) {\n try {\n data = JSON.parse(data);\n } catch (e) {\n jsonParseError(data);\n }\n } else {\n gantt.assert(false, \"JSON is not supported\");\n }\n }\n\n if (!data.data && !data.tasks) {\n jsonParseError(data);\n }\n\n if (data.dhx_security) gantt.security_key = data.dhx_security;\n return data;\n },\n serializeTask: function serializeTask(task) {\n return this._copyObject(task);\n },\n serializeLink: function serializeLink(link) {\n return this._copyLink(link);\n },\n _copyLink: function _copyLink(obj) {\n var copy = {};\n\n for (var key in obj) {\n copy[key] = obj[key];\n }\n\n return copy;\n },\n _copyObject: function _copyObject(obj) {\n var copy = {};\n\n for (var key in obj) {\n if (key.charAt(0) == \"$\") continue;\n copy[key] = obj[key];\n\n if (helpers.isDate(copy[key])) {\n copy[key] = gantt.defined(gantt.templates.xml_format) ? gantt.templates.xml_format(copy[key]) : gantt.templates.format_date(copy[key]);\n }\n }\n\n return copy;\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n gantt.eachTask(function (obj) {\n gantt.resetProjectDates(obj);\n tasks.push(this.serializeTask(obj));\n }, gantt.config.root_id, this);\n var rawLinks = gantt.getLinks();\n\n for (var i = 0; i < rawLinks.length; i++) {\n links.push(this.serializeLink(rawLinks[i]));\n }\n\n return {\n data: tasks,\n links: links\n };\n }\n };\n /*\n <data>\n \t<task id:\"some\" parent_id=\"0\" progress=\"0.5\">\n \t\t<text>My task 1</text>\n \t\t<start_date>16.08.2013</start_date>\n \t\t<end_date>22.08.2013</end_date>\n \t</task>\n \t<coll_options>\n \t\t<links>\n \t\t\t<link source='a1' target='b2' type='c3' />\n \t\t</links>\n \t</coll_options>\n </data>\n */\n\n function xmlParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An XML of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#xmldhtmlxgantt20 is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.xml = {\n _xmlNodeToJSON: function _xmlNodeToJSON(node, attrs_only) {\n var t = {};\n\n for (var i = 0; i < node.attributes.length; i++) {\n t[node.attributes[i].name] = node.attributes[i].value;\n }\n\n if (!attrs_only) {\n for (var i = 0; i < node.childNodes.length; i++) {\n var child = node.childNodes[i];\n if (child.nodeType == 1) t[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n }\n\n if (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n }\n\n return t;\n },\n _getCollections: function _getCollections(loader) {\n var collection = {};\n var opts = gantt.ajax.xpath(\"//coll_options\", loader);\n\n for (var i = 0; i < opts.length; i++) {\n var bind = opts[i].getAttribute(\"for\");\n var arr = collection[bind] = [];\n var itms = gantt.ajax.xpath(\".//item\", opts[i]);\n\n for (var j = 0; j < itms.length; j++) {\n var itm = itms[j];\n var attrs = itm.attributes;\n var obj = {\n key: itms[j].getAttribute(\"value\"),\n label: itms[j].getAttribute(\"label\")\n };\n\n for (var k = 0; k < attrs.length; k++) {\n var attr = attrs[k];\n if (attr.nodeName == \"value\" || attr.nodeName == \"label\") continue;\n obj[attr.nodeName] = attr.nodeValue;\n }\n\n arr.push(obj);\n }\n }\n\n return collection;\n },\n _getXML: function _getXML(text, loader, toptag) {\n toptag = toptag || \"data\";\n\n if (!loader.getXMLTopNode) {\n loader = gantt.ajax.parse(loader);\n }\n\n var xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\n\n if (!xml || xml.tagName != toptag) {\n xmlParseError(text);\n }\n\n var skey = xml.getAttribute(\"dhx_security\");\n if (skey) gantt.security_key = skey;\n return xml;\n },\n parse: function parse(text, loader) {\n loader = this._getXML(text, loader);\n var data = {};\n var evs = data.data = [];\n var xml = gantt.ajax.xpath(\"//task\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n evs[i] = this._xmlNodeToJSON(xml[i]);\n }\n\n data.collections = this._getCollections(loader);\n return data;\n },\n _copyLink: function _copyLink(obj) {\n return \"<item id='\" + obj.id + \"' source='\" + obj.source + \"' target='\" + obj.target + \"' type='\" + obj.type + \"' />\";\n },\n _copyObject: function _copyObject(obj) {\n return \"<task id='\" + obj.id + \"' parent='\" + (obj.parent || \"\") + \"' start_date='\" + obj.start_date + \"' duration='\" + obj.duration + \"' open='\" + !!obj.open + \"' progress='\" + obj.progress + \"' end_date='\" + obj.end_date + \"'><![CDATA[\" + obj.text + \"]]></task>\";\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n var json = gantt.json.serialize();\n\n for (var i = 0, len = json.data.length; i < len; i++) {\n tasks.push(this._copyObject(json.data[i]));\n }\n\n for (var i = 0, len = json.links.length; i < len; i++) {\n links.push(this._copyLink(json.links[i]));\n }\n\n return \"<data>\" + tasks.join(\"\") + \"<coll_options for='links'>\" + links.join(\"\") + \"</coll_options></data>\";\n }\n };\n gantt.oldxml = {\n parse: function parse(text, loader) {\n loader = gantt.xml._getXML(text, loader, \"projects\");\n var data = {\n collections: {\n links: []\n }\n };\n var evs = data.data = [];\n var xml = gantt.ajax.xpath(\"//task\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n evs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\n var parent = xml[i].parentNode;\n if (parent.tagName == \"project\") evs[i].parent = \"project-\" + parent.getAttribute(\"id\");else evs[i].parent = parent.parentNode.getAttribute(\"id\");\n }\n\n xml = gantt.ajax.xpath(\"//project\", loader);\n\n for (var i = 0; i < xml.length; i++) {\n var ev = gantt.xml._xmlNodeToJSON(xml[i], true);\n\n ev.id = \"project-\" + ev.id;\n evs.push(ev);\n }\n\n for (var i = 0; i < evs.length; i++) {\n var ev = evs[i];\n ev.start_date = ev.startdate || ev.est;\n ev.end_date = ev.enddate;\n ev.text = ev.name;\n ev.duration = ev.duration / 8;\n ev.open = 1;\n if (!ev.duration && !ev.end_date) ev.duration = 1;\n if (ev.predecessortasks) data.collections.links.push({\n target: ev.id,\n source: ev.predecessortasks,\n type: gantt.config.links.finish_to_start\n });\n }\n\n return data;\n },\n serialize: function serialize() {\n gantt.message(\"Serialization to 'old XML' is not implemented\");\n }\n };\n\n gantt.serverList = function (name, array) {\n if (array) {\n this.serverList[name] = array.slice(0);\n } else if (!this.serverList[name]) {\n this.serverList[name] = [];\n }\n\n return this.serverList[name];\n };\n};","module.exports = function (gantt) {\n gantt.isReadonly = function (item) {\n if ((typeof item == \"number\" || typeof item == \"string\") && gantt.isTaskExists(item)) {\n item = gantt.getTask(item);\n }\n\n if (item && item[this.config.editable_property]) {\n return false;\n } else {\n return item && item[this.config.readonly_property] || this.config.readonly;\n }\n };\n};","module.exports = function (gantt) {\n gantt.getGridColumn = function (name) {\n var columns = gantt.config.columns;\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == name) return columns[i];\n }\n\n return null;\n };\n\n gantt.getGridColumns = function () {\n return gantt.config.columns.slice();\n };\n};","const SENSITIVITY = 20;\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\tif (!this._draggedCell) {\n\t\t\t\treturn; // GS-1333: don't try to reorder a column when we resize it\n\t\t\t}\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;","var domHelpers = require(\"../utils/dom_helpers\");\n\nfunction createRowResizer(gantt, grid) {\n var _task_grid_row_resize = {\n row_before_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var store = grid.$config.rowStore;\n var el = domHelpers.locateAttribute(e, config.task_grid_row_resizer_attribute);\n if (!el) return false;\n var row_id = this.locate(e, config.task_grid_row_resizer_attribute),\n row = store.getItem(row_id);\n if (grid.callEvent(\"onBeforeRowResize\", [row]) === false) return false;\n }, gantt),\n row_after_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var row_id = this.locate(e, config.task_grid_row_resizer_attribute);\n dnd.config.marker.innerHTML = \"\";\n dnd.config.marker.className += \" gantt_row_grid_resize_area\";\n dnd.config.marker.style.width = grid.$grid.offsetWidth + \"px\";\n dnd.config.drag_id = row_id;\n }, gantt),\n row_drag_move: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var dd = dnd.config;\n var id = parseInt(dd.drag_id, 10),\n itemHeight = grid.getItemHeight(id),\n itemTop = grid.getItemTop(id);\n var pos = domHelpers.getNodePosition(grid.$grid_data),\n pointerPosition = parseInt(dd.marker.style.top, 10),\n markerStartPosition = itemTop + pos.y,\n marker_height = 0,\n minPointerPosition = config.min_task_grid_row_height;\n marker_height = pointerPosition - markerStartPosition;\n\n if (marker_height < minPointerPosition) {\n marker_height = minPointerPosition;\n }\n\n dd.marker.style.left = pos.x + \"px\";\n dd.marker.style.top = markerStartPosition - 1 + \"px\";\n dd.marker.style.height = Math.abs(marker_height) + 1 + \"px\";\n dd.marker_height = marker_height;\n grid.callEvent(\"onRowResize\", [id, store.getItem(id), marker_height + itemHeight]);\n return true;\n }, gantt),\n row_drag_end: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var dd = dnd.config;\n var id = parseInt(dd.drag_id, 10),\n item = store.getItem(id),\n oldItemHeight = grid.getItemHeight(id);\n var finalHeight = dd.marker_height;\n if (grid.callEvent(\"onBeforeRowResizeEnd\", [id, item, finalHeight]) === false) return;\n if (item.row_height == finalHeight) return;\n item.row_height = finalHeight;\n gantt.updateTask(id);\n grid.callEvent(\"onAfterRowResize\", [id, item, oldItemHeight, finalHeight]);\n this.render();\n }, gantt)\n }; // calls the initialization of the D'n'D events for resize elements\n\n var _init_resize = function _init_resize() {\n var DnD = gantt.$services.getService(\"dnd\");\n var config = grid.$getConfig();\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(config.dnd_sensitivity)) dnd.config.sensitivity = config.dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_before_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onAfterDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_after_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragMove\", function (obj, e) {\n return _task_grid_row_resize.row_drag_move(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragEnd\", function (obj, e) {\n return _task_grid_row_resize.row_drag_end(dnd, obj, e);\n });\n };\n\n return {\n init: _init_resize\n };\n}\n\nmodule.exports = createRowResizer;","function createHelper(view) {\n var cachedRowHeight = -1;\n var canUseSimpleCalc = -1;\n return {\n resetCache: function resetCache() {\n cachedRowHeight = -1;\n canUseSimpleCalc = -1;\n },\n _getRowHeight: function _getRowHeight() {\n if (cachedRowHeight === -1) {\n cachedRowHeight = view.$getConfig().row_height;\n }\n\n return cachedRowHeight;\n },\n _refreshState: function _refreshState() {\n this.resetCache();\n canUseSimpleCalc = true;\n var store = view.$config.rowStore;\n\n if (!store) {\n return;\n }\n\n var globalRowHeight = this._getRowHeight();\n\n for (var i = 0; i < store.fullOrder.length; i++) {\n var item = store.getItem(store.fullOrder[i]); // GS-1491: ignore the task when it is filtered:\n\n if (!item) {\n continue;\n }\n\n if (item.row_height && item.row_height !== globalRowHeight) {\n canUseSimpleCalc = false;\n break;\n }\n }\n },\n canUseSimpleCalculation: function canUseSimpleCalculation() {\n if (canUseSimpleCalc === -1) {\n this._refreshState();\n }\n\n return canUseSimpleCalc;\n },\n\n /**\n * Get top coordinate by row index (order)\n * @param {number} index\n */\n getRowTop: function getRowTop(index) {\n var store = view.$config.rowStore;\n\n if (!store) {\n return 0;\n }\n\n return index * this._getRowHeight();\n },\n\n /**\n * Get height of the item by item id\n * @param {*} itemId\n */\n getItemHeight: function getItemHeight(itemId) {\n return this._getRowHeight();\n },\n\n /**\n * Get total height of items\n */\n getTotalHeight: function getTotalHeight() {\n if (view.$config.rowStore) {\n var store = view.$config.rowStore;\n return store.countVisible() * this._getRowHeight();\n } else {\n return 0;\n }\n },\n\n /**\n * Get item by top position\n * @param {*} top\n */\n getItemIndexByTopPosition: function getItemIndexByTopPosition(top) {\n if (view.$config.rowStore) {\n return Math.floor(top / this._getRowHeight());\n } else {\n return 0;\n }\n }\n };\n}\n\nmodule.exports = createHelper;","function createResizer(gantt, grid) {\n return {\n init: function init() {},\n doOnRender: function doOnRender() {}\n };\n}\n\nmodule.exports = createResizer;","var Grid = require(\"./ui/grid/grid\");\n\nmodule.exports = function (gantt) {\n require(\"./grid_column_api.gpl\")(gantt);\n\n Grid.prototype.getGridColumns = function () {\n var config = this.$getConfig();\n var columns = config.columns,\n visibleColumns = [];\n\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].hide) visibleColumns.push(columns[i]);\n }\n\n return visibleColumns;\n };\n};","module.exports = function (gantt) {\n var TreeDataStore = require(\"./datastore/treedatastore\");\n\n var loadedBranches = {};\n gantt.attachEvent(\"onClearAll\", function () {\n loadedBranches = {};\n });\n var oldHasChildren = TreeDataStore.prototype.hasChild;\n\n gantt.$data.tasksStore.hasChild = function (id) {\n if (!gantt.config.branch_loading) {\n return oldHasChildren.call(this, id);\n } else {\n if (oldHasChildren.call(this, id)) return true;\n\n if (this.exists(id)) {\n return this.getItem(id)[gantt.config.branch_loading_property];\n }\n }\n\n return false;\n };\n\n function needLoading(id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n var alreadyLoaded = !!loadedBranches[id]; // call ajax only if branch has children\n\n if (!alreadyLoaded && !gantt.getChildren(id).length && gantt.hasChild(id)) {\n return true;\n }\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onTaskOpened\", function (id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n // call ajax only if branch has children\n if (needLoading(id)) {\n var url = gantt._load_url;\n url = url.replace(/(\\?|&)?parent_id=.+&?/, \"\");\n var param = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n var y = gantt.getScrollState().y || 0;\n var requestData = {\n taskId: id,\n url: url + param + \"parent_id=\" + encodeURIComponent(id)\n };\n\n if (gantt.callEvent(\"onBeforeBranchLoading\", [requestData]) === false) {\n return;\n }\n\n gantt.load(requestData.url, this._load_type, function () {\n if (y) {\n gantt.scrollTo(null, y);\n }\n\n gantt.callEvent(\"onAfterBranchLoading\", [requestData]);\n });\n loadedBranches[id] = true;\n }\n }\n });\n};","export default 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}","var DurationFormatter = require(\"../common/duration_formatter\")[\"default\"];\n\nvar LinkFormatter = require(\"../common/link_formatter\")[\"default\"];\n\nmodule.exports = function (gantt) {\n gantt.ext.formatters = {\n durationFormatter: function durationFormatter(settings) {\n if (!settings) {\n settings = {};\n }\n\n if (!settings.store) {\n settings.store = gantt.config.duration_unit;\n }\n\n if (!settings.enter) {\n settings.enter = gantt.config.duration_unit;\n }\n\n return DurationFormatter.create(settings, gantt);\n },\n linkFormatter: function linkFormatter(settings) {\n return LinkFormatter.create(settings, gantt);\n }\n };\n};","module.exports = function (gantt) {\n function isEnabled() {\n return gantt.config.auto_types && // if enabled\n gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project; // and supported\n }\n\n function callIfEnabled(callback) {\n return function () {\n if (!isEnabled()) {\n return true;\n }\n\n return callback.apply(this, arguments);\n };\n }\n\n function checkTaskType(id, changedTypes) {\n var task = gantt.getTask(id);\n var targetType = getTaskTypeToUpdate(task);\n\n if (targetType !== false && gantt.getTaskType(task) !== targetType) {\n changedTypes.$needsUpdate = true;\n changedTypes[task.id] = {\n task: task,\n type: targetType\n };\n }\n }\n\n function getUpdatedTypes(id, changedTypes) {\n changedTypes = changedTypes || {};\n checkTaskType(id, changedTypes);\n gantt.eachParent(function (parent) {\n checkTaskType(parent.id, changedTypes);\n }, id);\n return changedTypes;\n }\n\n function applyChanges(changedTypes) {\n for (var i in changedTypes) {\n if (changedTypes[i] && changedTypes[i].task) {\n var task = changedTypes[i].task;\n task.type = changedTypes[i].type;\n gantt.updateTask(task.id);\n }\n }\n }\n\n function updateParentTypes(startId) {\n if (gantt.getState().group_mode) {\n return;\n }\n\n var changedTypes = getUpdatedTypes(startId);\n\n if (changedTypes.$needsUpdate) {\n gantt.batchUpdate(function () {\n applyChanges(changedTypes);\n });\n }\n }\n\n var delTaskParent;\n\n function updateTaskType(task, targetType) {\n if (!gantt.getState().group_mode) {\n task.type = targetType;\n gantt.updateTask(task.id);\n }\n }\n\n function getTaskTypeToUpdate(task) {\n var allTypes = gantt.config.types;\n var hasChildren = gantt.hasChild(task.id);\n var taskType = gantt.getTaskType(task.type);\n\n if (hasChildren && taskType === allTypes.task) {\n return allTypes.project;\n }\n\n if (!hasChildren && taskType === allTypes.project) {\n return allTypes.task;\n }\n\n return false;\n }\n\n var isParsingDone = true;\n gantt.attachEvent(\"onParse\", callIfEnabled(function () {\n isParsingDone = false;\n\n if (gantt.getState().group_mode) {\n return;\n }\n\n gantt.batchUpdate(function () {\n gantt.eachTask(function (task) {\n var targetType = getTaskTypeToUpdate(task);\n\n if (targetType !== false) {\n updateTaskType(task, targetType);\n }\n });\n });\n isParsingDone = true;\n }));\n gantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function (id) {\n if (isParsingDone) {\n updateParentTypes(id);\n }\n }));\n gantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(function (id) {\n if (isParsingDone) {\n updateParentTypes(id);\n }\n }));\n\n function updateAfterRemoveChild(id) {\n if (id != gantt.config.root_id && gantt.isTaskExists(id)) {\n updateParentTypes(id);\n }\n }\n\n gantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function (id, task) {\n delTaskParent = gantt.getParent(id);\n return true;\n }));\n gantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function (id, task) {\n updateAfterRemoveChild(delTaskParent);\n }));\n var originalRowDndParent;\n gantt.attachEvent(\"onRowDragStart\", callIfEnabled(function (id, target, e) {\n originalRowDndParent = gantt.getParent(id);\n return true;\n }));\n gantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function (id, target) {\n updateAfterRemoveChild(originalRowDndParent);\n updateParentTypes(id);\n }));\n var originalMoveTaskParent;\n gantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function (sid, parent, tindex) {\n originalMoveTaskParent = gantt.getParent(sid);\n return true;\n }));\n gantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function (id, parent, tindex) {\n if (document.querySelector(\".gantt_drag_marker\")) {\n // vertical dnd in progress\n return;\n }\n\n updateAfterRemoveChild(originalMoveTaskParent);\n updateParentTypes(id);\n }));\n};","module.exports = function addPlaceholder(gantt) {\n function isEnabled() {\n return gantt.config.placeholder_task;\n }\n\n function callIfEnabled(callback) {\n return function () {\n if (!isEnabled()) {\n return true;\n }\n\n return callback.apply(this, arguments);\n };\n }\n\n function silenceDataProcessor(dataProcessor) {\n if (dataProcessor && !dataProcessor._silencedPlaceholder) {\n dataProcessor._silencedPlaceholder = true;\n dataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function (id, state, data) {\n if (data.type == gantt.config.types.placeholder) {\n dataProcessor.setUpdated(id, false);\n return false;\n }\n\n return true;\n }));\n }\n }\n\n function insertPlaceholder() {\n var placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\n if (!placeholders.length || !gantt.isTaskExists(placeholders[0].id)) {\n var placeholder = {\n unscheduled: true,\n type: gantt.config.types.placeholder,\n duration: 0,\n text: gantt.locale.labels.new_task\n };\n\n if (gantt.callEvent(\"onTaskCreated\", [placeholder]) === false) {\n return;\n }\n\n gantt.addTask(placeholder);\n }\n }\n\n function afterEdit(id) {\n var item = gantt.getTask(id);\n\n if (item.type == gantt.config.types.placeholder) {\n if (item.start_date && item.end_date && item.unscheduled) {\n item.unscheduled = false;\n }\n\n gantt.batchUpdate(function () {\n var newTask = gantt.copy(item);\n gantt.silent(function () {\n gantt.deleteTask(item.id);\n });\n delete newTask[\"!nativeeditor_status\"];\n newTask.type = gantt.config.types.task;\n newTask.id = gantt.uid();\n gantt.addTask(newTask); //insertPlaceholder();\n });\n }\n }\n\n gantt.config.types.placeholder = \"placeholder\";\n gantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\n var ready = false;\n gantt.attachEvent(\"onGanttReady\", function () {\n if (ready) {\n return;\n }\n\n ready = true;\n gantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\n gantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function (id, task) {\n if (task.type != gantt.config.types.placeholder) {\n var placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n placeholders.forEach(function (p) {\n gantt.silent(function () {\n if (gantt.isTaskExists(p.id)) gantt.deleteTask(p.id);\n });\n });\n insertPlaceholder();\n }\n }));\n gantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\n });\n\n function isPlaceholderTask(taskId) {\n if (gantt.config.types.placeholder && gantt.isTaskExists(taskId)) {\n var task = gantt.getTask(taskId);\n\n if (task.type == gantt.config.types.placeholder) {\n return true;\n }\n }\n\n return false;\n }\n\n function isPlaceholderLink(link) {\n if (isPlaceholderTask(link.source) || isPlaceholderTask(link.target)) {\n return true;\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (isPlaceholderLink(link)) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeLinkAdd\", function (id, link) {\n if (isPlaceholderLink(link)) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeUndoStack\", function (action) {\n for (var i = 0; i < action.commands.length; i++) {\n var command = action.commands[i];\n\n if (command.entity === \"task\" && command.value.type === gantt.config.types.placeholder) {\n action.commands.splice(i, 1);\n i--;\n }\n }\n\n return true;\n });\n};","module.exports = function (gantt) {\n var resourceAssignmentsProperty = \"$resourceAssignments\";\n gantt.config.resource_assignment_store = \"resourceAssignments\";\n gantt.config.process_resource_assignments = true;\n var resourceAssignmentFormats = {\n auto: \"auto\",\n singleValue: \"singleValue\",\n valueArray: \"valueArray\",\n resourceValueArray: \"resourceValueArray\",\n assignmentsArray: \"assignmentsArray\"\n };\n var resourceAssignmentFormat = resourceAssignmentFormats.auto; //\"primitiveSingle\";//\"primitive\";//\"object\"|\"assignment\"\n\n var assignmentModes = {\n fixedDates: \"fixedDates\",\n fixedDuration: \"fixedDuration\",\n \"default\": \"default\"\n };\n\n function initAssignmentFields(item, task) {\n if (item.start_date) {\n item.start_date = gantt.date.parseDate(item.start_date, \"parse_date\");\n } else {\n item.start_date = null;\n }\n\n if (item.end_date) {\n item.end_date = gantt.date.parseDate(item.end_date, \"parse_date\");\n } else {\n item.end_date = null;\n }\n\n var delay = Number(item.delay);\n var initDelay = false;\n\n if (!isNaN(delay)) {\n item.delay = delay;\n } else {\n item.delay = 0;\n initDelay = true;\n }\n\n if (!gantt.defined(item.value)) {\n item.value = null;\n }\n\n if (!item.task_id || !item.resource_id) {\n return false;\n }\n\n item.mode = item.mode || assignmentModes[\"default\"];\n\n if (item.mode === assignmentModes.fixedDuration) {\n if (isNaN(Number(item.duration))) {\n task = task || gantt.getTask(item.task_id);\n item.duration = gantt.calculateDuration({\n start_date: item.start_date,\n end_date: item.end_date,\n id: task\n });\n }\n\n if (initDelay) {\n task = task || gantt.getTask(item.task_id);\n item.delay = gantt.calculateDuration({\n start_date: task.start_date,\n end_date: item.start_date,\n id: task\n });\n }\n }\n\n if (item.mode !== assignmentModes.fixedDates && (task || gantt.isTaskExists(item.task_id))) {\n task = task || gantt.getTask(item.task_id);\n\n var timing = _assignmentTimeFromTask(item, task);\n\n item.start_date = timing.start_date;\n item.end_date = timing.end_date;\n item.duration = timing.duration;\n }\n } // gantt init\n\n\n var resourceAssignmentsStore = gantt.createDatastore({\n name: gantt.config.resource_assignment_store,\n initItem: function initItem(item) {\n if (!item.id) {\n item.id = gantt.uid();\n }\n\n initAssignmentFields(item);\n return item;\n }\n });\n\n function _assignmentTimeFromTask(assignment, task) {\n if (assignment.mode === assignmentModes.fixedDates) {\n return {\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n duration: assignment.duration\n };\n } else {\n var start = assignment.delay ? gantt.calculateEndDate({\n start_date: task.start_date,\n duration: assignment.delay,\n task: task\n }) : new Date(task.start_date);\n var end;\n var duration;\n\n if (assignment.mode === assignmentModes.fixedDuration) {\n end = gantt.calculateEndDate({\n start_date: start,\n duration: assignment.duration,\n task: task\n });\n duration = assignment.duration;\n } else {\n end = new Date(task.end_date);\n duration = task.duration - assignment.delay;\n }\n }\n\n return {\n start_date: start,\n end_date: end,\n duration: duration\n };\n } // data loading\n\n\n function _makeAssignmentsFromTask(task) {\n var property = gantt.config.resource_property;\n var assignments = task[property];\n var resourceAssignments = [];\n var detectFormat = resourceAssignmentFormat === resourceAssignmentFormats.auto;\n\n if (gantt.defined(assignments) && assignments) {\n if (!Array.isArray(assignments)) {\n assignments = [assignments];\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.singleValue;\n detectFormat = false;\n }\n }\n\n var usedIds = {};\n assignments.forEach(function (res) {\n if (!res.resource_id) {\n // when resource is a string/number\n res = {\n resource_id: res\n };\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.valueArray;\n detectFormat = false;\n } //\tisSimpleArray = true;\n\n }\n\n if (detectFormat) {\n if (res.id && res.resource_id) {\n resourceAssignmentFormat = resourceAssignmentFormats.assignmentsArray;\n detectFormat = false;\n } else {\n resourceAssignmentFormat = resourceAssignmentFormats.resourceValueArray;\n detectFormat = false;\n }\n }\n\n var defaultMode = assignmentModes[\"default\"];\n\n if (!res.mode) {\n if (res.start_date && res.end_date || res.start_date && res.duration) {\n defaultMode = assignmentModes.fixedDuration;\n }\n }\n\n var id;\n\n if (!res.id && res.$id && !usedIds[res.$id]) {\n id = res.$id;\n } else if (res.id && !usedIds[res.id]) {\n id = res.id;\n } else {\n id = gantt.uid();\n }\n\n usedIds[id] = true;\n var assignment = {\n id: id,\n start_date: res.start_date,\n duration: res.duration,\n end_date: res.end_date,\n delay: res.delay,\n task_id: task.id,\n resource_id: res.resource_id,\n value: res.value,\n mode: res.mode || defaultMode\n };\n\n if (!(assignment.start_date && assignment.start_date.getMonth && assignment.end_date && assignment.end_date.getMonth && typeof assignment.duration === \"number\")) {\n initAssignmentFields(assignment, task);\n }\n\n resourceAssignments.push(assignment);\n });\n }\n\n return resourceAssignments;\n }\n\n function _updateTaskBack(taskId) {\n // GS-1493. In some cases, the resource assignment store has the tasks that no longer exist\n if (!gantt.isTaskExists(taskId)) {\n return;\n }\n\n var task = gantt.getTask(taskId);\n var assignments = gantt.getTaskAssignments(task.id);\n\n _assignAssignments(task, assignments);\n }\n\n function _assignAssignments(task, assignments) {\n assignments.sort(function (a, b) {\n if (a.start_date && b.start_date && a.start_date.valueOf() != b.start_date.valueOf()) {\n return a.start_date - b.start_date;\n } else {\n return 0;\n }\n });\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray) {\n task[gantt.config.resource_property] = assignments;\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n task[gantt.config.resource_property] = assignments.map(function (a) {\n return {\n $id: a.id,\n start_date: a.start_date,\n duration: a.duration,\n end_date: a.end_date,\n delay: a.delay,\n resource_id: a.resource_id,\n value: a.value,\n mode: a.mode\n };\n });\n }\n\n task[resourceAssignmentsProperty] = assignments;\n }\n\n function _loadAssignmentsFromTask(task) {\n var assignments = _makeAssignmentsFromTask(task);\n\n var taskAssignments = [];\n assignments.forEach(function (a) {\n a.id = a.id || gantt.uid(); //var newId = resourceAssignmentsStore.addItem(a);\n\n taskAssignments.push(a);\n });\n return assignments;\n }\n\n function diffAssignments(taskValues, assignmentsStoreValues) {\n var result = {\n inBoth: [],\n inTaskNotInStore: [],\n inStoreNotInTask: []\n };\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.singleValue) {\n var taskOwner = taskValues[0];\n var ownerId = taskOwner ? taskOwner.resource_id : null;\n var foundOwnerAssignment = false;\n assignmentsStoreValues.forEach(function (a) {\n if (a.resource_id != ownerId) {\n result.inStoreNotInTask.push(a);\n } else if (a.resource_id == ownerId) {\n result.inBoth.push({\n store: a,\n task: taskOwner\n });\n foundOwnerAssignment = true;\n }\n });\n\n if (!foundOwnerAssignment && taskOwner) {\n result.inTaskNotInStore.push(taskOwner);\n }\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.valueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.resource_id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.resource_id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n if (processedIds[a.resource_id]) {\n return;\n }\n\n processedIds[a.resource_id] = true;\n var inTask = taskSearch[a.resource_id];\n var inStore = storeSearch[a.resource_id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray || resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.id || a.$id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n var id = a.id || a.$id;\n\n if (processedIds[id]) {\n return;\n }\n\n processedIds[id] = true;\n var inTask = taskSearch[id];\n var inStore = storeSearch[id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n }\n\n return result;\n }\n\n function assignmentHasChanged(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n if (String(source[i]) !== String(target[i])) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function updateAssignment(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n target[i] = source[i];\n }\n }\n }\n\n function _syncAssignments(task, storeAssignments) {\n var tasksAssignments = _makeAssignmentsFromTask(task);\n\n var diff = diffAssignments(tasksAssignments, storeAssignments);\n diff.inStoreNotInTask.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n diff.inTaskNotInStore.forEach(function (a) {\n resourceAssignmentsStore.addItem(a);\n });\n diff.inBoth.forEach(function (a) {\n if (assignmentHasChanged(a.task, a.store)) {\n updateAssignment(a.task, a.store);\n resourceAssignmentsStore.updateItem(a.store.id);\n } else {\n if (a.task.start_date && a.task.end_date && a.task.mode !== assignmentModes.fixedDates) {\n var timing = _assignmentTimeFromTask(a.store, task);\n\n if (a.store.start_date.valueOf() != timing.start_date.valueOf() || a.store.end_date.valueOf() != timing.end_date.valueOf()) {\n a.store.start_date = timing.start_date;\n a.store.end_date = timing.end_date;\n a.store.duration = timing.duration;\n resourceAssignmentsStore.updateItem(a.store.id);\n }\n }\n }\n });\n\n _updateTaskBack(task.id);\n }\n\n function _syncOnTaskUpdate(task) {\n var storeAssignments = task[resourceAssignmentsProperty] || resourceAssignmentsStore.find(function (a) {\n return a.task_id == task.id;\n });\n\n _syncAssignments(task, storeAssignments);\n }\n\n function _syncOnTaskDelete(ids) {\n var idsSearch = {};\n ids.forEach(function (id) {\n idsSearch[id] = true;\n });\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return idsSearch[a.task_id];\n });\n taskResources.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (gantt.config.process_resource_assignments) {\n gantt.attachEvent(\"onParse\", function () {\n gantt.silent(function () {\n resourceAssignmentsStore.clearAll();\n var totalAssignments = [];\n gantt.eachTask(function (task) {\n if (task.type === gantt.config.types.project) {\n return;\n }\n\n var assignments = _loadAssignmentsFromTask(task);\n\n _assignAssignments(task, assignments);\n\n assignments.forEach(function (a) {\n totalAssignments.push(a);\n });\n });\n resourceAssignmentsStore.parse(totalAssignments);\n });\n });\n var batchUpdate = false;\n var needUpdate = false;\n var needUpdateFor = {};\n gantt.attachEvent(\"onBeforeBatchUpdate\", function () {\n batchUpdate = true;\n });\n gantt.attachEvent(\"onAfterBatchUpdate\", function () {\n if (needUpdate) {\n var assignmentsHash = {};\n\n for (var i in needUpdateFor) {\n assignmentsHash[i] = gantt.getTaskAssignments(needUpdateFor[i].id);\n }\n\n for (var i in needUpdateFor) {\n _syncAssignments(needUpdateFor[i], assignmentsHash[i]);\n }\n }\n\n needUpdate = false;\n batchUpdate = false;\n needUpdateFor = {};\n });\n gantt.attachEvent(\"onTaskCreated\", function (item) {\n var assignments = _loadAssignmentsFromTask(item);\n\n resourceAssignmentsStore.parse(assignments);\n\n _assignAssignments(item, assignments);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskUpdate\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n /*\tgantt.attachEvent(\"onRowDragMove\", function (id) {\n \t\t_syncOnTaskUpdate(gantt.getTask(id));\n \t});*/\n\n gantt.attachEvent(\"onRowDragEnd\", function (id) {\n _syncOnTaskUpdate(gantt.getTask(id));\n });\n gantt.$data.tasksStore.attachEvent(\"onAfterDeleteConfirmed\", function (id, item) {\n var deleteIds = [id];\n gantt.eachTask(function (task) {\n deleteIds.push(task.id);\n }, id);\n\n _syncOnTaskDelete(deleteIds);\n });\n gantt.$data.tasksStore.attachEvent(\"onClearAll\", function () {\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n resourceAssignmentsStore.clearAll();\n return true;\n });\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return a.task_id == id;\n });\n taskResources.forEach(function (a) {\n a.task_id = new_id;\n resourceAssignmentsStore.updateItem(a.id);\n });\n\n _updateTaskBack(new_id); //any custom logic here\n\n });\n var resourceAssignmentsCache = null;\n var resourceTaskAssignmentsCache = null;\n var taskAssignmentsCache = null;\n resourceAssignmentsStore.attachEvent(\"onStoreUpdated\", function resetCache() {\n if (batchUpdate) {\n return true;\n }\n\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n return true;\n });\n\n gantt.getResourceAssignments = function (resourceId, taskId) {\n var searchTaskId = gantt.defined(taskId) && taskId !== null;\n\n if (resourceAssignmentsCache === null) {\n resourceAssignmentsCache = {};\n resourceTaskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!resourceAssignmentsCache[a.resource_id]) {\n resourceAssignmentsCache[a.resource_id] = [];\n }\n\n resourceAssignmentsCache[a.resource_id].push(a);\n var resourceTaskCacheKey = a.resource_id + \"-\" + a.task_id;\n\n if (!resourceTaskAssignmentsCache[resourceTaskCacheKey]) {\n resourceTaskAssignmentsCache[resourceTaskCacheKey] = [];\n }\n\n resourceTaskAssignmentsCache[resourceTaskCacheKey].push(a);\n });\n }\n\n if (searchTaskId) {\n return (resourceTaskAssignmentsCache[resourceId + \"-\" + taskId] || []).slice();\n } else {\n return (resourceAssignmentsCache[resourceId] || []).slice();\n }\n };\n\n gantt.getTaskAssignments = function (taskId) {\n if (taskAssignmentsCache === null) {\n var result = [];\n taskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!taskAssignmentsCache[a.task_id]) {\n taskAssignmentsCache[a.task_id] = [];\n }\n\n taskAssignmentsCache[a.task_id].push(a);\n\n if (a.task_id == taskId) {\n result.push(a);\n }\n });\n }\n\n return (taskAssignmentsCache[taskId] || []).slice();\n };\n\n gantt.updateTaskAssignments = _updateTaskBack;\n }\n }, {\n once: true\n });\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt) {\n var resourceTaskCache = {};\n var singleResourceCacheBuilt = false;\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n singleResourceCacheBuilt = false;\n });\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n resourceTaskCache = {};\n });\n\n function getTaskBy(propertyName, propertyValue) {\n if (typeof propertyName == \"function\") {\n return filterResourceTasks(propertyName);\n } else {\n if (helpers.isArray(propertyValue)) {\n return getResourceTasks(propertyName, propertyValue);\n } else {\n return getResourceTasks(propertyName, [propertyValue]);\n }\n }\n }\n\n function filterResourceTasks(filter) {\n var res = [];\n gantt.eachTask(function (task) {\n if (filter(task)) {\n res.push(task);\n }\n });\n return res;\n }\n\n var falsyValuePrefix = String(Math.random());\n\n function resourceHashFunction(value) {\n if (value === null) {\n return falsyValuePrefix + String(value);\n }\n\n return String(value);\n }\n\n function getCacheKey(resourceIds, property) {\n if (Array.isArray(resourceIds)) {\n return resourceIds.map(function (value) {\n return resourceHashFunction(value);\n }).join(\"_\") + \"_\" + property;\n } else {\n return resourceHashFunction(resourceIds) + \"_\" + property;\n }\n }\n\n function getResourceTasks(property, resourceIds) {\n var res;\n var cacheKey = getCacheKey(resourceIds, property);\n var matchingResources = {};\n helpers.forEach(resourceIds, function (resourceId) {\n matchingResources[resourceHashFunction(resourceId)] = true;\n });\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = [];\n gantt.eachTask(function (task) {\n if (task.type == gantt.config.types.project) return;\n\n if (property in task) {\n var resourceValue;\n\n if (!helpers.isArray(task[property])) {\n resourceValue = [task[property]];\n } else {\n resourceValue = task[property];\n }\n\n helpers.forEach(resourceValue, function (value) {\n var resourceValue = value && value.resource_id ? value.resource_id : value;\n\n if (matchingResources[resourceHashFunction(resourceValue)]) {\n res.push(task);\n } else if (!singleResourceCacheBuilt) {\n var key = getCacheKey(value, property);\n\n if (!resourceTaskCache[key]) {\n resourceTaskCache[key] = [];\n }\n\n resourceTaskCache[key].push(task);\n }\n });\n }\n });\n singleResourceCacheBuilt = true;\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function selectAssignments(resourceId, taskId, result) {\n var property = gantt.config.resource_property;\n var owners = [];\n\n if (gantt.getDatastore(\"task\").exists(taskId)) {\n var task = gantt.getTask(taskId);\n owners = task[property] || [];\n }\n\n if (!Array.isArray(owners)) {\n owners = [owners];\n }\n\n for (var i = 0; i < owners.length; i++) {\n if (owners[i].resource_id == resourceId) {\n result.push({\n task_id: task.id,\n resource_id: owners[i].resource_id,\n value: owners[i].value\n });\n }\n }\n }\n\n function getResourceAssignments(resourceId, taskId) {\n // resource assignment as an independent module:\n // {taskId:, resourceId, value}\n // TODO: probably should add a separate datastore for these\n var assignments = [];\n var property = gantt.config.resource_property;\n\n if (taskId !== undefined) {\n selectAssignments(resourceId, taskId, assignments);\n } else {\n var tasks = gantt.getTaskBy(property, resourceId);\n tasks.forEach(function (task) {\n selectAssignments(resourceId, task.id, assignments);\n });\n }\n\n return assignments;\n }\n\n return {\n getTaskBy: getTaskBy,\n getResourceAssignments: getResourceAssignments\n };\n}\n\nmodule.exports = function (gantt) {\n var methods = createResourceMethods(gantt);\n gantt.getTaskBy = methods.getTaskBy;\n gantt.getResourceAssignments = methods.getResourceAssignments;\n gantt.config.resource_property = \"owner_id\";\n gantt.config.resource_store = \"resource\";\n gantt.config.resource_render_empty_cells = false;\n /**\n * these are placeholder functions that should be redefined by the user\n */\n\n gantt.templates.histogram_cell_class = function (start_date, end_date, resource, tasks, assignments) {};\n\n gantt.templates.histogram_cell_label = function (start_date, end_date, resource, tasks, assignments) {\n return tasks.length + \"/3\";\n };\n\n gantt.templates.histogram_cell_allocated = function (start_date, end_date, resource, tasks, assignments) {\n return tasks.length / 3;\n };\n\n gantt.templates.histogram_cell_capacity = function (start_date, end_date, resource, tasks, assignments) {\n return 0;\n };\n\n gantt.templates.resource_cell_class = function (start, end, resource, tasks, assignments) {\n var css = \"\";\n\n if (tasks.length <= 1) {\n css = \"gantt_resource_marker_ok\";\n } else {\n css = \"gantt_resource_marker_overtime\";\n }\n\n return css;\n };\n\n gantt.templates.resource_cell_value = function (start, end, resource, tasks, assignments) {\n return tasks.length * 8;\n };\n};","var createWbs = function createWbs(gantt) {\n return {\n _needRecalc: true,\n reset: function reset() {\n this._needRecalc = true;\n },\n _isRecalcNeeded: function _isRecalcNeeded() {\n return !this._isGroupSort() && this._needRecalc;\n },\n _isGroupSort: function _isGroupSort() {\n return !!gantt.getState().group_mode;\n },\n _getWBSCode: function _getWBSCode(task) {\n if (!task) return \"\";\n\n if (this._isRecalcNeeded()) {\n this._calcWBS();\n }\n\n if (task.$virtual) return \"\";\n if (this._isGroupSort()) return task.$wbs || \"\";\n\n if (!task.$wbs) {\n this.reset();\n\n this._calcWBS();\n }\n\n return task.$wbs;\n },\n _setWBSCode: function _setWBSCode(task, value) {\n task.$wbs = value;\n },\n getWBSCode: function getWBSCode(task) {\n return this._getWBSCode(task);\n },\n getByWBSCode: function getByWBSCode(code) {\n var parts = code.split(\".\");\n var currentNode = gantt.config.root_id;\n\n for (var i = 0; i < parts.length; i++) {\n var children = gantt.getChildren(currentNode);\n var index = parts[i] * 1 - 1;\n\n if (gantt.isTaskExists(children[index])) {\n currentNode = children[index];\n } else {\n return null;\n }\n }\n\n if (gantt.isTaskExists(currentNode)) {\n return gantt.getTask(currentNode);\n } else {\n return null;\n }\n },\n _calcWBS: function _calcWBS() {\n if (!this._isRecalcNeeded()) return;\n var _isFirst = true;\n gantt.eachTask(function (ch) {\n if (_isFirst) {\n _isFirst = false;\n\n this._setWBSCode(ch, \"1\");\n\n return;\n }\n\n var _prevSibling = gantt.getPrevSibling(ch.id);\n\n if (_prevSibling !== null) {\n var _wbs = gantt.getTask(_prevSibling).$wbs;\n\n if (_wbs) {\n _wbs = _wbs.split(\".\");\n _wbs[_wbs.length - 1]++;\n\n this._setWBSCode(ch, _wbs.join(\".\"));\n }\n } else {\n var _parent = gantt.getParent(ch.id);\n\n this._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n }\n }, gantt.config.root_id, this);\n this._needRecalc = false;\n }\n };\n};\n\nmodule.exports = function (gantt) {\n var wbs = createWbs(gantt);\n\n gantt.getWBSCode = function getWBSCode(task) {\n return wbs.getWBSCode(task);\n };\n\n gantt.getTaskByWBSCode = function (code) {\n return wbs.getByWBSCode(code);\n };\n\n function resetCache() {\n wbs.reset();\n return true;\n }\n\n gantt.attachEvent(\"onAfterTaskMove\", resetCache);\n gantt.attachEvent(\"onBeforeParse\", resetCache);\n gantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n gantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n gantt.attachEvent(\"onAfterSort\", resetCache);\n};","var global = require(\"../../utils/global\");\n\nfunction createMethod(gantt) {\n var methods = {};\n var isActive = false;\n\n function disableMethod(methodName, dummyMethod) {\n dummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function () {};\n\n if (!methods[methodName]) {\n methods[methodName] = this[methodName];\n this[methodName] = dummyMethod;\n }\n }\n\n function restoreMethod(methodName) {\n if (methods[methodName]) {\n this[methodName] = methods[methodName];\n methods[methodName] = null;\n }\n }\n\n function disableMethods(methodsHash) {\n for (var i in methodsHash) {\n disableMethod.call(this, i, methodsHash[i]);\n }\n }\n\n function restoreMethods() {\n for (var i in methods) {\n restoreMethod.call(this, i);\n }\n }\n\n function batchUpdatePayload(callback) {\n try {\n callback();\n } catch (e) {\n global.console.error(e);\n }\n }\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"batchUpdate\", function () {\n return {\n batch_update: isActive\n };\n }, false);\n return function batchUpdate(callback, noRedraw) {\n if (isActive) {\n // batch mode is already active\n batchUpdatePayload(callback);\n return;\n }\n\n var call_dp = this._dp && this._dp.updateMode != \"off\";\n var dp_mode;\n\n if (call_dp) {\n dp_mode = this._dp.updateMode;\n\n this._dp.setUpdateMode(\"off\");\n } // temporary disable some methods while updating multiple tasks\n\n\n var resetProjects = {};\n var methods = {\n \"render\": true,\n \"refreshData\": true,\n \"refreshTask\": true,\n \"refreshLink\": true,\n \"resetProjectDates\": function resetProjectDates(task) {\n resetProjects[task.id] = task;\n }\n };\n disableMethods.call(this, methods);\n isActive = true;\n this.callEvent(\"onBeforeBatchUpdate\", []);\n batchUpdatePayload(callback);\n this.callEvent(\"onAfterBatchUpdate\", []);\n restoreMethods.call(this); // do required updates after changes applied\n\n for (var i in resetProjects) {\n this.resetProjectDates(resetProjects[i]);\n }\n\n isActive = false;\n\n if (!noRedraw) {\n this.render();\n }\n\n if (call_dp) {\n this._dp.setUpdateMode(dp_mode);\n\n this._dp.setGanttMode(\"task\");\n\n this._dp.sendData();\n\n this._dp.setGanttMode(\"link\");\n\n this._dp.sendData();\n }\n };\n}\n\nmodule.exports = function (gantt) {\n gantt.batchUpdate = createMethod(gantt);\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./batch_update\"), require(\"./wbs\"), require(\"./resources\"), require(\"./resource_assignments\"), require(\"./new_task_placeholder\"), require(\"./auto_task_types\"), require(\"./formatters\")];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n};","import * as utils from \"../../utils/utils\";\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\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 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 _serializeAsJson: boolean;\n\tprotected _router: any;\n\tprotected _utf: boolean;\n\tprotected _methods: any[];\n\tprotected _user: any;\n\tprotected _uActions: object;\n\tprotected _needUpdate: boolean;\n\tprotected _ganttMode: \"task\"|\"link\";\n\tprotected _routerParametersFormat: \"parameters\"|\"object\";\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.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\t\tthis._routerParametersFormat = \"parameters\";\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}\n\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\n\t\t\tthis._tSend = false;\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._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: 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: 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.$gantt.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\tif(this._routerParametersFormat === \"object\"){\n\t\t\t\t\tconst obj = {\n\t\t\t\t\t\tentity: ganttMode,\n\t\t\t\t\t\taction: taskAction,\n\t\t\t\t\t\tdata: dataToSend,\n\t\t\t\t\t\tid: rowId\n\t\t\t\t\t};\n\t\t\t\t\tactionPromise = this._router(obj);\n\t\t\t\t} else {\n\t\t\t\t\tactionPromise = this._router(ganttMode, taskAction, dataToSend, rowId);\n\t\t\t\t}\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 _prepareDate(value: Date) : string {\n\t\treturn this.$gantt.defined(this.$gantt.templates.xml_format) ? this.$gantt.templates.xml_format(value) : this.$gantt.templates.format_date(value);\n\t}\n\n\tprotected _prepareArray(value: any[], traversedObjects: object[]) : any[] {\n\t\ttraversedObjects.push(value);\n\n\t\treturn value.map((item) => {\n\t\t\tif(helpers.isDate(item)){\n\t\t\t\treturn this._prepareDate(item);\n\t\t\t} else if (Array.isArray(item) && !helpers.arrayIncludes(traversedObjects, item)){\n\t\t\t\treturn this._prepareArray(item, traversedObjects);\n\t\t\t} else if (item && typeof item === \"object\" && !helpers.arrayIncludes(traversedObjects, item)) {\n\t\t\t\treturn this._prepareObject(item, traversedObjects);\n\t\t\t} else {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _prepareObject(rawItem: any, traversedObjects: object[]) : any {\n\t\tconst processedItem = {};\n\t\ttraversedObjects.push(rawItem);\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._prepareDate(value);\n\t\t\t} else if(value === null) {\n\t\t\t\tprocessedItem[key] = \"\";\n\t\t\t} else if (Array.isArray(value) && !helpers.arrayIncludes(traversedObjects, value)){\n\t\t\t\tprocessedItem[key] = this._prepareArray(value, traversedObjects);\n\t\t\t} else if (value && typeof value === \"object\" && !helpers.arrayIncludes(traversedObjects, value)) {\n\t\t\t\tprocessedItem[key] = this._prepareObject(value, traversedObjects);\n\t\t\t} else {\n\t\t\t\tprocessedItem[key] = value;\n\t\t\t}\n\t\t}\n\t\treturn processedItem;\n\t}\n\n\tprotected _prepareDataItem(rawItem: any): any {\n\t\tconst processedItem = this._prepareObject(rawItem, []);\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\");\n\nmodule.exports = {\n DEPRECATED_api: function DEPRECATED_api(server) {\n return new DataProcessor.DataProcessor(server);\n },\n createDataProcessor: DataProcessor.createDataProcessor,\n getDataProcessorModes: DataProcessor.getAvailableModes\n};","var isHeadless = require(\"../../utils/is_headless\");\n\nvar storeRenderCreator = function storeRenderCreator(name, gantt) {\n var store = gantt.getDatastore(name);\n var itemRepainter = {\n renderItem: function renderItem(id, renderer) {\n var renders = renderer.getLayers();\n var item = store.getItem(id);\n\n if (item && store.isVisible(id)) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].render_item(item);\n }\n }\n },\n renderItems: function renderItems(renderer) {\n var renderers = renderer.getLayers();\n\n for (var i = 0; i < renderers.length; i++) {\n renderers[i].clear();\n }\n\n var allData = null;\n var loadedRanges = {};\n\n for (var i = 0; i < renderers.length; i++) {\n var layer = renderers[i];\n var layerData;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n var key = range.start + \" - \" + range.end;\n\n if (loadedRanges[key]) {\n layerData = loadedRanges[key];\n } else {\n layerData = store.getIndexRange(range.start, range.end);\n loadedRanges[key] = layerData;\n }\n } else {\n if (!allData) {\n allData = store.getVisibleItems();\n }\n\n layerData = allData;\n }\n\n renderers[i].render_items(layerData);\n }\n },\n updateItems: function updateItems(layer) {\n if (layer.update_items) {\n var data;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n data = store.getIndexRange(range.start, range.end);\n } else {\n data = store.getVisibleItems();\n }\n\n layer.update_items(data);\n }\n }\n };\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n renderer.onUpdateRequest = function (layer) {\n itemRepainter.updateItems(layer);\n };\n }\n });\n\n function skipRepaint(gantt) {\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return true;\n } else {\n return false;\n }\n }\n\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!id || action == \"move\" || action == \"delete\") {\n store.callEvent(\"onBeforeRefreshAll\", []);\n store.callEvent(\"onAfterRefreshAll\", []);\n } else {\n store.callEvent(\"onBeforeRefreshItem\", [item.id]);\n store.callEvent(\"onAfterRefreshItem\", [item.id]);\n }\n });\n store.attachEvent(\"onAfterRefreshAll\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer && !skipRepaint(gantt)) {\n itemRepainter.renderItems(renderer);\n }\n });\n store.attachEvent(\"onAfterRefreshItem\", function (id) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n itemRepainter.renderItem(id, renderer);\n }\n }); // TODO: probably can be done more in a more efficient way\n\n store.attachEvent(\"onItemOpen\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n store.attachEvent(\"onItemClose\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n\n function refreshId(renders, oldId, newId, item) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].change_id(oldId, newId);\n }\n }\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (isHeadless(gantt)) {\n return true;\n } // in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n // use onBeforeIdChange for this hook.\n // TODO: use something more reasonable instead\n\n\n store.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!store.isSilent()) {\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n refreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n itemRepainter.renderItem(newId, renderer);\n }\n });\n};\n\nmodule.exports = {\n bindDataStore: storeRenderCreator\n};","function createDataStoreSelectMixin(store) {\n var selectedId = null;\n var deleteItem = store._removeItemInner;\n\n function _unselect(id) {\n selectedId = null;\n this.callEvent(\"onAfterUnselect\", [id]);\n }\n\n store._removeItemInner = function (id) {\n if (selectedId == id) {\n _unselect.call(this, id);\n }\n\n if (selectedId && this.eachItem) {\n this.eachItem(function (subItem) {\n if (subItem.id == selectedId) {\n _unselect.call(this, subItem.id);\n }\n }, id);\n }\n\n return deleteItem.apply(this, arguments);\n };\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (store.getSelectedId() == oldId) {\n store.silent(function () {\n store.unselect(oldId);\n store.select(newId);\n });\n }\n });\n return {\n select: function select(id) {\n if (id) {\n if (selectedId == id) return selectedId;\n\n if (!this._skip_refresh) {\n if (!this.callEvent(\"onBeforeSelect\", [id])) {\n return false;\n }\n }\n\n this.unselect();\n selectedId = id;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n this.callEvent(\"onAfterSelect\", [id]);\n }\n }\n\n return selectedId;\n },\n getSelectedId: function getSelectedId() {\n return selectedId;\n },\n isSelected: function isSelected(id) {\n return id == selectedId;\n },\n unselect: function unselect(id) {\n var id = id || selectedId;\n if (!id) return;\n selectedId = null;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n\n _unselect.call(this, id);\n }\n }\n };\n}\n\nmodule.exports = createDataStoreSelectMixin;","var utils = require(\"../../utils/utils\");\n\nvar createLinksStoreFacade = function createLinksStoreFacade() {\n return {\n getLinkCount: function getLinkCount() {\n return this.$data.linksStore.count();\n },\n getLink: function getLink(id) {\n return this.$data.linksStore.getItem(id);\n },\n getLinks: function getLinks() {\n return this.$data.linksStore.getItems();\n },\n isLinkExists: function isLinkExists(id) {\n return this.$data.linksStore.exists(id);\n },\n addLink: function addLink(link) {\n return this.$data.linksStore.addItem(link);\n },\n updateLink: function updateLink(id, data) {\n if (!utils.defined(data)) data = this.getLink(id);\n this.$data.linksStore.updateItem(id, data);\n },\n deleteLink: function deleteLink(id) {\n return this.$data.linksStore.removeItem(id);\n },\n changeLinkId: function changeLinkId(oldid, newid) {\n return this.$data.linksStore.changeId(oldid, newid);\n }\n };\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nvar createTasksDatastoreFacade = function createTasksDatastoreFacade() {\n return {\n getTask: function getTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument for gantt.getTask\");\n var task = this.$data.tasksStore.getItem(id);\n this.assert(task, \"Task not found id=\" + id);\n return task;\n },\n getTaskByTime: function getTaskByTime(from, to) {\n var p = this.$data.tasksStore.getItems();\n var res = [];\n\n if (!(from || to)) {\n res = p;\n } else {\n from = +from || -Infinity;\n to = +to || Infinity;\n\n for (var t = 0; t < p.length; t++) {\n var task = p[t];\n if (+task.start_date < to && +task.end_date > from) res.push(task);\n }\n }\n\n return res;\n },\n isTaskExists: function isTaskExists(id) {\n if (!this.$data || !this.$data.tasksStore) {\n return false;\n }\n\n return this.$data.tasksStore.exists(id);\n },\n updateTask: function updateTask(id, item) {\n if (!utils.defined(item)) item = this.getTask(id);\n this.$data.tasksStore.updateItem(id, item);\n if (this.isTaskExists(id)) this.refreshTask(id);\n },\n addTask: function addTask(item, parent, index) {\n if (!utils.defined(item.id)) item.id = utils.uid(); //GS-761: assert unique ID\n\n if (this.isTaskExists(item.id)) {\n var task = this.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n return this.$data.tasksStore.updateItem(item.id, item);\n }\n }\n\n if (!utils.defined(parent)) parent = this.getParent(item) || 0;\n if (!this.isTaskExists(parent)) parent = this.config.root_id;\n this.setParent(item, parent);\n return this.$data.tasksStore.addItem(item, index, parent);\n },\n deleteTask: function deleteTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n return this.$data.tasksStore.removeItem(id);\n },\n getTaskCount: function getTaskCount() {\n return this.$data.tasksStore.count();\n },\n getVisibleTaskCount: function getVisibleTaskCount() {\n return this.$data.tasksStore.countVisible();\n },\n getTaskIndex: function getTaskIndex(id) {\n return this.$data.tasksStore.getBranchIndex(id);\n },\n getGlobalTaskIndex: function getGlobalTaskIndex(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument\");\n return this.$data.tasksStore.getIndexById(id);\n },\n eachTask: function eachTask(code, parent, master) {\n return this.$data.tasksStore.eachItem(utils.bind(code, master || this), parent);\n },\n eachParent: function eachParent(callback, startTask, master) {\n return this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n },\n changeTaskId: function changeTaskId(oldid, newid) {\n this.$data.tasksStore.changeId(oldid, newid);\n var task = this.$data.tasksStore.getItem(newid);\n var links = [];\n\n if (task.$source) {\n links = links.concat(task.$source);\n }\n\n if (task.$target) {\n links = links.concat(task.$target);\n }\n\n for (var i = 0; i < links.length; i++) {\n var link = this.getLink(links[i]);\n\n if (link.source == oldid) {\n link.source = newid;\n }\n\n if (link.target == oldid) {\n link.target = newid;\n }\n }\n },\n calculateTaskLevel: function calculateTaskLevel(item) {\n return this.$data.tasksStore.calculateItemLevel(item);\n },\n getNext: function getNext(id) {\n return this.$data.tasksStore.getNext(id);\n },\n getPrev: function getPrev(id) {\n return this.$data.tasksStore.getPrev(id);\n },\n getParent: function getParent(id) {\n return this.$data.tasksStore.getParent(id);\n },\n setParent: function setParent(task, new_pid, silent) {\n return this.$data.tasksStore.setParent(task, new_pid, silent);\n },\n getSiblings: function getSiblings(id) {\n return this.$data.tasksStore.getSiblings(id).slice();\n },\n getNextSibling: function getNextSibling(id) {\n return this.$data.tasksStore.getNextSibling(id);\n },\n getPrevSibling: function getPrevSibling(id) {\n return this.$data.tasksStore.getPrevSibling(id);\n },\n getTaskByIndex: function getTaskByIndex(index) {\n var id = this.$data.tasksStore.getIdByIndex(index);\n\n if (this.isTaskExists(id)) {\n return this.getTask(id);\n } else {\n return null;\n }\n },\n getChildren: function getChildren(id) {\n if (!this.hasChild(id)) {\n return [];\n } else {\n return this.$data.tasksStore.getChildren(id).slice();\n }\n },\n hasChild: function hasChild(id) {\n return this.$data.tasksStore.hasChild(id);\n },\n open: function open(id) {\n this.$data.tasksStore.open(id);\n },\n close: function close(id) {\n this.$data.tasksStore.close(id);\n },\n moveTask: function moveTask(sid, tindex, parent) {\n parent = replaceValidZeroId(parent, this.config.root_id);\n return this.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n },\n sort: function sort(field, desc, parent, silent) {\n var render = !silent; //4th argument to cancel redraw after sorting\n\n this.$data.tasksStore.sort(field, desc, parent);\n this.callEvent(\"onAfterSort\", [field, desc, parent]);\n\n if (render) {\n this.render();\n }\n }\n };\n};\n\nmodule.exports = createTasksDatastoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksFacade = require(\"./datastore_tasks\"),\n createLinksFacade = require(\"./datastore_links\"),\n DataStore = require(\"../datastore/datastore\"),\n TreeDataStore = require(\"../datastore/treedatastore\"),\n createDatastoreSelect = require(\"../datastore/select\");\n\nvar datastoreRender = require(\"../datastore/datastore_render\");\n\nvar isHeadless = require(\"../../utils/is_headless\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nfunction getDatastores() {\n var storeNames = this.$services.getService(\"datastores\");\n var res = [];\n\n for (var i = 0; i < storeNames.length; i++) {\n var store = this.getDatastore(storeNames[i]);\n\n if (!store.$destroyed) {\n res.push(store);\n }\n }\n\n return res;\n}\n\nvar createDatastoreFacade = function createDatastoreFacade() {\n return {\n createDatastore: function createDatastore(config) {\n var $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n if (config) {\n var self = this;\n\n config.openInitially = function () {\n return self.config.open_tree_initially;\n };\n\n config.copyOnParse = function () {\n return self.config.deepcopy_on_parse;\n };\n }\n\n var store = new $StoreType(config);\n this.mixin(store, createDatastoreSelect(store));\n\n if (config.name) {\n var servicePrefix = \"datastore:\";\n var storeAccessName = servicePrefix + config.name;\n store.attachEvent(\"onDestroy\", function () {\n this.$services.dropService(storeAccessName);\n var storeList = this.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeList.length; i++) {\n if (storeList[i] === config.name) {\n storeList.splice(i, 1);\n break;\n }\n }\n }.bind(this));\n this.$services.dropService(storeAccessName);\n this.$services.setService(storeAccessName, function () {\n return store;\n });\n var storeList = this.$services.getService(\"datastores\");\n\n if (!storeList) {\n storeList = [];\n this.$services.setService(\"datastores\", function () {\n return storeList;\n });\n storeList.push(config.name);\n } else if (storeList.indexOf(config.name) < 0) {\n storeList.push(config.name);\n }\n\n datastoreRender.bindDataStore(config.name, this);\n }\n\n return store;\n },\n getDatastore: function getDatastore(name) {\n return this.$services.getService(\"datastore:\" + name);\n },\n _getDatastores: getDatastores,\n refreshData: function refreshData() {\n var scrollState;\n\n if (!isHeadless(this)) {\n scrollState = this.getScrollState();\n }\n\n this.callEvent(\"onBeforeDataRender\", []);\n var stores = getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].refresh();\n }\n\n if (this.config.preserve_scroll && !isHeadless(this) && (scrollState.x || scrollState.y)) {\n this.scrollTo(scrollState.x, scrollState.y);\n }\n\n this.callEvent(\"onDataRender\", []);\n },\n isChildOf: function isChildOf(childId, parentId) {\n return this.$data.tasksStore.isChildOf(childId, parentId);\n },\n refreshTask: function refreshTask(taskId, refresh_links) {\n var task = this.getTask(taskId);\n var self = this;\n\n function refreshLinks() {\n if (refresh_links !== undefined && !refresh_links) return;\n\n for (var i = 0; i < task.$source.length; i++) {\n self.refreshLink(task.$source[i]);\n }\n\n for (var i = 0; i < task.$target.length; i++) {\n self.refreshLink(task.$target[i]);\n }\n }\n\n if (task && this.isTaskVisible(taskId)) {\n this.$data.tasksStore.refresh(taskId, !!this.getState(\"tasksDnd\").drag_id || refresh_links === false); // do quick refresh during drag and drop\n\n refreshLinks();\n } else if (this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId)) && !this._bulk_dnd) {\n this.refreshTask(this.getParent(taskId));\n var hasSplitParent = false;\n this.eachParent(function (parent) {\n if (hasSplitParent || this.isSplitTask(parent)) {\n hasSplitParent = true;\n }\n }, taskId);\n\n if (hasSplitParent) {\n refreshLinks();\n }\n }\n },\n refreshLink: function refreshLink(linkId) {\n this.$data.linksStore.refresh(linkId, !!this.getState(\"tasksDnd\").drag_id); // do quick refresh during drag and drop\n },\n silent: function silent(code) {\n var gantt = this;\n gantt.$data.tasksStore.silent(function () {\n gantt.$data.linksStore.silent(function () {\n code();\n });\n });\n },\n clearAll: function clearAll() {\n var stores = getDatastores.call(this); // clear all stores without invoking clearAll event\n // in order to prevent calling handlers when only some stores are cleared\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].silent(function () {\n stores[i].clearAll();\n });\n } // run clearAll again to invoke events\n\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].clearAll();\n }\n\n this._update_flags();\n\n this.userdata = {};\n this.callEvent(\"onClear\", []);\n this.render();\n },\n _clear_data: function _clear_data() {\n this.$data.tasksStore.clearAll();\n this.$data.linksStore.clearAll();\n\n this._update_flags();\n\n this.userdata = {};\n },\n selectTask: function selectTask(id) {\n var store = this.$data.tasksStore;\n if (!this.config.select_task) return false;\n id = replaceValidZeroId(id, this.config.root_id);\n\n if (id) {\n store.select(id);\n }\n\n return store.getSelectedId();\n },\n unselectTask: function unselectTask(id) {\n var store = this.$data.tasksStore;\n store.unselect(id);\n },\n isSelectedTask: function isSelectedTask(id) {\n return this.$data.tasksStore.isSelected(id);\n },\n getSelectedId: function getSelectedId() {\n return this.$data.tasksStore.getSelectedId();\n }\n };\n};\n\nfunction createFacade() {\n var res = utils.mixin({}, createDatastoreFacade());\n utils.mixin(res, createTasksFacade());\n utils.mixin(res, createLinksFacade());\n return res;\n}\n\nmodule.exports = {\n create: createFacade\n};","var utils = require(\"../../utils/utils\");\n\nvar facadeFactory = require(\"./../facades/datastore\");\n\nvar calculateScaleRange = require(\"../gantt_data_range\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nfunction initDataStores(gantt) {\n var facade = facadeFactory.create();\n utils.mixin(gantt, facade);\n var tasksStore = gantt.createDatastore({\n name: \"task\",\n type: \"treeDatastore\",\n rootId: function rootId() {\n return gantt.config.root_id;\n },\n initItem: utils.bind(_init_task, gantt),\n getConfig: function getConfig() {\n return gantt.config;\n }\n });\n var linksStore = gantt.createDatastore({\n name: \"link\",\n initItem: utils.bind(_init_link, gantt)\n });\n gantt.attachEvent(\"onDestroy\", function () {\n tasksStore.destructor();\n linksStore.destructor();\n });\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (gantt.isLinkExists(link.id) || link.id === \"predecessor_generated\") {\n // link was already added into gantt\n return true;\n }\n\n var source = gantt.getTask(link.source);\n var taskLinks = source.$source;\n\n for (var i = 0; i < taskLinks.length; i++) {\n var existingLink = gantt.getLink(taskLinks[i]);\n var sourceMatch = link.source == existingLink.source;\n var targetMatch = link.target == existingLink.target;\n var typeMatch = link.type == existingLink.type; // prevent creating duplicated links from the UI\n\n if (sourceMatch && targetMatch && typeMatch) {\n return false;\n }\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onBeforeRefreshAll\", function () {\n var order = tasksStore.getVisibleItems();\n\n for (var i = 0; i < order.length; i++) {\n var item = order[i];\n item.$index = i;\n item.$local_index = gantt.getTaskIndex(item.id);\n gantt.resetProjectDates(item);\n }\n });\n tasksStore.attachEvent(\"onFilterItem\", function (id, task) {\n if (gantt.config.show_tasks_outside_timescale) {\n return true;\n }\n\n var min = null,\n max = null;\n\n if (gantt.config.start_date && gantt.config.end_date) {\n if (gantt._isAllowedUnscheduledTask(task)) return true;\n min = gantt.config.start_date.valueOf();\n max = gantt.config.end_date.valueOf();\n if (+task.start_date > max || +task.end_date < +min) return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onIdChange\", function (oldId, newId) {\n gantt._update_flags(oldId, newId);\n\n var changedTask = gantt.getTask(newId);\n\n if (!tasksStore.isSilent()) {\n if (changedTask.$split_subtask || changedTask.rollup) {\n gantt.eachParent(function (parent) {\n gantt.refreshTask(parent.id);\n }, newId);\n }\n }\n });\n tasksStore.attachEvent(\"onAfterUpdate\", function (id) {\n gantt._update_parents(id);\n\n if (gantt.getState(\"batchUpdate\").batch_update) {\n return true;\n }\n\n var task = tasksStore.getItem(id);\n if (!task.$source) task.$source = [];\n\n for (var i = 0; i < task.$source.length; i++) {\n linksStore.refresh(task.$source[i]);\n }\n\n if (!task.$target) task.$target = [];\n\n for (var i = 0; i < task.$target.length; i++) {\n linksStore.refresh(task.$target[i]);\n }\n });\n tasksStore.attachEvent(\"onBeforeItemMove\", function (sid, parent, tindex) {\n // GS-125. Don't allow users to move the placeholder task\n if (isPlaceholderTask(sid, gantt, tasksStore)) {\n //eslint-disable-next-line\n console.log(\"The placeholder task cannot be moved to another position.\");\n return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onAfterItemMove\", function (sid, parent, tindex) {\n var source = gantt.getTask(sid);\n\n if (this.getNextSibling(sid) !== null) {\n source.$drop_target = this.getNextSibling(sid);\n } else if (this.getPrevSibling(sid) !== null) {\n source.$drop_target = \"next:\" + this.getPrevSibling(sid);\n } else {\n source.$drop_target = \"next:null\";\n }\n });\n tasksStore.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (action == \"delete\") {\n gantt._update_flags(id, null);\n }\n\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (gantt.config.fit_tasks && action !== \"paint\") {\n var oldState = gantt.getState();\n calculateScaleRange(gantt);\n var newState = gantt.getState(); //this._init_tasks_range();\n\n if (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n if (action == \"add\" || action == \"move\" || action == \"delete\") {\n if (gantt.$layout) {\n gantt.$layout.resize();\n }\n } else if (!id) {\n linksStore.refresh();\n }\n });\n linksStore.attachEvent(\"onAfterAdd\", function (id, link) {\n sync_link(link);\n });\n linksStore.attachEvent(\"onAfterUpdate\", function (id, link) {\n sync_links();\n });\n linksStore.attachEvent(\"onAfterDelete\", function (id, link) {\n sync_link_delete(link);\n });\n linksStore.attachEvent(\"onBeforeIdChange\", function (oldId, newId) {\n sync_link_delete(gantt.mixin({\n id: oldId\n }, gantt.$data.linksStore.getItem(newId)));\n sync_link(gantt.$data.linksStore.getItem(newId));\n });\n\n function checkLinkedTaskVisibility(taskId) {\n var isVisible = gantt.isTaskVisible(taskId);\n\n if (!isVisible && gantt.isTaskExists(taskId)) {\n var parent = gantt.getParent(taskId);\n\n if (gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)) {\n parent = gantt.getTask(parent);\n\n if (gantt.isSplitTask(parent)) {\n isVisible = true;\n }\n }\n }\n\n return isVisible;\n }\n\n linksStore.attachEvent(\"onFilterItem\", function (id, link) {\n if (!gantt.config.show_links) {\n return false;\n }\n\n var sourceVisible = checkLinkedTaskVisibility(link.source);\n var targetVisible = checkLinkedTaskVisibility(link.target);\n if (!(sourceVisible && targetVisible) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target))) return false;\n return gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n });\n\n (function () {\n // delete all connected links after task is deleted\n var treeHelper = require(\"../../utils/task_tree_helpers\");\n\n var deletedLinks = {};\n gantt.attachEvent(\"onBeforeTaskDelete\", function (id, item) {\n deletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n return true;\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n if (deletedLinks[id]) {\n gantt.$data.linksStore.silent(function () {\n for (var i in deletedLinks[id]) {\n gantt.$data.linksStore.removeItem(i);\n sync_link_delete(deletedLinks[id][i]);\n }\n\n deletedLinks[id] = null;\n });\n }\n });\n })();\n\n gantt.attachEvent(\"onAfterLinkDelete\", function (id, link) {\n gantt.refreshTask(link.source);\n gantt.refreshTask(link.target);\n });\n gantt.attachEvent(\"onParse\", sync_links);\n mapEvents({\n source: linksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onLinkLoading\",\n \"onBeforeAdd\": \"onBeforeLinkAdd\",\n \"onAfterAdd\": \"onAfterLinkAdd\",\n \"onBeforeUpdate\": \"onBeforeLinkUpdate\",\n \"onAfterUpdate\": \"onAfterLinkUpdate\",\n \"onBeforeDelete\": \"onBeforeLinkDelete\",\n \"onAfterDelete\": \"onAfterLinkDelete\",\n \"onIdChange\": \"onLinkIdChange\"\n }\n });\n mapEvents({\n source: tasksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onTaskLoading\",\n \"onBeforeAdd\": \"onBeforeTaskAdd\",\n \"onAfterAdd\": \"onAfterTaskAdd\",\n \"onBeforeUpdate\": \"onBeforeTaskUpdate\",\n \"onAfterUpdate\": \"onAfterTaskUpdate\",\n \"onBeforeDelete\": \"onBeforeTaskDelete\",\n \"onAfterDelete\": \"onAfterTaskDelete\",\n \"onIdChange\": \"onTaskIdChange\",\n \"onBeforeItemMove\": \"onBeforeTaskMove\",\n \"onAfterItemMove\": \"onAfterTaskMove\",\n \"onFilterItem\": \"onBeforeTaskDisplay\",\n \"onItemOpen\": \"onTaskOpened\",\n \"onItemClose\": \"onTaskClosed\",\n \"onBeforeSelect\": \"onBeforeTaskSelected\",\n \"onAfterSelect\": \"onTaskSelected\",\n \"onAfterUnselect\": \"onTaskUnselected\"\n }\n });\n gantt.$data = {\n tasksStore: tasksStore,\n linksStore: linksStore\n };\n\n function sync_link(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n sourceTask.$source = sourceTask.$source || [];\n sourceTask.$source.push(link.id);\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n targetTask.$target = targetTask.$target || [];\n targetTask.$target.push(link.id);\n }\n }\n\n function sync_link_delete(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n\n for (var i = 0; i < sourceTask.$source.length; i++) {\n if (sourceTask.$source[i] == link.id) {\n sourceTask.$source.splice(i, 1);\n break;\n }\n }\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n\n for (var i = 0; i < targetTask.$target.length; i++) {\n if (targetTask.$target[i] == link.id) {\n targetTask.$target.splice(i, 1);\n break;\n }\n }\n }\n }\n\n function sync_links() {\n var task = null;\n var tasks = gantt.$data.tasksStore.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n task = tasks[i];\n task.$source = [];\n task.$target = [];\n }\n\n var links = gantt.$data.linksStore.getItems();\n\n for (var i = 0, len = links.length; i < len; i++) {\n var link = links[i];\n sync_link(link);\n }\n }\n\n function mapEvents(conf) {\n var mapFrom = conf.source;\n var mapTo = conf.target;\n\n for (var i in conf.events) {\n (function (sourceEvent, targetEvent) {\n mapFrom.attachEvent(sourceEvent, function () {\n return mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n }, targetEvent);\n })(i, conf.events[i]);\n }\n }\n\n function _init_task(task) {\n if (!this.defined(task.id)) task.id = this.uid();\n if (task.start_date) task.start_date = gantt.date.parseDate(task.start_date, \"parse_date\");\n if (task.end_date) task.end_date = gantt.date.parseDate(task.end_date, \"parse_date\");\n var duration = null;\n\n if (task.duration || task.duration === 0) {\n task.duration = duration = task.duration * 1;\n }\n\n if (duration) {\n if (task.start_date && !task.end_date) {\n task.end_date = this.calculateEndDate(task);\n } else if (!task.start_date && task.end_date) {\n task.start_date = this.calculateEndDate({\n start_date: task.end_date,\n duration: -task.duration,\n task: task\n });\n } //task.$calculate_duration = false;\n\n }\n\n task.progress = Number(task.progress) || 0;\n\n if (this._isAllowedUnscheduledTask(task)) {\n this._set_default_task_timing(task);\n }\n\n this._init_task_timing(task);\n\n if (task.start_date && task.end_date) this.correctTaskWorkTime(task);\n task.$source = [];\n task.$target = [];\n var originalTask = this.$data.tasksStore.getItem(task.id);\n\n if (originalTask && !utils.defined(task.open)) {\n // if a task with the same id is already in the gantt and the new object doesn't specify the `open` state -\n // restore the `open` state we already have in the chart\n task.$open = originalTask.$open;\n }\n\n if (task.parent === undefined) {\n task.parent = this.config.root_id;\n }\n\n return task;\n }\n\n function _init_link(link) {\n if (!this.defined(link.id)) link.id = this.uid();\n return link;\n }\n}\n\nmodule.exports = initDataStores;","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don't get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self);","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n\n/**\n * bluebird build version 3.5.4\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function (e) {\n if (\"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module) module.exports = e();else if (\"function\" == typeof define && define.amd) define([], e);else {\n var f;\n \"undefined\" != typeof window ? f = window : \"undefined\" != typeof global ? f = global : \"undefined\" != typeof self && (f = self), f.Promise = e();\n }\n}(function () {\n var define, module, exports;\n return function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof _dereq_ == \"function\" && _dereq_;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f;\n }\n\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function (e) {\n var n = t[o][1][e];\n return s(n ? n : e);\n }, l, l.exports, e, t, n, r);\n }\n\n return n[o].exports;\n }\n\n var i = typeof _dereq_ == \"function\" && _dereq_;\n\n for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }\n\n return s;\n }({\n 1: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var SomePromiseArray = Promise._SomePromiseArray;\n\n function any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n }\n\n Promise.any = function (promises) {\n return any(promises);\n };\n\n Promise.prototype.any = function () {\n return any(this);\n };\n };\n }, {}],\n 2: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var firstLineError;\n\n try {\n throw new Error();\n } catch (e) {\n firstLineError = e;\n }\n\n var schedule = _dereq_(\"./schedule\");\n\n var Queue = _dereq_(\"./queue\");\n\n var util = _dereq_(\"./util\");\n\n function Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n\n this.drainQueues = function () {\n self._drainQueues();\n };\n\n this._schedule = schedule;\n }\n\n Async.prototype.setScheduler = function (fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n };\n\n Async.prototype.hasCustomScheduler = function () {\n return this._customScheduler;\n };\n\n Async.prototype.enableTrampoline = function () {\n this._trampolineEnabled = true;\n };\n\n Async.prototype.disableTrampolineIfNecessary = function () {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n };\n\n Async.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n };\n\n Async.prototype.fatalError = function (e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) + \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n };\n\n Async.prototype.throwLater = function (fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n\n fn = function fn() {\n throw arg;\n };\n }\n\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function () {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function () {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n };\n\n function AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n\n this._queueTick();\n }\n\n if (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n } else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n setTimeout(function () {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function (promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function () {\n promise._settlePromises();\n });\n }\n };\n }\n\n function _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n }\n\n function _drainQueueStep(queue) {\n var fn = queue.shift();\n\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n }\n\n Async.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n\n this._reset();\n\n this._haveDrainedQueues = true;\n\n _drainQueue(this._lateQueue);\n };\n\n Async.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n\n this._schedule(this.drainQueues);\n }\n };\n\n Async.prototype._reset = function () {\n this._isTickUsed = false;\n };\n\n module.exports = Async;\n module.exports.firstLineError = firstLineError;\n }, {\n \"./queue\": 26,\n \"./schedule\": 29,\n \"./util\": 36\n }],\n 3: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, debug) {\n var calledBind = false;\n\n var rejectThis = function rejectThis(_, e) {\n this._reject(e);\n };\n\n var targetRejected = function targetRejected(e, context) {\n context.promiseRejectionQueued = true;\n\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n };\n\n var bindingResolved = function bindingResolved(thisArg, context) {\n if ((this._bitField & 50397184) === 0) {\n this._resolveCallback(context.target);\n }\n };\n\n var bindingRejected = function bindingRejected(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n };\n\n Promise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n\n ret._propagateFrom(this, 1);\n\n var target = this._target();\n\n ret._setBoundTo(maybePromise);\n\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n\n maybePromise._then(bindingResolved, bindingRejected, undefined, ret, context);\n\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n\n return ret;\n };\n\n Promise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & ~2097152;\n }\n };\n\n Promise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n };\n\n Promise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n };\n };\n }, {}],\n 4: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var old;\n if (typeof Promise !== \"undefined\") old = Promise;\n\n function noConflict() {\n try {\n if (Promise === bluebird) Promise = old;\n } catch (e) {}\n\n return bluebird;\n }\n\n var bluebird = _dereq_(\"./promise\")();\n\n bluebird.noConflict = noConflict;\n module.exports = bluebird;\n }, {\n \"./promise\": 22\n }],\n 5: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var cr = Object.create;\n\n if (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n }\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var isIdentifier = util.isIdentifier;\n var getMethodCaller;\n var getGetter;\n\n if (!true) {\n var makeMethodCaller = function makeMethodCaller(methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n };\n\n var makeGetter = function makeGetter(propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n };\n\n var getCompiled = function getCompiled(name, compiler, cache) {\n var ret = cache[name];\n\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n\n for (var i = 0; i < 256; ++i) {\n delete cache[keys[i]];\n }\n\n cache[\" size\"] = keys.length - 256;\n }\n }\n\n return ret;\n };\n\n getMethodCaller = function getMethodCaller(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n };\n\n getGetter = function getGetter(name) {\n return getCompiled(name, makeGetter, getterCache);\n };\n }\n\n function ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" + util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n\n return fn;\n }\n\n function caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n }\n\n Promise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);\n ;\n\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n\n if (maybeCaller !== null) {\n return this._then(maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n };\n\n function namedGetter(obj) {\n return obj[this];\n }\n\n function indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n }\n\n Promise.prototype.get = function (propertyName) {\n var isIndex = typeof propertyName === \"number\";\n var getter;\n\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n\n return this._then(getter, undefined, undefined, propertyName, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 6: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n Promise.prototype[\"break\"] = Promise.prototype.cancel = function () {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n var promise = this;\n var child = promise;\n\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n\n break;\n }\n\n var parent = promise._cancellationParent;\n\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n\n promise._setWillBeCancelled();\n\n child = promise;\n promise = parent;\n }\n }\n };\n\n Promise.prototype._branchHasCancelled = function () {\n this._branchesRemainingToCancel--;\n };\n\n Promise.prototype._enoughBranchesHaveCancelled = function () {\n return this._branchesRemainingToCancel === undefined || this._branchesRemainingToCancel <= 0;\n };\n\n Promise.prototype._cancelBy = function (canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n\n this._invokeOnCancel();\n\n return true;\n } else {\n this._branchHasCancelled();\n\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n\n return true;\n }\n }\n\n return false;\n };\n\n Promise.prototype._cancelBranched = function () {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n };\n\n Promise.prototype._cancel = function () {\n if (!this._isCancellable()) return;\n\n this._setCancelled();\n\n async.invoke(this._cancelPromises, this, undefined);\n };\n\n Promise.prototype._cancelPromises = function () {\n if (this._length() > 0) this._settlePromises();\n };\n\n Promise.prototype._unsetOnCancel = function () {\n this._onCancelField = undefined;\n };\n\n Promise.prototype._isCancellable = function () {\n return this.isPending() && !this._isCancelled();\n };\n\n Promise.prototype.isCancellable = function () {\n return this.isPending() && !this.isCancelled();\n };\n\n Promise.prototype._doInvokeOnCancel = function (onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n };\n\n Promise.prototype._invokeOnCancel = function () {\n var onCancelCallback = this._onCancel();\n\n this._unsetOnCancel();\n\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n };\n\n Promise.prototype._invokeInternalOnCancel = function () {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n\n this._unsetOnCancel();\n }\n };\n\n Promise.prototype._resultCancelled = function () {\n this.cancel();\n };\n };\n }, {\n \"./util\": 36\n }],\n 7: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var getKeys = _dereq_(\"./es5\").keys;\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function catchFilter(instances, cb, promise) {\n return function (e) {\n var boundTo = promise._boundValue();\n\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error || item != null && item.prototype instanceof Error) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n\n return tryCatch(cb).call(boundTo, e);\n }\n }\n\n return NEXT_FILTER;\n };\n }\n\n return catchFilter;\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 8: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var longStackTraces = false;\n var contextStack = [];\n\n Promise.prototype._promiseCreated = function () {};\n\n Promise.prototype._pushContext = function () {};\n\n Promise.prototype._popContext = function () {\n return null;\n };\n\n Promise._peekContext = Promise.prototype._peekContext = function () {};\n\n function Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n }\n\n Context.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n };\n\n Context.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n\n return null;\n };\n\n function createContext() {\n if (longStackTraces) return new Context();\n }\n\n function peekContext() {\n var lastIndex = contextStack.length - 1;\n\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n\n return undefined;\n }\n\n Context.CapturedTrace = null;\n Context.create = createContext;\n\n Context.deactivateLongStackTraces = function () {};\n\n Context.activateLongStackTraces = function () {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n\n Context.deactivateLongStackTraces = function () {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n\n Promise.prototype._promiseCreated = function () {\n var ctx = this._peekContext();\n\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n };\n\n return Context;\n };\n }, {}],\n 9: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, Context) {\n var getDomain = Promise._getDomain;\n var async = Promise._async;\n\n var Warning = _dereq_(\"./errors\").Warning;\n\n var util = _dereq_(\"./util\");\n\n var es5 = _dereq_(\"./es5\");\n\n var canAttachTrace = util.canAttachTrace;\n var unhandledRejectionHandled;\n var possiblyUnhandledRejection;\n var bluebirdFramePattern = /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\n var nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\n var parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\n var stackFramePattern = null;\n var formatStack = null;\n var indentStackFrames = false;\n var printWarning;\n var debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 && (true || util.env(\"BLUEBIRD_DEBUG\") || util.env(\"NODE_ENV\") === \"development\"));\n var warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 && (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n var longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 && (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n var wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 && (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\n Promise.prototype.suppressUnhandledRejections = function () {\n var target = this._target();\n\n target._bitField = target._bitField & ~1048576 | 524288;\n };\n\n Promise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n\n this._setRejectionIsUnhandled();\n\n var self = this;\n setTimeout(function () {\n self._notifyUnhandledRejection();\n }, 1);\n };\n\n Promise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\", unhandledRejectionHandled, undefined, this);\n };\n\n Promise.prototype._setReturnedNonUndefined = function () {\n this._bitField = this._bitField | 268435456;\n };\n\n Promise.prototype._returnedNonUndefined = function () {\n return (this._bitField & 268435456) !== 0;\n };\n\n Promise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n\n this._setUnhandledRejectionIsNotified();\n\n fireRejectionEvent(\"unhandledRejection\", possiblyUnhandledRejection, reason, this);\n }\n };\n\n Promise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n };\n\n Promise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & ~262144;\n };\n\n Promise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n };\n\n Promise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n };\n\n Promise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & ~1048576;\n\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n\n this._notifyUnhandledRejectionIsHandled();\n }\n };\n\n Promise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n };\n\n Promise.prototype._warn = function (message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n };\n\n Promise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n Promise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n var disableLongStackTraces = function disableLongStackTraces() {};\n\n Promise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n\n disableLongStackTraces = function disableLongStackTraces() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n };\n\n Promise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n };\n\n var fireDomEvent = function () {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(eventData, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(eventData, \"reason\", {\n value: event.reason\n });\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(domEvent, \"reason\", {\n value: event.reason\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true, event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n\n return function () {\n return false;\n };\n }();\n\n var fireGlobalEvent = function () {\n if (util.isNode) {\n return function () {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function () {\n return false;\n };\n }\n\n return function (name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n }();\n\n function generatePromiseLifecycleEventObject(name, promise) {\n return {\n promise: promise\n };\n }\n\n var eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function promiseChained(name, promise, child) {\n return {\n promise: promise,\n child: child\n };\n },\n warning: function warning(name, _warning) {\n return {\n warning: _warning\n };\n },\n unhandledRejection: function unhandledRejection(name, reason, promise) {\n return {\n reason: reason,\n promise: promise\n };\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n };\n\n var activeFireEvent = function activeFireEvent(name) {\n var globalEventFired = false;\n\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n\n try {\n domEventFired = fireDomEvent(name, eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n };\n\n Promise.config = function (opts) {\n opts = Object(opts);\n\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\"cannot enable cancellation after promises are in use\");\n }\n\n Promise.prototype._clearCancellationData = cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback = cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n _propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n\n return Promise;\n };\n\n function defaultFireEvent() {\n return false;\n }\n\n Promise.prototype._fireEvent = defaultFireEvent;\n\n Promise.prototype._execute = function (executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n };\n\n Promise.prototype._onCancel = function () {};\n\n Promise.prototype._setOnCancel = function (handler) {\n ;\n };\n\n Promise.prototype._attachCancellationCallback = function (onCancel) {\n ;\n };\n\n Promise.prototype._captureStackTrace = function () {};\n\n Promise.prototype._attachExtraTrace = function () {};\n\n Promise.prototype._dereferenceTrace = function () {};\n\n Promise.prototype._clearCancellationData = function () {};\n\n Promise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n };\n\n function cancellationExecute(executor, resolve, reject) {\n var promise = this;\n\n try {\n executor(resolve, reject, function (onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" + util.toString(onCancel));\n }\n\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n }\n\n function cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n }\n\n function cancellationOnCancel() {\n return this._onCancelField;\n }\n\n function cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n }\n\n function cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n }\n\n function cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n function bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n var _propagateFromFunction = bindingPropagateFrom;\n\n function _boundValueFunction() {\n var ret = this._boundTo;\n\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n\n return ret;\n }\n\n function longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n }\n\n function longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\", parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n }\n\n function longStackTracesDereferenceTrace() {\n this._trace = undefined;\n }\n\n function checkForgottenReturns(returnValue, promiseCreated, name, promise, parent) {\n if (returnValue === undefined && promiseCreated !== null && wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n\n var stack = cleanStack(traceLines);\n\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] + \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n\n for (var i = 0; i < traceLines.length; ++i) {\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n\n break;\n }\n }\n }\n }\n\n var msg = \"a promise was created in a \" + name + \"handler \" + handlerLine + \"but was not returned from it, \" + \"see http://goo.gl/rRqMUw\" + creatorLine;\n\n promise._warn(msg, true, promiseCreated);\n }\n }\n\n function deprecated(name, replacement) {\n var message = name + \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n }\n\n function warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n }\n\n function reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n return message + \"\\n\" + stacks.join(\"\\n\");\n }\n\n function removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 || i + 1 < stacks.length && stacks[i][0] === stacks[i + 1][0]) {\n stacks.splice(i, 1);\n i--;\n }\n }\n }\n\n function removeCommonRoots(stacks) {\n var current = stacks[0];\n\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n\n current = prev;\n }\n }\n\n function cleanStack(stack) {\n var ret = [];\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line || stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n\n ret.push(line);\n }\n }\n\n return ret;\n }\n\n function stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n\n return stack;\n }\n\n function parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0 ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n }\n\n function formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" || _typeof(console.log) === \"object\") {\n console.log(message);\n }\n }\n }\n\n function fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n }\n\n function formatNonError(obj) {\n var str;\n\n if (typeof obj === \"function\") {\n str = \"[function \" + (obj.name || \"anonymous\") + \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\" ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n } catch (e) {}\n }\n\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n\n return \"(<\" + snip(str) + \">, no stack trace)\";\n }\n\n function snip(str) {\n var maxChars = 41;\n\n if (str.length < maxChars) {\n return str;\n }\n\n return str.substr(0, maxChars - 3) + \"...\";\n }\n\n function longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n }\n\n var shouldIgnore = function shouldIgnore() {\n return false;\n };\n\n var parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\n\n function parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n }\n\n function setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function shouldIgnore(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n\n if (info) {\n if (info.fileName === firstFileName && firstIndex <= info.line && info.line <= lastIndex) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n }\n\n util.inherits(CapturedTrace, Error);\n Context.CapturedTrace = CapturedTrace;\n\n CapturedTrace.prototype.uncycle = function () {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n\n length = this._length = i;\n\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n\n cycleEdgeNode._parent.uncycle();\n\n cycleEdgeNode._length = cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n\n var currentChildLength = cycleEdgeNode._length + 1;\n\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n\n return;\n }\n }\n };\n\n CapturedTrace.prototype.attachExtraTrace = function (error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n var trace = this;\n\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n };\n\n var captureStackTrace = function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n\n var v8stackFormatter = function v8stackFormatter(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" && typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function shouldIgnore(line) {\n return bluebirdFramePattern.test(line);\n };\n\n return function (receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n\n var err = new Error();\n\n if (typeof err.stack === \"string\" && err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n\n try {\n throw new Error();\n } catch (e) {\n hasStackAfterThrow = \"stack\" in e;\n }\n\n if (!(\"stack\" in err) && hasStackAfterThrow && typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n\n try {\n throw new Error();\n } catch (e) {\n o.stack = e.stack;\n }\n\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function formatStack(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((_typeof(error) === \"object\" || typeof error === \"function\") && error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n return null;\n }([]);\n\n if (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function printWarning(message) {\n console.warn(message);\n };\n\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function printWarning(message, isSoft) {\n var color = isSoft ? \"\\x1B[33m\" : \"\\x1B[31m\";\n console.warn(color + message + \"\\x1B[0m\\n\");\n };\n } else if (!util.isNode && typeof new Error().stack === \"string\") {\n printWarning = function printWarning(message, isSoft) {\n console.warn(\"%c\" + message, isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n }\n\n var config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n };\n if (longStackTraces) Promise.longStackTraces();\n return {\n longStackTraces: function longStackTraces() {\n return config.longStackTraces;\n },\n warnings: function warnings() {\n return config.warnings;\n },\n cancellation: function cancellation() {\n return config.cancellation;\n },\n monitoring: function monitoring() {\n return config.monitoring;\n },\n propagateFromFunction: function propagateFromFunction() {\n return _propagateFromFunction;\n },\n boundValueFunction: function boundValueFunction() {\n return _boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n };\n };\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 10: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function returner() {\n return this.value;\n }\n\n function thrower() {\n throw this.reason;\n }\n\n Promise.prototype[\"return\"] = Promise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(returner, undefined, undefined, {\n value: value\n }, undefined);\n };\n\n Promise.prototype[\"throw\"] = Promise.prototype.thenThrow = function (reason) {\n return this._then(thrower, undefined, undefined, {\n reason: reason\n }, undefined);\n };\n\n Promise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(undefined, thrower, undefined, {\n reason: reason\n }, undefined);\n } else {\n var _reason = arguments[1];\n\n var handler = function handler() {\n throw _reason;\n };\n\n return this.caught(reason, handler);\n }\n };\n\n Promise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(undefined, returner, undefined, {\n value: value\n }, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n\n var handler = function handler() {\n return _value;\n };\n\n return this.caught(value, handler);\n }\n };\n };\n }, {}],\n 11: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseReduce = Promise.reduce;\n var PromiseAll = Promise.all;\n\n function promiseAllThis() {\n return PromiseAll(this);\n }\n\n function PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n }\n\n Promise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, this, undefined);\n };\n\n Promise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n };\n\n Promise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, promises, undefined);\n };\n\n Promise.mapSeries = PromiseMapSeries;\n };\n }, {}],\n 12: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var Objectfreeze = es5.freeze;\n\n var util = _dereq_(\"./util\");\n\n var inherits = util.inherits;\n var notEnumerableProp = util.notEnumerableProp;\n\n function subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\", typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n\n inherits(SubError, Error);\n return SubError;\n }\n\n var _TypeError, _RangeError;\n\n var Warning = subError(\"Warning\", \"warning\");\n var CancellationError = subError(\"CancellationError\", \"cancellation error\");\n var TimeoutError = subError(\"TimeoutError\", \"timeout error\");\n var AggregateError = subError(\"AggregateError\", \"aggregate error\");\n\n try {\n _TypeError = TypeError;\n _RangeError = RangeError;\n } catch (e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n }\n\n var methods = (\"join pop push shift unshift slice filter forEach some \" + \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\n for (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n }\n\n es5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n });\n AggregateError.prototype[\"isOperational\"] = true;\n var level = 0;\n\n AggregateError.prototype.toString = function () {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n\n level--;\n return ret;\n };\n\n function OperationalError(message) {\n if (!(this instanceof OperationalError)) return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n inherits(OperationalError, Error);\n var errorTypes = Error[\"__BluebirdErrorTypes__\"];\n\n if (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n }\n\n module.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 13: [function (_dereq_, module, exports) {\n var isES5 = function () {\n \"use strict\";\n\n return this === undefined;\n }();\n\n if (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n } else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function ObjectKeys(o) {\n var ret = [];\n\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n\n return ret;\n };\n\n var ObjectGetDescriptor = function ObjectGetDescriptor(o, key) {\n return {\n value: o[key]\n };\n };\n\n var ObjectDefineProperty = function ObjectDefineProperty(o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function ObjectFreeze(obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function ObjectGetPrototypeOf(obj) {\n try {\n return Object(obj).constructor.prototype;\n } catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function ArrayIsArray(obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n } catch (e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable() {\n return true;\n }\n };\n }\n }, {}],\n 14: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseMap = Promise.map;\n\n Promise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n };\n\n Promise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n };\n };\n }, {}],\n 15: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, tryConvertToPromise, NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var CancellationError = Promise.CancellationError;\n var errorObj = util.errorObj;\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n function PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n }\n\n PassThroughHandlerContext.prototype.isFinallyHandler = function () {\n return this.type === 0;\n };\n\n function FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n }\n\n FinallyHandlerCancelReaction.prototype._resultCancelled = function () {\n checkCancel(this.finallyHandler);\n };\n\n function checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n\n ctx.cancelPromise = null;\n return true;\n }\n\n return false;\n }\n\n function succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n }\n\n function fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n }\n\n function finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler() ? handler.call(promise._boundValue()) : handler.call(promise._boundValue(), reasonOrValue);\n\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n\n var maybePromise = tryConvertToPromise(ret, promise);\n\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(new FinallyHandlerCancelReaction(this));\n }\n }\n\n return maybePromise._then(succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n }\n\n Promise.prototype._passThrough = function (handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success, fail, undefined, new PassThroughHandlerContext(this, type, handler), undefined);\n };\n\n Promise.prototype.lastly = Promise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler, 0, finallyHandler, finallyHandler);\n };\n\n Promise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n };\n\n Promise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n\n if (len === 1) {\n return this._passThrough(handlerOrPredicate, 1, undefined, finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\"tapCatch statement predicate: \" + \"expecting an object but got \" + util.classString(item)));\n }\n }\n\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this), 1, undefined, finallyHandler);\n }\n };\n\n return PassThroughHandlerContext;\n };\n }, {\n \"./catch_filter\": 7,\n \"./util\": 36\n }],\n 16: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug) {\n var errors = _dereq_(\"./errors\");\n\n var TypeError = errors.TypeError;\n\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var yieldHandlers = [];\n\n function promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n\n var result = tryCatch(yieldHandlers[i])(value);\n\n traceParent._popContext();\n\n if (result === errorObj) {\n traceParent._pushContext();\n\n var ret = Promise.reject(errorObj.e);\n\n traceParent._popContext();\n\n return ret;\n }\n\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n\n return null;\n }\n\n function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n\n this._promise = internal.lastly(function () {\n return _finallyPromise;\n });\n\n internal._captureStackTrace();\n\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n }\n\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\" ? [yieldHandler].concat(yieldHandlers) : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n }\n\n util.inherits(PromiseSpawn, Proxyable);\n\n PromiseSpawn.prototype._isResolved = function () {\n return this._promise === null;\n };\n\n PromiseSpawn.prototype._cleanup = function () {\n this._promise = this._generator = null;\n\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n\n this._finallyPromise = null;\n }\n };\n\n PromiseSpawn.prototype._promiseCancelled = function () {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n var result;\n\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"return\"]).call(this._generator, undefined);\n\n this._promise._popContext();\n }\n\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseFulfilled = function (value) {\n this._yieldedPromise = null;\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator.next).call(this._generator, value);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseRejected = function (reason) {\n this._yieldedPromise = null;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._resultCancelled = function () {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n };\n\n PromiseSpawn.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver = this._generatorFunction = undefined;\n\n this._promiseFulfilled(undefined);\n };\n\n PromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n\n if (result === errorObj) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n\n if (result.done === true) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n\n if (!(maybePromise instanceof Promise)) {\n maybePromise = promiseFromYieldHandler(maybePromise, this._yieldHandlers, this._promise);\n\n if (maybePromise === null) {\n this._promiseRejected(new TypeError(\"A value %s was yielded that could not be treated as a promise\\n\\n See http://goo.gl/MqrFmX\\n\\n\".replace(\"%s\", String(value)) + \"From coroutine:\\n\" + this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")));\n\n return;\n }\n }\n\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n this._yieldedPromise = maybePromise;\n\n maybePromise._proxy(this, null);\n } else if ((bitField & 33554432) !== 0) {\n Promise._async.invoke(this._promiseFulfilled, this, maybePromise._value());\n } else if ((bitField & 16777216) !== 0) {\n Promise._async.invoke(this._promiseRejected, this, maybePromise._reason());\n } else {\n this._promiseCancelled();\n }\n }\n };\n\n Promise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n\n spawn._promiseFulfilled(undefined);\n\n return ret;\n };\n };\n\n Promise.coroutine.addYieldHandler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n yieldHandlers.push(fn);\n };\n\n Promise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n\n spawn._run(Promise.spawn);\n\n return ret;\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 17: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var reject;\n\n if (!true) {\n if (canEvaluate) {\n var thenCallback = function thenCallback(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function promiseSetter(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function generateHolderClass(total) {\n var props = new Array(total);\n\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i + 1);\n }\n\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode = \"var promise;\\n\" + props.map(function (prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n code = code.replace(/\\[TheName\\]/g, name).replace(/\\[TheTotal\\]/g, total).replace(/\\[ThePassedArguments\\]/g, passedArguments).replace(/\\[TheProperties\\]/g, assignment).replace(/\\[CancellationCode\\]/g, cancellationCode);\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)(tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function reject(reason) {\n this._reject(reason);\n };\n }\n }\n\n Promise.join = function () {\n var last = arguments.length - 1;\n var fn;\n\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n maybePromise._then(callbacks[i], reject, undefined, ret, holder);\n\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if ((bitField & 33554432) !== 0) {\n callbacks[i].call(ret, maybePromise._value(), holder);\n } else if ((bitField & 16777216) !== 0) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n\n ret._setAsyncGuaranteed();\n\n ret._setOnCancel(holder);\n }\n\n return ret;\n }\n }\n }\n\n var args = [].slice.call(arguments);\n ;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 18: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n function MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n\n this._promise._captureStackTrace();\n\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL ? new Array(this.length()) : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n }\n\n util.inherits(MappingPromiseArray, PromiseArray);\n\n MappingPromiseArray.prototype._asyncInit = function () {\n this._init$(undefined, -2);\n };\n\n MappingPromiseArray.prototype._init = function () {};\n\n MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = index * -1 - 1;\n values[index] = value;\n\n if (limit >= 1) {\n this._inFlight--;\n\n this._drainQueue();\n\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n\n this._queue.push(index);\n\n return false;\n }\n\n if (preservedValues !== null) preservedValues[index] = value;\n var promise = this._promise;\n var callback = this._callback;\n\n var receiver = promise._boundValue();\n\n promise._pushContext();\n\n var ret = tryCatch(callback).call(receiver, value, index, length);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, preservedValues !== null ? \"Promise.filter\" : \"Promise.map\", promise);\n\n if (ret === errorObj) {\n this._reject(ret.e);\n\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n\n maybePromise._proxy(this, (index + 1) * -1);\n\n return false;\n } else if ((bitField & 33554432) !== 0) {\n ret = maybePromise._value();\n } else if ((bitField & 16777216) !== 0) {\n this._reject(maybePromise._reason());\n\n return true;\n } else {\n this._cancel();\n\n return true;\n }\n }\n\n values[index] = ret;\n }\n\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n\n return true;\n }\n\n return false;\n };\n\n MappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n\n this._promiseFulfilled(values[index], index);\n }\n };\n\n MappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n\n ret.length = j;\n\n this._resolve(ret);\n };\n\n MappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n };\n\n function map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n\n if (options !== undefined) {\n if (_typeof(options) === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(new TypeError(\"'concurrency' must be a number but it is \" + util.classString(options.concurrency)));\n }\n\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\"options argument must be an object but it is \" + util.classString(options)));\n }\n }\n\n limit = typeof limit === \"number\" && isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n }\n\n Promise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n };\n\n Promise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n };\n };\n }, {\n \"./util\": 36\n }],\n 19: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n Promise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return function () {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value = tryCatch(fn).apply(this, arguments);\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.method\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n };\n\n Promise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value;\n\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.try\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n\n Promise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n };\n };\n }, {\n \"./util\": 36\n }],\n 20: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var maybeWrapAsError = util.maybeWrapAsError;\n\n var errors = _dereq_(\"./errors\");\n\n var OperationalError = errors.OperationalError;\n\n var es5 = _dereq_(\"./es5\");\n\n function isUntypedError(obj) {\n return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype;\n }\n\n var rErrorKey = /^(?:name|message|stack|cause)$/;\n\n function wrapAsOperationalError(obj) {\n var ret;\n\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n\n return ret;\n }\n\n util.markAsOriginatingFromRejection(obj);\n return obj;\n }\n\n function nodebackForPromise(promise, multiArgs) {\n return function (err, value) {\n if (promise === null) return;\n\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n\n promise._attachExtraTrace(wrapped);\n\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);\n ;\n\n promise._fulfill(args);\n }\n\n promise = null;\n };\n }\n\n module.exports = nodebackForPromise;\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 21: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var async = Promise._async;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret = tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function successAdapter(val, nodeback) {\n var promise = this;\n\n var receiver = promise._boundValue();\n\n var ret = val === undefined ? tryCatch(nodeback).call(receiver, null) : tryCatch(nodeback).call(receiver, null, val);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function errorAdapter(reason, nodeback) {\n var promise = this;\n\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n\n this._then(adapter, errorAdapter, undefined, this, nodeback);\n }\n\n return this;\n };\n };\n }, {\n \"./util\": 36\n }],\n 22: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function () {\n var makeSelfResolutionError = function makeSelfResolutionError() {\n return new TypeError(\"circular promise resolution chain\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var reflectHandler = function reflectHandler() {\n return new Promise.PromiseInspection(this._target());\n };\n\n var apiRejection = function apiRejection(msg) {\n return Promise.reject(new TypeError(msg));\n };\n\n function Proxyable() {}\n\n var UNDEFINED_BINDING = {};\n\n var util = _dereq_(\"./util\");\n\n var getDomain;\n\n if (util.isNode) {\n getDomain = function getDomain() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n } else {\n getDomain = function getDomain() {\n return null;\n };\n }\n\n util.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\n var es5 = _dereq_(\"./es5\");\n\n var Async = _dereq_(\"./async\");\n\n var async = new Async();\n es5.defineProperty(Promise, \"_async\", {\n value: async\n });\n\n var errors = _dereq_(\"./errors\");\n\n var TypeError = Promise.TypeError = errors.TypeError;\n Promise.RangeError = errors.RangeError;\n var CancellationError = Promise.CancellationError = errors.CancellationError;\n Promise.TimeoutError = errors.TimeoutError;\n Promise.OperationalError = errors.OperationalError;\n Promise.RejectionError = errors.OperationalError;\n Promise.AggregateError = errors.AggregateError;\n\n var INTERNAL = function INTERNAL() {};\n\n var APPLY = {};\n var NEXT_FILTER = {};\n\n var tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\n\n var PromiseArray = _dereq_(\"./promise_array\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable);\n\n var Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\n\n\n var createContext = Context.create;\n\n var debug = _dereq_(\"./debuggability\")(Promise, Context);\n\n var CapturedTrace = debug.CapturedTrace;\n\n var PassThroughHandlerContext = _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n\n function check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n }\n\n function Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._resolveFromExecutor(executor);\n\n this._promiseCreated();\n\n this._fireEvent(\"promiseCreated\", this);\n }\n\n Promise.prototype.toString = function () {\n return \"[object Promise]\";\n };\n\n Promise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" + \"expecting an object but got \" + util.classString(item));\n }\n }\n\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n\n return this.then(undefined, fn);\n };\n\n Promise.prototype.reflect = function () {\n return this._then(reflectHandler, reflectHandler, undefined, this, undefined);\n };\n\n Promise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 && typeof didFulfill !== \"function\" && typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" + util.classString(didFulfill);\n\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n\n this._warn(msg);\n }\n\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n };\n\n Promise.prototype.done = function (didFulfill, didReject) {\n var promise = this._then(didFulfill, didReject, undefined, undefined, undefined);\n\n promise._setIsFinal();\n };\n\n Promise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n };\n\n Promise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n\n return ret;\n };\n\n Promise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n\n return new PromiseArray(this).promise();\n };\n\n Promise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n };\n\n Promise.getNewLibraryCopy = module.exports;\n\n Promise.is = function (val) {\n return val instanceof Promise;\n };\n\n Promise.fromNode = Promise.fromCallback = function (fn) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n };\n\n Promise.all = function (promises) {\n return new PromiseArray(promises).promise();\n };\n\n Promise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._setFulfilled();\n\n ret._rejectionHandler0 = obj;\n }\n\n return ret;\n };\n\n Promise.resolve = Promise.fulfilled = Promise.cast;\n\n Promise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._rejectCallback(reason, true);\n\n return ret;\n };\n\n Promise.setScheduler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return async.setScheduler(fn);\n };\n\n Promise.prototype._then = function (didFulfill, didReject, _, receiver, internalData) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n\n var target = this._target();\n\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n\n promise._captureStackTrace();\n\n if (receiver === undefined && (this._bitField & 2097152) !== 0) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n\n if (!((bitField & 50397184) === 0)) {\n var handler,\n value,\n settler = target._settlePromiseCtx;\n\n if ((bitField & 33554432) !== 0) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if ((bitField & 16777216) !== 0) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n\n target._attachExtraTrace(value);\n\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler : typeof handler === \"function\" && util.domainBind(domain, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n };\n\n Promise.prototype._length = function () {\n return this._bitField & 65535;\n };\n\n Promise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n };\n\n Promise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n };\n\n Promise.prototype._setLength = function (len) {\n this._bitField = this._bitField & -65536 | len & 65535;\n };\n\n Promise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n\n this._fireEvent(\"promiseFulfilled\", this);\n };\n\n Promise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n\n this._fireEvent(\"promiseRejected\", this);\n };\n\n Promise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n\n this._fireEvent(\"promiseResolved\", this);\n };\n\n Promise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n };\n\n Promise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n };\n\n Promise.prototype._unsetCancelled = function () {\n this._bitField = this._bitField & ~65536;\n };\n\n Promise.prototype._setCancelled = function () {\n this._bitField = this._bitField | 65536;\n\n this._fireEvent(\"promiseCancelled\", this);\n };\n\n Promise.prototype._setWillBeCancelled = function () {\n this._bitField = this._bitField | 8388608;\n };\n\n Promise.prototype._setAsyncGuaranteed = function () {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n };\n\n Promise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[index * 4 - 4 + 3];\n\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n\n return ret;\n };\n\n Promise.prototype._promiseAt = function (index) {\n return this[index * 4 - 4 + 2];\n };\n\n Promise.prototype._fulfillmentHandlerAt = function (index) {\n return this[index * 4 - 4 + 0];\n };\n\n Promise.prototype._rejectionHandlerAt = function (index) {\n return this[index * 4 - 4 + 1];\n };\n\n Promise.prototype._boundValue = function () {};\n\n Promise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n\n var receiver = follower._receiverAt(0);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n\n var reject = follower._rejectionHandlerAt(index);\n\n var promise = follower._promiseAt(index);\n\n var receiver = follower._receiverAt(index);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._addCallbacks = function (fulfill, reject, promise, receiver, domain) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n\n if (typeof fulfill === \"function\") {\n this[base + 0] = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this[base + 1] = domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n\n this._setLength(index + 1);\n\n return index;\n };\n\n Promise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n };\n\n Promise.prototype._resolveCallback = function (value, shouldBind) {\n if ((this._bitField & 117506048) !== 0) return;\n if (value === this) return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n\n return;\n }\n\n var bitField = promise._bitField;\n\n if ((bitField & 50397184) === 0) {\n var len = this._length();\n\n if (len > 0) promise._migrateCallback0(this);\n\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n\n this._setFollowing();\n\n this._setLength(0);\n\n this._setFollowee(promise);\n } else if ((bitField & 33554432) !== 0) {\n this._fulfill(promise._value());\n } else if ((bitField & 16777216) !== 0) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n this._reject(reason);\n }\n };\n\n Promise.prototype._rejectCallback = function (reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" + util.classString(reason);\n\n this._warn(message, true);\n }\n\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n\n this._reject(reason);\n };\n\n Promise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n\n this._captureStackTrace();\n\n this._pushContext();\n\n var synchronous = true;\n\n var r = this._execute(executor, function (value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n\n synchronous = false;\n\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n };\n\n Promise.prototype._settlePromiseFromHandler = function (handler, receiver, value, promise) {\n var bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n promise._pushContext();\n\n var x;\n\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" + util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n\n var promiseCreated = promise._popContext();\n\n bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n\n promise._resolveCallback(x);\n }\n };\n\n Promise.prototype._target = function () {\n var ret = this;\n\n while (ret._isFollowing()) {\n ret = ret._followee();\n }\n\n return ret;\n };\n\n Promise.prototype._followee = function () {\n return this._rejectionHandler0;\n };\n\n Promise.prototype._setFollowee = function (promise) {\n this._rejectionHandler0 = promise;\n };\n\n Promise.prototype._settlePromise = function (promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = (bitField & 134217728) !== 0;\n\n if ((bitField & 65536) !== 0) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext && receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if ((bitField & 33554432) !== 0) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n if ((bitField & 33554432) !== 0) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n };\n\n Promise.prototype._settlePromiseLateCancellationObserver = function (ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n };\n\n Promise.prototype._settlePromiseCtx = function (ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n };\n\n Promise.prototype._settlePromise0 = function (handler, value, bitField) {\n var promise = this._promise0;\n\n var receiver = this._receiverAt(0);\n\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._settlePromise(promise, handler, receiver, value);\n };\n\n Promise.prototype._clearCallbackDataAtIndex = function (index) {\n var base = index * 4 - 4;\n this[base + 2] = this[base + 3] = this[base + 0] = this[base + 1] = undefined;\n };\n\n Promise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n if (value === this) {\n var err = makeSelfResolutionError();\n\n this._attachExtraTrace(err);\n\n return this._reject(err);\n }\n\n this._setFulfilled();\n\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if ((bitField & 134217728) !== 0) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n\n this._dereferenceTrace();\n }\n };\n\n Promise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n this._setRejected();\n\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n };\n\n Promise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, value);\n }\n };\n\n Promise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, reason);\n }\n };\n\n Promise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = bitField & 65535;\n\n if (len > 0) {\n if ((bitField & 16842752) !== 0) {\n var reason = this._fulfillmentHandler0;\n\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n\n this._fulfillPromises(len, value);\n }\n\n this._setLength(0);\n }\n\n this._clearCancellationData();\n };\n\n Promise.prototype._settledValue = function () {\n var bitField = this._bitField;\n\n if ((bitField & 33554432) !== 0) {\n return this._rejectionHandler0;\n } else if ((bitField & 16777216) !== 0) {\n return this._fulfillmentHandler0;\n }\n };\n\n function deferResolve(v) {\n this.promise._resolveCallback(v);\n }\n\n function deferReject(v) {\n this.promise._rejectCallback(v, false);\n }\n\n Promise.defer = Promise.pending = function () {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n };\n\n util.notEnumerableProp(Promise, \"_makeSelfResolutionError\", makeSelfResolutionError);\n\n _dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug);\n\n _dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n\n _dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n\n _dereq_(\"./direct_resolve\")(Promise);\n\n _dereq_(\"./synchronous_inspection\")(Promise);\n\n _dereq_(\"./join\")(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\n\n Promise.Promise = Promise;\n Promise.version = \"3.5.4\";\n\n _dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./call_get.js')(Promise);\n\n _dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n\n _dereq_('./timers.js')(Promise, INTERNAL, debug);\n\n _dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n\n _dereq_('./nodeify.js')(Promise);\n\n _dereq_('./promisify.js')(Promise, INTERNAL);\n\n _dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n\n _dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n\n _dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./settle.js')(Promise, PromiseArray, debug);\n\n _dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n\n _dereq_('./filter.js')(Promise, INTERNAL);\n\n _dereq_('./each.js')(Promise, INTERNAL);\n\n _dereq_('./any.js')(Promise);\n\n util.toFastProperties(Promise);\n util.toFastProperties(Promise.prototype);\n\n function fillTypes(value) {\n var p = new Promise(INTERNAL);\n p._fulfillmentHandler0 = value;\n p._rejectionHandler0 = value;\n p._promise0 = value;\n p._receiver0 = value;\n } // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n\n\n fillTypes({\n a: 1\n });\n fillTypes({\n b: 2\n });\n fillTypes({\n c: 3\n });\n fillTypes(1);\n fillTypes(function () {});\n fillTypes(undefined);\n fillTypes(false);\n fillTypes(new Promise(INTERNAL));\n debug.setBounds(Async.firstLineError, util.lastLineError);\n return Promise;\n };\n }, {\n \"./any.js\": 1,\n \"./async\": 2,\n \"./bind\": 3,\n \"./call_get.js\": 5,\n \"./cancel\": 6,\n \"./catch_filter\": 7,\n \"./context\": 8,\n \"./debuggability\": 9,\n \"./direct_resolve\": 10,\n \"./each.js\": 11,\n \"./errors\": 12,\n \"./es5\": 13,\n \"./filter.js\": 14,\n \"./finally\": 15,\n \"./generators.js\": 16,\n \"./join\": 17,\n \"./map.js\": 18,\n \"./method\": 19,\n \"./nodeback\": 20,\n \"./nodeify.js\": 21,\n \"./promise_array\": 23,\n \"./promisify.js\": 24,\n \"./props.js\": 25,\n \"./race.js\": 27,\n \"./reduce.js\": 28,\n \"./settle.js\": 30,\n \"./some.js\": 31,\n \"./synchronous_inspection\": 32,\n \"./thenables\": 33,\n \"./timers.js\": 34,\n \"./using.js\": 35,\n \"./util\": 36\n }],\n 23: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable) {\n var util = _dereq_(\"./util\");\n\n var isArray = util.isArray;\n\n function toResolutionValue(val) {\n switch (val) {\n case -2:\n return [];\n\n case -3:\n return {};\n\n case -6:\n return new Map();\n }\n }\n\n function PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n\n promise._setOnCancel(this);\n\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n\n this._init(undefined, -2);\n }\n\n util.inherits(PromiseArray, Proxyable);\n\n PromiseArray.prototype.length = function () {\n return this._length;\n };\n\n PromiseArray.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if ((bitField & 50397184) === 0) {\n this._promise._setAsyncGuaranteed();\n\n return values._then(init, this._reject, undefined, this, resolveValueIfEmpty);\n } else if ((bitField & 33554432) !== 0) {\n values = values._value();\n } else if ((bitField & 16777216) !== 0) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n\n values = util.asArray(values);\n\n if (values === null) {\n var err = apiRejection(\"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n\n this._promise._rejectCallback(err, false);\n\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n } else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n\n return;\n }\n\n this._iterate(values);\n };\n\n PromiseArray.prototype._iterate = function (values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if ((bitField & 50397184) === 0) {\n maybePromise._proxy(this, i);\n\n this._values[i] = maybePromise;\n } else if ((bitField & 33554432) !== 0) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if ((bitField & 16777216) !== 0) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n\n if (!isResolved) result._setAsyncGuaranteed();\n };\n\n PromiseArray.prototype._isResolved = function () {\n return this._values === null;\n };\n\n PromiseArray.prototype._resolve = function (value) {\n this._values = null;\n\n this._promise._fulfill(value);\n };\n\n PromiseArray.prototype._cancel = function () {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n\n this._promise._cancel();\n };\n\n PromiseArray.prototype._reject = function (reason) {\n this._values = null;\n\n this._promise._rejectCallback(reason, false);\n };\n\n PromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n PromiseArray.prototype._promiseCancelled = function () {\n this._cancel();\n\n return true;\n };\n\n PromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n\n this._reject(reason);\n\n return true;\n };\n\n PromiseArray.prototype._resultCancelled = function () {\n if (this._isResolved()) return;\n var values = this._values;\n\n this._cancel();\n\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n };\n\n PromiseArray.prototype.shouldCopyValues = function () {\n return true;\n };\n\n PromiseArray.prototype.getActualLength = function (len) {\n return len;\n };\n\n return PromiseArray;\n };\n }, {\n \"./util\": 36\n }],\n 24: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var THIS = {};\n\n var util = _dereq_(\"./util\");\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var withAppended = util.withAppended;\n var maybeWrapAsError = util.maybeWrapAsError;\n var canEvaluate = util.canEvaluate;\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var defaultSuffix = \"Async\";\n var defaultPromisified = {\n __isPromisified__: true\n };\n var noCopyProps = [\"arity\", \"length\", \"name\", \"arguments\", \"caller\", \"callee\", \"prototype\", \"__isPromisified__\"];\n var noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\n var defaultFilter = function defaultFilter(name) {\n return util.isIdentifier(name) && name.charAt(0) !== \"_\" && name !== \"constructor\";\n };\n\n function propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n }\n\n function isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n } catch (e) {\n return false;\n }\n }\n\n function hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix, defaultPromisified);\n return val ? isPromisified(val) : false;\n }\n\n function checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\n\\n See http://goo.gl/MqrFmX\\n\".replace(\"%s\", suffix));\n }\n }\n }\n }\n }\n\n function promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter ? true : defaultFilter(key, value, obj);\n\n if (typeof value === \"function\" && !isPromisified(value) && !hasPromisified(obj, key, suffix) && filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n }\n\n var escapeIdentRegex = function escapeIdentRegex(str) {\n return str.replace(/([$])/, \"\\\\$\");\n };\n\n var makeNodePromisifiedEval;\n\n if (!true) {\n var switchCaseArgumentOrder = function switchCaseArgumentOrder(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n\n for (var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n\n for (var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n\n return ret;\n };\n\n var argumentSequence = function argumentSequence(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n };\n\n var parameterDeclaration = function parameterDeclaration(parameterCount) {\n return util.filledRange(Math.max(parameterCount, 3), \"_arg\", \"\");\n };\n\n var parameterCount = function parameterCount(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n\n return 0;\n };\n\n makeNodePromisifiedEval = function makeNodePromisifiedEval(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined ? \"ret = callback({{args}}, nodeback); break;\\n\" : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] + \":\" + generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", shouldProxyThis ? \"ret = callback.apply(this, args);\\n\" : \"ret = callback.apply(receiver, args);\\n\");\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\" ? \"this != null ? this['\" + callback + \"'] : fn\" : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase()).replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\", \"fn\", \"receiver\", \"withAppended\", \"maybeWrapAsError\", \"nodebackForPromise\", \"tryCatch\", \"errorObj\", \"notEnumerableProp\", \"INTERNAL\", body)(Promise, fn, receiver, withAppended, maybeWrapAsError, nodebackForPromise, util.tryCatch, util.errorObj, util.notEnumerableProp, INTERNAL);\n };\n }\n\n function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = function () {\n return this;\n }();\n\n var method = callback;\n\n if (typeof method === \"string\") {\n callback = fn;\n }\n\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n\n var cb = typeof method === \"string\" && this !== defaultThis ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch (e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n }\n\n var makeNodePromisified = canEvaluate ? makeNodePromisifiedEval : makeNodePromisifiedClosure;\n\n function promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods = promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i += 2) {\n var key = methods[i];\n var fn = methods[i + 1];\n var promisifiedKey = key + suffix;\n\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] = makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function () {\n return makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n\n util.toFastProperties(obj);\n return obj;\n }\n\n function promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined, callback, null, multiArgs);\n }\n\n Promise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n if (isPromisified(fn)) {\n return fn;\n }\n\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n };\n\n Promise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && _typeof(target) !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var keys = util.inheritedDataKeys(target);\n\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n\n if (keys[i] !== \"constructor\" && util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier, multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n };\n };\n }, {\n \"./errors\": 12,\n \"./nodeback\": 20,\n \"./util\": 36\n }],\n 25: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var isObject = util.isObject;\n\n var es5 = _dereq_(\"./es5\");\n\n var Es6Map;\n if (typeof Map === \"function\") Es6Map = Map;\n\n var mapToEntries = function () {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n }();\n\n var entriesToMap = function entriesToMap(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n\n return ret;\n };\n\n function PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n\n this.constructor$(entries);\n this._isMap = isMap;\n\n this._init$(undefined, isMap ? -6 : -3);\n }\n\n util.inherits(PropertiesPromiseArray, PromiseArray);\n\n PropertiesPromiseArray.prototype._init = function () {};\n\n PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n var val;\n\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n\n this._resolve(val);\n\n return true;\n }\n\n return false;\n };\n\n PropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n PropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n };\n\n function props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\n\\n See http://goo.gl/MqrFmX\\n\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n\n return ret;\n }\n\n Promise.prototype.props = function () {\n return props(this);\n };\n\n Promise.props = function (promises) {\n return props(promises);\n };\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 26: [function (_dereq_, module, exports) {\n \"use strict\";\n\n function arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n }\n\n function Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n }\n\n Queue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n };\n\n Queue.prototype._pushOne = function (arg) {\n var length = this.length();\n\n this._checkCapacity(length + 1);\n\n var i = this._front + length & this._capacity - 1;\n this[i] = arg;\n this._length = length + 1;\n };\n\n Queue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n\n this._pushOne(receiver);\n\n this._pushOne(arg);\n\n return;\n }\n\n var j = this._front + length - 3;\n\n this._checkCapacity(length);\n\n var wrapMask = this._capacity - 1;\n this[j + 0 & wrapMask] = fn;\n this[j + 1 & wrapMask] = receiver;\n this[j + 2 & wrapMask] = arg;\n this._length = length;\n };\n\n Queue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n this[front] = undefined;\n this._front = front + 1 & this._capacity - 1;\n this._length--;\n return ret;\n };\n\n Queue.prototype.length = function () {\n return this._length;\n };\n\n Queue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n };\n\n Queue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = front + length & oldCapacity - 1;\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n };\n\n module.exports = Queue;\n }, {}],\n 27: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var raceLater = function raceLater(promise) {\n return promise.then(function (array) {\n return race(array, promise);\n });\n };\n\n function race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null) return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n\n return ret;\n }\n\n Promise.race = function (promises) {\n return race(promises, undefined);\n };\n\n Promise.prototype.race = function () {\n return race(this, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 28: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n function ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n\n initialValue._attachCancellationCallback(this);\n }\n\n this._initialValue = initialValue;\n this._currentCancellable = null;\n\n if (_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n\n this._promise._captureStackTrace();\n\n this._init$(undefined, -5);\n }\n\n util.inherits(ReductionPromiseArray, PromiseArray);\n\n ReductionPromiseArray.prototype._gotAccum = function (accum) {\n if (this._eachValues !== undefined && this._eachValues !== null && accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n };\n\n ReductionPromiseArray.prototype._eachComplete = function (value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n\n return this._eachValues;\n };\n\n ReductionPromiseArray.prototype._init = function () {};\n\n ReductionPromiseArray.prototype._resolveEmptyArray = function () {\n this._resolve(this._eachValues !== undefined ? this._eachValues : this._initialValue);\n };\n\n ReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n ReductionPromiseArray.prototype._resolve = function (value) {\n this._promise._resolveCallback(value);\n\n this._values = null;\n };\n\n ReductionPromiseArray.prototype._resultCancelled = function (sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n\n this._resultCancelled$();\n\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n };\n\n ReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n\n value._then(completed, completed, undefined, value, this);\n };\n\n Promise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n };\n\n Promise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n };\n\n function completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n }\n\n function reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n }\n\n function gotAccum(accum) {\n this.accum = accum;\n\n this.array._gotAccum(accum);\n\n var value = tryConvertToPromise(this.value, this.array._promise);\n\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n }\n\n function gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n\n promise._pushContext();\n\n var ret;\n\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(), this.accum, value, this.index, this.length);\n }\n\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\", promise);\n return ret;\n }\n };\n }, {\n \"./util\": 36\n }],\n 29: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var schedule;\n\n var noAsyncScheduler = function noAsyncScheduler() {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var NativePromise = util.getNativePromise();\n\n if (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode ? function (fn) {\n GlobalSetImmediate.call(global, fn);\n } : function (fn) {\n ProcessNextTick.call(process, fn);\n };\n } else if (typeof NativePromise === \"function\" && typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n\n schedule = function schedule(fn) {\n nativePromise.then(fn);\n };\n } else if (typeof MutationObserver !== \"undefined\" && !(typeof window !== \"undefined\" && window.navigator && (window.navigator.standalone || window.cordova))) {\n schedule = function () {\n var div = document.createElement(\"div\");\n var opts = {\n attributes: true\n };\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function () {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function scheduleToggle() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function () {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n }();\n } else if (typeof setImmediate !== \"undefined\") {\n schedule = function schedule(fn) {\n setImmediate(fn);\n };\n } else if (typeof setTimeout !== \"undefined\") {\n schedule = function schedule(fn) {\n setTimeout(fn, 0);\n };\n } else {\n schedule = noAsyncScheduler;\n }\n\n module.exports = schedule;\n }, {\n \"./util\": 36\n }],\n 30: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, debug) {\n var PromiseInspection = Promise.PromiseInspection;\n\n var util = _dereq_(\"./util\");\n\n function SettledPromiseArray(values) {\n this.constructor$(values);\n }\n\n util.inherits(SettledPromiseArray, PromiseArray);\n\n SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n };\n\n SettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n };\n\n Promise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n };\n\n Promise.prototype.settle = function () {\n return Promise.settle(this);\n };\n };\n }, {\n \"./util\": 36\n }],\n 31: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var RangeError = _dereq_(\"./errors\").RangeError;\n\n var AggregateError = _dereq_(\"./errors\").AggregateError;\n\n var isArray = util.isArray;\n var CANCELLATION = {};\n\n function SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n }\n\n util.inherits(SomePromiseArray, PromiseArray);\n\n SomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n\n if (this._howMany === 0) {\n this._resolve([]);\n\n return;\n }\n\n this._init$(undefined, -5);\n\n var isArrayResolved = isArray(this._values);\n\n if (!this._isResolved() && isArrayResolved && this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n };\n\n SomePromiseArray.prototype.init = function () {\n this._initialized = true;\n\n this._init();\n };\n\n SomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n };\n\n SomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n };\n\n SomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n };\n\n SomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n\n this._addRejected(CANCELLATION);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._checkOutcome = function () {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n };\n\n SomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n };\n\n SomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n };\n\n SomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n };\n\n SomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n };\n\n SomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" + this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n };\n\n SomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n };\n\n function some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n }\n\n Promise.some = function (promises, howMany) {\n return some(promises, howMany);\n };\n\n Promise.prototype.some = function (howMany) {\n return some(this, howMany);\n };\n\n Promise._SomePromiseArray = SomePromiseArray;\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 32: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed() ? promise._settledValue() : undefined;\n } else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n }\n\n PromiseInspection.prototype._settledValue = function () {\n return this._settledValueField;\n };\n\n var value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var reason = PromiseInspection.prototype.error = PromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var isFulfilled = PromiseInspection.prototype.isFulfilled = function () {\n return (this._bitField & 33554432) !== 0;\n };\n\n var isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n };\n\n var isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n };\n\n var isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n };\n\n PromiseInspection.prototype.isCancelled = function () {\n return (this._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.__isCancelled = function () {\n return (this._bitField & 65536) === 65536;\n };\n\n Promise.prototype._isCancelled = function () {\n return this._target().__isCancelled();\n };\n\n Promise.prototype.isCancelled = function () {\n return (this._target()._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.isPending = function () {\n return isPending.call(this._target());\n };\n\n Promise.prototype.isRejected = function () {\n return isRejected.call(this._target());\n };\n\n Promise.prototype.isFulfilled = function () {\n return isFulfilled.call(this._target());\n };\n\n Promise.prototype.isResolved = function () {\n return isResolved.call(this._target());\n };\n\n Promise.prototype.value = function () {\n return value.call(this._target());\n };\n\n Promise.prototype.reason = function () {\n var target = this._target();\n\n target._unsetRejectionIsUnhandled();\n\n return reason.call(target);\n };\n\n Promise.prototype._value = function () {\n return this._settledValue();\n };\n\n Promise.prototype._reason = function () {\n this._unsetRejectionIsUnhandled();\n\n return this._settledValue();\n };\n\n Promise.PromiseInspection = PromiseInspection;\n };\n }, {}],\n 33: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var isObject = util.isObject;\n\n function tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n\n obj._then(ret._fulfill, ret._reject, undefined, ret, null);\n\n return ret;\n }\n\n return doThenable(obj, then, context);\n }\n }\n\n return obj;\n }\n\n function doGetThen(obj) {\n return obj.then;\n }\n\n function getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n var hasProp = {}.hasOwnProperty;\n\n function isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n }\n\n function doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n\n promise._captureStackTrace();\n\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n\n promise._resolveCallback(value);\n\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n\n promise._rejectCallback(reason, synchronous, true);\n\n promise = null;\n }\n\n return ret;\n }\n\n return tryConvertToPromise;\n };\n }, {\n \"./util\": 36\n }],\n 34: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TimeoutError = Promise.TimeoutError;\n\n function HandleWrapper(handle) {\n this.handle = handle;\n }\n\n HandleWrapper.prototype._resultCancelled = function () {\n clearTimeout(this.handle);\n };\n\n var afterValue = function afterValue(value) {\n return delay(+this).thenReturn(value);\n };\n\n var delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n\n if (value !== undefined) {\n ret = Promise.resolve(value)._then(afterValue, null, null, ms, undefined);\n\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function () {\n ret._fulfill();\n }, +ms);\n\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n\n ret._captureStackTrace();\n }\n\n ret._setAsyncGuaranteed();\n\n return ret;\n };\n\n Promise.prototype.delay = function (ms) {\n return delay(ms, this);\n };\n\n var afterTimeout = function afterTimeout(promise, message, parent) {\n var err;\n\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n\n util.markAsOriginatingFromRejection(err);\n\n promise._attachExtraTrace(err);\n\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n };\n\n function successClear(value) {\n clearTimeout(this.handle);\n return value;\n }\n\n function failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n }\n\n Promise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear, undefined, handleWrapper, undefined);\n\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear, undefined, handleWrapper, undefined);\n }\n\n return ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 35: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var inherits = _dereq_(\"./util\").inherits;\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n\n if (maybePromise !== thenable && typeof thenable._isDisposable === \"function\" && typeof thenable._getDisposer === \"function\" && thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n\n return maybePromise;\n }\n\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n\n if (maybePromise instanceof Promise && maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(maybePromise._getDisposer().tryDispose(inspection), resources.promise);\n } catch (e) {\n return thrower(e);\n }\n\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower, null, null, null);\n }\n }\n\n iterator();\n }\n\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function (inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n\n this._promise._unsetDisposable();\n\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return d != null && typeof d.resource === \"function\" && typeof d.tryDispose === \"function\";\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n\n return value.promise();\n }\n\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length - 1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function () {\n var len = this.length;\n\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var input;\n var spreadArgs = true;\n\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n\n var resources = new ResourceList(len);\n\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n\n if (maybePromise instanceof Promise) {\n resource = maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources).then(function (inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n\n inspections[i] = inspection.value();\n }\n\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs ? fn.apply(undefined, inspections) : fn(inspections);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n var promise = resultPromise.lastly(function () {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n\n promise._setOnCancel(resources);\n\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & ~131072;\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n\n throw new TypeError();\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 36: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var canEvaluate = typeof navigator == \"undefined\";\n var errorObj = {\n e: {}\n };\n var tryCatchTarget;\n var globalObject = typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : this !== undefined ? this : null;\n\n function tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n function tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n }\n\n var inherits = function inherits(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) && propertyName.charAt(propertyName.length - 1) !== \"$\") {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n };\n\n function isPrimitive(val) {\n return val == null || val === true || val === false || typeof val === \"string\" || typeof val === \"number\";\n }\n\n function isObject(value) {\n return typeof value === \"function\" || _typeof(value) === \"object\" && value !== null;\n }\n\n function maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n return new Error(safeToString(maybeError));\n }\n\n function withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n\n ret[i] = appendee;\n return ret;\n }\n\n function getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null ? desc.value : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n }\n\n function notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n }\n\n function thrower(r) {\n throw r;\n }\n\n var inheritedDataKeys = function () {\n var excludedPrototypes = [Array.prototype, Object.prototype, Function.prototype];\n\n var isExcludedProto = function isExcludedProto(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function (obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n\n obj = es5.getPrototypeOf(obj);\n }\n\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function (obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n /*jshint forin:false */\n\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n\n ret.push(key);\n }\n }\n\n return ret;\n };\n }\n }();\n\n var thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\n\n function isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 && !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods = thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor || hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n\n return false;\n } catch (e) {\n return false;\n }\n }\n\n function toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n\n function ic() {\n return _typeof(receiver.foo);\n }\n\n ic();\n ic();\n return obj;\n eval(obj);\n }\n\n var rident = /^[a-z$_][a-z$_0-9]*$/i;\n\n function isIdentifier(str) {\n return rident.test(str);\n }\n\n function filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n\n for (var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n\n return ret;\n }\n\n function safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n }\n\n function isError(obj) {\n return obj instanceof Error || obj !== null && _typeof(obj) === \"object\" && typeof obj.message === \"string\" && typeof obj.name === \"string\";\n }\n\n function markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n } catch (ignore) {}\n }\n\n function originatesFromRejection(e) {\n if (e == null) return false;\n return e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError || e[\"isOperational\"] === true;\n }\n\n function canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n }\n\n var ensureErrorObject = function () {\n if (!(\"stack\" in new Error())) {\n return function (value) {\n if (canAttachTrace(value)) return value;\n\n try {\n throw new Error(safeToString(value));\n } catch (err) {\n return err;\n }\n };\n } else {\n return function (value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n }();\n\n function classString(obj) {\n return {}.toString.call(obj);\n }\n\n function copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n }\n\n var asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n }\n\n return null;\n };\n\n if (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function (v) {\n return Array.from(v);\n } : function (v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n\n while (!(itResult = it.next()).done) {\n ret.push(itResult.value);\n }\n\n return ret;\n };\n\n asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n\n return null;\n };\n }\n\n var isNode = typeof process !== \"undefined\" && classString(process).toLowerCase() === \"[object process]\";\n var hasEnvVariables = typeof process !== \"undefined\" && typeof process.env !== \"undefined\";\n\n function env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n }\n\n function getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function () {});\n\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n }\n\n function domainBind(self, cb) {\n return self.bind(cb);\n }\n\n var ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome && typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n };\n\n ret.isRecentNode = ret.isNode && function () {\n var version;\n\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n\n return version[0] === 0 && version[1] > 10 || version[0] > 0;\n }();\n\n if (ret.isNode) ret.toFastProperties(process);\n\n try {\n throw new Error();\n } catch (e) {\n ret.lastLineError = e;\n }\n\n module.exports = ret;\n }, {\n \"./es5\": 13\n }]\n }, {}, [4])(4);\n});\n;\n\nif (typeof window !== 'undefined' && window !== null) {\n window.P = window.Promise;\n} else if (typeof self !== 'undefined' && self !== null) {\n self.P = self.Promise;\n}","module.exports = require(\"bluebird\");","var utils = require(\"../../utils/utils\");\n\nvar StateService = function StateService() {\n var stateProviders = {};\n\n function getState(name) {\n var provider = stateProviders[name];\n\n if (provider) {\n return stateProviders[name].method();\n } else {\n var res = {};\n\n for (var i in stateProviders) {\n if (!stateProviders[i].internal) utils.mixin(res, stateProviders[i].method(), true);\n }\n\n return res;\n }\n }\n\n function registerProvider(name, provider, internal) {\n stateProviders[name] = {\n method: provider,\n internal: internal\n };\n }\n\n function unregisterProvider(name) {\n delete stateProviders[name];\n }\n\n return {\n getState: getState,\n registerProvider: registerProvider,\n unregisterProvider: unregisterProvider\n };\n};\n\nmodule.exports = StateService;","module.exports = function (gantt) {\n var regTemplates = {};\n\n function initTemplate(name, initial, template_name) {\n template_name = template_name || name;\n var config = gantt.config,\n templates = gantt.templates;\n\n if (gantt.config[name] && regTemplates[template_name] != config[name]) {\n if (!(initial && templates[template_name])) {\n templates[template_name] = gantt.date.date_to_str(config[name]);\n regTemplates[template_name] = config[name];\n }\n }\n }\n\n function initTemplates() {\n var labels = gantt.locale.labels;\n labels.gantt_save_btn = labels.icon_save;\n labels.gantt_cancel_btn = labels.icon_cancel;\n labels.gantt_delete_btn = labels.icon_delete;\n var date = gantt.date; //build configuration based templates\n\n var d = date.date_to_str;\n var c = gantt.config;\n var format_date = d(c.xml_date || c.date_format, c.server_utc);\n var parse_date = date.str_to_date(c.xml_date || c.date_format, c.server_utc);\n initTemplate(\"date_scale\", true, undefined, gantt.config, gantt.templates);\n initTemplate(\"date_grid\", true, \"grid_date_format\", gantt.config, gantt.templates);\n initTemplate(\"task_date\", true, undefined, gantt.config, gantt.templates);\n gantt.mixin(gantt.templates, {\n xml_format: undefined,\n // deprecated\n format_date: format_date,\n xml_date: undefined,\n // deprecated\n parse_date: parse_date,\n progress_text: function progress_text(start, end, task) {\n return \"\";\n },\n grid_header_class: function grid_header_class(column, config) {\n return \"\";\n },\n task_text: function task_text(start, end, task) {\n return task.text;\n },\n task_class: function task_class(start, end, task) {\n return \"\";\n },\n task_end_date: function task_end_date(date) {\n return gantt.templates.task_date(date);\n },\n grid_row_class: function grid_row_class(start, end, task) {\n return \"\";\n },\n task_row_class: function task_row_class(start, end, task) {\n return \"\";\n },\n timeline_cell_class: function timeline_cell_class(item, date) {\n return \"\";\n },\n scale_cell_class: function scale_cell_class(date) {\n return \"\";\n },\n scale_row_class: function scale_row_class(date) {\n return \"\";\n },\n grid_indent: function grid_indent(item) {\n return \"<div class='gantt_tree_indent'></div>\";\n },\n grid_folder: function grid_folder(item) {\n return \"<div class='gantt_tree_icon gantt_folder_\" + (item.$open ? \"open\" : \"closed\") + \"'></div>\";\n },\n grid_file: function grid_file(item) {\n return \"<div class='gantt_tree_icon gantt_file'></div>\";\n },\n grid_open: function grid_open(item) {\n return \"<div class='gantt_tree_icon gantt_\" + (item.$open ? \"close\" : \"open\") + \"'></div>\";\n },\n grid_blank: function grid_blank(item) {\n return \"<div class='gantt_tree_icon gantt_blank'></div>\";\n },\n date_grid: function date_grid(date, item, column) {\n if (item && gantt.isUnscheduledTask(item) && gantt.config.show_unscheduled) {\n return gantt.templates.task_unscheduled_time(item);\n } else {\n return gantt.templates.grid_date_format(date, column);\n }\n },\n task_time: function task_time(start, end, ev) {\n if (gantt.isUnscheduledTask(ev) && gantt.config.show_unscheduled) {\n return gantt.templates.task_unscheduled_time(ev);\n } else {\n return gantt.templates.task_date(start) + \" - \" + gantt.templates.task_end_date(end);\n }\n },\n task_unscheduled_time: function task_unscheduled_time(task) {\n return \"\";\n },\n time_picker: d(c.time_picker),\n link_class: function link_class(link) {\n return \"\";\n },\n link_description: function link_description(link) {\n var from = gantt.getTask(link.source),\n to = gantt.getTask(link.target);\n return \"<b>\" + from.text + \"</b> &ndash; <b>\" + to.text + \"</b>\";\n },\n drag_link: function drag_link(from, from_start, to, to_start) {\n from = gantt.getTask(from);\n var labels = gantt.locale.labels;\n var text = \"<b>\" + from.text + \"</b> \" + (from_start ? labels.link_start : labels.link_end) + \"<br/>\";\n\n if (to) {\n to = gantt.getTask(to);\n text += \"<b> \" + to.text + \"</b> \" + (to_start ? labels.link_start : labels.link_end) + \"<br/>\";\n }\n\n return text;\n },\n drag_link_class: function drag_link_class(from, from_start, to, to_start) {\n var add = \"\";\n\n if (from && to) {\n var allowed = gantt.isLinkAllowed(from, to, from_start, to_start);\n add = \" \" + (allowed ? \"gantt_link_allow\" : \"gantt_link_deny\");\n }\n\n return \"gantt_link_tooltip\" + add;\n },\n\n /* used for aria-labels of bar elements and for tooltip.js */\n tooltip_date_format: date.date_to_str(\"%Y-%m-%d\"),\n tooltip_text: function tooltip_text(start, end, event) {\n return \"<b>Task:</b> \" + event.text + \"<br/><b>Start date:</b> \" + gantt.templates.tooltip_date_format(start) + \"<br/><b>End date:</b> \" + gantt.templates.tooltip_date_format(end);\n }\n });\n }\n\n return {\n initTemplates: initTemplates,\n initTemplate: initTemplate\n };\n};","var eventable = require(\"../../utils/eventable\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar timeout = require(\"../../utils/timeout\");\n\nvar global = require(\"../../utils/global\");\n\nvar domHelpers = require(\"../ui/utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n function copyDomEvent(e) {\n return {\n target: e.target || e.srcElement,\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n altKey: e.altKey\n };\n }\n\n function DnD(obj, config) {\n this._obj = obj;\n this._settings = config || {};\n eventable(this);\n var inputMethods = this.getInputMethods();\n this._drag_start_timer = null;\n gantt.attachEvent(\"onGanttScroll\", utils.bind(function (left, top) {\n this.clearDragTimer();\n }, this));\n var lastDown = 0;\n var eventParams = {\n passive: false\n };\n\n for (var i = 0; i < inputMethods.length; i++) {\n utils.bind(function (input) {\n gantt.event(obj, input.down, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n if (config.preventDefault && config.selector && domHelpers.closest(e.target, config.selector)) {\n e.preventDefault();\n }\n\n if (gantt.config.touch && e.timeStamp && e.timeStamp - lastDown < 300) {\n return;\n }\n\n this._settings.original_target = copyDomEvent(e);\n\n if (gantt.config.touch) {\n this.clearDragTimer();\n this._drag_start_timer = setTimeout(utils.bind(function () {\n if (gantt.getState().lightbox) {\n return;\n }\n\n this.dragStart(obj, e, input);\n }, this), gantt.config.touch_drag);\n } else {\n this.dragStart(obj, e, input);\n }\n }, this), eventParams);\n var eventElement = document.body;\n gantt.event(eventElement, input.up, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n this.clearDragTimer();\n }, this), eventParams);\n }, this)(inputMethods[i]);\n }\n }\n\n DnD.prototype = {\n traceDragEvents: function traceDragEvents(domElement, inputMethod) {\n var mousemove = utils.bind(function (e) {\n return this.dragMove(domElement, e, inputMethod.accessor);\n }, this);\n utils.bind(function (e) {\n return this.dragScroll(domElement, e);\n }, this);\n var limited_mousemove = utils.bind(function (e) {\n if (this.config.started && utils.defined(this.config.updates_per_second)) {\n if (!timeout(this, this.config.updates_per_second)) return;\n }\n\n var dndActive = mousemove(e);\n\n if (dndActive) {\n try {\n if (e && e.preventDefault && e.cancelable) {\n //e.cancelable condition - because navigator.vibrate is blocked by Chrome\n e.preventDefault(); //Cancel default action on DND\n } //Cancel default action on DND\n\n } catch (e) {// just suppress the exception, nothing needed to be done here\n } //e.cancelBubble = true;\n\n }\n\n return dndActive;\n }, this);\n var eventElement = domHelpers.getRootNode(gantt.$root);\n var mousemoveContainer = this.config.mousemoveContainer || domHelpers.getRootNode(gantt.$root);\n var eventParams = {\n passive: false\n };\n var mouseup = utils.bind(function (e) {\n gantt.eventRemove(mousemoveContainer, inputMethod.move, limited_mousemove);\n gantt.eventRemove(eventElement, inputMethod.up, mouseup, eventParams);\n return this.dragEnd(domElement);\n }, this);\n gantt.event(mousemoveContainer, inputMethod.move, limited_mousemove, eventParams);\n gantt.event(eventElement, inputMethod.up, mouseup, eventParams);\n },\n checkPositionChange: function checkPositionChange(pos) {\n var diff_x = pos.x - this.config.pos.x;\n var diff_y = pos.y - this.config.pos.y;\n var distance = Math.sqrt(Math.pow(Math.abs(diff_x), 2) + Math.pow(Math.abs(diff_y), 2));\n\n if (distance > this.config.sensitivity) {\n return true;\n } else {\n return false;\n }\n },\n initDnDMarker: function initDnDMarker() {\n // create dnd placeholder and put it in dom\n var marker = this.config.marker = document.createElement(\"div\");\n marker.className = \"gantt_drag_marker\"; // GS-1333: don't show any message when we resize grid columns\n\n marker.innerHTML = \"\";\n document.body.appendChild(marker);\n },\n backupEventTarget: function backupEventTarget(domEvent, getEvent) {\n if (!gantt.config.touch) {\n return;\n } // keep original event target in DOM in order to keep dnd on touchmove event\n\n\n var e = getEvent(domEvent);\n var el = e.target || e.srcElement;\n var copy = el.cloneNode(true); //this.config.target.target = copy;\n\n this.config.original_target = copyDomEvent(e);\n this.config.original_target.target = copy;\n this.config.backup_element = el;\n el.parentNode.appendChild(copy);\n el.style.display = \"none\";\n var mousemoveContainer = this.config.mousemoveContainer || document.body;\n mousemoveContainer.appendChild(el);\n },\n getInputMethods: function getInputMethods() {\n // bind actions to browser events\n var inputMethods = [];\n inputMethods.push({\n \"move\": \"mousemove\",\n \"down\": \"mousedown\",\n \"up\": \"mouseup\",\n \"accessor\": function accessor(e) {\n return e;\n }\n });\n\n if (gantt.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n inputMethods.push({\n \"move\": \"touchmove\",\n \"down\": \"touchstart\",\n \"up\": \"touchend\",\n \"accessor\": function accessor(ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY),\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }\n });\n } else if (global.navigator.pointerEnabled) {\n inputMethods.push({\n \"move\": \"pointermove\",\n \"down\": \"pointerdown\",\n \"up\": \"pointerup\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }\n });\n } else if (global.navigator.msPointerEnabled) {\n inputMethods.push({\n \"move\": \"MSPointerMove\",\n \"down\": \"MSPointerDown\",\n \"up\": \"MSPointerUp\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }\n });\n }\n }\n\n return inputMethods;\n },\n clearDragTimer: function clearDragTimer() {\n if (this._drag_start_timer) {\n clearTimeout(this._drag_start_timer);\n this._drag_start_timer = null;\n }\n },\n dragStart: function dragStart(obj, e, inputMethod) {\n if (this.config && this.config.started) {\n return;\n }\n\n this.config = {\n obj: obj,\n marker: null,\n started: false,\n pos: this.getPosition(e),\n sensitivity: 4\n };\n if (this._settings) utils.mixin(this.config, this._settings, true);\n this.traceDragEvents(obj, inputMethod);\n gantt._prevent_touch_scroll = true;\n document.body.className += \" gantt_noselect\";\n\n if (gantt.config.touch) {\n this.dragMove(obj, e, inputMethod.accessor);\n }\n },\n dragMove: function dragMove(obj, e, getEvent) {\n var source = getEvent(e);\n if (!source) return false;\n\n if (!this.config.marker && !this.config.started) {\n var pos = this.getPosition(source);\n\n if (gantt.config.touch || this.checkPositionChange(pos)) {\n // real drag starts here,\n // when user moves mouse at first time after onmousedown\n this.config.started = true;\n this.config.ignore = false;\n\n if (this.callEvent(\"onBeforeDragStart\", [obj, this.config.original_target]) === false) {\n this.config.ignore = true;\n return false;\n }\n\n this.backupEventTarget(e, getEvent);\n this.initDnDMarker();\n\n gantt._touch_feedback();\n\n this.callEvent(\"onAfterDragStart\", [obj, this.config.original_target]);\n } else {\n this.config.ignore = true;\n }\n }\n\n if (!this.config.ignore) {\n // GS-1279 Gantt crashes on Mobile Firefox after starting to create a link and moving finger outisde the page.\n if (e.targetTouches && !source.target) return;\n source.pos = this.getPosition(source);\n this.config.marker.style.left = source.pos.x + \"px\";\n this.config.marker.style.top = source.pos.y + \"px\";\n this.callEvent(\"onDragMove\", [obj, source]);\n return true;\n }\n\n return false;\n },\n dragEnd: function dragEnd(obj) {\n var target = this.config.backup_element;\n\n if (target && target.parentNode) {\n target.parentNode.removeChild(target);\n }\n\n gantt._prevent_touch_scroll = false;\n\n if (this.config.marker) {\n this.config.marker.parentNode.removeChild(this.config.marker);\n this.config.marker = null;\n this.callEvent(\"onDragEnd\", []);\n }\n\n this.config.started = false;\n document.body.className = document.body.className.replace(\" gantt_noselect\", \"\");\n },\n getPosition: function getPosition(e) {\n var x = 0,\n y = 0;\n\n if (e.pageX || e.pageY) {\n x = e.pageX;\n y = e.pageY;\n } else if (e.clientX || e.clientY) {\n x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n\n return {\n x: x,\n y: y\n };\n }\n };\n return DnD;\n};","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*/\nvar fastVersion = require(\"./date_parsers/fast_version\")[\"default\"];\n\nvar cspCompliantVersion = require(\"./date_parsers/csp_compliant_version\")[\"default\"];\n\nmodule.exports = function (gantt) {\n var canUseCsp = null;\n\n function cspAutoCheck() {\n try {\n new Function(\"canUseCsp = false;\");\n } catch (e) {\n canUseCsp = true;\n }\n }\n\n function useCsp() {\n var result = false;\n\n if (gantt.config.csp === \"auto\") {\n if (canUseCsp === null) {\n cspAutoCheck();\n }\n\n result = canUseCsp;\n } else {\n result = gantt.config.csp;\n }\n\n return result;\n }\n\n var dateHelper = {\n init: function init() {\n var locale = gantt.locale;\n var s = locale.date.month_short;\n var t = locale.date.month_short_hash = {};\n\n for (var i = 0; i < s.length; i++) {\n t[s[i]] = i;\n }\n\n var s = locale.date.month_full;\n var t = locale.date.month_full_hash = {};\n\n for (var i = 0; i < s.length; i++) {\n t[s[i]] = i;\n }\n },\n date_part: function date_part(date) {\n var old = new Date(date);\n date.setHours(0);\n this.hour_start(date);\n if (date.getHours() && ( //shift to yesterday on dst\n date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear())) date.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\n return date;\n },\n time_part: function time_part(date) {\n return (date.valueOf() / 1000 - date.getTimezoneOffset() * 60) % 86400;\n },\n week_start: function week_start(date) {\n var shift = date.getDay();\n\n if (gantt.config.start_on_monday) {\n if (shift === 0) shift = 6;else shift--;\n }\n\n return this.date_part(this.add(date, -1 * shift, \"day\"));\n },\n month_start: function month_start(date) {\n date.setDate(1);\n return this.date_part(date);\n },\n quarter_start: function quarter_start(date) {\n this.month_start(date);\n var m = date.getMonth(),\n res_month;\n\n if (m >= 9) {\n res_month = 9;\n } else if (m >= 6) {\n res_month = 6;\n } else if (m >= 3) {\n res_month = 3;\n } else {\n res_month = 0;\n }\n\n date.setMonth(res_month);\n return date;\n },\n year_start: function year_start(date) {\n date.setMonth(0);\n return this.month_start(date);\n },\n day_start: function day_start(date) {\n return this.date_part(date);\n },\n hour_start: function hour_start(date) {\n if (date.getMinutes()) date.setMinutes(0);\n this.minute_start(date);\n return date;\n },\n minute_start: function minute_start(date) {\n if (date.getSeconds()) date.setSeconds(0);\n if (date.getMilliseconds()) date.setMilliseconds(0);\n return date;\n },\n _add_days: function _add_days(modifiedDate, inc, originalDate) {\n modifiedDate.setDate(modifiedDate.getDate() + inc);\n var incCondition = inc >= 0;\n var getHoursCondition = !originalDate.getHours() && modifiedDate.getHours(); //shift to yesterday on dst\n\n var getDateCondition = modifiedDate.getDate() <= originalDate.getDate() || modifiedDate.getMonth() < originalDate.getMonth() || modifiedDate.getFullYear() < originalDate.getFullYear();\n\n if (incCondition && getHoursCondition && getDateCondition) {\n modifiedDate.setTime(modifiedDate.getTime() + 60 * 60 * 1000 * (24 - modifiedDate.getHours()));\n }\n\n return modifiedDate;\n },\n add: function add(date, inc, mode) {\n /*jsl:ignore*/\n var ndate = new Date(date.valueOf());\n\n switch (mode) {\n case \"day\":\n ndate = this._add_days(ndate, inc, date);\n break;\n\n case \"week\":\n ndate = this._add_days(ndate, inc * 7, date);\n break;\n\n case \"month\":\n ndate.setMonth(ndate.getMonth() + inc);\n break;\n\n case \"year\":\n ndate.setYear(ndate.getFullYear() + inc);\n break;\n\n case \"hour\":\n /*\n \tadding hours/minutes via setHour(getHour() + inc) gives weird result when\n \tadding one hour to the time before switch to a Daylight Saving time\n \t\texample: //Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\n \tnew Date(2014, 02, 30, 1).setHours(2)\n \t>>Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\n \t\tsetTime seems working as expected\n */\n ndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\n break;\n\n case \"minute\":\n ndate.setTime(ndate.getTime() + inc * 60 * 1000);\n break;\n\n default:\n return this[\"add_\" + mode](date, inc, mode);\n }\n\n return ndate;\n /*jsl:end*/\n },\n add_quarter: function add_quarter(date, inc) {\n return this.add(date, inc * 3, \"month\");\n },\n to_fixed: function to_fixed(num) {\n if (num < 10) return \"0\" + num;\n return num;\n },\n copy: function copy(date) {\n return new Date(date.valueOf());\n },\n date_to_str: function date_to_str(format, utc) {\n var result = fastVersion;\n\n if (useCsp()) {\n result = cspCompliantVersion;\n }\n\n return result.date_to_str(format, utc, gantt);\n },\n str_to_date: function str_to_date(format, utc) {\n var result = fastVersion;\n\n if (useCsp()) {\n result = cspCompliantVersion;\n }\n\n return result.str_to_date(format, utc, gantt);\n },\n getISOWeek: function getISOWeek(ndate) {\n return gantt.date._getWeekNumber(ndate, true);\n },\n _getWeekNumber: function _getWeekNumber(ndate, isoWeek) {\n if (!ndate) return false;\n var nday = ndate.getDay();\n\n if (isoWeek) {\n if (nday === 0) {\n nday = 7;\n }\n }\n\n var first_thursday = new Date(ndate.valueOf());\n first_thursday.setDate(ndate.getDate() + (4 - nday));\n var year_number = first_thursday.getFullYear(); // year of the first Thursday\n\n var ordinal_date = Math.round((first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\n\n var week_number = 1 + Math.floor(ordinal_date / 7);\n return week_number;\n },\n getWeek: function getWeek(ndate) {\n return gantt.date._getWeekNumber(ndate, gantt.config.start_on_monday);\n },\n getUTCISOWeek: function getUTCISOWeek(ndate) {\n return gantt.date.getISOWeek(ndate);\n },\n convert_to_utc: function convert_to_utc(date) {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n },\n parseDate: function parseDate(date, format) {\n // raw date may be of type string, number (timestamp) or something else\n // do not check for instanceof Date explicitly, since we may swap native date with different date implementation at some point\n if (date && !date.getFullYear) {\n if (typeof format !== \"function\") {\n if (typeof format === \"string\") {\n if (format === \"parse_date\" || format === \"xml_date\") {\n format = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n } else {\n format = gantt.defined(gantt.templates[format]) ? gantt.templates[format] : gantt.date.str_to_date(format);\n }\n } else {\n format = gantt.defined(gantt.templates.xml_date) ? gantt.templates.xml_date : gantt.templates.parse_date;\n }\n }\n\n if (date) {\n date = format(date);\n } else {\n date = null;\n }\n }\n\n return date;\n }\n };\n return dateHelper;\n};","export default function serialize(data: object | string) {\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","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar env = require(\"../../utils/env\");\n\nvar global = require(\"../../utils/global\");\n\nvar serialize = require(\"./serialize\")[\"default\"];\n\nfunction createConfig(method, args) {\n var result = {\n method: method\n };\n\n if (args.length === 0) {\n throw new Error(\"Arguments list of query is wrong.\");\n }\n\n if (args.length === 1) {\n if (typeof args[0] === \"string\") {\n result.url = args[0];\n result.async = true;\n } else {\n result.url = args[0].url;\n result.async = args[0].async || true;\n result.callback = args[0].callback;\n result.headers = args[0].headers;\n }\n\n if (method === \"POST\" || \"PUT\") {\n if (args[0].data) {\n if (typeof args[0].data !== \"string\") {\n result.data = serialize(args[0].data);\n } else {\n result.data = args[0].data;\n }\n } else {\n result.data = \"\";\n }\n }\n\n return result;\n }\n\n result.url = args[0];\n\n switch (method) {\n case \"GET\":\n case \"DELETE\":\n result.callback = args[1];\n result.headers = args[2];\n break;\n\n case \"POST\":\n case \"PUT\":\n if (args[1]) {\n if (typeof args[1] !== \"string\") {\n result.data = serialize(args[1]);\n } else {\n result.data = args[1];\n }\n } else {\n result.data = \"\";\n }\n\n result.callback = args[2];\n result.headers = args[3];\n break;\n }\n\n return result;\n}\n\nmodule.exports = function (gantt) {\n return {\n // if false - dhxr param will added to prevent caching on client side (default),\n // if true - do not add extra params\n cache: true,\n // default method for load/loadStruct, post/get allowed\n // get - since 4.1.1, this should fix 412 error for macos safari\n method: \"get\",\n parse: function parse(data) {\n if (typeof data !== \"string\") return data;\n var obj;\n data = data.replace(/^[\\s]+/, \"\");\n\n if (typeof DOMParser !== \"undefined\" && !env.isIE) {\n // ff,ie9\n obj = new DOMParser().parseFromString(data, \"text/xml\");\n } else if (typeof global.ActiveXObject !== \"undefined\") {\n obj = new global.ActiveXObject(\"Microsoft.XMLDOM\");\n obj.async = \"false\";\n obj.loadXML(data);\n }\n\n return obj;\n },\n xmltop: function xmltop(tagname, xhr, obj) {\n if (typeof xhr.status == \"undefined\" || xhr.status < 400) {\n var xml = !xhr.responseXML ? this.parse(xhr.responseText || xhr) : xhr.responseXML || xhr;\n\n if (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\n return xml.getElementsByTagName(tagname)[0];\n }\n }\n\n if (obj !== -1) gantt.callEvent(\"onLoadXMLError\", [\"Incorrect XML\", arguments[1], obj]);\n return document.createElement(\"DIV\");\n },\n xpath: function xpath(xpathExp, docObj) {\n if (!docObj.nodeName) docObj = docObj.responseXML || docObj;\n\n if (env.isIE) {\n return docObj.selectNodes(xpathExp) || [];\n } else {\n var rows = [];\n var first;\n var col = (docObj.ownerDocument || docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\n\n while (true) {\n first = col.iterateNext();\n\n if (first) {\n rows.push(first);\n } else {\n break;\n }\n }\n\n return rows;\n }\n },\n query: function query(config) {\n return this._call(config.method || \"GET\", config.url, config.data || \"\", config.async || true, config.callback, config.headers);\n },\n get: function get(url, onLoad, headers) {\n var config = createConfig(\"GET\", arguments);\n return this.query(config);\n },\n getSync: function getSync(url, headers) {\n var config = createConfig(\"GET\", arguments);\n config.async = false;\n return this.query(config);\n },\n put: function put(url, postData, onLoad, headers) {\n var config = createConfig(\"PUT\", arguments);\n return this.query(config);\n },\n del: function del(url, onLoad, headers) {\n /**\n * https://tools.ietf.org/html/rfc7231#section-4.3.5\n * A payload within a DELETE request message has no defined semantics;\n * sending a payload body on a DELETE request might cause some existing\n * implementations to reject the request.\n */\n var config = createConfig(\"DELETE\", arguments);\n return this.query(config);\n },\n post: function post(url, postData, onLoad, headers) {\n if (arguments.length == 1) {\n postData = \"\";\n } else if (arguments.length == 2 && typeof postData == \"function\") {\n onLoad = postData;\n postData = \"\";\n }\n\n var config = createConfig(\"POST\", arguments);\n return this.query(config);\n },\n postSync: function postSync(url, postData, headers) {\n postData = postData === null ? \"\" : String(postData);\n var config = createConfig(\"POST\", arguments);\n config.async = false;\n return this.query(config);\n },\n _call: function _call(method, url, postData, async, onLoad, headers) {\n return new gantt.Promise(function (resolve, reject) {\n var t = (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) !== undefined && !env.isIE ? new XMLHttpRequest() : new global.ActiveXObject(\"Microsoft.XMLHTTP\");\n var isQt = navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null;\n\n if (!!async) {\n t.onreadystatechange = function () {\n if (t.readyState == 4 || isQt && t.readyState == 3) {\n // what for long response and status 404?\n if (t.status != 200 || t.responseText === \"\") if (!gantt.callEvent(\"onAjaxError\", [t])) return;\n setTimeout(function () {\n if (typeof onLoad == \"function\") {\n onLoad.apply(global, [{\n xmlDoc: t,\n filePath: url\n }]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n }\n\n resolve(t);\n\n if (typeof onLoad == \"function\") {\n onLoad = null;\n t = null;\n }\n }, 0);\n }\n };\n }\n\n if (method == \"GET\" && !this.cache) {\n url += (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"dhxr\" + new Date().getTime() + \"=1\";\n }\n\n t.open(method, url, async);\n\n if (headers) {\n for (var key in headers) {\n t.setRequestHeader(key, headers[key]);\n }\n } else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n t.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n } else if (method == \"GET\") {\n postData = null;\n }\n\n t.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n t.send(postData);\n if (!async) return {\n xmlDoc: t,\n filePath: url\n }; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n });\n },\n urlSeparator: function urlSeparator(str) {\n if (str.indexOf(\"?\") != -1) return \"&\";else return \"?\";\n }\n };\n};","type DurationUnits = \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\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\tdeepcopy_on_parse: boolean;\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\t// task_height is deprecated, use 'bar_height` instead\n\ttask_height: number | \"full\";\n\tbar_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\tresize_rows: boolean;\n\t// name of the attribute with row index for resize element\n\ttask_grid_row_resizer_attribute: string;\n\t// min height for row (when resizing)\n\tmin_task_grid_row_height: number;\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\t\tdeepcopy_on_parse: false,\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\t// task height is deprecated, use 'bar_height' instead\n\t\ttask_height: undefined,// number px of 'full' for row height\n\t\tbar_height: \"full\",\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\tresize_rows: false,\n\t\t// name of the attribute with row index for resize element\n\t\ttask_grid_row_resizer_attribute: \"data-row-index\",\n\t\t// min height for row (when resizing)\n\t\tmin_task_grid_row_height: 30,\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 var services = {};\n\n function register(name, getter) {\n services[name] = getter;\n }\n\n function getService(name) {\n if (!services[name]) {\n return null;\n }\n\n return services[name]();\n }\n\n function dropService(name) {\n if (services[name]) {\n delete services[name];\n }\n }\n\n var servicesEnum = {};\n return {\n services: servicesEnum,\n setService: register,\n getService: getService,\n dropService: dropService,\n destructor: function destructor() {\n for (var i in services) {\n if (services[i]) {\n var service = services[i];\n\n if (service && service.destructor) {\n service.destructor();\n }\n }\n }\n\n services = null;\n }\n };\n};","export default class ExtensionsManager{\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 KEY_CODES: {\n UP: 38,\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39,\n SPACE: 32,\n ENTER: 13,\n DELETE: 46,\n ESC: 27,\n TAB: 9\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction DHXGantt() {\n this.constants = require(\"../constants\");\n this.version = VERSION;\n this.license = LICENSE;\n this.templates = {};\n this.ext = {};\n this.keys = {\n edit_save: this.constants.KEY_CODES.ENTER,\n edit_cancel: this.constants.KEY_CODES.ESC\n };\n}\n\nmodule.exports = function (supportedExtensions) {\n // use a named constructor to make gantt instance discoverable in heap snapshots\n var gantt = new DHXGantt();\n\n var ExtensionManager = require(\"../ext/extension_manager\")[\"default\"];\n\n var extensionManager = new ExtensionManager(supportedExtensions);\n var activePlugins = {};\n\n gantt.plugins = function (config) {\n for (var i in config) {\n if (config[i] && !activePlugins[i]) {\n var plugin = extensionManager.getExtension(i);\n\n if (plugin) {\n plugin(gantt);\n activePlugins[i] = true;\n }\n }\n }\n };\n\n gantt.$services = require(\"../core/common/services\")();\n gantt.config = require(\"../core/common/config\")();\n gantt.ajax = require(\"../core/common/ajax\")(gantt);\n gantt.date = require(\"../core/common/date\")(gantt);\n\n var dnd = require(\"../core/common/dnd\")(gantt);\n\n gantt.$services.setService(\"dnd\", function () {\n return dnd;\n });\n\n var templatesLoader = require(\"../core/common/templates\")(gantt);\n\n gantt.$services.setService(\"templateLoader\", function () {\n return templatesLoader;\n });\n\n require(\"../utils/eventable\")(gantt);\n\n var StateService = require(\"../core/common/state\");\n\n var stateService = new StateService();\n stateService.registerProvider(\"global\", function () {\n var res = {\n min_date: gantt._min_date,\n max_date: gantt._max_date,\n selected_task: null\n }; // do not throw error if getState called from non-initialized gantt\n\n if (gantt.$data && gantt.$data.tasksStore) {\n res.selected_task = gantt.$data.tasksStore.getSelectedId();\n }\n\n return res;\n });\n gantt.getState = stateService.getState;\n gantt.$services.setService(\"state\", function () {\n return stateService;\n });\n\n var utils = require(\"../utils/utils\");\n\n utils.mixin(gantt, utils);\n gantt.Promise = require(\"../utils/promise\");\n gantt.env = require(\"../utils/env\");\n\n require(\"../core/datastore/datastore_hooks\")(gantt);\n\n var DataProcessor = require(\"../core/dataprocessor\");\n\n gantt.dataProcessor = DataProcessor.DEPRECATED_api;\n gantt.createDataProcessor = DataProcessor.createDataProcessor;\n\n require(\"../core/plugins\")(gantt);\n\n require(\"../core/dynamic_loading\")(gantt);\n\n require(\"../core/grid_column_api\")(gantt);\n\n require(\"../core/tasks\")(gantt);\n\n require(\"../core/load\")(gantt);\n\n require(\"../core/worktime/work_time\")(gantt);\n\n require(\"../core/data\")(gantt);\n\n require(\"../publish_helpers/void_script_second\")[\"default\"](gantt);\n\n require(\"../core/data_task_types\")(gantt);\n\n require(\"../core/cached_functions\")(gantt);\n\n require(\"../core/gantt_core\")(gantt);\n\n require(\"../core/destructor\")(gantt);\n\n require(\"../publish_helpers/void_script_third\")[\"default\"](gantt);\n\n var i18n = require(\"../locale\")[\"default\"]();\n\n gantt.i18n = {\n addLocale: i18n.addLocale,\n setLocale: function setLocale(locale) {\n if (typeof locale === \"string\") {\n var localeObject = i18n.getLocale(locale);\n\n if (!localeObject) {\n localeObject = i18n.getLocale(\"en\");\n }\n\n gantt.locale = localeObject;\n } else if (locale) {\n if (!gantt.locale) {\n gantt.locale = locale;\n } else {\n for (var i in locale) {\n if (locale[i] && _typeof(locale[i]) === \"object\") {\n if (!gantt.locale[i]) {\n gantt.locale[i] = {};\n }\n\n gantt.mixin(gantt.locale[i], locale[i], true);\n } else {\n gantt.locale[i] = locale[i];\n }\n }\n }\n }\n },\n getLocale: i18n.getLocale\n };\n gantt.i18n.setLocale(\"en\");\n return gantt;\n};","require(\"css/skins/terrace.less\");\n\nvar factory = require(\"./make_instance_common\");\n\nmodule.exports = function (supportedExtensions) {\n var gantt = factory(supportedExtensions);\n\n if (!gantt.env.isNode) {\n require(\"../core/ui_core\")(gantt);\n }\n\n return gantt;\n};","import { IUndo, IUndoCommand, IUndoCommands, IUndoPropAction, IUndoPropCommand, TActionType, TEntityType, TUndoStack, TUndoValue } from \"./types\";\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.$local_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.$local_index, command.value.parent);\n\t\t\t\t\t// GS-680: We should send the changes to the server after we undo vertical reorder\n\t\t\t\t\tgantt.callEvent(\"onRowDragEnd\", [command.value.id]);\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).$local_index = this._gantt.getTaskIndex(task.id);\n\t\t\tconst oldValue = this.getInitialTask(task.id);\n\t\t\tif((task as any).$local_index === oldValue.$local_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.$local_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\tif(this._gantt.isTaskExists(obj.id)){\n\t\t\t(obj as any).$local_index = this._gantt.getTaskIndex(obj.id);\n\t\t}\n\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 = [];\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,e){\n\t// GS-1460 Don't show Quick Info when clicking on the \"+\" button\n\tif (!gantt.utils.dom.closest(e.target, \".gantt_add\")){\n\t\tsetTimeout(function() {\n\t\t\tgantt.ext.quickInfo.show(id);\n\t\t}, 0);\n\t}\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}","var _require = require(\"../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nmodule.exports = function (gantt) {\n gantt.config.multiselect = true;\n gantt.config.multiselect_one_level = false;\n gantt._multiselect = {\n _selected: {},\n _one_level: false,\n _active: true,\n _first_selected_when_shift: null,\n getDefaultSelected: function getDefaultSelected() {\n var selected = this.getSelected();\n return selected.length ? selected[selected.length - 1] : null;\n },\n setFirstSelected: function setFirstSelected(id) {\n this._first_selected_when_shift = id;\n },\n getFirstSelected: function getFirstSelected() {\n return this._first_selected_when_shift;\n },\n isActive: function isActive() {\n this.updateState();\n return this._active;\n },\n updateState: function updateState() {\n this._one_level = gantt.config.multiselect_one_level;\n var active = this._active;\n this._active = gantt.config.select_task;\n\n if (this._active != active) {\n this.reset();\n }\n },\n reset: function reset() {\n this._selected = {};\n },\n setLastSelected: function setLastSelected(id) {\n gantt.$data.tasksStore.silent(function () {\n var store = gantt.$data.tasksStore;\n if (id) store.select(id + \"\");else store.unselect(null);\n });\n },\n getLastSelected: function getLastSelected() {\n var last = gantt.$data.tasksStore.getSelectedId();\n if (last && gantt.isTaskExists(last)) return last;\n return null;\n },\n select: function select(id, e) {\n if (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, true, e]) && gantt.callEvent(\"onBeforeTaskSelected\", [id])) {\n this._selected[id] = true;\n this.setLastSelected(id);\n this.afterSelect(id);\n gantt.callEvent(\"onTaskMultiSelect\", [id, true, e]);\n gantt.callEvent(\"onTaskSelected\", [id]);\n return true;\n }\n\n return false;\n },\n toggle: function toggle(id, e) {\n if (this._selected[id]) {\n this.unselect(id, e);\n } else {\n this.select(id, e);\n }\n },\n unselect: function unselect(id, e) {\n if (id && gantt.callEvent(\"onBeforeTaskMultiSelect\", [id, false, e])) {\n this._selected[id] = false;\n if (this.getLastSelected() == id) this.setLastSelected(this.getDefaultSelected());\n this.afterSelect(id);\n gantt.callEvent(\"onTaskMultiSelect\", [id, false, e]);\n gantt.callEvent(\"onTaskUnselected\", [id]);\n }\n },\n isSelected: function isSelected(id) {\n return !!(gantt.isTaskExists(id) && this._selected[id]);\n },\n getSelected: function getSelected() {\n var res = [];\n\n for (var i in this._selected) {\n if (this._selected[i] && gantt.isTaskExists(i)) {\n res.push(i);\n } else {\n this._selected[i] = false;\n }\n }\n\n res.sort(function (a, b) {\n return gantt.getGlobalTaskIndex(a) > gantt.getGlobalTaskIndex(b) ? 1 : -1;\n });\n return res;\n },\n forSelected: function forSelected(callback) {\n var selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n callback(selected[i]);\n }\n },\n isSameLevel: function isSameLevel(id) {\n if (!this._one_level) return true;\n var last = this.getLastSelected();\n if (!last) return true;\n if (!(gantt.isTaskExists(last) && gantt.isTaskExists(id))) return true;\n return !!(gantt.calculateTaskLevel(gantt.getTask(last)) == gantt.calculateTaskLevel(gantt.getTask(id)));\n },\n afterSelect: function afterSelect(id) {\n if (gantt.isTaskExists(id)) {\n // FIXME: quick workaround to prevent re-filtering inside refresh on multiselect\n gantt._quickRefresh(function () {\n gantt.refreshTask(id);\n });\n }\n },\n doSelection: function doSelection(e) {\n if (!this.isActive()) return false; // deny selection when click on 'expand' or 'collapse' icons\n\n if (gantt._is_icon_open_click(e)) return false;\n var target_ev = gantt.locate(e);\n if (!target_ev) return false;\n if (!gantt.callEvent(\"onBeforeMultiSelect\", [e])) return false;\n var selected = this.getSelected();\n var defaultLast = this.getFirstSelected();\n var isLast = false;\n var last = this.getLastSelected();\n var multiSelect = gantt.config.multiselect;\n\n var singleSelection = function () {\n this.setFirstSelected(target_ev);\n\n if (!this.isSelected(target_ev)) {\n this.select(target_ev, e);\n }\n\n selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n if (selected[i] !== target_ev) {\n this.unselect(selected[i], e);\n }\n }\n }.bind(this);\n\n var blockSelection = function () {\n if (!last) last = target_ev;else if (target_ev) {\n var first_indx = gantt.getGlobalTaskIndex(this.getFirstSelected());\n var target_indx = gantt.getGlobalTaskIndex(target_ev);\n var last_indx = gantt.getGlobalTaskIndex(last); // clear prev selection\n\n var tmp = last;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n this.unselect(tmp, e);\n tmp = first_indx > last_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n\n tmp = target_ev;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n if (this.select(tmp, e) && !isLast) {\n isLast = true;\n defaultLast = tmp;\n }\n\n tmp = first_indx > target_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n }\n }.bind(this);\n\n if (multiSelect && (e.ctrlKey || e.metaKey)) {\n if (!this.isSelected(target_ev)) this.setFirstSelected(target_ev);\n\n if (target_ev) {\n this.toggle(target_ev, e);\n }\n } else if (multiSelect && e.shiftKey) {\n if (!gantt.isTaskExists(this.getFirstSelected()) || this.getFirstSelected() === null) {\n this.setFirstSelected(target_ev);\n }\n\n if (selected.length) {\n // select a group of tasks\n blockSelection();\n } else {\n // select a task when no task is selected and Shift is pressed\n singleSelection();\n }\n } else {\n // no key press or no multiple selection on the mouse click\n singleSelection();\n }\n\n if (this.isSelected(target_ev)) {\n this.setLastSelected(target_ev);\n } else if (defaultLast) {\n if (target_ev == last) this.setLastSelected(e.shiftKey ? defaultLast : this.getDefaultSelected());\n } else {\n this.setLastSelected(null);\n }\n\n if (!this.getSelected().length) this.setLastSelected(null);\n if (!this.getLastSelected() || !this.isSelected(this.getFirstSelected())) this.setFirstSelected(this.getLastSelected());\n return true;\n }\n };\n\n (function () {\n var old_selectTask = gantt.selectTask;\n\n gantt.selectTask = function (id) {\n id = replaceValidZeroId(id, this.config.root_id);\n if (!id) return false;\n var multiselect = gantt._multiselect;\n var res = id;\n\n if (multiselect.isActive()) {\n if (multiselect.select(id, null)) {\n multiselect.setLastSelected(id);\n }\n\n multiselect.setFirstSelected(multiselect.getLastSelected());\n } else {\n res = old_selectTask.call(this, id);\n }\n\n return res;\n };\n\n var old_unselectTask = gantt.unselectTask;\n\n gantt.unselectTask = function (id) {\n var multiselect = gantt._multiselect;\n var isActive = multiselect.isActive();\n id = id || multiselect.getLastSelected();\n\n if (id && isActive) {\n multiselect.unselect(id, null);\n if (id == multiselect.getLastSelected()) multiselect.setLastSelected(null);\n gantt.refreshTask(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n\n var res = id;\n if (!isActive) res = old_unselectTask.call(this, id);\n return res;\n };\n\n gantt.toggleTaskSelection = function (id) {\n var multiselect = gantt._multiselect;\n\n if (id && multiselect.isActive()) {\n multiselect.toggle(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n };\n\n gantt.getSelectedTasks = function () {\n var multiselect = gantt._multiselect;\n multiselect.isActive();\n return multiselect.getSelected();\n };\n\n gantt.eachSelectedTask = function (callback) {\n return this._multiselect.forSelected(callback);\n };\n\n gantt.isSelectedTask = function (id) {\n return this._multiselect.isSelected(id);\n };\n\n gantt.getLastSelectedTask = function () {\n return this._multiselect.getLastSelected();\n };\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var old_isSelected = gantt.$data.tasksStore.isSelected;\n\n gantt.$data.tasksStore.isSelected = function (id) {\n if (gantt._multiselect.isActive()) {\n return gantt._multiselect.isSelected(id);\n }\n\n return old_isSelected.call(this, id);\n };\n });\n })();\n\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (gantt.isSelectedTask(id)) {\n multiselect.unselect(id, null);\n multiselect.select(new_id, null);\n }\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (multiselect._selected[id]) {\n multiselect.unselect(id, null);\n multiselect._selected[id] = false;\n multiselect.setLastSelected(multiselect.getDefaultSelected());\n }\n\n multiselect.forSelected(function (task_id) {\n if (!gantt.isTaskExists(task_id)) multiselect.unselect(task_id, null);\n });\n });\n gantt.attachEvent(\"onBeforeTaskMultiSelect\", function (id, state, e) {\n var multiselect = gantt._multiselect;\n\n if (state && multiselect.isActive()) {\n if (multiselect._one_level) {\n return multiselect.isSameLevel(id);\n }\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._multiselect.doSelection(e)) gantt.callEvent(\"onMultiSelect\", [e]);\n return true;\n });\n};","module.exports = function (gantt) {\n if (!gantt._markers) {\n gantt._markers = gantt.createDatastore({\n name: \"marker\",\n initItem: function initItem(marker) {\n marker.id = marker.id || gantt.uid();\n return marker;\n }\n });\n }\n\n gantt.config.show_markers = true;\n\n function render_marker(marker) {\n if (!gantt.config.show_markers) return false;\n if (!marker.start_date) return false;\n var state = gantt.getState();\n if (+marker.start_date > +state.max_date) return;\n if ((!marker.end_date || +marker.end_date < +state.min_date) && +marker.start_date < +state.min_date) return;\n var div = document.createElement(\"div\");\n div.setAttribute(\"data-marker-id\", marker.id);\n var css = \"gantt_marker\";\n if (gantt.templates.marker_class) css += \" \" + gantt.templates.marker_class(marker);\n\n if (marker.css) {\n css += \" \" + marker.css;\n }\n\n if (marker.title) {\n div.title = marker.title;\n }\n\n div.className = css;\n var start = gantt.posFromDate(marker.start_date);\n div.style.left = start + \"px\";\n div.style.height = Math.max(gantt.getRowTop(gantt.getVisibleTaskCount()), 0) + \"px\";\n\n if (marker.end_date) {\n var end = gantt.posFromDate(marker.end_date);\n div.style.width = Math.max(end - start, 0) + \"px\";\n }\n\n if (marker.text) {\n div.innerHTML = \"<div class='gantt_marker_content' >\" + marker.text + \"</div>\";\n }\n\n return div;\n }\n\n function initMarkerArea() {\n if (!gantt.$task_data) return;\n var markerArea = document.createElement(\"div\");\n markerArea.className = \"gantt_marker_area\";\n gantt.$task_data.appendChild(markerArea);\n gantt.$marker_area = markerArea;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n if (!gantt.$marker_area) initMarkerArea();\n });\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.$marker_area) {\n initMarkerArea();\n gantt.renderMarkers();\n }\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n // GS-1304 - markers should attach when layout is initialized, both on gantt.init and gantt.resetLayout\n // wait for \"onBeforeGanttRender\", so all layout elements will be in DOM\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n initMarkerArea();\n var layers = gantt.$services.getService(\"layers\");\n var markerRenderer = layers.createDataRender({\n name: \"marker\",\n defaultContainer: function defaultContainer() {\n return gantt.$marker_area;\n }\n });\n markerRenderer.addLayer(render_marker);\n }, {\n once: true\n });\n });\n\n gantt.getMarker = function (id) {\n if (!this._markers) return null;\n return this._markers.getItem(id);\n };\n\n gantt.addMarker = function (marker) {\n return this._markers.addItem(marker);\n };\n\n gantt.deleteMarker = function (id) {\n if (!this._markers.exists(id)) return false;\n\n this._markers.removeItem(id);\n\n return true;\n };\n\n gantt.updateMarker = function (id) {\n this._markers.refresh(id);\n };\n\n gantt._getMarkers = function () {\n return this._markers.getItems();\n };\n\n gantt.renderMarkers = function () {\n this._markers.refresh();\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.dispatcher = {\n isActive: false,\n activeNode: null,\n globalNode: new gantt.$keyboardNavigation.GanttNode(),\n enable: function enable() {\n this.isActive = true;\n this.setActiveNode(this.getActiveNode());\n },\n disable: function disable() {\n this.isActive = false;\n },\n isEnabled: function isEnabled() {\n return !!this.isActive;\n },\n getDefaultNode: function getDefaultNode() {\n var node;\n\n if (gantt.config.keyboard_navigation_cells) {\n node = new gantt.$keyboardNavigation.TaskCell();\n } else {\n node = new gantt.$keyboardNavigation.TaskRow();\n }\n\n if (!node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n setDefaultNode: function setDefaultNode() {\n this.setActiveNode(this.getDefaultNode());\n },\n getActiveNode: function getActiveNode() {\n var node = this.activeNode;\n\n if (node && !node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n fromDomElement: function fromDomElement(e) {\n var inputs = [gantt.$keyboardNavigation.TaskRow, gantt.$keyboardNavigation.TaskCell, gantt.$keyboardNavigation.HeaderCell];\n\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].prototype.fromDomElement) {\n var node = inputs[i].prototype.fromDomElement(e);\n if (node) return node;\n }\n }\n\n return null;\n },\n focusGlobalNode: function focusGlobalNode() {\n this.blurNode(this.globalNode);\n this.focusNode(this.globalNode);\n },\n setActiveNode: function setActiveNode(el) {\n //console.trace()\n var focusChanged = true;\n\n if (this.activeNode) {\n if (this.activeNode.compareTo(el)) {\n focusChanged = false;\n }\n }\n\n if (this.isEnabled()) {\n if (focusChanged) this.blurNode(this.activeNode);\n this.activeNode = el;\n this.focusNode(this.activeNode, !focusChanged);\n }\n },\n focusNode: function focusNode(el, keptFocus) {\n if (el && el.focus) {\n el.focus(keptFocus);\n }\n },\n blurNode: function blurNode(el) {\n if (el && el.blur) {\n el.blur();\n }\n },\n keyDownHandler: function keyDownHandler(e) {\n if (gantt.$keyboardNavigation.isModal()) return;\n if (!this.isEnabled()) return;\n\n if (e.defaultPrevented) {\n return;\n }\n\n var ganttNode = this.globalNode;\n var command = gantt.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\n var activeElement = this.getActiveNode();\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onKeyDown\", [command, e]) === false) {\n return;\n }\n\n if (!activeElement) {\n this.setDefaultNode();\n } else if (activeElement.findHandler(command)) {\n activeElement.doAction(command, e);\n } else if (ganttNode.findHandler(command)) {\n ganttNode.doAction(command, e);\n }\n },\n _timeout: null,\n awaitsFocus: function awaitsFocus() {\n return this._timeout !== null;\n },\n delay: function delay(callback, _delay) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(gantt.bind(function () {\n this._timeout = null;\n callback();\n }, this), _delay || 1);\n },\n clearDelay: function clearDelay() {\n clearTimeout(this._timeout);\n }\n };\n};","module.exports = function (gantt) {\n (function () {\n var modalsStack = [];\n\n function isModal() {\n return !!modalsStack.length;\n }\n\n function afterPopup(box) {\n setTimeout(function () {\n if (!isModal()) {\n if (!gantt.$destroyed) {\n gantt.focus();\n }\n }\n }, 1);\n }\n\n function startModal(box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n gantt.event(box, \"keydown\", trapFocus);\n modalsStack.push(box); //gantt.$keyboardNavigation.dispatcher.disable();\n }\n\n function endModal() {\n var box = modalsStack.pop();\n\n if (box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n }\n\n afterPopup(box);\n }\n\n function isTopModal(box) {\n return box == modalsStack[modalsStack.length - 1];\n }\n\n function trapFocus(event) {\n var target = event.currentTarget;\n if (!isTopModal(target)) return;\n gantt.$keyboardNavigation.trapFocus(target, event);\n }\n\n function traceLightbox() {\n startModal(gantt.getLightbox());\n }\n\n gantt.attachEvent(\"onLightbox\", traceLightbox);\n gantt.attachEvent(\"onAfterLightbox\", endModal);\n gantt.attachEvent(\"onLightboxChange\", function () {\n endModal();\n traceLightbox();\n });\n gantt.attachEvent(\"onAfterQuickInfo\", function () {\n afterPopup();\n });\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n saveFocus();\n startModal(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function () {\n endModal();\n restoreFocus();\n });\n var focusElement = null;\n\n function saveFocus() {\n focusElement = gantt.utils.dom.getActiveElement();\n }\n\n function restoreFocus() {\n setTimeout(function () {\n if (focusElement) {\n focusElement.focus();\n focusElement = null;\n }\n }, 1);\n }\n\n gantt.$keyboardNavigation.isModal = isModal;\n })();\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n var _require = require(\"../../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\n gantt.$keyboardNavigation.TaskCell = function (taskId, index) {\n taskId = replaceValidZeroId(taskId, gantt.config.root_id);\n\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n this.columnIndex = index || 0; // provided task may not exist, in this case node will be detectes as invalid\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskCell.prototype = gantt._compose(gantt.$keyboardNavigation.TaskRow, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.$keyboardNavigation.TaskRow.prototype.isValid.call(this) && !!gantt.getGridColumns()[this.columnIndex];\n },\n fallback: function fallback() {\n var node = gantt.$keyboardNavigation.TaskRow.prototype.fallback.call(this);\n var result = node;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow) {\n var visibleColumns = gantt.getGridColumns();\n var index = this.columnIndex;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n result = new gantt.$keyboardNavigation.TaskCell(node.taskId, index);\n }\n }\n\n return result;\n },\n fromDomElement: function fromDomElement(el) {\n if (!gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n var index = 0;\n var cellElement = domHelpers.locateAttribute(el, \"data-column-index\");\n\n if (cellElement) {\n index = cellElement.getAttribute(\"data-column-index\") * 1;\n }\n\n return new gantt.$keyboardNavigation.TaskCell(taskId, index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n var row = gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n if (!row) return null;\n return row.querySelector(\"[data-column-index='\" + this.columnIndex + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n keys: {\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell(this.columnIndex);\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskCell(prevTask, this.columnIndex);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(nextTask, this.columnIndex));\n }\n },\n \"left\": function left() {\n if (this.columnIndex > 0) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.columnIndex < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex + 1));\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, 0));\n },\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id, this.columnIndex));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(0).id, this.columnIndex));\n }\n }\n }\n });\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.TaskRow = function (taskId) {\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskRow.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.isTaskExists(this.taskId) && gantt.getTaskIndex(this.taskId) > -1;\n },\n fallback: function fallback() {\n if (!gantt.getVisibleTaskCount()) {\n var header = new gantt.$keyboardNavigation.HeaderCell();\n if (!header.isValid()) return null;else return header;\n } else {\n var nextIndex = -1;\n\n if (gantt.getTaskByIndex(this.index - 1)) {\n nextIndex = this.index - 1;\n } else if (gantt.getTaskByIndex(this.index + 1)) {\n nextIndex = this.index + 1;\n } else {\n var index = this.index;\n\n while (index >= 0) {\n if (gantt.getTaskByIndex(index)) {\n nextIndex = index;\n break;\n }\n\n index--;\n }\n }\n\n if (nextIndex > -1) {\n return new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(nextIndex).id);\n }\n }\n },\n fromDomElement: function fromDomElement(el) {\n if (gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n return new gantt.$keyboardNavigation.TaskRow(taskId);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n return gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n focus: function focus(keptFocus) {\n if (!keptFocus) {\n var pos = gantt.getTaskPosition(gantt.getTask(this.taskId));\n var height = gantt.getTaskHeight(this.taskId);\n var scroll = gantt.getScrollState();\n var viewWidth;\n\n if (gantt.$task) {\n viewWidth = gantt.$task.offsetWidth;\n } else {\n viewWidth = scroll.inner_width;\n }\n\n var viewHeight;\n\n if (gantt.$grid_data || gantt.$task_data) {\n viewHeight = (gantt.$grid_data || gantt.$task_data).offsetHeight;\n } else {\n viewHeight = scroll.inner_height;\n }\n\n if (pos.top < scroll.y || pos.top + height > scroll.y + viewHeight) {\n gantt.scrollTo(null, pos.top - height * 5);\n } else if (gantt.config.scroll_on_click && gantt.config.show_chart) {\n // horizontal scroll activated\n if (pos.left > scroll.x + viewWidth) {\n // scroll forward to the start of the task\n gantt.scrollTo(pos.left - gantt.config.task_scroll_offset);\n } else if (pos.left + pos.width < scroll.x) {\n // scroll back to the end of the task\n gantt.scrollTo(pos.left + pos.width - gantt.config.task_scroll_offset);\n }\n }\n }\n\n gantt.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this, [keptFocus]); // GS-152 if there are scrollbars with custom names, change their scroll position\n\n scrollGrid();\n\n function scrollGrid() {\n var grid = gantt.$ui.getView(\"grid\");\n var scrollPositionX = parseInt(grid.$grid.scrollLeft);\n var scrollPositionY = parseInt(grid.$grid_data.scrollTop);\n var attachedScrollbarHorizontal = grid.$config.scrollX;\n\n if (attachedScrollbarHorizontal && grid.$config.scrollable) {\n var scrollbarHorizontal = gantt.$ui.getView(attachedScrollbarHorizontal);\n\n if (scrollbarHorizontal) {\n scrollbarHorizontal.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n\n var attachedScrollbarVertical = grid.$config.scrollY;\n\n if (attachedScrollbarVertical) {\n var scrollbarVertical = gantt.$ui.getView(attachedScrollbarVertical);\n\n if (scrollbarVertical) {\n scrollbarVertical.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n }\n },\n keys: {\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(0).id));\n }\n },\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell();\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskRow(prevTask);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(nextTask));\n }\n },\n \"shift+down\": function shiftDown() {\n if (gantt.hasChild(this.taskId) && !gantt.getTask(this.taskId).$open) {\n gantt.open(this.taskId);\n }\n },\n \"shift+up\": function shiftUp() {\n if (gantt.hasChild(this.taskId) && gantt.getTask(this.taskId).$open) {\n gantt.close(this.taskId);\n }\n },\n \"shift+right\": function shiftRight() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var prevId = gantt.getPrevSibling(this.taskId);\n\n if (gantt.isTaskExists(prevId) && !gantt.isChildOf(this.taskId, prevId)) {\n var parent = gantt.getTask(prevId);\n parent.$open = true;\n var result = gantt.moveTask(this.taskId, -1, prevId);\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n \"shift+left\": function shiftLeft() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var parent = gantt.getParent(this.taskId);\n\n if (gantt.isTaskExists(parent)) {\n var result = gantt.moveTask(this.taskId, gantt.getTaskIndex(parent) + 1, gantt.getParent(parent));\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n // select\n \"space\": function space(e) {\n if (!gantt.isSelectedTask(this.taskId)) {\n gantt.selectTask(this.taskId);\n } else {\n gantt.unselectTask(this.taskId);\n }\n },\n // collapse\n \"ctrl+left\": function ctrlLeft(e) {\n gantt.close(this.taskId);\n },\n // expand\n \"ctrl+right\": function ctrlRight(e) {\n gantt.open(this.taskId);\n },\n // delete task\n \"delete\": function _delete(e) {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.$click.buttons[\"delete\"](this.taskId);\n },\n // open lightbox\n \"enter\": function enter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.showLightbox(this.taskId);\n },\n // add subtask\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.TaskRow.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.HeaderCell = function (index) {\n this.index = index || 0;\n };\n\n gantt.$keyboardNavigation.HeaderCell.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) return false;\n }\n\n return !!gantt.getGridColumns()[this.index] || !gantt.getVisibleTaskCount();\n },\n fallback: function fallback() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) {\n return new gantt.$keyboardNavigation.TaskRow();\n }\n\n return null;\n }\n\n var visibleColumns = gantt.getGridColumns();\n var index = this.index;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n fromDomElement: function fromDomElement(el) {\n var cellElement = domHelpers.locateClassName(el, \"gantt_grid_head_cell\");\n\n if (cellElement) {\n var index = 0;\n\n while (cellElement && cellElement.previousSibling) {\n cellElement = cellElement.previousSibling;\n index += 1;\n }\n\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n var cells = gantt.$grid_scale.childNodes;\n return cells[this.index];\n },\n keys: {\n \"left\": function left() {\n if (this.index > 0) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.index < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index + 1));\n }\n },\n \"down\": function down() {\n var taskRow;\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (gantt.isTaskExists(rootLevel[0])) {\n taskRow = rootLevel[0];\n }\n\n if (taskRow) {\n if (gantt.config.keyboard_navigation_cells) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(taskRow, this.index));\n } else {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(taskRow));\n }\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(0));\n },\n // press header button\n \"enter, space\": function enterSpace() {\n var node = domHelpers.getActiveElement();\n node.click();\n },\n // add new task\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.HeaderCell.prototype.bindAll(gantt.$keyboardNavigation.HeaderCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.KeyNavNode = function () {};\n\n gantt.$keyboardNavigation.KeyNavNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n isValid: function isValid() {\n return true;\n },\n fallback: function fallback() {\n return null;\n },\n moveTo: function moveTo(element) {\n gantt.$keyboardNavigation.dispatcher.setActiveNode(element);\n },\n compareTo: function compareTo(b) {\n // good enough comparison of two random objects\n if (!b) return false;\n\n for (var i in this) {\n if (!!this[i] != !!b[i]) return false;\n var canStringifyThis = !!(this[i] && this[i].toString);\n var canStringifyThat = !!(b[i] && b[i].toString);\n if (canStringifyThat != canStringifyThis) return false;\n\n if (!(canStringifyThat && canStringifyThis)) {\n if (b[i] != this[i]) return false;\n } else {\n if (b[i].toString() != this[i].toString()) return false;\n }\n }\n\n return true;\n },\n getNode: function getNode() {},\n focus: function focus() {\n var node = this.getNode();\n if (!node) return;\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeFocus\", [node]) === false) {\n return;\n }\n\n if (node) {\n node.setAttribute(\"tabindex\", \"-1\");\n\n if (!node.$eventAttached) {\n node.$eventAttached = true;\n gantt.event(node, \"focus\", function (e) {\n e.preventDefault();\n return false;\n }, false);\n } //node.className += \" gantt_focused\";\n\n\n if (node.focus) node.focus();\n eventFacade.callEvent(\"onFocus\", [this.getNode()]);\n }\n },\n blur: function blur() {\n var node = this.getNode();\n\n if (node) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n eventFacade.callEvent(\"onBlur\", [node]);\n node.setAttribute(\"tabindex\", \"-1\"); //node.className = (node.className || \"\").replace(/ ?gantt_focused/g, \"\");\n }\n }\n });\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.GanttNode = function () {};\n\n gantt.$keyboardNavigation.GanttNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n focus: function focus() {\n gantt.focus();\n },\n blur: function blur() {},\n isEnabled: function isEnabled() {\n return gantt.$container.hasAttribute(\"tabindex\");\n },\n scrollHorizontal: function scrollHorizontal(dir) {\n var date = gantt.dateFromPos(gantt.getScrollState().x);\n var scale = gantt.getScale();\n var step = dir < 0 ? -scale.step : scale.step;\n date = gantt.date.add(date, step, scale.unit);\n gantt.scrollTo(gantt.posFromDate(date));\n },\n scrollVertical: function scrollVertical(dir) {\n var top = gantt.getScrollState().y;\n var step = gantt.config.row_height;\n gantt.scrollTo(null, top + (dir < 0 ? -1 : 1) * step);\n },\n keys: {\n \"alt+left\": function altLeft(e) {\n this.scrollHorizontal(-1);\n },\n \"alt+right\": function altRight(e) {\n this.scrollHorizontal(1);\n },\n \"alt+up\": function altUp(e) {\n this.scrollVertical(-1);\n },\n \"alt+down\": function altDown(e) {\n this.scrollVertical(1);\n },\n // undo\n \"ctrl+z\": function ctrlZ() {\n if (gantt.undo) gantt.undo();\n },\n // redo\n \"ctrl+r\": function ctrlR() {\n if (gantt.redo) gantt.redo();\n }\n }\n });\n gantt.$keyboardNavigation.GanttNode.prototype.bindAll(gantt.$keyboardNavigation.GanttNode.prototype.keys);\n};","module.exports = function (gantt) {\n (function () {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.getFocusableNodes = domHelpers.getFocusableNodes;\n\n gantt.$keyboardNavigation.trapFocus = function trapFocus(root, e) {\n if (e.keyCode != 9) return false;\n var focusable = gantt.$keyboardNavigation.getFocusableNodes(root);\n var currentFocus = domHelpers.getActiveElement();\n var currentIndex = -1;\n\n for (var i = 0; i < focusable.length; i++) {\n if (focusable[i] == currentFocus) {\n currentIndex = i;\n break;\n }\n }\n\n if (e.shiftKey) {\n // back tab\n if (currentIndex <= 0) {\n // go to the last element if we focused on the first\n var lastItem = focusable[focusable.length - 1];\n\n if (lastItem) {\n lastItem.focus();\n e.preventDefault();\n return true;\n }\n }\n } else {\n // forward tab\n if (currentIndex >= focusable.length - 1) {\n // forward tab from last element should go back to the first element\n var firstItem = focusable[0];\n\n if (firstItem) {\n firstItem.focus();\n e.preventDefault();\n return true;\n }\n }\n }\n\n return false;\n };\n })();\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.EventHandler = {\n _handlers: null,\n findHandler: function findHandler(command) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var hash = shortcuts.getHash(command);\n return this._handlers[hash];\n },\n doAction: function doAction(command, e) {\n var handler = this.findHandler(command);\n\n if (handler) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeAction\", [command, e]) === false) {\n return;\n }\n\n handler.call(this, e);\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n },\n bind: function bind(shortcut, handler) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n this._handlers[shortcuts.getHash(commands[i])] = handler;\n }\n },\n unbind: function unbind(shortcut) {\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n if (this._handlers[shortcuts.getHash(commands[i])]) {\n delete this._handlers[shortcuts.getHash(commands[i])];\n }\n }\n },\n bindAll: function bindAll(map) {\n for (var i in map) {\n this.bind(i, map[i]);\n }\n },\n initKeys: function initKeys() {\n if (!this._handlers) this._handlers = {};\n\n if (this.keys) {\n this.bindAll(this.keys);\n }\n }\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.shortcuts = {\n createCommand: function createCommand() {\n return {\n modifiers: {\n \"shift\": false,\n \"alt\": false,\n \"ctrl\": false,\n \"meta\": false\n },\n keyCode: null\n };\n },\n parse: function parse(shortcut) {\n var commands = [];\n var expr = this.getExpressions(this.trim(shortcut));\n\n for (var i = 0; i < expr.length; i++) {\n var words = this.getWords(expr[i]);\n var command = this.createCommand();\n\n for (var j = 0; j < words.length; j++) {\n if (this.commandKeys[words[j]]) {\n command.modifiers[words[j]] = true;\n } else if (this.specialKeys[words[j]]) {\n command.keyCode = this.specialKeys[words[j]];\n } else {\n command.keyCode = words[j].charCodeAt(0);\n }\n }\n\n commands.push(command);\n }\n\n return commands;\n },\n getCommandFromEvent: function getCommandFromEvent(domEvent) {\n var command = this.createCommand();\n command.modifiers.shift = !!domEvent.shiftKey;\n command.modifiers.alt = !!domEvent.altKey;\n command.modifiers.ctrl = !!domEvent.ctrlKey;\n command.modifiers.meta = !!domEvent.metaKey;\n command.keyCode = domEvent.which || domEvent.keyCode;\n\n if (command.keyCode >= 96 && command.keyCode <= 105) {\n // numpad keys 96-105 -> 48-57\n command.keyCode -= 48; //convert numpad number code to regular number code\n }\n\n var printableKey = String.fromCharCode(command.keyCode);\n\n if (printableKey) {\n command.keyCode = printableKey.toLowerCase().charCodeAt(0);\n }\n\n return command;\n },\n getHashFromEvent: function getHashFromEvent(domEvent) {\n return this.getHash(this.getCommandFromEvent(domEvent));\n },\n getHash: function getHash(command) {\n var parts = [];\n\n for (var i in command.modifiers) {\n if (command.modifiers[i]) {\n parts.push(i);\n }\n }\n\n parts.push(command.keyCode);\n return parts.join(this.junctionChar);\n },\n getExpressions: function getExpressions(shortcut) {\n return shortcut.split(this.junctionChar);\n },\n getWords: function getWords(term) {\n return term.split(this.combinationChar);\n },\n trim: function trim(shortcut) {\n return shortcut.replace(/\\s/g, \"\");\n },\n junctionChar: \",\",\n combinationChar: \"+\",\n commandKeys: {\n \"shift\": 16,\n \"alt\": 18,\n \"ctrl\": 17,\n \"meta\": true\n },\n specialKeys: {\n \"backspace\": 8,\n \"tab\": 9,\n \"enter\": 13,\n \"esc\": 27,\n \"space\": 32,\n \"up\": 38,\n \"down\": 40,\n \"left\": 37,\n \"right\": 39,\n \"home\": 36,\n \"end\": 35,\n \"pageup\": 33,\n \"pagedown\": 34,\n \"delete\": 46,\n \"insert\": 45,\n \"plus\": 107,\n \"f1\": 112,\n \"f2\": 113,\n \"f3\": 114,\n \"f4\": 115,\n \"f5\": 116,\n \"f6\": 117,\n \"f7\": 118,\n \"f8\": 119,\n \"f9\": 120,\n \"f10\": 121,\n \"f11\": 122,\n \"f12\": 123\n }\n };\n};","module.exports = function (gantt) {\n var eventable = require(\"../utils/eventable\");\n\n function setupKeyNav(gantt) {\n gantt.config.keyboard_navigation = true;\n gantt.config.keyboard_navigation_cells = false;\n gantt.$keyboardNavigation = {};\n\n gantt._compose = function () {\n var parts = Array.prototype.slice.call(arguments, 0);\n var res = {};\n\n for (var i = 0; i < parts.length; i++) {\n var obj = parts[i];\n\n if (typeof obj == \"function\") {\n obj = new obj();\n }\n\n for (var p in obj) {\n res[p] = obj[p];\n }\n }\n\n return res;\n };\n\n require(\"./keyboard_navigation/common/keyboard_shortcuts\")(gantt);\n\n require(\"./keyboard_navigation/common/eventhandler\")(gantt);\n\n require(\"./keyboard_navigation/common/trap_modal_focus\")(gantt);\n\n require(\"./keyboard_navigation/elements/gantt_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/nav_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/header_cell\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_row\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_cell\")(gantt);\n\n require(\"./keyboard_navigation/modals\")(gantt);\n\n require(\"./keyboard_navigation/core\")(gantt);\n\n var domHelpers = require(\"../core/ui/utils/dom_helpers\");\n\n (function () {\n var dispatcher = gantt.$keyboardNavigation.dispatcher;\n\n dispatcher.isTaskFocused = function (id) {\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow || node instanceof gantt.$keyboardNavigation.TaskCell) {\n if (node.taskId == id) {\n return true;\n }\n }\n\n return false;\n };\n\n var keyDownHandler = function keyDownHandler(e) {\n if (!gantt.config.keyboard_navigation) return; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return;\n return dispatcher.keyDownHandler(e);\n };\n\n var focusHandler = function focusHandler(e) {\n if (dispatcher.$preventDefault) {\n e.preventDefault();\n gantt.$container.blur();\n return false; // do nothing if key-nav focus is already planned\n } else if (!dispatcher.awaitsFocus()) {\n // otherwise - re-focus key-nav element on gantt focus\n dispatcher.focusGlobalNode();\n }\n };\n\n var reFocusActiveNode = function reFocusActiveNode() {\n if (!dispatcher.isEnabled()) return;\n var activeNode = dispatcher.getActiveNode();\n if (!activeNode) return;\n var domElement = activeNode.getNode();\n var top, left;\n\n if (domElement && domElement.parentNode) {\n top = domElement.parentNode.scrollTop;\n left = domElement.parentNode.scrollLeft;\n }\n\n activeNode.focus(true);\n\n if (domElement && domElement.parentNode) {\n domElement.parentNode.scrollTop = top;\n domElement.parentNode.scrollLeft = left;\n }\n };\n\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.config.keyboard_navigation) return;\n reFocusActiveNode();\n });\n gantt.attachEvent(\"onGanttRender\", function () {\n gantt.eventRemove(gantt.$root, \"keydown\", keyDownHandler);\n gantt.eventRemove(gantt.$container, \"focus\", focusHandler);\n gantt.eventRemove(gantt.$container, \"mousedown\", mousedownHandler);\n\n if (gantt.config.keyboard_navigation) {\n gantt.event(gantt.$root, \"keydown\", keyDownHandler);\n gantt.event(gantt.$container, \"focus\", focusHandler);\n gantt.event(gantt.$container, \"mousedown\", mousedownHandler);\n gantt.$container.setAttribute(\"tabindex\", \"0\");\n } else {\n gantt.$container.removeAttribute(\"tabindex\");\n }\n });\n\n function getTaskNodeConstructor() {\n if (gantt.config.keyboard_navigation_cells) {\n return gantt.$keyboardNavigation.TaskCell;\n } else {\n return gantt.$keyboardNavigation.TaskRow;\n }\n }\n\n function isInlineEditorCell(e) {\n return !!domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\");\n }\n\n function mousedownHandler(e) {\n if (!gantt.config.keyboard_navigation) return true; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return true;\n var focusNode;\n var locateTask = dispatcher.fromDomElement(e);\n\n if (locateTask) {\n //var node = getTaskNodeConstructor();\n if (dispatcher.activeNode instanceof gantt.$keyboardNavigation.TaskCell && domHelpers.isChildOf(e.target, gantt.$task)) {\n locateTask = new gantt.$keyboardNavigation.TaskCell(locateTask.taskId, dispatcher.activeNode.columnIndex);\n }\n\n focusNode = locateTask;\n }\n\n if (focusNode) {\n if (!dispatcher.isEnabled()) {\n dispatcher.activeNode = focusNode;\n } else {\n dispatcher.delay(function () {\n dispatcher.setActiveNode(focusNode);\n });\n }\n } else {\n // empty click should drop focus from gantt, insert of reselecting default node\n dispatcher.$preventDefault = true;\n setTimeout(function () {\n dispatcher.$preventDefault = false;\n }, 300);\n }\n }\n\n var onReady = gantt.attachEvent(\"onGanttReady\", function () {\n // restore focus on repainted tasks\n gantt.detachEvent(onReady);\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function (id) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId == id) {\n reFocusActiveNode();\n }\n }\n });\n\n if (gantt._smart_render) {\n var updateRender = gantt._smart_render._redrawTasks;\n\n gantt._smart_render._redrawTasks = function (renderers, items) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId !== undefined) {\n var focusedItemVisible = false;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id == currentNode.taskId && items[i].start_date) {\n focusedItemVisible = true;\n break;\n }\n }\n\n if (!focusedItemVisible) {\n items.push(gantt.getTask(currentNode.taskId));\n }\n }\n }\n\n var res = updateRender.apply(this, arguments);\n return res;\n };\n }\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (!gantt.config.keyboard_navigation) return true;\n\n if (dispatcher.isEnabled()) {\n var columnIndex = 0;\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskCell) {\n columnIndex = node.columnIndex;\n }\n\n var nodeConstructor = getTaskNodeConstructor();\n dispatcher.setActiveNode(new nodeConstructor(id, columnIndex));\n }\n });\n gantt.attachEvent(\"onTaskIdChange\", function (oldId, newId) {\n if (!gantt.config.keyboard_navigation) return true;\n var node = dispatcher.activeNode;\n\n if (dispatcher.isTaskFocused(oldId)) {\n node.taskId = newId;\n }\n\n return true;\n });\n var interval = setInterval(function () {\n if (!gantt.config.keyboard_navigation) return;\n\n if (!dispatcher.isEnabled()) {\n dispatcher.enable();\n }\n\n return;\n }, 500);\n gantt.attachEvent(\"onDestroy\", function () {\n clearInterval(interval);\n });\n\n function getScopeName(obj) {\n if (obj instanceof gantt.$keyboardNavigation.GanttNode) {\n return \"gantt\";\n } else if (obj instanceof gantt.$keyboardNavigation.HeaderCell) {\n return \"headerCell\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskRow) {\n return \"taskRow\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskCell) {\n return \"taskCell\";\n }\n\n return null;\n }\n\n function getScope(mode) {\n var scopes = {\n \"gantt\": gantt.$keyboardNavigation.GanttNode,\n \"headerCell\": gantt.$keyboardNavigation.HeaderCell,\n \"taskRow\": gantt.$keyboardNavigation.TaskRow,\n \"taskCell\": gantt.$keyboardNavigation.TaskCell\n };\n return scopes[mode] || scopes.gantt;\n }\n\n function findVisibleColumnIndex(columnName) {\n var columns = gantt.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n var keyNavFacade = {};\n eventable(keyNavFacade);\n gantt.mixin(keyNavFacade, {\n addShortcut: function addShortcut(shortcut, handler, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.bind(shortcut, handler);\n }\n },\n getShortcutHandler: function getShortcutHandler(shortcut, scope) {\n var commands = gantt.$keyboardNavigation.shortcuts.parse(shortcut);\n\n if (commands.length) {\n return keyNavFacade.getCommandHandler(commands[0], scope);\n }\n },\n getCommandHandler: function getCommandHandler(command, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n if (command) {\n return scopeObject.prototype.findHandler(command);\n }\n }\n },\n removeShortcut: function removeShortcut(shortcut, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.unbind(shortcut);\n }\n },\n focus: function focus(config) {\n var type = config ? config.type : null;\n var constructor = getScope(type);\n var node;\n\n switch (type) {\n case \"taskCell\":\n node = new constructor(config.id, findVisibleColumnIndex(config.column));\n break;\n\n case \"taskRow\":\n node = new constructor(config.id);\n break;\n\n case \"headerCell\":\n node = new constructor(findVisibleColumnIndex(config.column));\n break;\n\n default:\n break;\n }\n\n dispatcher.delay(function () {\n if (node) {\n dispatcher.setActiveNode(node);\n } else {\n dispatcher.enable();\n\n if (!dispatcher.getActiveNode()) {\n dispatcher.setDefaultNode();\n } else {\n if (!dispatcher.awaitsFocus()) {\n dispatcher.enable();\n }\n }\n }\n });\n },\n getActiveNode: function getActiveNode() {\n if (dispatcher.isEnabled()) {\n var node = dispatcher.getActiveNode();\n var scope = getScopeName(node);\n var columns = gantt.getGridColumns();\n\n switch (scope) {\n case \"taskCell\":\n return {\n type: \"taskCell\",\n id: node.taskId,\n column: columns[node.columnIndex].name\n };\n\n case \"taskRow\":\n return {\n type: \"taskRow\",\n id: node.taskId\n };\n\n case \"headerCell\":\n return {\n type: \"headerCell\",\n column: columns[node.index].name\n };\n }\n }\n\n return null;\n }\n });\n gantt.$keyboardNavigation.facade = keyNavFacade;\n gantt.ext.keyboardNavigation = keyNavFacade;\n\n gantt.focus = function () {\n keyNavFacade.focus();\n };\n\n gantt.addShortcut = keyNavFacade.addShortcut;\n gantt.getShortcutHandler = keyNavFacade.getShortcutHandler;\n gantt.removeShortcut = keyNavFacade.removeShortcut;\n })();\n }\n\n setupKeyNav(gantt);\n};","export default function(gantt: any){\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\tprivate _view: any;\n\n\tconstructor(config: ISelectedRegionConfig, gantt: any, view: any) {\n\t\tthis._gantt = gantt;\n\t\tthis._view = view;\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\t// const 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 pos = this._getTaskPositionByTop(this._startPoint.relative.top);\n\t\t\tnode.style.height = pos.height + \"px\";\n\t\t\tnode.style.top = pos.top + \"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 pos = this._getTaskPositionByTop(this._startPoint.relative.top);\n\t\t\tthis._endPoint.relative.top = pos.top;\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\t// GS-1422. The endDate can be null if we drag the mouse outside the Gantt container\n\t\tthis._endDate = this._endDate || gantt.getState().max_date;\n\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 startIndex = this._getTaskPositionByTop(startValue).index;\n\t\tconst endIndex = this._getTaskPositionByTop(endValue).index;\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\n\tprivate _getTaskPositionByTop(top: number){\n\t\tconst gantt = this._gantt;\n\t\tconst view = this._view;\n\t\tconst index = view.getItemIndexByTopPosition(top);\n\t\tconst task = gantt.getTaskByIndex(index);\n\t\tif(task){\n\t\t\tconst height = view.getItemHeight(task.id);\n\t\t\tconst itemTop = view.getItemTop(task.id);\n\t\t\treturn {\n\t\t\t\ttop: itemTop || 0,\n\t\t\t\theight: height || 0,\n\t\t\t\tindex,\n\t\t\t};\n\t\t} else {\n\t\t\tconst dataHeight = view.getTotalHeight();\n\t\t\treturn {\n\t\t\t\ttop: top > dataHeight ? dataHeight : 0,\n\t\t\t\theight: gantt.config.row_height,\n\t\t\t\tindex: top > dataHeight ? gantt.getTaskCount() : 0,\n\t\t\t};\n\t\t}\n\t}\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\nimport { 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(gantt.copy(scheduledDndCoordinates));\n\t\t\tselectedRegion.setPosition(gantt.copy(scheduledDndCoordinates));\n\t\t\tselectedRegion.setEnd(gantt.copy(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\t\tconst eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\n\t\tthis._domEvents.attach(eventElement, \"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 timeline = gantt.$ui.getView(\"timeline\");\n\t\t\tconst selectedRegion = new SelectedRegion(config, gantt, timeline);\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 \"./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":""}