{"version":3,"sources":["webpack://dhtmlxgantt/webpack/universalModuleDefinition","webpack://dhtmlxgantt/webpack/bootstrap","webpack://dhtmlxgantt/./sources/utils/utils.js","webpack://dhtmlxgantt/./sources/core/ui/utils/dom_helpers.js","webpack://dhtmlxgantt/./sources/utils/helpers.js","webpack://dhtmlxgantt/./sources/utils/extends.js","webpack://dhtmlxgantt/(webpack)/buildin/global.js","webpack://dhtmlxgantt/./sources/utils/eventable.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_visible_bars_range.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/base_control.js","webpack://dhtmlxgantt/./sources/utils/env.js","webpack://dhtmlxgantt/./node_modules/inherits/inherits_browser.js","webpack://dhtmlxgantt/./node_modules/process/browser.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/base.js","webpack://dhtmlxgantt/./sources/core/ui/layout/cell.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://dhtmlxgantt/./node_modules/buffer/index.js","webpack://dhtmlxgantt/./sources/utils/is_headless.js","webpack://dhtmlxgantt/./sources/utils/placeholder_task.js","webpack://dhtmlxgantt/./sources/utils/global.js","webpack://dhtmlxgantt/./node_modules/core-util-is/lib/util.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_bar_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/is_legacy_smart_render.js","webpack://dhtmlxgantt/./node_modules/safe-buffer/index.js","webpack://dhtmlxgantt/./node_modules/process-nextick-args/index.js","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/task_plan.ts","webpack://dhtmlxgantt/./sources/core/ui/utils/html_helpers.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/select_control.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/drop_target.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_column_visible.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_visible_cells_range.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_bg_row_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bar_render.js","webpack://dhtmlxgantt/./sources/core/ui/resource_store_mixin.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_grid_row_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/mouse_event_container.js","webpack://dhtmlxgantt/./sources/core/ui/grid/grid.js","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/constraint_types.ts","webpack://dhtmlxgantt/./sources/core/resource_timetable_builder.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/resource_timeline.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/timeline.js","webpack://dhtmlxgantt/./sources/core/ui/layout/layout.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_link_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/factory/get_visible_link_range.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/index.ts","webpack://dhtmlxgantt/./sources/core/worktime/calendar_arguments_helper.js","webpack://dhtmlxgantt/./sources/core/ui/row_position_mixin.js","webpack://dhtmlxgantt/./sources/utils/task_tree_helpers.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/scales.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/scales_ignore.js","webpack://dhtmlxgantt/./sources/core/gantt_data_range.js","webpack://dhtmlxgantt/./sources/core/datastore/treedatastore.js","webpack://dhtmlxgantt/./sources/core/datastore/power_array.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore.js","webpack://dhtmlxgantt/./sources/utils/timeout.js","webpack://dhtmlxgantt/./sources/ext/extension_manager.ts","webpack://dhtmlxgantt/./sources/core/ui/utils/dom_event_scope.js","webpack://dhtmlxgantt/./node_modules/form-data/lib/browser.js","webpack://dhtmlxgantt/(webpack)/buildin/amd-options.js","webpack://dhtmlxgantt/./node_modules/url/url.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_transform.js","webpack://dhtmlxgantt/./node_modules/string_decoder/lib/string_decoder.js","webpack://dhtmlxgantt/./node_modules/timers-browserify/main.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_writable.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://dhtmlxgantt/./node_modules/events/events.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_readable.js","webpack://dhtmlxgantt/./node_modules/readable-stream/readable-browser.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/response.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/capability.js","webpack://dhtmlxgantt/./node_modules/stream-http/index.js","webpack://dhtmlxgantt/./node_modules/isarray/index.js","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/date_comparator.ts","webpack://dhtmlxgantt/./sources/core/relations/graph_helper.js","webpack://dhtmlxgantt/./sources/core/relations/links_builder.js","webpack://dhtmlxgantt/./sources/core/relations/links_common.js","webpack://dhtmlxgantt/./sources/ext/auto_scheduling_configs.js","webpack://dhtmlxgantt/./sources/core/ui/wai_aria.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/lightbox_optional_time.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/typeselect_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/constraint_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/resources_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/parent_control.js","webpack://dhtmlxgantt/./sources/core/common/duration_formatter_numeric.ts","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/duration_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/radio_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/checkbox_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/time_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/textarea_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/controls/template_control.js","webpack://dhtmlxgantt/./sources/core/ui/lightbox/index.js","webpack://dhtmlxgantt/./sources/core/ui/touch.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/timeline_zoom.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/dhtmlx_hooks.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/jquery_hooks.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/autoscroll.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/index.js","webpack://dhtmlxgantt/./sources/css/skins/contrast_white.js","webpack://dhtmlxgantt/./sources/css/skins/contrast_black.js","webpack://dhtmlxgantt/./sources/css/skins/material.js","webpack://dhtmlxgantt/./sources/css/skins/broadway.js","webpack://dhtmlxgantt/./sources/css/skins/terrace.js","webpack://dhtmlxgantt/./sources/css/skins/meadow.js","webpack://dhtmlxgantt/./sources/css/skins/skyblue.js","webpack://dhtmlxgantt/./sources/core/ui/skin.js","webpack://dhtmlxgantt/./sources/core/facades/layout.js","webpack://dhtmlxgantt/./sources/core/data_task_layers.js","webpack://dhtmlxgantt/./sources/core/ui/main_layout_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/links_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/tasks_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/main_timeline_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/highlight.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/multi_level.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/locked_level.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd_marker.js","webpack://dhtmlxgantt/./sources/core/ui/grid/tasks_grid_dnd.js","webpack://dhtmlxgantt/./sources/core/ui/grid/main_grid_initializer.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_grid_row_resize_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/resource_histogram_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/resource_matrix_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_grid_line_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/link_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/prerender/task_bg_placeholder.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bg_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_rollup_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_split_task_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_split_render.js","webpack://dhtmlxgantt/./sources/core/ui/render/task_bar_smart_render.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/linked_properties.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/duration.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/predecessor.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/date.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/select.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/number.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/editors/text.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings/keyboard_navigation.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings/default.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/keyboard_mappings.js","webpack://dhtmlxgantt/./sources/core/ui/grid/editors/controller.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/resource_histogram.js","webpack://dhtmlxgantt/./sources/core/ui/grid/resource_grid.js","webpack://dhtmlxgantt/./sources/core/ui/timeline/tasks_canvas_render.js","webpack://dhtmlxgantt/./sources/core/ui/layout/scrollbar_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/resizer_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/view_cell.js","webpack://dhtmlxgantt/./sources/core/ui/layout/view_layout.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_bar_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/get_link_rectangle.js","webpack://dhtmlxgantt/./sources/core/ui/render/viewport/is_in_viewport.js","webpack://dhtmlxgantt/./sources/core/ui/render/render_factory.js","webpack://dhtmlxgantt/./sources/core/ui/render/layer_engine.js","webpack://dhtmlxgantt/./sources/core/ui/gantt_layers.js","webpack://dhtmlxgantt/./sources/core/ui/mouse.js","webpack://dhtmlxgantt/./sources/core/ui/configurable.js","webpack://dhtmlxgantt/./sources/core/ui/ui_factory.js","webpack://dhtmlxgantt/./sources/core/ui/index.js","webpack://dhtmlxgantt/./sources/core/ui/message.js","webpack://dhtmlxgantt/./sources/core/ui_core.js","webpack://dhtmlxgantt/./sources/locale/locale_ua.ts","webpack://dhtmlxgantt/./sources/locale/locale_tr.ts","webpack://dhtmlxgantt/./sources/locale/locale_sv.ts","webpack://dhtmlxgantt/./sources/locale/locale_sk.ts","webpack://dhtmlxgantt/./sources/locale/locale_si.ts","webpack://dhtmlxgantt/./sources/locale/locale_ru.ts","webpack://dhtmlxgantt/./sources/locale/locale_ro.ts","webpack://dhtmlxgantt/./sources/locale/locale_pt.ts","webpack://dhtmlxgantt/./sources/locale/locale_pl.ts","webpack://dhtmlxgantt/./sources/locale/locale_no.ts","webpack://dhtmlxgantt/./sources/locale/locale_nl.ts","webpack://dhtmlxgantt/./sources/locale/locale_nb.ts","webpack://dhtmlxgantt/./sources/locale/locale_manager.ts","webpack://dhtmlxgantt/./sources/locale/locale_kr.ts","webpack://dhtmlxgantt/./sources/locale/locale_jp.ts","webpack://dhtmlxgantt/./sources/locale/locale_it.ts","webpack://dhtmlxgantt/./sources/locale/locale_id.ts","webpack://dhtmlxgantt/./sources/locale/locale_hu.ts","webpack://dhtmlxgantt/./sources/locale/locale_hr.ts","webpack://dhtmlxgantt/./sources/locale/locale_he.ts","webpack://dhtmlxgantt/./sources/locale/locale_fr.ts","webpack://dhtmlxgantt/./sources/locale/locale_fi.ts","webpack://dhtmlxgantt/./sources/locale/locale_fa.ts","webpack://dhtmlxgantt/./sources/locale/locale_es.ts","webpack://dhtmlxgantt/./sources/locale/locale_en.ts","webpack://dhtmlxgantt/./sources/locale/locale_el.ts","webpack://dhtmlxgantt/./sources/locale/locale_de.ts","webpack://dhtmlxgantt/./sources/locale/locale_da.ts","webpack://dhtmlxgantt/./sources/locale/locale_cs.ts","webpack://dhtmlxgantt/./sources/locale/locale_cn.ts","webpack://dhtmlxgantt/./sources/locale/locale_ca.ts","webpack://dhtmlxgantt/./sources/locale/locale_be.ts","webpack://dhtmlxgantt/./sources/locale/locale_ar.ts","webpack://dhtmlxgantt/./sources/locale/index.ts","webpack://dhtmlxgantt/./sources/publish_helpers/void_script_third.ts","webpack://dhtmlxgantt/./sources/core/destructor.js","webpack://dhtmlxgantt/./sources/core/common/assert.js","webpack://dhtmlxgantt/./sources/core/ui/resize_listener.js","webpack://dhtmlxgantt/./sources/core/gantt_core.js","webpack://dhtmlxgantt/./sources/core/cached_functions.js","webpack://dhtmlxgantt/./sources/core/data_task_types.js","webpack://dhtmlxgantt/./sources/publish_helpers/void_script_second.ts","webpack://dhtmlxgantt/./sources/core/data.js","webpack://dhtmlxgantt/./sources/core/facades/worktime_calendars.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/no_work_time.js","webpack://dhtmlxgantt/./sources/core/worktime/time_calculator.js","webpack://dhtmlxgantt/./sources/core/worktime/dynamic_resource_calendars.js","webpack://dhtmlxgantt/./sources/core/worktime/legacy_resource_config.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/date_duration_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/larger_units_helper.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/workunit_object_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_unit_cache/workunit_map_cache.ts","webpack://dhtmlxgantt/./sources/core/worktime/strategy/calendar_strategy.js","webpack://dhtmlxgantt/./sources/core/worktime/strategy/work_calendar_merger.js","webpack://dhtmlxgantt/./sources/core/worktime/calendar_manager.js","webpack://dhtmlxgantt/./sources/core/worktime/work_time.js","webpack://dhtmlxgantt/./sources/core/load.js","webpack://dhtmlxgantt/./sources/core/tasks.js","webpack://dhtmlxgantt/./sources/core/grid_column_api.gpl.js","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/scrollable_grid.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/column_grid_dnd.ts","webpack://dhtmlxgantt/./sources/core/ui/plugins/column_grid_dnd/index.ts","webpack://dhtmlxgantt/./sources/core/ui/grid/task_grid_row_resize.js","webpack://dhtmlxgantt/./sources/core/ui/row_position_fixed_height.js","webpack://dhtmlxgantt/./sources/core/ui/grid/grid_resize.js","webpack://dhtmlxgantt/./sources/core/grid_column_api.js","webpack://dhtmlxgantt/./sources/core/dynamic_loading.js","webpack://dhtmlxgantt/./sources/core/plugins/empty_state_screen.ts","webpack://dhtmlxgantt/./sources/core/common/link_formatter_simple.ts","webpack://dhtmlxgantt/./sources/core/common/link_formatter.ts","webpack://dhtmlxgantt/./sources/core/common/duration_formatter.ts","webpack://dhtmlxgantt/./sources/core/plugins/formatters.js","webpack://dhtmlxgantt/./sources/core/plugins/auto_task_types.js","webpack://dhtmlxgantt/./sources/core/plugins/new_task_placeholder.js","webpack://dhtmlxgantt/./sources/core/plugins/resource_assignments.js","webpack://dhtmlxgantt/./sources/core/plugins/resources.js","webpack://dhtmlxgantt/./sources/core/plugins/wbs.js","webpack://dhtmlxgantt/./sources/core/plugins/batch_update.js","webpack://dhtmlxgantt/./sources/core/plugins/index.js","webpack://dhtmlxgantt/./sources/core/dataprocessor/simple_storage.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/extend_gantt.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/data_processor_events.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/data_processor.ts","webpack://dhtmlxgantt/./sources/core/dataprocessor/index.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore_render.js","webpack://dhtmlxgantt/./sources/core/datastore/select.js","webpack://dhtmlxgantt/./sources/core/facades/datastore_links.js","webpack://dhtmlxgantt/./sources/core/facades/datastore_tasks.js","webpack://dhtmlxgantt/./sources/core/facades/datastore.js","webpack://dhtmlxgantt/./sources/core/datastore/datastore_hooks.js","webpack://dhtmlxgantt/./node_modules/bluebird/js/browser/bluebird.js","webpack://dhtmlxgantt/./sources/utils/promise.js","webpack://dhtmlxgantt/./sources/core/common/state.js","webpack://dhtmlxgantt/./sources/core/common/templates.js","webpack://dhtmlxgantt/./sources/core/common/dnd.js","webpack://dhtmlxgantt/./node_modules/remote-client/dist/remote.es6.js","webpack://dhtmlxgantt/./sources/core/remote/remote_events.js","webpack://dhtmlxgantt/./sources/core/common/date_parsers/csp_compliant_version.ts","webpack://dhtmlxgantt/./sources/core/common/date_parsers/fast_version.ts","webpack://dhtmlxgantt/./sources/core/common/date.js","webpack://dhtmlxgantt/./sources/core/common/serialize.ts","webpack://dhtmlxgantt/./sources/core/common/ajax.js","webpack://dhtmlxgantt/./sources/core/common/config.ts","webpack://dhtmlxgantt/./sources/core/common/services.js","webpack://dhtmlxgantt/./sources/constants/index.js","webpack://dhtmlxgantt/./sources/factory/make_instance_common.js","webpack://dhtmlxgantt/./sources/factory/make_instance_web.js","webpack://dhtmlxgantt/./sources/factory/gantt_factory.ts","webpack://dhtmlxgantt/./sources/ext/undo/undo.ts","webpack://dhtmlxgantt/./sources/ext/undo/monitor.ts","webpack://dhtmlxgantt/./sources/ext/undo/index.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/tooltip.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/tooltipManager.ts","webpack://dhtmlxgantt/./sources/ext/tooltip/index.ts","webpack://dhtmlxgantt/./sources/ext/quick_info/quickInfo.ts","webpack://dhtmlxgantt/./sources/ext/quick_info/index.ts","webpack://dhtmlxgantt/./sources/ext/overlay.js","webpack://dhtmlxgantt/./sources/ext/multiselect.js","webpack://dhtmlxgantt/./sources/ext/marker.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/core.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/modals.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/task_cell.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/task_row.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/header_cell.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/nav_node.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/elements/gantt_node.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/trap_modal_focus.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/eventhandler.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","webpack://dhtmlxgantt/./sources/ext/keyboard_navigation.js","webpack://dhtmlxgantt/./sources/ext/grouping.js","webpack://dhtmlxgantt/./sources/ext/fullscreen/index.ts","webpack://dhtmlxgantt/./node_modules/querystring-es3/encode.js","webpack://dhtmlxgantt/./node_modules/querystring-es3/decode.js","webpack://dhtmlxgantt/./node_modules/querystring-es3/index.js","webpack://dhtmlxgantt/./node_modules/url/util.js","webpack://dhtmlxgantt/(webpack)/buildin/module.js","webpack://dhtmlxgantt/./node_modules/punycode/punycode.js","webpack://dhtmlxgantt/./node_modules/builtin-status-codes/browser.js","webpack://dhtmlxgantt/./node_modules/xtend/immutable.js","webpack://dhtmlxgantt/./node_modules/to-arraybuffer/index.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://dhtmlxgantt/./node_modules/util-deprecate/browser.js","webpack://dhtmlxgantt/./node_modules/setimmediate/setImmediate.js","webpack://dhtmlxgantt/./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://dhtmlxgantt/./node_modules/stream-http/lib/request.js","webpack://dhtmlxgantt/./node_modules/https-browserify/index.js","webpack://dhtmlxgantt/./node_modules/ieee754/index.js","webpack://dhtmlxgantt/./node_modules/base64-js/index.js","webpack://dhtmlxgantt/./sources/ext/export_api/index.ts","webpack://dhtmlxgantt/./sources/ext/drag_timeline/eventsManager.ts","webpack://dhtmlxgantt/./sources/ext/drag_timeline/index.ts","webpack://dhtmlxgantt/./sources/ext/critical_path/critical_path.js","webpack://dhtmlxgantt/./sources/ext/critical_path/slack.js","webpack://dhtmlxgantt/./sources/ext/critical_path.js","webpack://dhtmlxgantt/./sources/ext/click_drag/selectedRegion.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/eventsManager.ts","webpack://dhtmlxgantt/./sources/ext/click_drag/index.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/ui_handlers.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/loops_finder.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/connected_groups.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/asap_strategy.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/alap_strategy.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/planner.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling/constraints.ts","webpack://dhtmlxgantt/./sources/ext/auto_scheduling.js","webpack://dhtmlxgantt/./sources/ext/extensions_all.ts","webpack://dhtmlxgantt/./sources/dhtmlxgantt.web.ts","webpack://dhtmlxgantt/./sources/dhtmlxgantt.enterprise.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","obj","iterator","constructor","seed","helpers","plainObjectConstructor","toString","copy","result","isDate","Date","isArray","Array","length","isCustomType","apply","defined","mixin","target","source","force","f","undefined","uid","valueOf","functor","arguments","event","el","handler","capture","addEventListener","attachEvent","eventRemove","removeEventListener","detachEvent","elementPosition","elem","top","left","right","bottom","getBoundingClientRect","box","body","document","docElem","documentElement","parentNode","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","offsetWidth","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","y","Math","round","x","width","height","isVisible","node","display","visibility","getComputedStyle","style","currentStyle","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","a","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","getTargetNode","e","trg","tagName","srcElement","shadowRoot","composedPath","str","String","trim","this","replace","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","element","ShadowRoot","host","getNodePosition","getFocusableNodes","nodes","querySelectorAll","join","nodesArray","slice","$position","sort","b","tabIndex","splice","getScrollSize","div","createElement","cssText","appendChild","clientWidth","removeChild","addClassName","removeClassName","split","regEx","RegExp","insertNode","newone","innerHTML","child","firstChild","removeNode","getChildNodes","css","ch","childNodes","len","out","push","toNode","getElementById","querySelector","locateClassName","classname","strict","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","clientX","clientY","isChildOf","parent","hasClass","classList","contains","test","closest","selector","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","console","error","hasShadowParent","getActiveElement","activeElement","getSelection","focusNode","units","second","minute","hour","day","week","month","quarter","year","getFullYear","getMonth","getDate","arrayFilter","arr","callback","filter","checkZeroId","id","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayIncludes","item","includes","arrayFind","find","arrayDifference","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","throttle","timeout","wait","setTimeout","pop","isValidDate","getTime","isStringObject","Function","isNumberObject","isBooleanObject","delay","timer","$cancelTimeout","$pending","args","clearTimeout","$execute","objectKeys","keys","isEventable","replaceValidZeroId","rootId","findBinary","array","prev","low","high","floor","__","g","eval","EventHost","_silent_mode","listeners","_silentStart","_silentEnd","createEventStorage","handlers","index","eventStorage","combinedResult","handlerResult","addEvent","settings","handlerId","once","originalHandler","removeEvent","clear","eventHost","eventName","thisObject","attachAll","callEvent","eventArguments","handlerName","concat","checkEvent","list","eventId","detachAllEvents","gantt","view","config","datastore","viewport","start","getItemIndexByTopPosition","end","y_end","count","max","min","dummy","log","BaseControl","render","set_value","get_value","focus","isWindowAwailable","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","ctor","superCtor","super_","writable","configurable","TempCtor","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","BaseEditor","show","column","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","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","pna","Duplex","util","inherits","Readable","Writable","v","method","options","readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","destroyed","set","_destroy","err","cb","global","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","arg","encodingOrOffset","allocUnsafe","from","TypeError","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","isBuffer","checked","buffer","val","isnan","type","data","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","match","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","$root","store","placeholder_task","exists","getItem","types","globalScope","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isError","isFunction","isPrimitive","start_date","end_date","getItemTop","getItemHeight","startCoord","posFromDate","endCoord","x_end","smart_rendering","_smart_render","copyProps","SafeBuffer","fn","arg1","arg2","arg3","TaskPlan","link","task","latestStart","earliestStart","earliestEnd","latestEnd","latestSchedulingStart","earliestSchedulingStart","latestSchedulingEnd","earliestSchedulingEnd","kind","conflict","Create","plan","htmlHelpers","getHtmlSelect","attributes","_this","entry","_attributes","getHtmlOption","label","_getHtmlContainer","getHtmlButton","getHtmlDiv","getHtmlLabel","getHtmlInput","_getHtmlAttributes","tag","__extends","_super","SelectControl","sns","_dhx_onchange","onchange","_focus","createDropTargetObject","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","dndTaskId","targetTaskId","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","isLegacyRender","columnIndex","scale","viewPort","cellLeftCoord","cellRightCoord","firstCellIndex","lastCellIndex","_task_default_render","_isAllowedUnscheduledTask","_isTaskInTimelineLimits","getItemPosition","cfg","templates","$getTemplates","taskType","getTaskType","getBarHeight","milestone","controlsMargin","padd","item_attribute","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","rtl","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","template","itemId","$getConfig","state","getState","getTask","project","isSummaryTask","isSplitTask","open_split_tasks","$open","select_task","isSelectedTask","drag_id","drag_mode","touch_drag","link_source_id","link_target_id","highlight_critical_path","isCriticalTask","link_landing_area","from_id","from_start","link_from_start","to_start","link_to_start","allowDrag","isLinkAllowed","dragClass","_combine_item_class","task_class","styles","side","margin","_get_link_crossing_css","marginStyle","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","_waiAria","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","cssClass","text","abs","cond","leftside","$source","links","start_to_start","$target","finish_to_start","finish_to_finish","_get_conditions","ln","getLink","tp","min_date","marginLeft","max_date","marginRight","renderer","type_renderers","defaultRenderer","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","arr2","clearTaskStoreHandler","_delayRender","tasks","$data","tasksStore","ownStore","rowStore","handlerIdProperty","$attachedResourceViewHandler","$attachedTaskStoreHandler","initGrid","destroyGrid","_linkToTaskStore","previousDragId","relevantResources","delayRender","lightbox","linkedStore","repaintStack","_getRelevantResources","_quick_refresh","refresh","_skipResourceRepaint","_updateNestedTasks","_mark_recompute","getTaskAssignments","assignments","resourceIds","assignment","resource_id","eachParent","Set","resourceStore","getDatastore","resource_store","fetchTasks","silent","toAddArray","toAdd","toDelete","eachItem","resource","$role","getResourceAssignments","addedTasks","resourceData","pull","resource1","task_id","resource2","$local_index","$task_id","$resource_id","$parentProperty","removeItem","parse","events","mouseEvents","h","gridResize","topPositionMixin","rowResize","ColumnDnd","Grid","$state","container","gridAriaAttr","gridAttrString","gridDataAriaAttr","gridDataAttrString","_ganttConfig","reorderColumns","reorder_grid_columns","$grid","gridScaleRowAttrString","$grid_scale","$grid_data","attr","layers","_createLayerConfig","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","_columnDND","_validateColumnWidth","numericWidth","assert","outerWidth","columns","getGridColumns","innerWidth","elasticColumns","grid_elastic_columns","scrollable","_setColumnsWidth","columnProperty","newColumnWidth","col","min_grid_column_width","columnsWidth","grid_width","dataHeight","scale_height","contentHeight","getTotalHeight","contentWidth","_getGridWidth","scrollHeight","scrollWidth","_bindStore","_gridCacheAttached","_resetTopPositionHeight","_unbindStore","_resetHeight","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getViewPort","scrolled","getColumnIndex","excludeHidden","hiddenIndexShift","getColumn","$ui","gridLine","gridTaskRowResizer","append","resize_rows","_taskLayers","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","bar_layer","addLayer","_refreshPlaceholderOnStoreUpdate","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","_staticBgHandler","close","open","_clearLayers","removeLayer","_getColumnWidth","min_width","new_width","max_width","_checkGridColumnMinWidthLimits","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","share","curExtra","_getColsTotalWidth","cols_width","parseFloat","unknown","gridWidth","autofit","diff","delta","changed","_setContentSize","locale","reverse","cells","labels","lineHeigth","last","colWidth","_sort","direction","grid_header_class","gridScaleCellAttrString","lineHeight","ConstraintTypes","resourceTaskCache","resourceProperty","timeline","cacheKey","step","items","assignmentsPassed","timegrid","process_resource_assignments","resource_property","getTaskBy","scaleUnit","scaleStep","precalculatedTimes","minDate","maxDate","firstColumn","trace_x","currDate","date","calendar","work_time","getTaskCalendar","cachedTimes","timestamp","add","isWorkTime","calculateResourceLoadFromAssignments","timetable","resource_render_empty_cells","calculateResourceLoad","Timeline","resourceStoreMixin","ResourceTimeline","bindLinks","taskFilter","resourceRow","$task_bars","taskBg","$task_bg","ScaleHelper","canvasRender","$scaleHelper","_posFromDateCache","_timelineDragScroll","$task","$task_scale","$task_data","$task_links","_tasks","col_width","full_width","rendered","linksAttr","link_attribute","linkLayers","_attachLayers","dragTimeline","attach","backgroundImage","data_els","_refreshScales","smart_scales","scales","_scales","_getScaleChunkHtml","expose","taskBar","hide_bar","taskSplitBar","taskRollupBar","_linkLayers","update","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","linkRenderer","linkLayer","_linkRenderer","staticRender","static_background","timeline_placeholder","staticBgContainer","$task_bg_static","insertBefore","staticBackgroundHeight","getScale","destroy","_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","format","date_to_str","startIndex","endIndex","inherit_scale_class","scale_cell_class","cssclass","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","dateValue","columnIndexByDate","wholeCells","partCell","roundPos","_getNextVisibleColumn","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","_timelineCacheAttached","Layout","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenScrollbars","scrollbarsToHide","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","$scrollbarRepaint","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","newSizeValue","isGravity","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","sizes","$originalWidthStored","$originalWidth","$originalHeightStored","$originalHeight","isChild","cellId","alert","rows","cols","views","initUI","getCells","cellSize","_cleanElSize","_getBoxStyles","computed","properties","boxSizing","clientHeight","MozBoxSizing","horPaddings","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","vertPaddings","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","borderBox","innerHeight","outerHeight","boxSizes","contentSizes","_sizes","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","parentVisibility","hide_empty","hideCell","cellView","marginSide","dx","dy","sourceTop","sourceHeight","targetTop","targetHeight","sourceLeft","sourceRight","targetLeft","targetRight","tmp","getLinkRectangle","coordinates","calculated","clearCache","initialized","getVisibleItems","rec","buildCache","visibleBoxes","ids","workunit_map_cache_1","workunit_object_cache_1","larger_units_helper_1","LargerUnitsCache","createCacheObject","Map","WorkUnitsMapCache","WorkUnitsObjectCache","IsWorkTimeArgument","ClosestWorkTimeArgument","CalculateEndDateArgument","duration","GetDurationArgument","getWorkHoursArguments","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","quickPositionHelperFactory","getItemTopCache","getRowTopCache","getItemHeightCache","totalHeightCache","getItemHeightCacheState","quickPosition","resetCache","newState","getCacheStateTotalHeight","shouldClearHeightCache","getRowTop","canUseSimpleCalculation","all","getIndexRange","itemIndex","getIndexById","parentId","_fillHeightCache","defaultHeight","row_height","globalHeight","itemHeightCache","sumHeight","oldState","newValue","getHeight","totalHeight","countVisible","current","next","getIdByIndex","copyLinkIdsArray","linkIds","targetHash","isLinkExists","copyLinkIds","getSubtreeLinks","isTaskExists","eachTask","getSubtreeTasks","dateHelper","services","getSum","to","setSumWidth","sum_width","parts","adjustSize","splitSize","full","_isLegacyMode","scaleConfig","scale_unit","date_scale","subscales","_prepareScaleObject","legacyMode","initTemplate","min_coll_width","container_width","heights","configs","main_scale","initScaleConfig","processIgnores","initColSizes","limitVisibleRange","unshift","alineScaleColumns","reverseScale","setPosSettings","indexes","trace_indexes","_ignore_time_config","skip_off_time","skip","probe","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","helper","ignore_time","ignore","ignored_colls","PrimaryScaleHelper","_init_tasks_range","scale_offset_minimal","_scale_range_unit","range","start_interval","resolveConfigRange","onlyProjectTasks","getTaskByTime","getSubtaskDates","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","powerArray","DataStore","isPlaceholderTask","TreeDataStore","_branches","$initItem","loadedItem","initItem","existingItem","move","$index","root_id","parentProperty","$getRootId","$openInitially","openInitially","visibleOrder","$create","fullOrder","_searchVisibleOrder","_indexRangeCache","_eachItemMainRangeCache","_getItemsCache","_skip_refresh","getConfig","splitParents","splitItems","taskOpenState","taskVisibility","haveSplitItems","_attachDataChange","_isSplitItem","canOpenSplitTasks","$split_subtask","$expanded_branch","_buildTree","setParent","_add_branch","$level","calculateItemLevel","_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","_setParentInner","new_pid","_eachItemCached","cache","_eachItemIterate","startId","itemsStack","useCache","startItem","parentsHash","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","els","temp","rule","renderedParent","actualParent","_skipTaskRecalculation","$powerArray","$removeAt","$remove","$find","$insertAt","$each","master","$map","$filter","_filterRule","copyOnParse","isSilent","updateItem","order","data_size","addItem","changeId","sindex","$destroyed","unselect","alreadySilent","arraysEqual","arr1","quick","skipFilter","oldOrder","serialize","filteredOrder","getItems","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","updPerSecond","_on_timeout","ceil","ExtensionsManager","addExtension","_extensions","getExtension","createScope","eventScope","staticArray","extend","FormData","__webpack_amd_options__","punycode","Url","protocol","slashes","auth","port","hostname","query","pathname","path","href","urlParse","resolve","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","url","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","encodeURIComponent","escape","qm","stringify","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","Transform","_transformState","afterTransform","er","ts","transforming","writecb","writechunk","rs","reading","needReadable","_read","needTransform","writeencoding","sync","_transform","flush","_flush","prefinish","stream","chunk","_write","_this2","err2","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","_byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","scope","Timeout","clearFn","_id","_clearFn","setInterval","clearInterval","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","Stream","OurUint8Array","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","getBuffer","_","hasInstance","pipe","_isUint8Array","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","emitErrorNT","readableDestroyed","writableDestroyed","endEmitted","EventEmitter","_events","_maxListeners","defaultMaxListeners","setMaxListeners","context","listener","newListener","warned","trace","fired","listenerCount","evlistener","emitter","ReadableState","EElistenerCount","debugUtil","debug","debuglog","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","getPrototypeOf","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","pipeOnDrain","increasedAwaitDrain","pause","resume","dests","wrap","paused","_fromList","PassThrough","capability","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","IncomingMessage","xhr","response","fetchTimer","_mode","headers","rawHeaders","trailers","rawTrailers","_fetchResponse","statusCode","status","statusMessage","statusText","writableStream","WritableStream","Promise","reject","_destroyed","_resumeFetch","abort","pipeTo","reader","getReader","then","_xhr","_pos","responseURL","getAllResponseHeaders","_charset","overrideMimeType","mimeType","charsetMatch","_onXHRProgress","readyState","VBArray","responseBody","toArray","responseText","newData","MSStreamReader","onprogress","onload","readAsArrayBuffer","fetch","ReadableStream","abortController","AbortController","blobConstructor","Blob","getXHR","XDomainRequest","checkTypeSupport","responseType","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","vbArray","ClientRequest","statusCodes","request","opts","defaultProtocol","location","toUpperCase","req","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","DateComparator","_gantt","isEqual","dateA","dateB","_hasDuration","isFirstSmaller","small","big","isSmallerOrDefault","smallDate","bigDate","isGreaterOrDefault","getVertices","relations","vertices","topologicalSort","edges","$incoming","successor","S","L","groupAdjacentEdges","edge","tarjanStronglyConnectedComponents","verticesHash","stack","edgesFromTasks","recurse","connectedComponents","getVertex","visited","workStack","lowLink","onStack","w","com","linkKeys","hashSum","findLoops","cycles","component","getVirtualRoot","$virtual","getLinkedTasks","includePredecessors","startIds","_isLinksCacheEnabled","_startLinksCache","_getLinkedTasks","_endLinksCache","_collectRelations","rootObj","visitedLinks","linkKey","successors","_getSuccessors","predecessors","_getPredecessors","rootTask","visitedTasks","output","tasksStack","includeRelation","auto_scheduling_use_progress","isSameParent","sourceParent","_get_linked_task","getTarget","_get_link_target","_get_link_source","caching","formattedLinksStash","inheritedSuccessorsStash","inheritedPredecessorsStash","getPredecessorsCache","_formatLink","backwardsScheduling","schedule_from_end","project_end","respectTargetOffset","auto_scheduling_move_projects","auto_scheduling_compatibility","auto_scheduling_strict","sourceDates","_getImplicitLinks","calculateDuration","targetDates","fromLength","fromTask","toLength","toTask","lag","subtaskLink","_convertToFinishToStartLink","taskParent","_isAutoSchedulable","auto_scheduling","selectOffset","selectSourceLinks","skipChild","linksCollection","siblingLink","siblingId","siblingTask","_getDirectDependencies","selectSuccessors","linksIds","_getInheritedDependencies","cacheCollection","stop","inheritedRelations","parentDependencies","_getDirectSuccessors","_getInheritedSuccessors","_getDirectPredecessors","_getInheritedPredecessors","skipInherited","sourceTask","targetTask","sourceLag","targetLag","trueLag","preferredStart","additionalLag","start_to_finish","auto_scheduling_project_constraint","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","dateString","aria-label","_taskCommonAttr","tooltip_text","$dataprocessor_class","drag_move","taskRowAttr","order_branch","linkAttr","linkTypes","toStart","fromStart","drag_link","gridSeparatorAttr","rowResizerAttr","lightboxHiddenAttr","lightboxVisibleAttr","lightboxAttr","lightboxButtonAttrString","buttonName","role","tabindex","lightboxHeader","headerText","lightboxSelectAttrString","time_option","years","months","hours","minutes","lightboxDurationInputAttrString","section","column_duration","aria-valuemin","inlineEditorAttr","multiselect","attrs","new_task","reorderMarkerAttr","removeAttribute","gridCellAttrString","textValue","editor","gridAddButtonAttrString","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","payload","wai_aria_attributes","_extend_to_optional","lightbox_block","optional_time","mapping","_resolve_default_mapping","disable","enable","disabled","update_block","_lightbox_id","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","TypeselectControl","typeKey","typeValue","oldOnChange","changeLightboxType","_lightbox_new_type","ConstraintControl","isNonTimedConstraint","constraint_types","ASAP","ALAP","toggleTimeSelect","timeSelects","isNonTimed","getTimePicker","typeSelect","_time_format_order","_eventsInitialized","constraintDate","constraint_date","_fill_lightbox_select","constraintType","constraint_type","getConstraintType","getTimePickerValue","localCache","resources","resourcesValues","eventsInitialized","ResourcesControl","_getInputElementSelector","isChecked","_getResourcesElement","_getFilterCache","checkbox","filterApplied","serverList","map_to","resourceFilterPlaceholder","resources_filter_placeholder","filter_placeholder","resourceFilterLabel","resources_filter_label","resourcesElement","_setResourcesElement","htmlResourceRow","_setFilterCache","_applyFilter","resultSns","hideUnsetted","_saveValues","filterCache","_getValue","getLightboxValues","controlConfig","comparison","resultConfig","collection","cachedValue","searchResult","itemIds","_getSnsToHideUnsetted","_resourceChangeListener","row","valueInput","resId","defaultValue","default_value","option","domElement","inputs","originalAssignmentId","unassigned_value","_getDisplayValues","assignmentId","_getAmountInput","zoom","_offsetSizes","_center_lightbox","getLightbox","amountElement","selectorAdd","selectorSub","settedValuesHash","itemsAdd","itemsSub","originalId","resourceId","amount","ParentControl","_display","item_id","allow_root","root_label","_filter","tmpDom","newOptions","onselect","replaceChild","DurationFormatterNumeric","canParse","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","startDate","endDate","RadioControl","radio","CheckboxControl","single_value","checkboxes","TimeControl","auto_end_date","_update_lightbox_select","selects","autofix_end","_get_timepicker_step","_getEndDate","TextareaControl","_get_input","TemplateControl","getHtmlButtons","buttons","floatRight","_migrate_buttons","getHtmlTimePickerOptions","start_year","end_year","tdate","timeFormat","year_range","month_full","first","_time_values","time_picker","setTime","getHours","getMinutes","_lightbox_methods","_lightbox_template","_lightbox_root","registerProvider","showLightbox","showCover","_fill_lightbox","round_dnd_dates","_is_chart_visible","time_step","getLabel","sections","updateCollection","list_name","resetLightbox","getLightboxType","_lightbox_type","lightboxDiv","fullWidth","ds","classNames","cspEnvironment","csp","salesforceEnvironment","setParentNode","_lightbox","_is_lightbox_timepicker","wide_form","buttons_left","buttons_right","drag_lightbox","onmousedown","_ready_to_dnd","onselectstart","cursor","_init_dnd_events","_render_sections","backup_overflow","overflow","labelBlock","inputBlock","inputId","bindLabelsToInputs","_init_lightbox_events","block","con","lightbox_additional_height","scroll_top","scroll_left","view_height","_cover","lightbox_events","gantt_save_btn","_save_lightbox","gantt_delete_btn","$click","hideLightbox","gantt_cancel_btn","_cancel_lightbox","sec","buttonTarget","SPACE","shiftKey","click","edit_save","edit_cancel","$new","_update_flags","refreshData","addTask","getTaskIndex","refreshTask","updateTask","hideCover","_custom_lightbox","_set_lightbox_values","lightbox_header","task_time","getLightboxSection","getValue","setValue","get_template_control","control","get_select_control","get_textarea_control","get_time_control","eventElement","_move_while_dnd","_finish_dnd","_dnd_start_lb","gantt_unselectable","lb","now","pageX","pageY","_lb_start","ariaAttrs","date_part","time_format","getTimeFormat","limit_time_select","first_hour","last_hour","setHours","needSetTime","mapOffset","constraint","typeselect","_simple_confirm","message","ok","confirm","type_value","_silent_redraw_lightbox","oldType","formData","updTask","scrollX","scrollState","visible","getTaskDND","tasksDnD","_tasks_dnd","touch_feedback","touch_feedback_duration","_prevent_touch_scroll","_touch_feedback","vibrate","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","touchHandlers","names","accessor","dblclicktime","actionMode","scrollMode","actionStart","longTapTimer","currentDndId","dndNodes","targetView","start_drag","on_mouse_move","preventDefault","cancelBubble","newScrollState","scrollView","block_action","allViews","$layout","findTargetView","_locate_css","locate","on_mouse_down","renders","_getTaskLayers","isTaskVisible","task_attribute","cloneNode","cloneTaskRendered","_start_dnd","_touch_drag","remove","on_mouse_up","onDoubleClick","USE_KEY","_defaultScales","TimelineZoom","zoomIn","getCurrentLevel","setLevel","zoomOut","_levels","_activeLevelIndex","getLevels","zoomLevel","_getZoomIndexByName","_setLevel","levelName","_getVisibleDate","scrollPos","_visibleDate","cursorOffset","nextConfig","chartConfig","cursorDate","newPosition","middleDate","_attachWheelEvent","_domEvents","_useKey","_handler","passive","_defaultHandler","timelineOffset","wheelUp","deltaY","wheelDelta","stopPropagation","_setScaleSettings","_setScaleDates","_initialStartDate","_initialEndDate","activeLevelIndex","_mapScales","levels","_minColumnWidth","minColumnWidth","_maxColumnWidth","maxColumnWidth","_widthStep","widthStep","useKey","_initialized","trigger","_stepUp","_stepDown","nextLevel","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","vs","av","grid","border","gridId","gridObj","dhtmlXCellObject","jQuery","$","methods","dhx_gantt","each","newgantt","Gantt","getGanttInstance","isHeadless","scrollRange","scrollStep","scrollDelay","scrollSpeed","interval","isMove","delayTimeout","startPos","started","eventPos","isDisplayed","isScrollState","dragMarker","isResize","isLink","isClickDrag","autoscroll","defineDelayTimeout","speed","autoscroll_speed","tick","autoscroll_delay","defineScrollInterval","autoscrollInterval","isScroll","targetTouches","gridDrag","posX","posY","need_scroll","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","skins","link_line_width","link_arrow_size","_second_column_width","_third_column_width","material","_redefine_lightbox_buttons","getTaskNode","indx","broadway","_config_buttons_left","_config_buttons_right","terrace","meadow","skyblue","_get_skin","skin","skinset","_configure","resetSkin","getTimeline","getGrid","getBaseCell","getVerticalScrollbar","baseCell","getAttachedScrollbar","getHorizontalScrollbar","attachedScrollbar","DEFAULT_VALUE","tryCall","fallback","getTaskTop","getTaskPosition","getTaskBarHeight","getTaskHeight","roundTaskDates","domAttr","getLinkNode","oldH","oldV","scrollHorizontal","scrollVertical","verticalViews","_getLinkedViews","horizontalViews","commonViews","viewId","$skipSmartRenderOnScroll","newV","newH","showDate","date_x","scroll_to","task_scroll_offset","showTask","leftPos","_scroll_state","gridCell","timelineCell","x_pos","y_pos","scroll_size","x_inner","y_inner","scrollVer","scrollHor","horState","verState","getLayoutView","cellName","scrollLayoutCell","horizontalScroll","verticalScroll","initializer","_legacyGridResizerClass","layout","resizers","gridResizer","onCreated","mainTimeline","show_chart","colsWidth","hideGrid","show_grid","grid_limits","ganttContainerWidth","verticalScrollbarWidth","gridOverflow","original_grid_width","skinSettings","_initScrollStateEvents","_getVerticalScrollbar","_getHorizontalScrollbar","oldPos","newPos","$scroll_ver","$scroll_hor","_findGridResizer","gridFirst","_getSiblings","_behind","_front","onInitialized","resizeInfo","initialWidth","prevCellWidth","nextCellWidth","viewCell","limits","newBehindSize","newFrontSize","oldBackSize","oldFrontSize","newBackSize","oldSize","onDestroyed","initLinksDND","_link_landing","_link_target_task","_link_target_task_start","_link_source_task","_link_source_task_start","markerDefaultOffset","scrollDefaultSize","getDndState","DnD","dnd","sensitivity","updates_per_second","mousemoveContainer","getLinePos","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","getPosition","markerSize","getMarkerSize","viewportSize","getVieportSize","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","ganttOffsetY","updateMarkedHtml","drag_link_class","resetDndState","showDirectingLine","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","tan","angle","atan","coordinateCircleQuarter","PI","sin","cos","ieTransform","shiftLeft","shiftTop","sX","eX","sY","eY","_dir_start","dd","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","eventTarget","_dir_end","targetChanged","_get_link_type","addLink","createLinkDND","createTaskDND","round_task_dates","dragMultiple","before_start","before_finish","after_finish","_handlers","clear_drag_state","set_actions","drag_from_start","evs","stage","_move","_resize","_resize_progress","start_x","start_y","coords_x","_drag_task_coords","minDurationInUnits","_calculateMinDuration","min_duration","_init_task_timing","diffValue","_find_max_shift","dragItems","correctShift","minX","maxX","maxShift","minShift","multipleDragShift","new_start","new_end","obj_s_x","obj_e_x","_mouse_position_change","_is_number","_update_on_move","_update_item_on_move","original","curr_date","dragHash","_isMultiselect","getSelectedTasks","dragProject","drag_project","initialDrag","childDrag","_bulk_dnd","_update_parents","_get_drag_mode","_fix_dnd_scale_time","fixStart","correct_work_time","roundDate","fixEnd","_fix_working_times","getClosestWorkTime","correctTaskWorkTime","_finalize_mouse_up","_fireEvent","_dhx_changed","finalizingBulkMove","moveCount","doFinalize","batchUpdate","modes","dragProperty","selectedTasksIds","selectedTask","_addSubtasksToDragMultiple","params","drag_state","drag_multiple","summaryId","taskDnD","linkDnD","_linksDnD","_tasksDnD","_attachDomEvents","_attachStateProvider","extendDom","_clearDomEvents","_clearStateProvider","_delete_link_handler","question","link_description","confirm_link_deleting","deleteLink","coll","coll_date","scale_step","unregisterProvider","gridToPageCoordinates","gridPos","setWidthWithinContainer","containerSize","removeLineHighlight","markerLine","highlightPosition","ePos","gridHeight","getTaskMarkerPosition","pointerEvents","markerFolder","maxBottom","folderHighlightWidth","highlightFolder","linePos","indentNode","indent","itemTop","itemHeight","childCount","getLineMarkerPosition","markerLineTop","highlightRow","dropTarget","relTargetPos","eventTop","findClosesTarget","allowedLevel","targetLevel","findTargetAbove","findTargetBelow","targetAbove","targetBelow","rootLevel","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","checkPlaceholderTask","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","$drop_target","doctype","minTop","firstVisibleTaskIndex","firstVisibleTaskId","firstVisibleTaskPos","hiddenTaskPart","gridPosition","gridBottom","placeholderRowHeight","getTargetTaskId","lockLevel","order_branch_free","getStore","lastTaskOfLevel","last_item","_getGridPos","_getTargetY","_getTaskByY","dropIndex","gridDataSizes","targetY","over","nextId","prevId","rowDnd","rowDndMarker","extendGantt","inlineEditors","_inlineEditors","createEditors","initEvents","clearEvents","scroll_on_click","_is_icon_open_click","conf","sorting_method","callHandler","createTask","totalWidth","getRowRectangle","getVisibleRange","resize_el","task_grid_row_resizer_attribute","getRectangle","getVisibleCellsRange","isColumnVisible","resourceTimetable","renderBar","renderConnection","prevLevel","getResourceLoad","renderedHistogramCells","renderedHistogramRows","renderedHistogramCapacity","detachRenderedHistogramCell","renderedRow","renderCapacityElement","capacityMatrix","maxCapacity","renderedElement","capacityElement","capacity","colStart","colEnd","bar","connection","renderHistogramLine","renderHistogramCell","histogram_cell_class","histogram_cell_label","histogram_cell_allocated","smartRendering","histogram_cell_capacity","checkedColumns","renderedCell","renderedResourceLines","renderResourceLineCell","resource_cell_class","resource_cell_value","detachRenderedResourceLine","aria","date_grid","tree","grid_indent","grid_blank","grid_file","grid_open","grid_folder","align","justifyContent","center","getGlobalTaskIndex","grid_row_class","css_template","isSelected","onrender","rowNode","cellNode","external_render","adapter","isElement","renderElement","isInViewPort","drawer","current_pos","dirs","down","point","get_lines","dots","line_to","get_path","line","_get_line","get_wrapper_sizes","wrapper_size","link_wrapper_width","get_line_sizes","line_size","marginTop","render_line","innerPos","get_direction","vect","path_builder","point_to","get_points","pt","get_endpoint","xy","shiftX","lineType","get_line_type","forward","sign","milestoneHeight","lines","cssTemplate","link_class","isCriticalLink","endpoint","_render_link_arrow","borderColor","placeholderConfig","lastTaskId","placeholderTask","unscheduled","calendar_id","bgPlaceholder","renderedCells","isRendered","detachRenderedCell","getCellClassTemplate","task_cell_class","warn","timeline_cell_class","getCellContentTemplate","timeline_cell_content","renderOneCell","contentTemplate","cssTemplateContent","htmlTemplateContent","customCell","static_background_cells","cellCssTemplate","cellHtmlTemplate","show_task_cells","odd","task_row_class","placeholderTop","placeholderHeight","prepareData","createBaseBarRender","defaultRender","renderedNodes","checkVisibility","generateChildElement","childCopy","$rendered_at","getKey","renderParentId","rollup","$rollup","itemNode","rollupKey","isBarInViewport","isInViewPortParent","isInViewPortChild","isProject","resetProjectDates","shouldUseSplitRendering","splitKey","mapTo","keepDatesOnEdit","decreaseStartDate","keepDurationOnEdit","defaultActionOnEdit","TextEditor","formatters","durationFormatter","PredecessorEditor","linkFormatter","parseInputString","delimiter","formatPredecessors","formatLinkKey","getLinksDiff","predecessorCodes","selectedLinks","getSelectedLinks","existingLinksSearch","linkId","linksToAdd","linksToDelete","linksDiff","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","minValue","maxValue","minAttr","maxAttr","SelectEditor","optionsHtml","NumberEditor","controller","onBlurDelay","keyNav","keyboardNavigation","activeCell","locateCell","columnName","editorState","getEditorConfig","startEdit","command","hasEditor","keyboard","preventKeyNav","ENTER","ctrlKey","metaKey","ESC","LEFT","RIGHT","editorType","DELETE","TAB","editPrevCell","editNextCell","modifiers","anyModifier","alt","ctrl","meta","getCommandHandler","onShow","onHide","isChanged","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","getMapping","keyboard_navigation_cells","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","durationEditorFactory","linkedPropertiesProcessor","initConfigs","editor_types","number","predecessor","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","findVisibleIndex","updateTaskDateProperties","ganttHandlers","_itemId","_columnName","_editor","_editorType","_placeholder","batch_update","editorConfig","_getItemValue","oldValue","inline_editors_date_processing","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","moveTask","nextItem","editNextRow","skipReadonly","editPrevRow","ResourceHistogram","resourceHistogram","ResourceGrid","createStaticBgHelper","canvasBgCache","staticBgStyleId","parseRgb","rgbCss","getUrlFromCache","getHashKey","cellStyles","bottomBorderColor","rightBorderColor","cacheUrl","generateBgUrl","canvas","getContext","image","createImageData","imageSmoothingEnabled","verticalLineWidth","rightBorderWidth","verticalLineColor","drawDot","horizontalLineWidth","bottomBorderWidth","horizontalLineColor","putImageData","drawGrid","toDataURL","matrix","getCssClass","createProbeElement","targetNode","bgDivs","bgTiles","tile","prevCell","divs","prevWidth","widths","maxTileSize","appVersion","currentTop","tileWidth","currentHeight","whiteSpace","createBgDivs","differentWidths","getColumnWidths","styleHTML","cachedUrl","bgImage","getStyleElement","createBackgroundTiles","firstRow","secondRow","firstRowCell","rowStyles","getPropertyValue","getCellStyles","fragment","createDocumentFragment","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","connectedViews","wheelSpeed","wheelSpeedConfig","wheel_scroll_sensitivity","ff","deltaX","wheelDeltaX","multiplier","deltaMode","wx","wy","horizontalScrollModifier","horizontal_scroll_key","oldLeft","detail","oldTop","ResizerCell","startBackSize","startFrontSize","getPageCoordinates","_moveHandler","_moveResizer","_resizer","_upHandler","newSizes","_getNewSizes","back","front","_setSizes","_setBackground","_clearResizer","_clearListeneres","_startOnMove","_cancelDND","_downHandler","_callStartDNDEvent","_xMode","_startDND","_eachGroupItem","_isPosChanged","_setResizer","_positions","classes","_getDirection","_getResizePosition","behindSide","behindMin","frontSide","frontMin","newBehindSide","newFrontSide","_getGroupName","_getGroupResizePosition","minMax","positions","nextX","nextY","_setGravity","frontSize","behindSize","newFrontG","newBehindG","_assignNewSizes","resizeValue","ViewCell","childConfig","createView","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","barRectangle","sourceBox","targetBox","genericViewPortChecker","basicGetRectangle","basicGetRange","task_area_pulls","task_area_renderers","getRenderer","renderMethod","updateMethod","renderCallbackMethod","specializedViewPortChecker","layer_attribute","render_item","layerView","viewConfig","rendererViewPort","dom","useBuffer","remove_item","clear_container","get_visible_range","prepare_data","render_items","vis","itemsSearch","renderedItems","newElements","update_items","nodesToRemove","renderCalledFor","restore","replace_item","newNode","change_id","oldid","newid","clearRenderers","renderFactoryProvider","mergeFilters","filter_methods","filter_method","renderFactory","createGroup","getContainer","relativeRoot","defaultFilters","initLayer","renderGroup","tempCollection","renderers","filters","getLayers","_add","pending","topmost","requestUpdate","onUpdateRequest","eachLayer","createLayerFactory","getVisibleTaskRange","getVisibleLinksRangeFactory","isLinkInViewport","previusSiblingContainer","defaultContainerSibling","setService","addTaskLayer","rangeFunction","removeTaskLayer","_clearTaskLayers","addLinkLayer","_getLinkLayers","removeLinkLayer","_clearLinkLayers","createMouseHandler","eventHandlers","doubleclick","contextMenu","addEventTarget","onClick","findEventHandlers","callEventHandlers","_multiselect","selectTask","onContextMenu","returnValue","delegateHandlers","details_on_dblclick","onMouseMove","_last_move_event","domEvents","reset","elementHandlers","extendSettings","parentSettings","own","$extendedConfig","setPrototypeOf","parentView","parentConfig","parentTemplates","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderRollupTaskBar","renderTaskBg","renderLink","gridRenderer","resourceMatrixRenderer","resourceHistogramRenderer","gridTaskRowResizerRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","info","expire","timers","getFirstDefined","values","_createBox","cancel","contentId","message_ok","message_cancel","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","hideAll","popups","modalbox","codeHelpers","_eventRemoveAll","uiApi","$mouseEvents","createLayoutFacade","targetAttribute","_locateHTML","initial_scroll","firstTask","getTaskByIndex","activePlugins","plugins","availablePlugins","click_drag","clickDrag","critical_path","drag_timeline","export_api","exportToPDF","fullscreen","grouping","groupBy","keyboard_navigation","addMarker","eachSelectedTask","overlay","quick_info","quick_info_content","tooltip","tooltips","undo","plugin","default","month_short","day_full","day_short","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","section_type","column_wbs","column_text","column_start_date","column_add","link_start","link_end","type_task","type_project","type_milestone","weeks","section_constraint","asap","alap","snet","snlt","fnet","fnlt","mso","mfo","empty_state_text_link","empty_state_text_description","LocaleManager","addLocale","_locales","getLocale","locale_ar_1","locale_be_1","locale_ca_1","locale_cn_1","locale_cs_1","locale_da_1","locale_de_1","locale_el_1","locale_en_1","locale_es_1","locale_fa_1","locale_fi_1","locale_fr_1","locale_he_1","locale_hr_1","locale_hu_1","locale_id_1","locale_it_1","locale_jp_1","locale_kr_1","locale_manager_1","locale_nb_1","locale_nl_1","locale_no_1","locale_pl_1","locale_pt_1","locale_ro_1","locale_ru_1","locale_si_1","locale_sk_1","locale_sv_1","locale_tr_1","locale_ua_1","en","ar","be","ca","cn","cs","da","de","es","fa","fi","fr","he","hr","hu","it","jp","kr","nl","no","pl","ro","ru","si","sk","sv","tr","ua","_dp","check","show_errors","listenWindowResize","resizeDelay","resizeTimeout","container_resize_timeout","container_resize_method","lowlevelResizeWatcher","repaintGantt","previousHeight","previousWidth","resizeWatcher","contentWindow","addResizeListener","calculateScaleRange","invalidContainerMessage","validateNode","isHTMLElement","_reinit","_quickRefresh","stores","_getDatastores","dropLayout","rebuildLayout","storeNames","resetLayout","initTemplates","edit","delete","confirm_deleting_title","deleteTask","preserveScroll","preserve_scroll","new_pos","verticalScrollbar","setSizes","getTaskRowNode","prevOffset","time_unit","offsetChanged","activate","_cached_functions","update_if_changed","critical_path_mode","wrap_methods","_prefetch_originals","prefetch","methodname","optimizer","argumentsArray","get_arguments_hash","cached_values","has_cached_value","get_cached_value","cache_value","arguments_hash","is_date","getUTCDate","stringify_argument","deactivate","setup","override_gantt","gantt_methods","optimize_render","deactivTimeout","checkType","isUnscheduledTask","show_unscheduled","taskStart","taskEnd","_getProjectEnd","_getProjectStart","project_start","getDefaultTaskDate","parent_id","_set_default_task_timing","details_on_create","parseDate","getSelectedId","getTaskTimingMode","task_type","$no_start","$no_end","$rendered_type","updateTaskTiming","$effective_calendar","getSubtaskInfo","task_mode","dirty","$calculate_duration","effectiveCalendar","inherit_calendar","taskMode","taskTiming","getSubtaskDuration","updateAll","has_changed","oldStart","oldEnd","upper","lower","colIndex","steps","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","hasDuration","mergeCalendars","createCalendar","addCalendar","getCalendar","getCalendars","getResourceCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","fixedUnits","hasWorkTime","createArgumentsHelper","NoWorkTimeCalendar","TimeCalculator","$disabledCalendar","_getCalendar","manager","dynamicCalendars","getCalendarIdFromMultipleResources","resourceAssignments","getResourcesCalendarKey","tempCalendar","mergeResourceCalendars","isLegacyResourceCalendarFormat","resourceCalendarsProperty","getResourceProperty","resourceCalendarsConfig","resource_calendars","propertyName","getCalendarIdFromLegacyConfig","calendarId","DateDurationCache","_getCacheObject","_cache","unitCache","stepCache","yearCache","durations","endDates","_endDateCacheKey","_durationCacheKey","getEndDate","compute","startDateTimestamp","resultTimestamp","getDuration","endDateTimestamp","getMinutesPerWeek","weekStart","_weekCache","has","_calendar","minutesPerWeek","week_start","getHoursPerDay","getMinutesPerMonth","monthStart","_monthCache","minutesPerMonth","nextMonth","subCache","setItem","rawValue","CalendarWorkTimeStrategy","_workingUnitsCache","_largeUnitsCache","_dateDurationCache","_worktime","_cached_timestamps","_cached_timestamps_count","_clearCaches","_getUnitOrder","_resetTimestampCache","_timestamp","UTC","_checkIfWorkingUnit","_is_work_day","_getWorkHours","_is_work_hour","startHour","endHour","_getTimeOfDayStamp","dayEnd","_is_work_minute","checkTime","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","checkFirst","checkLast","isLastStep","_isWorkTime","unitOrder","biggerTimeUnit","_getClosestWorkTimeFuture","_getMinutesPerHour","hourStart","hourEnd","worktimes","_getMinutesPerDay","durationMinutes","durationHours","_getWorkUnitsForRange","getUnitsPerDay","_getMinutesBetweenSingleDay","_getIntervalTimestamp","minuteFrom","minuteTo","_getMinutesBetween","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","_getHoursBetween","_setConfig","_parseSettings","haveCustomWeeks","customWeeks","customWeeksRangeStart","customWeeksRangeEnd","customWeeksBoundaries","_parseHours","minCustomRangeStart","maxCustomRangeEnd","customTime","rangeStart","rangeEnd","fromReadable","toReadable","currentWeek","_tryChangeCalendarSettings","backup","JSON","_arraysEqual","_compareSettings","mySettings","thatSettings","myDays","otherDates","myHours","otherHours","myWeek","thatWeek","getDay","getSeconds","endHours","timestampRanges","timerangeConfig","startMinute","endMinute","durationSeconds","calendarConfig","reset_calendar","isWorkUnit","dateKey","mult","_calculateEndDate","_calculateMinuteEndDate","_subtractMinuteDate","_calculateHourEndDate","_addInterval","stopAction","added","dstShift","_addHoursUntilDayEnd","rangeHours","addHours","intervalEnd","durationLeft","setMinutes","setSeconds","hoursPerDay","_addMinutesUntilHourEnd","hour_start","rangeMinutes","addMinutes","_subtractMinutesUntilHourStart","hourStartTimestamp","initialDateTimestamp","minutePrecision","_isMinutePrecision","addedInterval","calculatedDay","daySchedule","minutesInDay","dayStart","iterateFromDayEnd","isWorkHour","workInterval","prevInterval","minutesInHour","_getClosestWorkTimePast","times","lastInterval","_getClosestWorkTime","inputDate","closestFuture","closestPast","_getClosestWorkTimeGeneric","_findClosestTimeInDay","resultDate","fromDayEnd","_getClosestWorkMinute","increment","worktime","exceptions","hasRegularHours","_checkWorkHours","dayConfig","hoursArray","WorkTimeCalendarMerger","_getIntervals","_toHoursArray","intervalsArray","formatHHMM","secondsValue","minutePart","toFixed","_intersectHourRanges","baseArray","overridesArray","base","_mergeAdjacentIntervals","_mergeHoursConfig","firstHours","secondHours","merge","firstConfig","secondConfig","mergedSettings","firstDate","secondDate","CalendarMergeHelper","legacyResourceCalendarConfig","dynamicResourceCalendars","CalendarManager","_calendars","_legacyConfig","_isLegacyConfig","createDefaultCalendars","_convertWorkTimeSettings","calendars","mergeHelper","_createCalendarFromConfig","apiCore","preparedConfig","parentCalendar","defaults","fulltime","_getOwnCalendar","calendar_property","dynamic_resource_calendars","calendarsConfig","taskObject","groupMode","group_mode","currentTask","isCalendar","restoreConfigCalendars","possibleCalendar","every","worktimeFacadeFactory","facade","jsonParseError","load","_load_url","cl","_load_type","ajax","on_load","xmlDoc","resp","_process_loading","collections","_load_collections","resourcesStore","assignmentsByTasks","attachAssignmentsToTasks","linksStore","collections_loaded","option_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","_grid_resize","column_before_start","grid_resizer_column_attribute","column_index","column_after_start","drag_index","column_drag_move","target_column","maxPointerPosition","marker_width","keep_grid_width","limit_max","rightColumnsWidth","parentWidth","column_drag_end","visibleColumns","loadedBranches","oldHasChildren","branch_loading","branch_loading_property","needLoading","requestData","show_empty_state","emptyStateElement","isGanttEmpty","renderContent","placeholderContainer","clickEvents","attachAddTaskEvent","detachAddTaskEvents","oldNodes","emptyStateElementNode","LinkFormatterSimple","_getWBSCode","_linkReg","linkPart","_findSource","pred","getWBSCode","reqTemplate","wbs","getTaskByWBSCode","LinkFormatter","formattedType","_getFormattedLinkType","_getLinkTypeName","_getLagString","lagPart","typeFormat","_findTypeFormat","typeNumber","_getLinkTypeNumber","_parseLag","linkName","_config","formatted","_defaultSettings","preparedSettings","DurationFormatter","labelName","plural","short","durationUnit","formatUnits","useShortLabels","totalMinutes","transferUnits","toMinutes","_selectFormatForValue","countedValue","_getValueFromMinutes","_getValueInMinutes","_getLabelForConvert","isPartReady","needToParse","symbol","_getNumericValue","fromMinutes","_isUnitName","_getUnitName","isUnit","enter","minutesPerHour","hoursPerWeek","daysPerMonth","daysPerYear","numericValue","unitName","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","_loadAssignmentsFromTask","taskAssignments","_syncAssignments","storeAssignments","taskValues","assignmentsStoreValues","inBoth","inTaskNotInStore","inStoreNotInTask","taskOwner","ownerId","foundOwnerAssignment","taskSearch","storeSearch","processedIds","inTask","inStore","diffAssignments","ignoreFields","assignmentHasChanged","updateAssignment","_syncOnTaskUpdate","assignmentsStore","totalAssignments","needUpdate","needUpdateFor","undoBatchCancel","assignmentsHash","deleteIds","idsSearch","_syncOnTaskDelete","resourceAssignmentsCache","resourceTaskAssignmentsCache","taskAssignmentsCache","searchTaskId","resourceTaskCacheKey","getTaskResources","uniqueResources","updateTaskAssignments","createResourceMethods","singleResourceCacheBuilt","falsyValuePrefix","random","resourceHashFunction","getCacheKey","typeFilter","getResourceTasks","matchingResources","resourceValue","selectAssignments","owners","propertyValue","filterResourceTasks","resourcePlugin","renderEditableLabel","editable","renderSummaryLabel","sum","reduce","editableResourceCellTemplate","editableResourceCellClass","getSummaryResourceAssignments","childResource","initEditableDiagram","timeoutId","makeEditable","cancelAnimationFrame","requestAnimationFrame","contentEditable","assignmentEditInProcess","blur","strValue","innerText","rowId","parse_date","assignmentStore","saveState","nextChunk","createHelper","dataprocessor_assignments","dataprocessor_resources","editable_resource_diagram","lightbox_resources","lightboxOptions","resourceStoreConfig","initItems","storeType","$resourcesStore","lightboxOptionsFnc","defaultResourceCellClass","defaultResourceCellTemplate","_needRecalc","_isRecalcNeeded","_isGroupSort","_calcWBS","$wbs","_setWBSCode","getByWBSCode","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","SimpleStorage","_storage","storeItem","getStoredItem","dp","getUserData","userdata","setUserData","_change_id","_ganttMode","changeTaskId","changeLinkId","_row_style","_delete_task","_sendTaskOrder","setDp","DataProcessorEvents","$dp","_dataProcessorHandlers","treeHelper","cascadeDelete","clientSideDelete","cascade_delete","deleteAfterConfirmation","needDbDelete","needCascadeDelete","dpMode","cascade","sendAllData","_tSend","_waitMode","itemLinks","_links","getTaskLinks","updateLink","_tMode","_serverProcessor","substring","serverProcessor","pluralizedMode","urlSeparator","upd","isExist","objData","xml_date","handleResourceCRUD","handleResourceAssignmentCRUD","updated","updatedRows","clientOnly","_in_progress","insertedTasks","pendingAssignments","putAssignmentToQueue","insertResourceAssignment","insertResource","data_processor_events_1","extend_gantt_1","simple_storage_1","createDataProcessor","router","tMode","DataProcessor","setTransactionMode","serverProcessorURL","action_param","autoUpdate","_headers","_payload","_postDelim","_routerParametersFormat","_invalid","messages","inserted","deleted","invalid","invalid_cell","enableUTFencoding","_serializeAsJson","_router","_utf","getSyncState","findRow","existing","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","pendingUpdateModes_1","_beforeSendData","_getRowData","_serializeAsJSON","serialize_one","pref","serialized","_forEachUpdatedRow","_sendData","_getAllData","pattern","defineAction","_uActions","afterUpdateCallback","btag","ganttMode","correct","originalSid","afterUpdate","_xml","getGanttMode","reqUrl","filePath","processCallback","finalizeUpdate","cleanUpdate","atag","_dp_init","_setDefaultTransactionMode","delete_confirmation","dataProcessorEvents","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","user","_user","_needUpdate","_updateBusy","afterAutoUpdate","fullSync","loadUpdate","xml_node","getUpdates","vers","_getXmlNodeValue","updates","status_1","parent_1","_applyPayload","_cleanupArgumentsBeforeSend","dataToSend","processedData","_cleanupItemBeforeSend","updatedItem","queryParams","dhxVersion","urlParams","preprocessedData","taskState_1","taskAction","ganttMode_1","_onResolvedCreateUpdate_1","actionPromise","errorMsgStart","errorMsgEnd","catch","hasOne","_prepareDate","_prepareArray","traversedObjects","_prepareObject","rawItem","processedItem","_prepareDataItem","dataItem","DEPRECATED_api","server","getDataProcessorModes","getAvailableModes","bindDataStore","itemRepainter","allData","loadedRanges","_i","layerData","skipRepaint","refreshId","selectedId","deleteItem","_unselect","subItem","getLinkCount","newLink","getTaskCount","getVisibleTaskCount","startTask","calculateTaskLevel","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","$StoreType","open_tree_initially","deepcopy_on_parse","storeAccessName","dropService","storeList","refresh_links","refreshLinks","hasSplitParent","_clear_data","oldSelectId","unselectTask","facadeFactory","originalTask","checkLinkedTaskVisibility","sync_link","sync_link_delete","sync_links","mapEvents","mapFrom","sourceEvent","targetEvent","taskLinks","existingLink","sourceMatch","targetMatch","typeMatch","show_tasks_outside_timescale","changedTask","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_dereq_","1","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","2","firstLineError","schedule","Queue","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","exit","throwLater","invokeLater","invoke","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","calledBind","rejectThis","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","isIdentifier","caller","classString","ensureMethod","namedGetter","indexedGetter","maybeGetter","getGetter","6","PromiseArray","apiRejection","tryCatch","errorObj","async","_async","cancellation","_warn","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","boundTo","predicateLoop","matchesPredicate","./es5","8","longStackTraces","contextStack","Context","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","ctx","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","cancelable","domEvent","Event","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","_warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","_propagateFromFunction","monitoring","_boundValueFunction","isFulfilled","ignoreSelf","attachExtraTrace","__stackCleaned__","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","isTraceLine","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","fileName","_promisesCreated","uncycle","stackToIndex","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","checkForgottenReturns","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","caught","catchReturn","_value","11","PromiseReduce","PromiseAll","promiseAllThis","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","OperationalError","cause","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","getOwnPropertyNames","propertyIsWritable","prop","descriptor","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_init","_values","preservedValues","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","errors","APPLY","createContext","nodebackForPromise","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","is","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","_capacity","_willBeOverCapacity","_checkCapacity","wrapMask","_resizeTo","oldCapacity","srcIndex","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","standalone","cordova","toggleScheduled","div2","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","handle","afterValue","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","_context","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","doDispose","_unsetDisposable","using","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","maybeError","safeToString","appendee","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","rident","filledRange","prefix","ArrayFrom","itResult","hasEnvVariables","chrome","loadTimes","P","stateProviders","provider","regTemplates","initial","template_name","date_format","server_utc","task_unscheduled_time","grid_date_format","tooltip_date_format","copyDomEvent","altKey","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","eventParams","timeStamp","original_target","dragStart","traceDragEvents","inputMethod","mousemove","dragMove","dragScroll","limited_mousemove","dndActive","mouseup","dragEnd","checkPositionChange","diff_x","diff_y","initDnDMarker","backupEventTarget","getEvent","backup_element","elementFromPoint","_defineProperties","__webpack_exports__","_t","instance","Constructor","_classCallCheck","token","_url","_token","_seed","api","protoProps","staticProps","_createClass","Accept","Content-Type","Remote-Token","_fetch","_x","_x2","_t2","credentials","_t3","_t4","_t5","_t6","websocket","_e","_e2","_s","_t29","_wrapper","connect","_t8","_socket","WebSocket","onmessage","fire","_send","_resubscribe","onError","_t9","_this3","_uid","onCall","_t10","_this4","_t11","_t12","_t13","_t14","send","_t15","_e3","_t30","_t31","_e4","onResponse","_t18","_t32","_t20","_t34","_t23","_t33","_t24","_t35","_t26","_t27","_t28","remote_client","remoteEvents","remote","Client","_ready","_remote","cspVersion","utc","to_fixed","getUTCMonth","getUTCFullYear","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCISOWeek","getISOWeek","mask","month_short_hash","month_full_hash","fastVersion","dateToStrFn","getWeek","splt","strToDateFn","cspCompliantVersion","canUseCsp","useCsp","cspAutoCheck","time_part","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","minute_start","getMilliseconds","setMilliseconds","_add_days","modifiedDate","inc","originalDate","incCondition","getHoursCondition","getDateCondition","ndate","setYear","add_quarter","num","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","convert_to_utc","createConfig","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","responseXML","xpathExp","docObj","selectNodes","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","isQt","onreadystatechange","noCache","setRequestHeader","show_loading","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","project_sections","milestone_sections","grid_resize","prevent_default_scroll","service","supportedExtensions","license","extensionManager","ExtensionManager","RemoteEvents","templatesLoader","stateService","selected_task","i18n","setLocale","localeObject","extension_manager_1","GanttFactory","factoryMethod","_bundledExtensions","_ganttPlugin","initConfig","_factoryMethod","_internal_id","_initFromConfig","_extensionsManager","event_1","MAX_UNDO_STEPS","Undo","maxSteps","undoEnabled","redoEnabled","invert","revert","inverseCommands","_undoStack","_redoStack","getUndoStack","setUndoStack","getRedoStack","setRedoStack","clearUndoStack","clearRedoStack","updateConfigs","undo_steps","undo_types","undo_actions","redo","_pop","_reorderCommands","_applyAction","_push","logAction","weights","actionWeights","weightA","entities","actions","isExists","getMethod","startsWith","noTrack","onBeforeUndo","onBeforeRedo","batchActions","Monitor","_batchAction","_batchMode","_ignore","_ignoreMoveEvents","_initialTasks","_initialLinks","_nestedTasks","_nestedLinks","_undo","_attachEvents","overwrite","_storeTask","_storeLink","isMoveEventsIgnored","toggleIgnoreMoveEvents","startIgnore","stopIgnore","startBatchAction","_timeout","stopBatchAction","onTaskAdded","_storeTaskCommand","onTaskUpdated","onTaskMoved","getInitialTask","_storeEntityCommand","onTaskDeleted","childrenLinks","_storeLinkCommand","onLinkAdded","onLinkUpdated","onLinkDeleted","setNestedTasks","taskIds","_getLinks","setInitialTask","uniqueLinks","setInitialLink","setInitialTaskObject","clearInitialTasks","getInitialLink","clearInitialLinks","deleteCacheCooldown","saveInitialAll","getMoveObjectByTaskId","nested","_storeCommand","actionType","entityType","monitor_1","undo_1","monitor","changeTaskCommandId","updLink","oldTaskId","newTaskId","changeLinkCommandId","updateTasksIds","updateLinksIds","getInitialState","Tooltip","_tooltipNode","setViewport","_root","_isLikeMouseEvent","_calculateTooltipPosition","setContent","_getViewPort","_getViewPortSize","tooltipNode","mouse","containerPos","domEventsScope","tooltip_1","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","tooltipFor","cloneDomEvent","clone","delayShow","tooltip_timeout","tooltip_hide_timeout","tooltipManager_1","tooltipManager","touch_tooltip","QuickInfo","_showForTask","_showAtCoordinates","forced","qi","_quickInfoBox","_quickInfoBoxId","_quickInfoTask","quick_info_detached","setContainer","_container","defaultContent","quickinfo_buttons","_createQuickInfoElement","titleBox","titleContent","titleDate","main","controls","_qiButtonClickHandler","_qiKeyPressHandler","_qi_button_click","_appendAtCoordinates","show_quick_info","_getContainer","_get_event_counter_part","xViewport","yViewport","_init_quick_info","_prepare_quick_info_classname","_fill_quick_data","_show_quick_info","domEv","_quickInfoReadonly","quick_info_class","allowedButtons","isEditor","quick_info_title","quick_info_date","popupHeight","scrolls","screenWidth","relativePopupBottom","top_1","quickInfo_1","quickInfo","hidingFunction","clearQuickInfo","overlays","initOverlayArea","$overlay_area","overlayArea","attachUnnattached","isAttached","attachOverlay","showOverlayArea","hideIfNoVisibleLayers","addOverlay","createOverlay","deleteOverlay","getOverlaysIds","refreshOverlay","showOverlay","hideOverlay","isOverlayVisible","multiselect_one_level","_selected","_one_level","_active","_first_selected_when_shift","getDefaultSelected","selected","getSelected","setFirstSelected","getFirstSelected","updateState","setLastSelected","getLastSelected","afterSelect","forSelected","isSameLevel","doSelection","target_ev","defaultLast","isLast","multiSelect","singleSelection","inline_editors_multiselect_open","blockSelection","first_indx","target_indx","last_indx","old_selectTask","old_unselectTask","toggleTaskSelection","getLastSelectedTask","old_isSelected","render_marker","show_markers","marker_class","markerHeight","initMarkerArea","markerArea","$marker_area","_markers","renderMarkers","getMarker","deleteMarker","updateMarker","_getMarkers","$keyboardNavigation","dispatcher","activeNode","globalNode","GanttNode","setActiveNode","getActiveNode","getDefaultNode","TaskCell","TaskRow","isValid","setDefaultNode","fromDomElement","HeaderCell","focusGlobalNode","blurNode","focusChanged","compareTo","keptFocus","keyDownHandler","isModal","ganttNode","shortcuts","getCommandFromEvent","findHandler","doAction","awaitsFocus","_delay","clearDelay","modalsStack","afterPopup","startModal","trapFocus","endModal","currentTarget","isTopModal","traceLightbox","focusElement","globalIndex","_compose","cellElement","nextElement","prevTask","moveTo","nextTask","home","pagedown","pageup","bindAll","KeyNavNode","viewWidth","viewHeight","scrollPositionX","scrollPositionY","attachedScrollbarHorizontal","scrollbarHorizontal","attachedScrollbarVertical","scrollbarVertical","scrollGrid","shift+down","shift+up","shift+right","shift+left","space","ctrl+left","ctrl+right","ctrl+enter","taskRow","enter, space","EventHandler","canStringifyThis","canStringifyThat","eventFacade","$eventAttached","alt+left","alt+right","alt+up","alt+down","ctrl+z","ctrl+r","currentFocus","currentIndex","lastItem","firstItem","getHash","shortcut","unbind","initKeys","createCommand","expr","getExpressions","words","getWords","commandKeys","specialKeys","printableKey","getHashFromEvent","junctionChar","term","combinationChar","backspace","tab","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","isTaskFocused","isInlineEditorCell","isNoKeyboardNavigationElement","isLightboxElement","focusHandler","$preventDefault","reFocusActiveNode","outsideGantt","localName","mousedownHandler","locateTask","onReady","updateRender","_redrawTasks","focusedItemVisible","createdTaskId","keepFocusOnNewTask","nodeConstructor","focusOnCreate","getScope","scopes","headerCell","taskCell","findVisibleColumnIndex","keyNavFacade","addShortcut","scopeObject","getShortcutHandler","removeShortcut","getScopeName","setupKeyNav","setRelationValueForAssignmentsArray","newGroupValues","oldRelationProperty","newRelationProperty","new_value","setRelationValueForPrimitivesArray","_getResourcesIds","_getEntryId","_getGroupId","relationProperty","_initBeforeDataRender","_listenerToDrop","delayedFunction","_groups","dynamicGroups","regroup","relation_property","relation_id_property","group_id","group_text","loading","set_relation_value","_searchCache","originalGetParent","invalidParent","noRelationValueFunction","is_active","save_tree_structure","oldParentTask","newParentTask","cyclicTree","parentTask","$initial_parent","initialParent","restoreParent","get_parent","originalSetParent","groupIds","groupId","_buildCache","virtualParentId","_clearCache","parent_group_id","_groups_pull","generate_sections","groups_type","clear_temp_tasks","generate_data","categories","update_settings","relation","group_tasks","groups_array","selectedTasks","schedulingOnParse","auto_scheduling_initial","relationInfo","arrays","haveArrays","haveResourceAssignments","inspectRelationProperty","selectRelationFunction","default_group_label","default_group","groupOpenCloseState","restoreOpenCloseState","resultObj","itemsByKey","hasDefaultGroup","defaultGroupId","taskGroupValue","_getGroupForMultiItems","_initGroups","isExpanded","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","isFullscreenAvailable","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","backupBodyPadding","backupElementSizes","zIndex","modified","backupPositioning","updateSizes","expandGantt","onFullScreenChange","getFullscreenElement","originalPositioning","resetParentPositioning","setFullScreenSizes","record","restoreParentPositioning","restoreSizes","cantFullscreen","expand","requestArguments","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","collapse","requestExitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","exitFullscreen","stringifyPrimitive","sep","eq","ks","qs","regexp","maxKeys","kstr","vstr","idx","decode","encode","webpackPolyfill","paths","freeExports","freeModule","freeGlobal","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","not-basic","invalid-input","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","numPoints","firstTime","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","handledCPCountPlusOne","qMinusT","ucs2","toUnicode","100","101","102","200","201","202","203","204","205","206","207","208","226","300","301","302","303","304","305","307","308","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","421","422","423","424","425","426","428","429","431","451","500","501","502","503","504","505","506","507","508","509","510","511","arrayCopy","localStorage","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","installReadyStateChangeImplementation","copyBuffer","custom","toArrayBuffer","preferBinary","_opts","_body","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","signal","_fetchAbortController","requestTimeout","withCredentials","_connect","ontimeout","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","validateParams","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","tripletToBase64","_apiUrl","getNodeJSTransport","defaultPort","_prepareConfigPDF","previousDateRage","_serializeHtml","_serializeAll","_fixColumns","_sendToExport","exportToPNG","exportToICal","_serializePlain","exportToExcel","visual","convert","_eachTaskTimed","_no_progress_colors","_serializeTable","_serializeColumns","rawDates","_serializeScales","exportToJSON","_getWorktimeSettings","importFromExcel","File","_nodejsImportExcel","_sendImportAjaxExcel","importFromMSProject","_nodejsImportMSP","_sendImportAjaxMSP","importFromPrimaveraP6","exportToMSProject","skip_circular_links","oldXmlFormat","oldFormatDate","oldXmlDate","oldDateFormat","_customProjectProperties","_customTaskProperties","_clearRecLinks","_exportConfig","$custom_data","exportToPrimaveraP6","formDataInstance","network","parts1","parts2","parts3","X-Requested-With","sheet","getHeaders","resData","projectProperties","taskProperties","_xdr","pack","_nodejsPostRequest","Content-Length","_markColumns","$template","_ajaxToExport","xdoc","_serializableGanttConfig","callbackFunction","form","_createHiddenForm","submit","_hidden_export_form","_copyObjectBase","formatDate","_color_box","_color_hash","_getStyles","_getColor","_getMinutesWorktimeSettings","parsedRanges","defaultWorkTimes","0","wTime","_working_time_helper","get_calendar","_pull","_originalCopyObject","_copyObjectPlain","rgb","_copyObjectTable","toISOstring","_copyObjectColumns","getDayIndex","_day_index_by_date","$start","$end","hiddenCells","scaleCellsWidth","$type","tmps","$text","$left","$right","_copyObjectColors","$color","ct","_copyObjectAll","smartScales","_exportSerialize","_getRaw","_scale_helpers","_get_scales","autosizeMinWidth","_get_resize_options","cellColors","cellCss","scaleCell","scaleCell_class","scaleCss","exportMode","ccount","xmlFormat","_lvl","_clearLevel","_makeLinksSameLevel","skippedLinks","_clearCircDependencies","_clearLinksSameLevel","usedTasks","prevLink","sources","$_source","_onCircDependencyFind","targets","curLink","_source","targetLvl","linkT","$_target","projectName","projectDates","start_end","manual","EventsManager","_mouseDown","_calculateDirectionVector","vectors","resultVector_1","vector","magnitude","angleDegrees","atan2","_applyDndReadyStyles","_timeline","_clearDndReadyStyles","_getScrollPosition","_countNewScrollPosition","coords","_startPoint","shiftY","_scrollState","_setScrollPosition","_stopDrag","_originalReadonly","_startDrag","enabled","filterTargets","clickDragUseKey","eventsManager_1","_isProjectEnd","_slackHelper","_calculateCriticalPath","hasCritical","getTotalSlack","slackHelper","handleTaskIdChange","criticalPathHandler","linksBuilder","graphHelper","_private","_freeSlack","_totalSlack","_slackNeedCalculate","_linkedTasksById","_successorsByTaskId","_projectEnd","_calculateSlacks","linkedTasks","loops","loopLinks","loop","reversedOrder","successorsByTaskId","distCalculator","getDist","_calculateFreeSlack","_calculateTotalSlack","_isCompletedTask","orderedFromEnd","successorsMap","freeSlack","tasksToDo","processedTasks","ownSlack","_disconnectedTaskSlack","totalSlackByTaskId","successorLinks","totalSlack","successorLink","successorSlack","getFreeSlack","_resetTotalSlackCache","_shouldCalculateTotalSlack","minSlack","childSlack","dropCachedFreeSlack","slackHandler","criticalPath","getSlack","task1","task2","common","newSlack","_getSlack","next_task","helpers_1","SelectedRegion","_el","_singleRow","_getTaskPositionByTop","_view","_viewPort","_endPoint","draw","singleRow","_useRequestAnimationFrame","useRequestAnimationFrame","getElement","setStart","startPoint","_startDate","setEnd","endPoint","_endDate","_positionPoint","absolute","setPosition","positionPoint","tasksByTime","tasksByIndex","_getTasksByTop","getInBounds","startValue","endValue","selectedRegion","_originPosition","_restoreOriginPosition","scheduledDndCoordinates","_getCoordinates","dragTimelineUseKey","viewPortBounds","selectedRegion_1","defaultConfig","eventsManager","__assign","attachUIHandlers","loopsFinder","connectedGroupsHelper","_attachAutoSchedulingHandlers","movedTask","_scheduleAfterBatchUpdate","_autoScheduleAfterLinkChange","_autoscheduling_in_progress","_preventCircularLink","slackConfigValue","isCircularLink","getLoopContainingLink","_preventDescendantLink","auto_scheduling_descendant_links","_datesNotEqual","taskA","taskB","_notEqualTaskDates","getRelations","getConnectedGroupRelations","shouldKeepConstraints","oldTask","updateTaskConstraints","FNLT","SNET","finalizeTaskConstraints","changedConstraint","_autoScheduleAfterDND","progressScheduling","relationsArray","skipped","originalLink","presentLinks","updatedLinks","resetToStartLinksLags","_autoSchedule","modifiedTaskId","autoscheduleColumns_1","durationColumn","startDateColumn","endDateColumn","linkedDateModification","$keep_constraints","LoopsFinder","_graphHelper","_linksBuilder","allRelations","findCycles","breadthFirstSearch","currentVertex","groupTasks","groupLinksInternal","groupLinksPublic","linksArray","linksObjects","processedLinks","ConnectedGroupsHelper","getConnectedGroup","length_1","findGroups","date_comparator_1","task_plan_1","AsapStrategy","_comparator","resolveRelationDate","adjacentLinks","plansHash","minStart","defaultStart","minRelationDate","getEarliestStartDate","maxEnd","masterPlan","currentPlan","getPredecessorEndDate","successorStart","predecessorEnd","ffLink","AlapStrategy","maxStart","maxRelationDate","getLatestEndDate","constraintStartDate","getSuccessorStartDate","alap_strategy_1","asap_strategy_1","constraint_types_1","AutoSchedulingPlanner","constraintsHelper","_constraintsHelper","_asapStrategy","_alapStrategy","generatePlan","constraints","alapStrategy","asapStrategy","buildWorkCollections","orderedIds","reversedIds","relationsMap","processConstraints","iterateTasks","isAlapTask","isAsapTask","applyProjectPlan","projectPlan","updateTasks","newDate","mainSequence","secondarySequence","isMainSequence","mainSequenceStrategy","secondarySequenceStrategy","currentId","limitPlanDates","processResolvedDate","effectiveStart","processConstraint","ConstraintsHelper","_getTaskConstraint","_getOwnConstraint","defaultConstraintType","_getParentConstraint","hasConstraint","newPlan","SNLT","FNET","MSO","MFO","getConstraints","planner","connectedGroups","getConstraintLimitations","afterRenderBeforeFirstRepaint","updatedTasks","preferInitialTaskDates","updateParentsAndCallEvents","inclusive","click_drag_1","drag_timeline_1","export_api_1","fullscreen_1","quick_info_1","extensions_all_1","gantt_factory_1","dhtmlxgantt_web_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 = 329);\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};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var EventHost = function EventHost() {\n this._silent_mode = false;\n this.listeners = {};\n};\n\nEventHost.prototype = {\n _silentStart: function _silentStart() {\n this._silent_mode = true;\n },\n _silentEnd: function _silentEnd() {\n this._silent_mode = false;\n }\n};\n\nvar createEventStorage = function createEventStorage(obj) {\n var handlers = {};\n var index = 0;\n\n var eventStorage = function eventStorage() {\n var combinedResult = true;\n\n for (var i in handlers) {\n var handlerResult = handlers[i].apply(obj, arguments);\n combinedResult = combinedResult && handlerResult;\n }\n\n return combinedResult;\n };\n\n eventStorage.addEvent = function (handler, settings) {\n if (typeof handler == \"function\") {\n var handlerId;\n\n if (settings && settings.id) {\n handlerId = settings.id;\n } else {\n handlerId = index;\n index++;\n }\n\n if (settings && settings.once) {\n var originalHandler = handler;\n\n handler = function handler() {\n originalHandler();\n eventStorage.removeEvent(handlerId);\n };\n }\n\n handlers[handlerId] = handler;\n return handlerId;\n }\n\n return false;\n };\n\n eventStorage.removeEvent = function (id) {\n delete handlers[id];\n };\n\n eventStorage.clear = function () {\n handlers = {};\n };\n\n return eventStorage;\n};\n\nfunction makeEventable(obj) {\n var eventHost = new EventHost();\n\n obj.attachEvent = function (eventName, handler, settings) {\n eventName = 'ev_' + eventName.toLowerCase();\n\n if (!eventHost.listeners[eventName]) {\n eventHost.listeners[eventName] = createEventStorage(this);\n }\n\n if (settings && settings.thisObject) {\n handler = handler.bind(settings.thisObject);\n }\n\n var innerId = eventHost.listeners[eventName].addEvent(handler, settings);\n var handlerId = eventName + ':' + innerId; //return ID (ev_eventname:1)\n\n if (settings && settings.id) {\n handlerId = settings.id;\n }\n\n return handlerId;\n };\n\n obj.attachAll = function (callback) {\n this.attachEvent('listen_all', callback);\n };\n\n obj.callEvent = function (name, eventArguments) {\n if (eventHost._silent_mode) return true;\n var handlerName = 'ev_' + name.toLowerCase();\n var listeners = eventHost.listeners;\n\n if (listeners['ev_listen_all']) {\n listeners['ev_listen_all'].apply(this, [name].concat(eventArguments));\n }\n\n if (listeners[handlerName]) return listeners[handlerName].apply(this, eventArguments);\n return true;\n };\n\n obj.checkEvent = function (name) {\n var listeners = eventHost.listeners;\n return !!listeners['ev_' + name.toLowerCase()];\n };\n\n obj.detachEvent = function (id) {\n if (id) {\n var listeners = eventHost.listeners;\n\n for (var i in listeners) {\n listeners[i].removeEvent(id); //remove event\n }\n\n var list = id.split(':'); //get EventName and ID\n\n var listeners = eventHost.listeners;\n\n if (list.length === 2) {\n var eventName = list[0];\n var eventId = list[1];\n\n if (listeners[eventName]) {\n listeners[eventName].removeEvent(eventId); //remove event\n }\n }\n }\n };\n\n obj.detachAllEvents = function () {\n for (var name in eventHost.listeners) {\n eventHost.listeners[name].clear();\n }\n };\n}\n\nmodule.exports = makeEventable;","module.exports = function getVisibleTasksRange(gantt, view, config, datastore, viewport) {\n var buffer = 1;\n var start = view.getItemIndexByTopPosition(viewport.y) || 0;\n var end = view.getItemIndexByTopPosition(viewport.y_end) || datastore.count();\n var indexStart = Math.max(0, start - buffer);\n var indexEnd = Math.min(datastore.count(), end + buffer);\n return {\n start: indexStart,\n end: indexEnd\n };\n};","function dummy() {\n // eslint-disable-next-line\n console.log(\"Method is not implemented.\");\n}\n\nfunction BaseControl() {} // base methods will be runned in gantt context\n\n\nBaseControl.prototype.render = dummy; // arguments: sns\n\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\n\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\n\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function (gantt) {\n // we could send current instance of gantt to module\n return BaseControl;\n};","/* 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;","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","module.exports = function (gantt) {\n var BaseEditor = function BaseEditor() {};\n\n BaseEditor.prototype = {\n show: function show(id, column, config, placeholder) {},\n hide: function hide() {},\n set_value: function set_value(value, id, column, node) {\n this.get_input(node).value = value;\n },\n get_value: function get_value(id, column, node) {\n return this.get_input(node).value || \"\";\n },\n is_changed: function is_changed(value, id, column, node) {\n var currentValue = this.get_value(id, column, node);\n\n if (currentValue && value && currentValue.valueOf && value.valueOf) {\n return currentValue.valueOf() != value.valueOf();\n } else {\n return currentValue != value;\n }\n },\n is_valid: function is_valid(value, id, column, node) {\n return true;\n },\n save: function save(id, column, node) {},\n get_input: function get_input(node) {\n return node.querySelector(\"input\");\n },\n focus: function focus(node) {\n var input = this.get_input(node);\n\n if (!input) {\n return;\n }\n\n if (input.focus) {\n input.focus();\n }\n\n if (input.select) {\n input.select();\n }\n }\n };\n return BaseEditor;\n};","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 = \"
\" + (obj.html || \"\") + \"
\";\n }\n\n if (obj.header) {\n var collapseIcon = obj.canCollapse ? \"
\" : \"\";\n header = \"
\" + collapseIcon + \"
\" + obj.header + \"
\";\n }\n }\n\n return \"
\" + header + content + \"
\";\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;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\n\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n/**/\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n\n that.length = length;\n }\n\n return that;\n}\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\n\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\n}\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\n\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\n\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\n\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\n\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\n\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\n\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\n\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n\n default:\n return false;\n }\n};\n\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n\n return this;\n};\n\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\n\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\n\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n\n byteOffset = +byteOffset; // Coerce to Number.\n\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\n\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\n} // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\n\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\n\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\n\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\n\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\n\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n\n return offset + 2;\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n\n return offset + 4;\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n\n return offset + 4;\n};\n\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\n\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\n\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\n\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null; // encode utf8\n\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\n\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","var utils = require(\"./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};","/* 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;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return _typeof(arg) === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","// optimized checker for task bars smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isBarInViewport(item, viewport, view, config, gantt) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var top = view.getItemTop(item.id);\n var height = view.getItemHeight(item.id);\n\n if (top > viewport.y_end || top + height < viewport.y) {\n return false;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n\n if (left > viewport.x_end || right < viewport.x) {\n return false;\n }\n\n return true;\n};","module.exports = function (gantt) {\n return gantt.config.smart_rendering && gantt._smart_render;\n};","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\n\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n} // Copy static methods from Buffer\n\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};","'use strict';\n\nif (!process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n\n var len = arguments.length;\n var args, i;\n\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n\n default:\n args = new Array(len - 1);\n i = 0;\n\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}","export class TaskPlan implements ITaskPlan {\n\tstatic Create(parent?: TaskPlan): TaskPlan {\n\t\tconst plan = new TaskPlan();\n\t\tif (parent) {\n\t\t\tfor (const i in plan) {\n\t\t\t\tif (parent[i] !== undefined) {\n\t\t\t\t\tplan[i] = parent[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn plan;\n\t}\n\n\tpublic link: string | number;\n\tpublic task: string | number;\n\t// tslint:disable-next-line variable-name\n\tpublic start_date: Date | null;\n\t// tslint:disable-next-line variable-name\n\tpublic end_date: Date | null;\n\n\tpublic latestStart: Date;\n\tpublic earliestStart: Date;\n\tpublic earliestEnd: Date;\n\tpublic latestEnd: Date;\n\n\tpublic latestSchedulingStart: Date;\n\tpublic earliestSchedulingStart: Date;\n\tpublic latestSchedulingEnd: Date;\n\tpublic earliestSchedulingEnd: Date;\n\n\tpublic kind: string;\n\tpublic conflict: boolean;\n\n\tconstructor() {\n\t\tthis.link = null;\n\t\tthis.task = null;\n\t\tthis.start_date = null;\n\t\tthis.end_date = null;\n\t\tthis.latestStart = null;\n\t\tthis.earliestStart = null;\n\t\tthis.earliestEnd = null;\n\t\tthis.latestEnd = null;\n\t\tthis.latestSchedulingStart = null;\n\t\tthis.earliestSchedulingStart = null;\n\t\tthis.latestSchedulingEnd = null;\n\t\tthis.earliestSchedulingEnd = null;\n\t\tthis.kind = \"asap\";\n\t\tthis.conflict = false;\n\t}\n}","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 \"\";\n }\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n var html;\n options = options || [];\n html = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"\";\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 __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 = \"
\";\n html += htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"style\",\n value: \"width:100%;\"\n }, {\n key: \"title\",\n value: sns.name\n }]);\n html += \"
\";\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};","/**\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;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar helpers = require(\"../../utils/helpers\");\n\nfunction clearTaskStoreHandler(self) {\n if (self._delayRender) {\n self._delayRender.$cancelTimeout();\n }\n\n if (!self.$gantt) {\n return;\n }\n\n var tasks = self.$gantt.$data.tasksStore;\n var ownStore = self.$config.rowStore;\n var handlerIdProperty = \"_attached_\" + ownStore.$config.name;\n\n if (self[handlerIdProperty]) {\n tasks.detachEvent(self[handlerIdProperty]);\n self[handlerIdProperty] = null;\n }\n\n if (ownStore.$attachedResourceViewHandler) {\n ownStore.detachEvent(ownStore.$attachedResourceViewHandler);\n ownStore.$attachedResourceViewHandler = null;\n tasks.detachEvent(ownStore.$attachedTaskStoreHandler);\n ownStore.$attachedTaskStoreHandler = null;\n }\n}\n\nfunction createMixin(_super) {\n var initGrid = _super.prototype.init,\n destroyGrid = _super.prototype.destructor;\n return {\n init: function init() {\n initGrid.apply(this, arguments);\n\n this._linkToTaskStore();\n },\n destructor: function destructor() {\n clearTaskStoreHandler(this);\n destroyGrid.apply(this, arguments);\n },\n previousDragId: null,\n relevantResources: null,\n _linkToTaskStore: function _linkToTaskStore() {\n if (this.$config.rowStore && this.$gantt.$data.tasksStore) {\n var tasks = this.$gantt.$data.tasksStore;\n var ownStore = this.$config.rowStore;\n clearTaskStoreHandler(this);\n var self = this;\n var delayRender = helpers.delay(function () {\n if (self.$gantt.getState().lightbox) {\n delayRender();\n } else {\n var linkedStore = self.$config.rowStore; // Repaint only relevant resources for task drag\n\n var repaintStack = self._getRelevantResources();\n\n if (repaintStack) {\n if (repaintStack == \"nothing_to_repaint\") {\n return;\n }\n\n linkedStore._quick_refresh = true;\n self.relevantResources.forEach(function (id) {\n linkedStore.refresh(id);\n });\n linkedStore._quick_refresh = false;\n } else {\n // because rowstore could be changed during timeout\n linkedStore.refresh();\n }\n }\n }, 300);\n this._delayRender = delayRender;\n var handlerIdProperty = \"_attached_\" + ownStore.$config.name;\n\n if (!self[handlerIdProperty]) {\n self[handlerIdProperty] = tasks.attachEvent(\"onStoreUpdated\", function () {\n if (!delayRender.$pending && !this._skipResourceRepaint) {\n // don't repaint if we update progress\n var state = self.$gantt.getState();\n\n if (state.drag_mode == \"progress\") {\n return true;\n } else if (state.drag_mode && state.drag_id) {\n // we need it here because if you started dragging a task and quickly stopped the drag_id is removed \n // from the state before we record it, so we cannot repaint only the relevant resources\n self.previousDragId = state.drag_id;\n }\n\n delayRender();\n }\n\n return true;\n });\n }\n\n this.$gantt.attachEvent(\"onDestroy\", function () {\n // detach events to don't call delayed tasks\n clearTaskStoreHandler(self);\n return true;\n });\n\n if (!ownStore.$attachedResourceViewHandler) {\n ownStore.$attachedResourceViewHandler = ownStore.attachEvent(\"onBeforeFilter\", function () {\n if (self.$gantt.getState().lightbox) {\n return false;\n }\n\n if (delayRender.$pending) {\n delayRender.$cancelTimeout();\n }\n\n self._updateNestedTasks();\n\n return true;\n });\n ownStore.$attachedTaskStoreHandler = tasks.attachEvent(\"onAfterDelete\", function () {\n ownStore._mark_recompute = true;\n });\n }\n }\n },\n _getRelevantResources: function _getRelevantResources() {\n // GS-2199. process_resource_assignments is disabled, \n // so we cannot get only the relevant assignment resources\n if (!this.$gantt.getTaskAssignments) {\n return null;\n }\n\n var state = this.$gantt.getState();\n var linkedStore = this.$config.rowStore;\n var assignments = [];\n\n if (state.drag_mode && state.drag_id) {\n if (this.previousDragId == state.drag_id) {\n // we continue dragging the task\n if (this.relevantResources) {\n return this.relevantResources;\n } else {\n assignments = this.$gantt.getTaskAssignments(this.previousDragId);\n }\n } else {\n // we started the task drag\n this.previousDragId = state.drag_id;\n assignments = this.$gantt.getTaskAssignments(this.previousDragId);\n }\n } else if (this.previousDragId) {\n // finished task drag, but the resources are still the same\n assignments = this.$gantt.getTaskAssignments(this.previousDragId);\n this.previousDragId = null;\n } else {\n return null;\n }\n\n if (!assignments.length) {\n return this.relevantResources = \"nothing_to_repaint\";\n }\n\n var resourceIds = [];\n assignments.forEach(function (assignment) {\n resourceIds.push(assignment.resource_id);\n linkedStore.eachParent(function (parent) {\n resourceIds.push(parent.id);\n }, assignment.resource_id);\n }); // eslint-disable-next-line\n\n return this.relevantResources = _toConsumableArray(new Set(resourceIds));\n },\n _updateNestedTasks: function _updateNestedTasks() {\n var gantt = this.$gantt;\n var resourceStore = gantt.getDatastore(gantt.config.resource_store);\n\n if (!resourceStore.$config.fetchTasks) {\n return;\n }\n\n resourceStore.silent(function () {\n var toAddArray = [];\n var toAdd = {};\n var toDelete = {};\n resourceStore.eachItem(function (resource) {\n if (resource.$role == \"task\") {\n toDelete[resource.id] = true;\n return;\n }\n\n var assignments = gantt.getResourceAssignments(resource.id);\n var addedTasks = {}; // GS-1505. We need to sort assignments before updating tasks. \n // Iterating them without that will affect the order of featched tasks in the resource store\n\n assignments.sort(function (a, b) {\n var resourceData = resourceStore.pull;\n var resource1 = resourceData[\"\".concat(a.task_id, \"_\").concat(a.resource_id)];\n var resource2 = resourceData[\"\".concat(b.task_id, \"_\").concat(b.resource_id)];\n\n if (resource1 && resource2) {\n return resource1.$local_index - resource2.$local_index;\n } else {\n return 0;\n }\n });\n assignments.forEach(function (a) {\n if (addedTasks[a.task_id]) {\n return;\n }\n\n addedTasks[a.task_id] = true;\n var task = gantt.getTask(a.task_id); //var copy = gantt.copy(task);\n\n var copy = Object.create(task);\n copy.id = task.id + '_' + resource.id;\n copy.$task_id = task.id;\n copy.$resource_id = resource.id;\n copy[resourceStore.$parentProperty] = resource.id;\n copy.$role = \"task\";\n toAddArray.push(copy);\n toAdd[copy.id] = true;\n });\n });\n\n for (var id in toDelete) {\n if (!toAdd[id]) {\n resourceStore.removeItem(id);\n }\n }\n\n if (toAddArray.length) {\n resourceStore.parse(toAddArray);\n }\n });\n }\n };\n}\n\nmodule.exports = createMixin;","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 = \"
\";\n this.$grid = container.childNodes[0];\n this.$grid.innerHTML = \"
\";\n this.$grid_scale = this.$grid.childNodes[0];\n this.$grid_data = this.$grid.childNodes[1];\n var attr = _ganttConfig[this.$config.bind + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n\n if (!this.$config.layers) {\n var layers = this._createLayerConfig();\n\n this.$config.layers = layers;\n }\n\n var resizer = gridResize(gantt, this);\n resizer.init();\n this._renderHeaderResizers = resizer.doOnRender;\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n var resizerrow = rowResize(gantt, this);\n resizerrow.init();\n\n this._addLayers(this.$gantt);\n\n this._initEvents();\n\n if (reorderColumns) {\n this._columnDND = new ColumnDnd(gantt, this);\n\n this._columnDND.init();\n }\n\n this.callEvent(\"onReady\", []); //this.refresh();\n },\n _validateColumnWidth: function _validateColumnWidth(column, property) {\n // user can set {name:\"text\", width:\"200\",...} for some reason,\n // check and convert it to number when possible\n var value = column[property];\n\n if (value && value != \"*\") {\n var gantt = this.$gantt;\n var numericWidth = value * 1;\n\n if (isNaN(numericWidth)) {\n gantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n } else {\n column[property] = numericWidth;\n }\n }\n },\n setSize: function setSize(width, height) {\n this.$config.width = this.$state.width = width;\n this.$config.height = this.$state.height = height; // TODO: maybe inherit and override in a subclass instead of extending here\n\n var columns = this.getGridColumns(),\n innerWidth = 0;\n var config = this.$getConfig();\n var elasticColumns = config.grid_elastic_columns;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n this._validateColumnWidth(columns[i], \"min_width\");\n\n this._validateColumnWidth(columns[i], \"max_width\");\n\n this._validateColumnWidth(columns[i], \"width\");\n\n innerWidth += columns[i].width * 1;\n }\n\n var outerWidth;\n\n if (isNaN(innerWidth) || !this.$config.scrollable) {\n outerWidth = this._setColumnsWidth(width + 1);\n innerWidth = outerWidth;\n }\n\n if (this.$config.scrollable && elasticColumns && !isNaN(innerWidth)) {\n // GS-1352: Allow resizing the grid columns, then the grid width is increased\n // or keep the grid width, but don't allow column resize to affect the grid width\n var columnProperty = \"width\";\n\n if (elasticColumns == \"min_width\") {\n columnProperty = \"min_width\";\n }\n\n var newColumnWidth = 0;\n columns.forEach(function (col) {\n newColumnWidth += col[columnProperty] || config.min_grid_column_width;\n }); //newColumnWidth--; // the total column width shouldn't match the outerWidth // GS-2190 reducing width seems to be not needed\n\n var columnsWidth = Math.max(newColumnWidth, width);\n innerWidth = this._setColumnsWidth(columnsWidth);\n outerWidth = width;\n }\n\n if (this.$config.scrollable) {\n this.$grid_scale.style.width = innerWidth + \"px\";\n this.$grid_data.style.width = innerWidth + \"px\";\n } else {\n this.$grid_scale.style.width = \"inherit\";\n this.$grid_data.style.width = \"inherit\";\n }\n\n this.$config.width -= 1;\n var config = this.$getConfig();\n\n if (outerWidth !== width) {\n if (outerWidth !== undefined) {\n config.grid_width = outerWidth;\n this.$config.width = outerWidth - 1;\n } else {\n if (!isNaN(innerWidth)) {\n this._setColumnsWidth(innerWidth);\n\n config.grid_width = innerWidth;\n this.$config.width = innerWidth - 1;\n }\n }\n }\n\n var dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n this.$grid_data.style.height = dataHeight + \"px\";\n this.refresh();\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this._getGridWidth();\n\n var size = {\n x: this.$state.width,\n y: this.$state.height,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n return size;\n },\n _bindStore: function _bindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n this.$config.rowStore = rowStore;\n\n if (rowStore && !rowStore._gridCacheAttached) {\n var self = this;\n rowStore._gridCacheAttached = rowStore.attachEvent(\"onBeforeFilter\", function () {\n self._resetTopPositionHeight();\n });\n }\n }\n },\n _unbindStore: function _unbindStore() {\n if (this.$config.bind) {\n var rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n if (rowStore && rowStore._gridCacheAttached) {\n rowStore.detachEvent(rowStore._gridCacheAttached);\n rowStore._gridCacheAttached = false;\n }\n }\n },\n refresh: function refresh() {\n this._bindStore();\n\n this._resetTopPositionHeight();\n\n this._resetHeight();\n\n this._initSmartRenderingPlaceholder();\n\n this._calculateGridWidth();\n\n this._renderGridHeader();\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (left * 1 == left) {\n this.$config.scrollLeft = this.$state.scrollLeft = this.$grid.scrollLeft = left;\n scrolled = true;\n } // var config = this.$getConfig();\n\n\n if (top * 1 == top) {\n this.$config.scrollTop = this.$state.scrollTop = this.$grid_data.scrollTop = top;\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n getColumnIndex: function getColumnIndex(name, excludeHidden) {\n var columns = this.$getConfig().columns;\n var hiddenIndexShift = 0;\n\n for (var i = 0; i < columns.length; i++) {\n // GS-1257. If the cell is hidden, the target column index should be correct\n if (excludeHidden && columns[i].hide) {\n hiddenIndexShift++;\n }\n\n if (columns[i].name == name) {\n return i - hiddenIndexShift;\n }\n }\n\n return null;\n },\n getColumn: function getColumn(name) {\n var index = this.getColumnIndex(name);\n\n if (index === null) {\n return null;\n }\n\n return this.$getConfig().columns[index];\n },\n getGridColumns: function getGridColumns() {\n var config = this.$getConfig();\n return config.columns.slice();\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$grid.offsetWidth;\n }\n },\n // getItemHeight: function () {\n // \tvar config = this.$getConfig();\n // \treturn config.row_height;\n // },\n _createLayerConfig: function _createLayerConfig() {\n var gantt = this.$gantt;\n var self = this;\n var layers = [{\n renderer: gantt.$ui.layers.gridLine(),\n container: this.$grid_data,\n filter: [function () {\n return self.isVisible();\n }]\n }, {\n renderer: gantt.$ui.layers.gridTaskRowResizer(),\n container: this.$grid_data,\n append: true,\n filter: [function () {\n return gantt.config.resize_rows;\n }]\n }];\n return layers;\n },\n _addLayers: function _addLayers(gantt) {\n if (!this.$config.bind) return;\n this._taskLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$grid_data;\n }\n });\n }\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n }\n\n this._bindStore();\n\n this._initSmartRenderingPlaceholder();\n },\n _refreshPlaceholderOnStoreUpdate: function _refreshPlaceholderOnStoreUpdate(id) {\n var config = this.$getConfig(),\n store = this.$config.rowStore;\n\n if (!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n return;\n }\n\n var contentHeight;\n\n if (this.$config.scrollY) {\n var scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n if (scroll) contentHeight = scroll.getScrollState().scrollSize;\n }\n\n if (!contentHeight) {\n contentHeight = store ? this.getTotalHeight() : 0;\n }\n\n if (contentHeight) {\n if (this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode) {\n this.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n }\n\n var placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n placeholder.style.visibility = \"hidden\";\n placeholder.style.height = contentHeight + \"px\";\n placeholder.style.width = \"1px\";\n this.$grid_data.appendChild(placeholder);\n }\n },\n _initSmartRenderingPlaceholder: function _initSmartRenderingPlaceholder() {\n var store = this.$config.rowStore;\n\n if (!store) {\n return;\n } else {\n this._initSmartRenderingPlaceholder = function () {};\n }\n\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n },\n _initEvents: function _initEvents() {\n var gantt = this.$gantt;\n\n this._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.close(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n var store = this.$config.rowStore;\n if (!store) return true;\n var target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\n if (target) {\n store.open(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n this._taskLayers = [];\n },\n _getColumnWidth: function _getColumnWidth(column, config, width) {\n var min_width = column.min_width || config.min_grid_column_width;\n var new_width = Math.max(width, min_width || 10);\n if (column.max_width) new_width = Math.min(new_width, column.max_width);\n return new_width;\n },\n // set min width only if width < than config.min_grid_column_width\n _checkGridColumnMinWidthLimits: function _checkGridColumnMinWidthLimits(columns, config) {\n for (var i = 0, l = columns.length; i < l; i++) {\n var width = columns[i].width * 1;\n\n if (!columns[i].min_width && width < config.min_grid_column_width) {\n columns[i].min_width = width;\n }\n }\n },\n // return min and max possible grid width according to restricts\n _getGridWidthLimits: function _getGridWidthLimits() {\n var config = this.$getConfig(),\n columns = this.getGridColumns(),\n min_limit = 0,\n max_limit = 0;\n\n for (var i = 0; i < columns.length; i++) {\n min_limit += columns[i].min_width ? columns[i].min_width : config.min_grid_column_width;\n\n if (max_limit !== undefined) {\n max_limit = columns[i].max_width ? max_limit + columns[i].max_width : undefined;\n }\n }\n\n this._checkGridColumnMinWidthLimits(columns, config); // FIX ME: should it be before calculating limits?\n\n\n return [min_limit, max_limit];\n },\n // resize columns to get total newWidth, starting from columns[start_index]\n _setColumnsWidth: function _setColumnsWidth(newWidth, start_index) {\n var config = this.$getConfig();\n var columns = this.getGridColumns(),\n columns_width = 0,\n final_width = newWidth;\n start_index = !window.isNaN(start_index) ? start_index : -1;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n\n if (window.isNaN(columns_width)) {\n this._calculateGridWidth();\n\n columns_width = 0;\n\n for (var i = 0, l = columns.length; i < l; i++) {\n columns_width += columns[i].width * 1;\n }\n }\n\n var extra_width = final_width - columns_width;\n var start_width = 0;\n\n for (var i = 0; i < start_index + 1; i++) {\n start_width += columns[i].width;\n }\n\n columns_width -= start_width;\n\n for (var i = start_index + 1; i < columns.length; i++) {\n var col = columns[i];\n var share = Math.round(extra_width * (col.width / columns_width)); // columns have 2 additional restrict fields - min_width & max_width that are set by user\n\n if (extra_width < 0) {\n if (col.min_width && col.width + share < col.min_width) share = col.min_width - col.width;else if (!col.min_width && config.min_grid_column_width && col.width + share < config.min_grid_column_width) share = config.min_grid_column_width - col.width;\n } else if (col.max_width && col.width + share > col.max_width) share = col.max_width - col.width;\n\n columns_width -= col.width;\n col.width += share;\n extra_width -= share;\n }\n\n var iterator = extra_width > 0 ? 1 : -1;\n\n while (extra_width > 0 && iterator === 1 || extra_width < 0 && iterator === -1) {\n var curExtra = extra_width;\n\n for (i = start_index + 1; i < columns.length; i++) {\n var new_width = columns[i].width + iterator;\n\n if (new_width == this._getColumnWidth(columns[i], config, new_width)) {\n extra_width -= iterator;\n columns[i].width = new_width;\n }\n\n if (!extra_width) break;\n }\n\n if (curExtra == extra_width) break;\n } // if impossible to resize the right-side columns, resize the start column\n\n\n if (extra_width && start_index > -1) {\n var new_width = columns[start_index].width + extra_width;\n if (new_width == this._getColumnWidth(columns[start_index], config, new_width)) columns[start_index].width = new_width;\n } //if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n //\treturn;\n\n\n return this._getColsTotalWidth();\n },\n _getColsTotalWidth: function _getColsTotalWidth() {\n var columns = this.getGridColumns();\n var cols_width = 0;\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n return false;\n }\n\n cols_width += v;\n }\n\n return cols_width;\n },\n _calculateGridWidth: function _calculateGridWidth() {\n var config = this.$getConfig();\n var columns = this.getGridColumns();\n var cols_width = 0;\n var unknown = [];\n var width = [];\n\n for (var i = 0; i < columns.length; i++) {\n var v = parseFloat(columns[i].width);\n\n if (window.isNaN(v)) {\n v = config.min_grid_column_width || 10;\n unknown.push(i);\n }\n\n width[i] = v;\n cols_width += v;\n }\n\n var gridWidth = this._getGridWidth() + 1;\n\n if (config.autofit || unknown.length) {\n var diff = gridWidth - cols_width; // TODO: logic may be improved for proportional changing of width\n // autofit adjusts columns widths to the outer grid width\n // it doesn't makes sense if grid has inner scroll with elastic columns\n\n if (config.autofit && !config.grid_elastic_columns) {\n // delta must be added for all columns\n for (var i = 0; i < width.length; i++) {\n var delta = Math.round(diff / (width.length - i));\n width[i] += delta;\n\n var new_width = this._getColumnWidth(columns[i], config, width[i]);\n\n if (new_width != width[i]) {\n delta = new_width - width[i];\n width[i] = new_width;\n }\n\n diff -= delta;\n }\n } else if (unknown.length) {\n // there are several columns with undefined width\n for (var i = 0; i < unknown.length; i++) {\n var delta = Math.round(diff / (unknown.length - i)); // no float values, just integer\n\n var index = unknown[i];\n width[index] += delta;\n\n var new_width = this._getColumnWidth(columns[index], config, width[index]);\n\n if (new_width != width[index]) {\n delta = new_width - width[index];\n width[index] = new_width;\n }\n\n diff -= delta;\n }\n }\n\n for (var i = 0; i < width.length; i++) {\n columns[i].width = width[i];\n }\n } else {\n var changed = gridWidth != cols_width;\n this.$config.width = cols_width - 1;\n config.grid_width = cols_width;\n\n if (changed) {\n this.$parent._setContentSize(this.$config.width, null);\n }\n }\n },\n _renderGridHeader: function _renderGridHeader() {\n var gantt = this.$gantt;\n var config = this.$getConfig();\n var locale = this.$gantt.locale;\n var templates = this.$gantt.templates;\n var columns = this.getGridColumns();\n\n if (config.rtl) {\n columns = columns.reverse();\n }\n\n var cells = [];\n var width = 0,\n labels = locale.labels;\n var lineHeigth = config.scale_height - 1;\n\n for (var i = 0; i < columns.length; i++) {\n var last = i == columns.length - 1;\n var col = columns[i]; // ensure columns have non-empty names\n\n if (!col.name) {\n col.name = gantt.uid() + \"\";\n }\n\n var colWidth = col.width * 1;\n\n var gridWidth = this._getGridWidth();\n\n if (last && gridWidth > width + colWidth) col.width = colWidth = gridWidth - width;\n width += colWidth;\n var sort = gantt._sort && col.name == gantt._sort.name ? \"
\" : \"\";\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 = \"
\" + label + sort + \"
\";\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;","export enum ConstraintTypes {\n\t// As Soon As Possible (ASAP)\n\tASAP = \"asap\",\n\t// As Late As Possible (ALAP)\n\tALAP = \"alap\",\n\t// Start No Earlier Than (SNET)\n\tSNET = \"snet\",\n\t// Start No Later Than (SNLT)\n\tSNLT = \"snlt\",\n\t// Finish No Earlier Than (FNET)\n\tFNET = \"fnet\",\n\t// Finish No Later Than (FNLT)\n\tFNLT = \"fnlt\",\n\t// Must Start On (MSO)\n\tMSO = \"mso\",\n\t// Must Finish On (MFO)\n\tMFO = \"mfo\"\n}","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 utils = require(\"../../../utils/utils\");\n\nvar Timeline = require(\"./timeline\");\n\nvar resourceStoreMixin = require(\"../resource_store_mixin\");\n\nvar __extends = require(\"../../../utils/extends\");\n\nvar ResourceTimeline = function (_super) {\n function ResourceTimeline(parent, config, factory, gantt) {\n var self = _super.apply(this, arguments) || this;\n self.$config.bindLinks = null;\n return self;\n }\n\n __extends(ResourceTimeline, _super);\n\n utils.mixin(ResourceTimeline.prototype, {\n init: function init() {\n if (this.$config.bind === undefined) {\n this.$config.bind = this.$getConfig().resource_store;\n }\n\n _super.prototype.init.apply(this, arguments);\n },\n _createLayerConfig: function _createLayerConfig() {\n var self = this;\n\n var taskFilter = function taskFilter() {\n return self.isVisible();\n };\n\n var taskLayers = [{\n renderer: this.$gantt.$ui.layers.resourceRow(),\n container: this.$task_bars,\n filter: [taskFilter]\n }, {\n renderer: this.$gantt.$ui.layers.taskBg(),\n container: this.$task_bg,\n filter: [taskFilter]\n }];\n var linkLayers = [];\n return {\n tasks: taskLayers,\n links: linkLayers\n };\n }\n }, true);\n utils.mixin(ResourceTimeline.prototype, resourceStoreMixin(ResourceTimeline), true);\n return ResourceTimeline;\n}(Timeline);\n\nmodule.exports = ResourceTimeline;","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 += \"
\";\n this.$task = container.childNodes[0];\n this.$task.innerHTML = \"
\";\n this.$task_scale = this.$task.childNodes[0];\n this.$task_data = this.$task.childNodes[1];\n this.$task_data.innerHTML = \"
\";\n this.$task_bg = this.$task_data.childNodes[0];\n this.$task_links = this.$task_data.childNodes[1];\n this.$task_bars = this.$task_data.childNodes[2];\n this._tasks = {\n col_width: 0,\n width: [],\n // width of each column\n full_width: 0,\n // width of all columns\n trace_x: [],\n rendered: {}\n };\n var config = this.$getConfig();\n var attr = config[this.$config.bind + \"_attribute\"];\n var linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\n if (!attr && this.$config.bind) {\n attr = \"data-\" + this.$config.bind + \"-id\";\n }\n\n if (!linksAttr && this.$config.bindLinks) {\n linksAttr = \"data-\" + this.$config.bindLinks + \"-id\";\n }\n\n this.$config.item_attribute = attr || null;\n this.$config.link_attribute = linksAttr || null;\n\n var layers = this._createLayerConfig();\n\n if (!this.$config.layers) {\n this.$config.layers = layers.tasks;\n }\n\n if (!this.$config.linkLayers) {\n this.$config.linkLayers = layers.links;\n }\n\n this._attachLayers(this.$gantt);\n\n this.callEvent(\"onReady\", []); //this.refresh();\n\n if (this.$gantt.ext.dragTimeline) {\n this._timelineDragScroll = this.$gantt.ext.dragTimeline.create();\n\n this._timelineDragScroll.attach(this);\n }\n },\n setSize: function setSize(width, height) {\n var config = this.$getConfig();\n\n if (width * 1 === width) {\n this.$config.width = width;\n }\n\n if (height * 1 === height) {\n this.$config.height = height;\n var dataHeight = Math.max(this.$config.height - config.scale_height);\n this.$task_data.style.height = dataHeight + 'px';\n }\n\n this.refresh();\n this.$task_bg.style.backgroundImage = \"\";\n\n if (config.smart_rendering && this.$config.rowStore) {\n this.$task_bg.style.height = this.getTotalHeight() + \"px\";\n } else {\n this.$task_bg.style.height = \"\";\n }\n\n var scale = this._tasks; //timeline area layers\n\n var data_els = this.$task_data.childNodes;\n\n for (var i = 0, len = data_els.length; i < len; i++) {\n var el = data_els[i];\n if (el.hasAttribute(\"data-layer\") && el.style) el.style.width = scale.full_width + \"px\";\n }\n },\n isVisible: function isVisible() {\n if (this.$parent && this.$parent.$config) {\n return !this.$parent.$config.hidden;\n } else {\n return this.$task.offsetWidth;\n }\n },\n getSize: function getSize() {\n var config = this.$getConfig();\n var store = this.$config.rowStore;\n var contentHeight = store ? this.getTotalHeight() : 0,\n contentWidth = this.isVisible() ? this._tasks.full_width : 0;\n return {\n x: this.isVisible() ? this.$config.width : 0,\n y: this.isVisible() ? this.$config.height : 0,\n contentX: this.isVisible() ? contentWidth : 0,\n contentY: this.isVisible() ? config.scale_height + contentHeight : 0,\n scrollHeight: this.isVisible() ? contentHeight : 0,\n scrollWidth: this.isVisible() ? contentWidth : 0\n };\n },\n scrollTo: function scrollTo(left, top) {\n if (!this.isVisible()) return;\n var scrolled = false;\n this.$config.scrollTop = this.$config.scrollTop || 0;\n this.$config.scrollLeft = this.$config.scrollLeft || 0;\n\n if (top * 1 === top) {\n this.$config.scrollTop = top;\n this.$task_data.scrollTop = this.$config.scrollTop;\n scrolled = true;\n }\n\n if (left * 1 === left) {\n this.$task.scrollLeft = left;\n this.$config.scrollLeft = this.$task.scrollLeft;\n\n this._refreshScales();\n\n scrolled = true;\n }\n\n if (scrolled) {\n this.callEvent(\"onScroll\", [this.$config.scrollLeft, this.$config.scrollTop]);\n }\n },\n _refreshScales: function _refreshScales() {\n if (!this.isVisible()) return;\n var config = this.$getConfig();\n if (!config.smart_scales) return;\n var viewPort = this.getViewPort();\n var scales = this._scales;\n this.$task_scale.innerHTML = this._getScaleChunkHtml(scales, viewPort.x, viewPort.x_end);\n },\n getViewPort: function getViewPort() {\n var scrollLeft = this.$config.scrollLeft || 0;\n var scrollTop = this.$config.scrollTop || 0;\n var height = this.$config.height || 0;\n var width = this.$config.width || 0;\n return {\n y: scrollTop,\n y_end: scrollTop + height,\n x: scrollLeft,\n x_end: scrollLeft + width,\n height: height,\n width: width\n };\n },\n _createLayerConfig: function _createLayerConfig() {\n var self = this;\n\n var taskFilter = function taskFilter() {\n return self.isVisible();\n };\n\n var barVisible = function barVisible(id, task) {\n return !task.hide_bar;\n };\n\n var taskLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.taskBar(),\n container: this.$task_bars,\n filter: [taskFilter, barVisible]\n }, {\n renderer: this.$gantt.$ui.layers.taskSplitBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskRollupBar(),\n filter: [taskFilter],\n container: this.$task_bars,\n append: true\n }, {\n renderer: this.$gantt.$ui.layers.taskBg(),\n container: this.$task_bg,\n filter: [//function(){\n //\treturn !self.$getConfig().static_background;\n //},\n taskFilter]\n }];\n var linkLayers = [{\n expose: true,\n renderer: this.$gantt.$ui.layers.link(),\n container: this.$task_links,\n filter: [taskFilter]\n }];\n return {\n tasks: taskLayers,\n links: linkLayers\n };\n },\n _attachLayers: function _attachLayers(gantt) {\n this._taskLayers = [];\n this._linkLayers = [];\n var self = this;\n var layers = this.$gantt.$services.getService(\"layers\");\n\n if (this.$config.bind) {\n this._bindStore();\n\n var taskRenderer = layers.getDataRender(this.$config.bind);\n\n if (!taskRenderer) {\n taskRenderer = layers.createDataRender({\n name: this.$config.bind,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n taskRenderer.container = function () {\n return self.$task_data;\n };\n\n var taskLayers = this.$config.layers;\n\n for (var i = 0; taskLayers && i < taskLayers.length; i++) {\n var layer = taskLayers[i];\n\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n if (typeof layer == \"function\" || layer && layer.render && layer.update) {\n layer = {\n renderer: layer\n };\n }\n\n layer.view = this;\n var bar_layer = taskRenderer.addLayer(layer);\n\n this._taskLayers.push(bar_layer);\n\n if (layer.expose) {\n this._taskRenderer = taskRenderer.getLayer(bar_layer);\n }\n }\n\n this._initStaticBackgroundRender();\n }\n\n if (this.$config.bindLinks) {\n self.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (!linkRenderer) {\n linkRenderer = layers.createDataRender({\n name: this.$config.bindLinks,\n defaultContainer: function defaultContainer() {\n return self.$task_data;\n }\n });\n }\n\n var linkLayers = this.$config.linkLayers;\n\n for (var i = 0; linkLayers && i < linkLayers.length; i++) {\n if (typeof layer == \"string\") {\n layer = this.$gantt.$ui.layers[layer]();\n }\n\n var layer = linkLayers[i];\n layer.view = this; //\tlayer.getViewPort = getViewPort;\n //\tsubscribeSmartRender(layer);\n\n var linkLayer = linkRenderer.addLayer(layer);\n\n this._taskLayers.push(linkLayer);\n\n if (linkLayers[i].expose) {\n this._linkRenderer = linkRenderer.getLayer(linkLayer);\n }\n }\n }\n },\n _initStaticBackgroundRender: function _initStaticBackgroundRender() {\n var self = this;\n var staticRender = canvasRender.create();\n var store = self.$config.rowStore;\n if (!store) return;\n this._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function (id, item, mode) {\n if (id !== null) {\n return;\n }\n\n if (!self.isVisible()) return;\n var config = self.$getConfig();\n\n if (config.static_background || config.timeline_placeholder) {\n var store = self.$gantt.getDatastore(self.$config.bind);\n var staticBgContainer = self.$task_bg_static;\n\n if (!staticBgContainer) {\n staticBgContainer = document.createElement(\"div\");\n staticBgContainer.className = \"gantt_task_bg\";\n self.$task_bg_static = staticBgContainer;\n\n if (self.$task_bg.nextSibling) {\n self.$task_data.insertBefore(staticBgContainer, self.$task_bg.nextSibling);\n } else {\n self.$task_data.appendChild(staticBgContainer);\n }\n }\n\n if (store) {\n var staticBackgroundHeight = self.getTotalHeight();\n\n if (config.timeline_placeholder) {\n staticBackgroundHeight = config.timeline_placeholder.height || self.$task_data.offsetHeight || 99999;\n }\n\n staticRender.render(staticBgContainer, config, self.getScale(), staticBackgroundHeight, self.getItemHeight(item ? item.id : null));\n }\n } else if (config.static_background) {\n if (self.$task_bg_static && self.$task_bg_static.parentNode) {\n self.$task_bg_static.parentNode.removeChild(self.$task_bg_static);\n }\n }\n });\n this.attachEvent(\"onDestroy\", function () {\n staticRender.destroy();\n });\n\n this._initStaticBackgroundRender = function () {}; //init once\n\n },\n _clearLayers: function _clearLayers(gantt) {\n var layers = this.$gantt.$services.getService(\"layers\");\n var taskRenderer = layers.getDataRender(this.$config.bind);\n var linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n if (this._taskLayers) {\n for (var i = 0; i < this._taskLayers.length; i++) {\n taskRenderer.removeLayer(this._taskLayers[i]);\n }\n }\n\n if (this._linkLayers) {\n for (var i = 0; i < this._linkLayers.length; i++) {\n linkRenderer.removeLayer(this._linkLayers[i]);\n }\n }\n\n this._linkLayers = [];\n this._taskLayers = [];\n },\n _render_tasks_scales: function _render_tasks_scales() {\n var config = this.$getConfig();\n var scales_html = \"\",\n outer_width = 0,\n scale_height = 0;\n var state = this.$gantt.getState();\n\n if (this.isVisible()) {\n var helpers = this.$scaleHelper;\n\n var scales = this._getScales();\n\n scale_height = config.scale_height;\n var availWidth = this.$config.width;\n\n if (config.autosize == \"x\" || config.autosize == \"xy\") {\n availWidth = Math.max(config.autosize_min_width, 0);\n }\n\n var cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n var cfg = this._tasks = cfgs[cfgs.length - 1];\n this._scales = cfgs;\n this._posFromDateCache = {};\n scales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n outer_width = cfg.full_width + \"px\"; //cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\n scale_height += \"px\";\n }\n\n this.$task_scale.style.height = scale_height;\n this.$task_data.style.width = this.$task_scale.style.width = outer_width;\n this.$task_scale.innerHTML = scales_html;\n },\n _getScaleChunkHtml: function _get_scale_chunk_html(scales, fromPos, toPos) {\n var templates = this.$gantt.templates;\n var html = [];\n var css = templates.scale_row_class;\n\n for (var i = 0; i < scales.length; i++) {\n var cssClass = \"gantt_scale_line\";\n var tplClass = css(scales[i]);\n\n if (tplClass) {\n cssClass += \" \" + tplClass;\n }\n\n html.push(\"
\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"
\");\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 = \"
\" + value + \"
\";\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;","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n Cell = require(\"./cell\");\n\nvar Layout = function (_super) {\n \"use strict\";\n\n __extends(Layout, _super);\n\n function Layout(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n if (parent) _this.$root = true;\n\n _this._parseConfig(config);\n\n _this.$name = \"layout\";\n return _this;\n }\n\n Layout.prototype.destructor = function () {\n if (this.$container && this.$view) {\n domHelpers.removeNode(this.$view);\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n child.destructor();\n }\n\n this.$cells = [];\n\n _super.prototype.destructor.call(this);\n };\n\n Layout.prototype._resizeScrollbars = function (autosize, scrollbars) {\n var scrollChanged = false;\n var visibleScrollbars = [],\n hiddenScrollbars = [];\n var scrollbarsToHide = [];\n\n function showScrollbar(scrollbar) {\n scrollbar.$parent.show();\n scrollChanged = true;\n visibleScrollbars.push(scrollbar);\n }\n\n function hideScrollbar(scrollbar) {\n scrollbar.$parent.hide();\n scrollChanged = true;\n hiddenScrollbars.push(scrollbar);\n }\n\n var scrollbar;\n\n for (var i = 0; i < scrollbars.length; i++) {\n scrollbar = scrollbars[i];\n\n if (autosize[scrollbar.$config.scroll]) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldHide()) {\n //hideScrollbar(scrollbar);\n scrollbarsToHide.push(scrollbar);\n } else if (scrollbar.shouldShow()) {\n showScrollbar(scrollbar);\n } else {\n if (scrollbar.isVisible()) {\n visibleScrollbars.push(scrollbar);\n } else {\n hiddenScrollbars.push(scrollbar);\n }\n }\n }\n\n var visibleGroups = {};\n\n for (var i = 0; i < visibleScrollbars.length; i++) {\n if (visibleScrollbars[i].$config.group) {\n visibleGroups[visibleScrollbars[i].$config.group] = true;\n }\n } // GS-2220\n\n\n scrollbarsToHide.forEach(function (scrollbar) {\n if (!(scrollbar.$config.group && visibleGroups[scrollbar.$config.group])) {\n hideScrollbar(scrollbar);\n }\n });\n\n for (var i = 0; i < hiddenScrollbars.length; i++) {\n scrollbar = hiddenScrollbars[i];\n\n if (scrollbar.$config.group && visibleGroups[scrollbar.$config.group]) {\n showScrollbar(scrollbar); // GS-707 If the scrollbar was hidden then showed, the container resize shouldn't happen because of that\n\n for (var j = 0; j < visibleScrollbars.length; j++) {\n if (visibleScrollbars[j] == scrollbar) {\n this.$gantt.$scrollbarRepaint = true;\n break;\n }\n }\n }\n }\n\n return scrollChanged;\n };\n\n Layout.prototype._syncCellSizes = function (groupName, newSize) {\n if (!groupName) return;\n var groups = {};\n\n this._eachChild(function (cell) {\n if (cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\") {\n if (!groups[cell.$config.group]) {\n groups[cell.$config.group] = [];\n }\n\n groups[cell.$config.group].push(cell);\n }\n });\n\n if (groups[groupName]) {\n this._syncGroupSize(groups[groupName], newSize);\n }\n\n return groups[groupName];\n };\n\n Layout.prototype._syncGroupSize = function (cells, newSize) {\n if (!cells.length) return;\n var property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n var direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n var newSizeValue = newSize.value;\n var isGravity = newSize.isGravity;\n\n for (var i = 0; i < cells.length; i++) {\n var ownSize = cells[i].getSize();\n var resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\n if (resizeSibling.$name == \"resizer\") {\n resizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n }\n\n var siblingSize = resizeSibling.getSize();\n\n if (!isGravity) {\n if (resizeSibling[property]) {\n var totalGravity = ownSize.gravity + siblingSize.gravity;\n var totalSize = ownSize[property] + siblingSize[property];\n var k = totalGravity / totalSize;\n cells[i].$config.gravity = k * newSizeValue;\n resizeSibling.$config[property] = totalSize - newSizeValue;\n resizeSibling.$config.gravity = totalGravity - k * newSizeValue;\n } else {\n cells[i].$config[property] = newSizeValue;\n }\n } else {\n cells[i].$config.gravity = newSizeValue;\n }\n\n var mainGrid = this.$gantt.$ui.getView(\"grid\");\n\n if (mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable && !isGravity) {\n this.$gantt.config.grid_width = newSizeValue;\n }\n }\n };\n\n Layout.prototype.resize = function (startStage) {\n var mainCall = false;\n\n if (this.$root && !this._resizeInProgress) {\n this.callEvent(\"onBeforeResize\", []);\n mainCall = true;\n this._resizeInProgress = true;\n }\n\n _super.prototype.resize.call(this, true);\n\n _super.prototype.resize.call(this, false);\n\n if (mainCall) {\n var contentViews = [];\n contentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n contentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n contentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n var scrollbars = this.getCellsByType(\"scroller\");\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n\n var autosize = this._getAutosizeMode(this.$config.autosize);\n /* // possible to rollback set content size when autisize is disabled, not sure if need to\n \t\tcontentViews.forEach(function(view){\n \t\t\tconst parent = view.$parent;\n \t\t\tif(!autosize.x){\n \t\t\t\tif(parent.$config.$originalWidthStored){\n \t\t\t\t\tparent.$config.$originalWidthStored = false;\n \t\t\t\t\tparent.$config.width = parent.$config.$originalWidth;\n \t\t\t\t\tparent.$config.$originalWidth = undefined;\n \t\t\t\t}\n \t\t\t}\n \t\t\t\tif(!autosize.y){\n \t\t\t\tif(parent.$config.$originalHeightStored){\n \t\t\t\t\tparent.$config.$originalHeightStored = false;\n \t\t\t\t\tparent.$config.height = parent.$config.$originalHeight;\n \t\t\t\t\tparent.$config.$originalHeight = undefined;\n \t\t\t\t}\n \t\t\t}\n \t\t});*/\n\n\n var scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n if (this.$config.autosize) {\n this.autosize(this.$config.autosize);\n contentViews.forEach(function (view) {\n var parent = view.$parent;\n var sizes = parent.getContentSize(autosize);\n\n if (autosize.x) {\n if (!parent.$config.$originalWidthStored) {\n parent.$config.$originalWidthStored = true;\n parent.$config.$originalWidth = parent.$config.width;\n }\n\n parent.$config.width = sizes.width;\n }\n\n if (autosize.y) {\n if (!parent.$config.$originalHeightStored) {\n parent.$config.$originalHeightStored = true;\n parent.$config.$originalHeight = parent.$config.height;\n }\n\n parent.$config.height = sizes.height;\n }\n });\n scrollChanged = true;\n }\n\n if (scrollChanged) {\n this.resize();\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n }\n\n this.callEvent(\"onResize\", []);\n }\n\n if (mainCall) {\n this._resizeInProgress = false;\n }\n };\n\n Layout.prototype._eachChild = function (code, cell) {\n cell = cell || this;\n code(cell);\n\n if (cell.$cells) {\n for (var i = 0; i < cell.$cells.length; i++) {\n this._eachChild(code, cell.$cells[i]);\n }\n }\n };\n\n Layout.prototype.isChild = function (view) {\n var res = false;\n\n this._eachChild(function (child) {\n if (child === view || child.$content === view) {\n res = true;\n }\n });\n\n return res;\n };\n\n Layout.prototype.getCellsByType = function (type) {\n var res = [];\n\n if (type === this.$name) {\n res.push(this);\n }\n\n if (this.$content && this.$content.$name == type) {\n res.push(this.$content);\n }\n\n if (this.$cells) {\n for (var i = 0; i < this.$cells.length; i++) {\n var children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\n if (children.length) {\n res.push.apply(res, children);\n }\n }\n }\n\n return res;\n };\n\n Layout.prototype.getNextSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index + 1]) {\n return this.$cells[index + 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.getPrevSibling = function (cellId) {\n var index = this.cellIndex(cellId);\n\n if (index >= 0 && this.$cells[index - 1]) {\n return this.$cells[index - 1];\n } else {\n return null;\n }\n };\n\n Layout.prototype.cell = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n var child = this.$cells[i];\n\n if (child.$id === id) {\n return child;\n }\n\n var sub = child.cell(id);\n\n if (sub) {\n return sub;\n }\n }\n };\n\n Layout.prototype.cellIndex = function (id) {\n for (var i = 0; i < this.$cells.length; i++) {\n if (this.$cells[i].$id === id) {\n return i;\n }\n }\n\n return -1;\n };\n\n Layout.prototype.moveView = function (view, ind) {\n if (this.$cells[ind] !== view) {\n return window.alert(\"Not implemented\");\n } else {\n ind += this.$config.header ? 1 : 0;\n var node = this.$view;\n\n if (ind >= node.childNodes.length) {\n node.appendChild(view.$view);\n } else {\n node.insertBefore(view.$view, node.childNodes[ind]);\n }\n }\n };\n\n Layout.prototype._parseConfig = function (config) {\n this.$cells = [];\n this._xLayout = !config.rows;\n var cells = config.rows || config.cols || config.views;\n\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n cell.mode = this._xLayout ? \"x\" : \"y\";\n var $content = this.$factory.initUI(cell, this);\n\n if (!$content) {\n cells.splice(i, 1);\n i--;\n } else {\n $content.$parent = this;\n this.$cells.push($content);\n }\n }\n };\n\n Layout.prototype.getCells = function () {\n return this.$cells;\n };\n\n Layout.prototype.render = function () {\n var view = domHelpers.insertNode(this.$container, this.$toHTML());\n this.$fill(view, null);\n this.callEvent(\"onReady\", []);\n this.resize(); // do simple repaint after the first call\n\n this.render = this.resize;\n };\n\n Layout.prototype.$fill = function (node, parent) {\n this.$view = node;\n this.$parent = parent;\n var cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\n for (var i = cells.length - 1; i >= 0; i--) {\n var sub = this.$cells[i];\n sub.$fill(cells[i], this); // initially hidden cell\n\n if (sub.$config.hidden) {\n sub.$view.parentNode.removeChild(sub.$view);\n }\n }\n };\n\n Layout.prototype.$toHTML = function () {\n var mode = this._xLayout ? \"x\" : \"y\";\n var html = [];\n\n for (var i = 0; i < this.$cells.length; i++) {\n html.push(this.$cells[i].$toHTML());\n }\n\n return _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n };\n\n Layout.prototype.getContentSize = function (mode) {\n var contentWidth = 0,\n contentHeight = 0;\n var cellSize, cell, borders;\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n if (cell.$config.hidden) continue;\n cellSize = cell.getContentSize(mode);\n\n if (cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]) {\n cellSize.height = 0;\n cellSize.width = 0;\n }\n\n if (cell.$config.resizer) {\n if (this._xLayout) {\n cellSize.height = 0;\n } else {\n cellSize.width = 0;\n }\n }\n\n borders = cell._getBorderSizes();\n\n if (this._xLayout) {\n contentWidth += cellSize.width + borders.horizontal;\n contentHeight = Math.max(contentHeight, cellSize.height + borders.vertical);\n } else {\n contentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n contentHeight += cellSize.height + borders.vertical;\n }\n }\n\n borders = this._getBorderSizes();\n contentWidth += borders.horizontal;\n contentHeight += borders.vertical; // GS-149 & GS-150: By default this code only increases the container sizes, because of that, the cell sizes\n // are also increased. Keep this code here in the case if something goes wrong\n\n /*\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 = null;\n var parentVisibility = [];\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hide_empty) {\n parentVisibility.push(cell);\n }\n\n if (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n cell._hide(true);\n } else if (!cell.$config.hidden && !oldVisibleCells[cell.$id]) {\n cell._hide(false);\n }\n\n if (!cell.$config.hidden) {\n visibleCells[cell.$id] = true;\n }\n }\n\n this._visibleCells = visibleCells; // GS-27. A way to hide the whole cell if all its children are hidden\n\n for (var i = 0; i < parentVisibility.length; i++) {\n var cell = parentVisibility[i];\n var children = cell.$cells;\n var hideCell = true;\n children.forEach(function (child) {\n if (!child.$config.hidden && !child.$config.resizer) {\n hideCell = false;\n }\n });\n cell.$config.hidden = hideCell;\n }\n };\n\n Layout.prototype.setSize = function (x, y) {\n this._configureBorders();\n\n _super.prototype.setSize.call(this, x, y);\n\n y = this.$lastSize.contentY;\n x = this.$lastSize.contentX;\n var padding = this.$config.padding || 0;\n this.$view.style.padding = padding + \"px\";\n this._gravity = 0;\n this._free = this._xLayout ? x : y;\n this._free -= padding * 2; // calc all gravity\n\n var cell, size;\n\n this._updateCellVisibility();\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n var margin = this.$config.margin || 0;\n\n if (cell.$name == \"resizer\" && !margin) {\n margin = -1;\n } // set margins to child cell\n\n\n var cellView = cell.$view;\n var marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\n if (i !== this.$cells.length - 1) {\n cellView.style[marginSide] = margin + \"px\";\n this._free -= margin; // calc free space without margin\n }\n\n size = this._sizes[i];\n\n if (this._xLayout) {\n if (!size.width) {\n this._gravity += size.gravity;\n }\n } else {\n if (!size.height) {\n this._gravity += size.gravity;\n }\n }\n }\n\n for (var i = 0; i < this._sizes.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var width = size.width;\n var height = size.height;\n\n if (this._xLayout) {\n this._calcFreeSpace(width, size, true);\n } else {\n this._calcFreeSpace(height, size, false);\n }\n }\n\n for (var i = 0; i < this.$cells.length; i++) {\n cell = this.$cells[i];\n\n if (cell.$config.hidden) {\n continue;\n }\n\n size = this._sizes[i];\n var dx = void 0;\n var dy = void 0;\n\n if (this._xLayout) {\n dx = this._calcSize(size.width, size, true);\n dy = y - padding * 2; // layout height without paddings\n } else {\n dx = x - padding * 2; // layout width without paddings\n\n dy = this._calcSize(size.height, size, false);\n }\n\n cell.setSize(dx, dy);\n }\n };\n\n return Layout;\n}(Cell);\n\nmodule.exports = Layout;","// optimized checker for links smart rendering\n// first check the vertical position since it's easier to calculate\nmodule.exports = function isLinkInViewPort(item, viewport, view, config, gantt) {\n var source = view.$gantt.getTask(item.source);\n var target = view.$gantt.getTask(item.target); // check vertical visibility first since it's a lighter check\n\n var sourceTop = view.getItemTop(source.id);\n var sourceHeight = view.getItemHeight(source.id);\n var targetTop = view.getItemTop(target.id);\n var targetHeight = view.getItemHeight(target.id);\n\n if (viewport.y > sourceTop + sourceHeight && viewport.y > targetTop + targetHeight) {\n return false;\n }\n\n if (viewport.y_end < targetTop && viewport.y_end < sourceTop) {\n return false;\n }\n\n var padding = 100;\n var sourceLeft = view.posFromDate(source.start_date);\n var sourceRight = view.posFromDate(source.end_date);\n var targetLeft = view.posFromDate(target.start_date);\n var targetRight = view.posFromDate(target.end_date);\n\n if (sourceLeft > sourceRight) {\n // rtl\n var tmp = sourceRight;\n sourceRight = sourceLeft;\n sourceLeft = tmp;\n }\n\n if (targetLeft > targetRight) {\n // rtl\n var tmp = targetRight;\n targetRight = targetLeft;\n targetLeft = tmp;\n }\n\n sourceLeft += -padding; // add buffer for custom elements\n\n sourceRight += padding;\n targetLeft += -padding; // add buffer for custom elements\n\n targetRight += padding;\n\n if (viewport.x > sourceRight && viewport.x > targetRight) {\n return false;\n }\n\n if (viewport.x_end < sourceLeft && viewport.x_end < targetLeft) {\n return false;\n }\n\n return true;\n};","var getLinkRectangle = require(\"../get_link_rectangle\");\n\nmodule.exports = function () {\n var coordinates = [];\n var calculated = false;\n\n function clearCache() {\n coordinates = [];\n calculated = false;\n }\n\n function buildCache(datastore, view, gantt) {\n var config = view.$getConfig();\n var visibleItems = datastore.getVisibleItems(); //datastore.eachItem(function(link){\n\n visibleItems.forEach(function (link) {\n var rec = getLinkRectangle(link, view, config, gantt);\n\n if (!rec) {\n return;\n }\n\n coordinates.push({\n id: link.id,\n rec: rec\n });\n });\n coordinates.sort(function (a, b) {\n if (a.rec.right < b.rec.right) {\n return -1;\n } else {\n return 1;\n }\n });\n calculated = true;\n }\n\n var initialized = false;\n\n function init(datastore) {\n if (initialized) {\n return;\n }\n\n initialized = true;\n datastore.attachEvent(\"onPreFilter\", clearCache);\n datastore.attachEvent(\"onStoreUpdated\", clearCache);\n datastore.attachEvent(\"onClearAll\", clearCache);\n datastore.attachEvent(\"onBeforeStoreUpdate\", clearCache);\n }\n\n return function getVisibleLinksRange(gantt, view, config, datastore, viewport) {\n init(datastore);\n\n if (!calculated) {\n buildCache(datastore, view, gantt);\n }\n\n var visibleBoxes = [];\n\n for (var i = 0; i < coordinates.length; i++) {\n var item = coordinates[i];\n var box = item.rec;\n\n if (box.right < viewport.x) {\n continue;\n }\n\n if (box.left < viewport.x_end && box.right > viewport.x && box.top < viewport.y_end && box.bottom > viewport.y) {\n visibleBoxes.push(item.id);\n }\n }\n\n return {\n ids: visibleBoxes\n };\n };\n};","import { IWorkUnitCache } from \"./workunit_cache_interface\";\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 } // GS-1723: If we iterated all tasks and didn't find the position, the target is below all other tasks\n\n\n return store.countVisible() + 2;\n } else {\n return 0;\n }\n }\n };\n}\n\nmodule.exports = createMixin;","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 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 ScaleHelper = require(\"./scales\");\n\nfunction ScaleIgnoreHelper(gantt) {\n var helper = new ScaleHelper(gantt);\n\n helper.processIgnores = function (config) {\n var display_count = config.count;\n config.ignore_x = {};\n\n if (gantt.ignore_time || gantt.config.skip_off_time) {\n var ignore = gantt.ignore_time || function () {\n return false;\n };\n\n display_count = 0;\n\n for (var i = 0; i < config.trace_x.length; i++) {\n if (ignore.call(gantt, config.trace_x[i]) || this._ignore_time_config.call(gantt, config.trace_x[i], config)) {\n config.ignore_x[config.trace_x[i].valueOf()] = true;\n config.ignored_colls = true;\n } else {\n display_count++;\n }\n }\n }\n\n config.display_count = display_count;\n };\n\n return helper;\n}\n\nmodule.exports = ScaleIgnoreHelper;","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\n\nvar PrimaryScaleHelper = require(\"./ui/timeline/scales\");\n\nfunction resolveConfigRange(unit, gantt) {\n var range = {\n start_date: null,\n end_date: null\n };\n\n if (gantt.config.start_date && gantt.config.end_date) {\n range.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n var end = new Date(gantt.config.end_date);\n var start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\n if (+end != +start_interval) {\n end = gantt.date.add(start_interval, 1, unit);\n } else {\n end = start_interval;\n }\n\n range.end_date = end;\n }\n\n return range;\n}\n\nfunction _scale_range_unit(gantt) {\n var primaryScale = new PrimaryScaleHelper(gantt).primaryScale();\n var unit = primaryScale.unit;\n var step = primaryScale.step;\n\n if (gantt.config.scale_offset_minimal) {\n var helper = new ScaleHelper(gantt);\n var scales = [helper.primaryScale()].concat(helper.getSubScales());\n helper.sortScales(scales);\n unit = scales[scales.length - 1].unit;\n step = scales[scales.length - 1].step || 1;\n }\n\n return {\n unit: unit,\n step: step\n };\n}\n\nfunction _init_tasks_range(gantt) {\n var cfg = _scale_range_unit(gantt);\n\n var unit = cfg.unit,\n step = cfg.step;\n var range = resolveConfigRange(unit, gantt); // GS-1544: Show correct date range if we have tasks or only projects\n\n if (!(range.start_date && range.end_date)) {\n var onlyProjectTasks = true;\n var tasks = gantt.getTaskByTime();\n\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n\n if (task.type !== gantt.config.types.project) {\n onlyProjectTasks = false;\n break;\n }\n }\n\n if (tasks.length && onlyProjectTasks) {\n var start_date = tasks[0].start_date;\n var end_date = gantt.date.add(start_date, 1, gantt.config.duration_unit);\n range = {\n start_date: new Date(start_date),\n end_date: new Date(end_date)\n };\n } else {\n range = gantt.getSubtaskDates();\n }\n\n if (!range.start_date || !range.end_date) {\n range = {\n start_date: new Date(),\n end_date: new Date()\n };\n }\n\n range.start_date = gantt.date[unit + \"_start\"](range.start_date);\n range.start_date = gantt.calculateEndDate({\n start_date: gantt.date[unit + \"_start\"](range.start_date),\n duration: -1,\n unit: unit,\n step: step\n }); //one free column before first task\n\n range.end_date = gantt.date[unit + \"_start\"](range.end_date);\n range.end_date = gantt.calculateEndDate({\n start_date: range.end_date,\n duration: 2,\n unit: unit,\n step: step\n }); //one free column after last task\n }\n\n gantt._min_date = range.start_date;\n gantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n if (gantt.config.fit_tasks) {\n var old_min = +gantt._min_date,\n old_max = +gantt._max_date; //this._init_tasks_range();\n\n if (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = function updateTasksRange(gantt) {\n _init_tasks_range(gantt);\n\n _adjust_scales(gantt);\n};","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar helpers = require(\"../../utils/helpers\");\n\nvar DataStore = require(\"./datastore\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nvar TreeDataStore = function TreeDataStore(config) {\n DataStore.apply(this, [config]);\n this._branches = {};\n this.pull = {}; //GS-761 Update existing item instead of adding it to the new position\n\n this.$initItem = function (item) {\n var loadedItem = item;\n\n if (config.initItem) {\n loadedItem = config.initItem(loadedItem);\n }\n\n var existingItem = this.getItem(item.id);\n\n if (existingItem && existingItem.parent != loadedItem.parent) {\n this.move(loadedItem.id, loadedItem.$index || -1, loadedItem.parent || this._ganttConfig.root_id);\n }\n\n return loadedItem;\n };\n\n this.$parentProperty = config.parentProperty || \"parent\";\n\n if (typeof config.rootId !== \"function\") {\n this.$getRootId = function (val) {\n return function () {\n return val;\n };\n }(config.rootId || 0);\n } else {\n this.$getRootId = config.rootId;\n } // TODO: replace with live reference to gantt config\n\n\n this.$openInitially = config.openInitially;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n this._skip_refresh = false;\n this._ganttConfig = null;\n\n if (config.getConfig) {\n this._ganttConfig = config.getConfig();\n }\n\n var splitParents = {};\n var splitItems = {};\n var taskOpenState = {};\n var taskVisibility = {};\n var haveSplitItems = false;\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n this._getItemsCache = null;\n return true;\n });\n\n this.attachEvent(\"onPreFilter\", function () {\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n haveSplitItems = false;\n this.eachItem(function (item) {\n var parent = this.getParent(item.id);\n\n if (item.$open && taskOpenState[parent] !== false) {\n taskOpenState[item.id] = true;\n } else {\n taskOpenState[item.id] = false;\n }\n\n if (this._isSplitItem(item)) {\n haveSplitItems = true;\n splitParents[item.id] = true;\n splitItems[item.id] = true;\n }\n\n if (haveSplitItems && splitItems[parent]) {\n splitItems[item.id] = true;\n }\n\n if (taskOpenState[parent] || taskOpenState[parent] === undefined) {\n taskVisibility[item.id] = true;\n } else {\n taskVisibility[item.id] = false;\n }\n });\n });\n this.attachEvent(\"onFilterItem\", function (id, item) {\n var canOpenSplitTasks = false;\n\n if (this._ganttConfig) {\n var canOpenSplitTasks = this._ganttConfig.open_split_tasks;\n }\n\n var open = taskVisibility[item.id];\n\n if (haveSplitItems) {\n if (open && splitItems[item.id] && !splitParents[item.id]) {\n open = !!canOpenSplitTasks;\n }\n\n if (splitItems[item.id] && !splitParents[item.id]) {\n item.$split_subtask = true;\n }\n }\n\n item.$expanded_branch = !!taskVisibility[item.id];\n return !!open;\n });\n this.attachEvent(\"onFilter\", function () {\n splitParents = {};\n splitItems = {};\n taskOpenState = {};\n taskVisibility = {};\n });\n return this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n _buildTree: function _buildTree(data) {\n var item = null;\n var rootId = this.$getRootId();\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n this.setParent(item, replaceValidZeroId(this.getParent(item), rootId) || rootId);\n } // calculating $level for each item\n\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n this._add_branch(item);\n\n item.$level = this.calculateItemLevel(item);\n item.$local_index = this.getBranchIndex(item.id);\n\n if (!utils.defined(item.$open)) {\n item.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n }\n }\n\n this._updateOrder();\n },\n _isSplitItem: function _isSplitItem(item) {\n return item.render == \"split\" && this.hasChild(item.id);\n },\n parse: function parse(data) {\n if (!this._skip_refresh) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n this._buildTree(loaded);\n\n this.filter();\n\n if (!this._skip_refresh) {\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n var parent = this.getParent(item);\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n this.setParent(item, parent);\n }\n\n var parentIndex = this.getIndexById(parent);\n var targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n if (targetIndex * 1 !== targetIndex) {\n targetIndex = undefined;\n }\n\n DataStore.prototype._addItemInner.call(this, item, targetIndex);\n\n this.setParent(item, parent);\n\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent);\n }\n\n this._add_branch(item, index);\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n var children = this.getChildren(oldId);\n var visibleOrder = this._searchVisibleOrder[oldId];\n\n DataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n var parent = this.getParent(newId);\n\n this._replace_branch_child(parent, oldId, newId);\n\n if (this._branches[oldId]) {\n this._branches[newId] = this._branches[oldId];\n }\n\n for (var i = 0; i < children.length; i++) {\n var child = this.getItem(children[i]);\n child[this.$parentProperty] = newId;\n child.$rendered_parent = newId;\n }\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._branches[oldId];\n },\n _traverseBranches: function _traverseBranches(code, parent) {\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var branch = this._branches[parent];\n\n if (branch) {\n for (var i = 0; i < branch.length; i++) {\n var itemId = branch[i];\n code.call(this, itemId);\n if (this._branches[itemId]) this._traverseBranches(code, itemId);\n }\n }\n },\n _updateOrder: function _updateOrder(code) {\n this.fullOrder = powerArray.$create();\n\n this._traverseBranches(function (taskId) {\n this.fullOrder.push(taskId);\n });\n\n if (code) DataStore.prototype._updateOrder.call(this, code);\n },\n _removeItemInner: function _removeItemInner(id) {\n var items = [];\n this.eachItem(function (child) {\n items.push(child);\n }, id);\n items.push(this.getItem(id));\n\n for (var i = 0; i < items.length; i++) {\n this._move_branch(items[i], this.getParent(items[i]), null);\n\n DataStore.prototype._removeItemInner.call(this, items[i].id);\n\n this._move_branch(items[i], this.getParent(items[i]), null);\n }\n },\n move: function move(sid, tindex, parent) {\n //target id as 4th parameter\n var id = arguments[3];\n var config = this._ganttConfig || {};\n var root_id = config.root_id || 0;\n id = replaceValidZeroId(id, root_id);\n\n if (id) {\n if (id === sid) return;\n parent = this.getParent(id);\n tindex = this.getBranchIndex(id);\n }\n\n if (sid == parent) {\n return;\n }\n\n if (!utils.defined(parent)) {\n parent = this.$getRootId();\n }\n\n var source = this.getItem(sid);\n var source_pid = this.getParent(source.id);\n var tbranch = this.getChildren(parent);\n if (tindex == -1) tindex = tbranch.length + 1;\n\n if (source_pid == parent) {\n var sindex = this.getBranchIndex(sid);\n if (sindex == tindex) return;\n }\n\n if (this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false) return false;\n var placeholderIds = [];\n\n for (var i = 0; i < tbranch.length; i++) {\n if (isPlaceholderTask(tbranch[i], null, this, this._ganttConfig)) {\n placeholderIds.push(tbranch[i]);\n tbranch.splice(i, 1);\n i--;\n }\n }\n\n this._replace_branch_child(source_pid, sid);\n\n tbranch = this.getChildren(parent);\n var tid = tbranch[tindex];\n tid = replaceValidZeroId(tid, root_id);\n if (!tid) //adding as last element\n tbranch.push(sid);else tbranch = tbranch.slice(0, tindex).concat([sid]).concat(tbranch.slice(tindex));\n\n if (placeholderIds.length) {\n tbranch = tbranch.concat(placeholderIds);\n }\n\n this.setParent(source, parent);\n this._branches[parent] = tbranch;\n var diff = this.calculateItemLevel(source) - source.$level;\n source.$level += diff;\n this.eachItem(function (item) {\n item.$level += diff;\n }, source.id, this);\n\n this._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n this.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n this.refresh();\n },\n getBranchIndex: function getBranchIndex(id) {\n var branch = this.getChildren(this.getParent(id));\n var index = branch.indexOf(id + \"\");\n\n if (index == -1) {\n index = branch.indexOf(+id);\n }\n\n return index;\n },\n hasChild: function hasChild(id) {\n var branch = this._branches[id];\n return branch && branch.length;\n },\n getChildren: function getChildren(id) {\n var branch = this._branches[id];\n return branch ? branch : powerArray.$create();\n },\n isChildOf: function isChildOf(childId, parentId) {\n if (!this.exists(childId)) return false;\n if (parentId === this.$getRootId()) return true;\n if (!this.hasChild(parentId)) return false;\n var item = this.getItem(childId);\n var pid = this.getParent(childId);\n var parent = this.getItem(parentId);\n\n if (parent.$level >= item.$level) {\n return false;\n }\n\n while (item && this.exists(pid)) {\n item = this.getItem(pid);\n if (item && item.id == parentId) return true;\n pid = this.getParent(item);\n }\n\n return false;\n },\n getSiblings: function getSiblings(id) {\n if (!this.exists(id)) {\n return powerArray.$create();\n }\n\n var parent = this.getParent(id);\n return this.getChildren(parent);\n },\n getNextSibling: function getNextSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var nextSibling = siblings[i + 1];\n\n if (nextSibling === 0 && i > 0) {\n nextSibling = \"0\";\n }\n\n return nextSibling || null;\n }\n }\n\n return null;\n },\n getPrevSibling: function getPrevSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var previousSibling = siblings[i - 1];\n\n if (previousSibling === 0 && i > 0) {\n previousSibling = \"0\";\n }\n\n return previousSibling || null;\n }\n }\n\n return null;\n },\n getParent: function getParent(id) {\n var item = null;\n\n if (id.id !== undefined) {\n item = id;\n } else {\n item = this.getItem(id);\n }\n\n var parent;\n\n if (item) {\n parent = item[this.$parentProperty];\n } else {\n parent = this.$getRootId();\n }\n\n return parent;\n },\n clearAll: function clearAll() {\n this._branches = {};\n DataStore.prototype.clearAll.call(this);\n },\n calculateItemLevel: function calculateItemLevel(item) {\n var level = 0;\n this.eachParent(function () {\n level++;\n }, item);\n return level;\n },\n _setParentInner: function _setParentInner(item, new_pid, silent) {\n if (!silent) {\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent, new_pid);\n } else {\n this._move_branch(item, item[this.$parentProperty], new_pid);\n }\n }\n },\n setParent: function setParent(item, new_pid, silent) {\n this._setParentInner(item, new_pid, silent);\n\n item[this.$parentProperty] = new_pid;\n },\n _eachItemCached: function _eachItemCached(code, cache) {\n for (var i = 0, len = cache.length; i < len; i++) {\n code.call(this, cache[i]);\n }\n },\n _eachItemIterate: function _eachItemIterate(code, startId, cache) {\n var itemsStack = this.getChildren(startId);\n\n if (itemsStack.length) {\n itemsStack = itemsStack.slice().reverse();\n }\n\n while (itemsStack.length) {\n var itemId = itemsStack.pop();\n var item = this.getItem(itemId);\n code.call(this, item);\n\n if (cache) {\n cache.push(item);\n }\n\n if (this.hasChild(item.id)) {\n var children = this.getChildren(item.id);\n var len = children.length;\n\n for (var i = len - 1; i >= 0; i--) {\n itemsStack.push(children[i]);\n }\n }\n }\n },\n eachItem: function eachItem(code, parent) {\n var rootId = this.$getRootId();\n\n if (!utils.defined(parent)) {\n parent = rootId;\n }\n\n var startId = replaceValidZeroId(parent, rootId) || rootId;\n var useCache = false;\n var buildCache = false;\n var cache = null;\n\n if (startId === rootId) {\n if (this._eachItemMainRangeCache) {\n useCache = true;\n cache = this._eachItemMainRangeCache;\n } else {\n buildCache = true;\n cache = this._eachItemMainRangeCache = [];\n }\n }\n\n if (useCache) {\n this._eachItemCached(code, cache);\n } else {\n this._eachItemIterate(code, startId, buildCache ? cache : null);\n }\n },\n eachParent: function eachParent(code, startItem) {\n var parentsHash = {};\n var item = startItem;\n var parent = this.getParent(item);\n\n while (this.exists(parent)) {\n if (parentsHash[parent]) {\n throw new Error(\"Invalid tasks tree. Cyclic reference has been detected on task \" + parent);\n }\n\n parentsHash[parent] = true;\n item = this.getItem(parent);\n code.call(this, item);\n parent = this.getParent(item);\n }\n },\n _add_branch: function _add_branch(item, index, parent) {\n var pid = parent === undefined ? this.getParent(item) : parent;\n if (!this.hasChild(pid)) this._branches[pid] = powerArray.$create();\n var branch = this.getChildren(pid);\n var added_already = branch.indexOf(item.id + \"\") > -1 || branch.indexOf(+item.id) > -1;\n\n if (!added_already) {\n if (index * 1 == index) {\n branch.splice(index, 0, item.id);\n } else {\n branch.push(item.id);\n }\n\n item.$rendered_parent = pid;\n }\n },\n _move_branch: function _move_branch(item, old_parent, new_parent) {\n this._eachItemMainRangeCache = null; //this.setParent(item, new_parent);\n //this._sync_parent(task);\n\n this._replace_branch_child(old_parent, item.id);\n\n if (this.exists(new_parent) || new_parent == this.$getRootId()) {\n this._add_branch(item, undefined, new_parent);\n } else {\n delete this._branches[item.id];\n }\n\n item.$level = this.calculateItemLevel(item);\n this.eachItem(function (child) {\n child.$level = this.calculateItemLevel(child);\n }, item.id);\n },\n _replace_branch_child: function _replace_branch_child(node, old_id, new_id) {\n var branch = this.getChildren(node);\n\n if (branch && node !== undefined) {\n var newbranch = powerArray.$create();\n var index = branch.indexOf(old_id + \"\");\n\n if (index == -1 && !isNaN(+old_id)) {\n index = branch.indexOf(+old_id);\n }\n\n if (index > -1) {\n if (new_id) {\n branch.splice(index, 1, new_id);\n } else {\n branch.splice(index, 1);\n }\n }\n\n newbranch = branch;\n this._branches[node] = newbranch;\n }\n },\n sort: function sort(field, desc, parent) {\n if (!this.exists(parent)) {\n parent = this.$getRootId();\n }\n\n if (!field) field = \"order\";\n var criteria = typeof field == \"string\" ? function (a, b) {\n if (a[field] == b[field] || helpers.isDate(a[field]) && helpers.isDate(b[field]) && a[field].valueOf() == b[field].valueOf()) {\n return 0;\n }\n\n var result = a[field] > b[field];\n return result ? 1 : -1;\n } : field;\n\n if (desc) {\n var original_criteria = criteria;\n\n criteria = function criteria(a, b) {\n return original_criteria(b, a);\n };\n }\n\n var els = this.getChildren(parent);\n\n if (els) {\n var temp = [];\n\n for (var i = els.length - 1; i >= 0; i--) {\n temp[i] = this.getItem(els[i]);\n }\n\n temp.sort(criteria);\n\n for (var i = 0; i < temp.length; i++) {\n els[i] = temp[i].id;\n this.sort(field, desc, els[i]);\n }\n }\n },\n filter: function filter(rule) {\n for (var i in this.pull) {\n var renderedParent = this.pull[i].$rendered_parent;\n var actualParent = this.getParent(this.pull[i]);\n\n if (renderedParent !== actualParent) {\n this._move_branch(this.pull[i], renderedParent, actualParent);\n }\n }\n\n return DataStore.prototype.filter.apply(this, arguments);\n },\n open: function open(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = true; // GS-2170. Do not recalculate the indexes and dates as they will be recalculated later\n\n this._skipTaskRecalculation = true;\n this.callEvent(\"onItemOpen\", [id]);\n }\n },\n close: function close(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = false; // GS-2170. Do not recalculate the indexes and dates as they will be recalculated later\n\n this._skipTaskRecalculation = true;\n this.callEvent(\"onItemClose\", [id]);\n }\n },\n destructor: function destructor() {\n DataStore.prototype.destructor.call(this);\n this._branches = null;\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n }\n}, DataStore.prototype);\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n $create: function $create(array) {\n return utils.mixin(array || [], this);\n },\n //remove element at specified position\n $removeAt: function $removeAt(pos, len) {\n if (pos >= 0) this.splice(pos, len || 1);\n },\n //find element in collection and remove it\n $remove: function $remove(value) {\n this.$removeAt(this.$find(value));\n },\n //add element to collection at specific position\n $insertAt: function $insertAt(data, pos) {\n if (!pos && pos !== 0) //add to the end by default\n this.push(data);else {\n var b = this.splice(pos, this.length - pos);\n this[pos] = data;\n this.push.apply(this, b); //reconstruct array without loosing this pointer\n }\n },\n //return index of element, -1 if it doesn't exists\n $find: function $find(data) {\n for (var i = 0; i < this.length; i++) {\n if (data == this[i]) return i;\n }\n\n return -1;\n },\n //execute some method for each element of array\n $each: function $each(functor, master) {\n for (var i = 0; i < this.length; i++) {\n functor.call(master || this, this[i]);\n }\n },\n //create new array from source, by using results of functor\n $map: function $map(functor, master) {\n for (var i = 0; i < this.length; i++) {\n this[i] = functor.call(master || this, this[i]);\n }\n\n return this;\n },\n $filter: function $filter(functor, master) {\n for (var i = 0; i < this.length; i++) {\n if (!functor.call(master || this, this[i])) {\n this.splice(i, 1);\n i--;\n }\n }\n\n return this;\n }\n};\nmodule.exports = $powerArray;","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar eventable = require(\"../../utils/eventable\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar DataStore = function DataStore(config) {\n this.pull = {};\n this.$initItem = config.initItem;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._skip_refresh = false;\n this._filterRule = null;\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._getItemsCache = null;\n this.$config = config;\n eventable(this);\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._getItemsCache = null;\n return true;\n });\n\n return this;\n};\n\nDataStore.prototype = {\n _attachDataChange: function _attachDataChange(callback) {\n this.attachEvent(\"onClearAll\", callback);\n this.attachEvent(\"onBeforeParse\", callback);\n this.attachEvent(\"onBeforeUpdate\", callback);\n this.attachEvent(\"onBeforeDelete\", callback);\n this.attachEvent(\"onBeforeAdd\", callback);\n this.attachEvent(\"onParse\", callback);\n this.attachEvent(\"onBeforeFilter\", callback);\n },\n _parseInner: function _parseInner(data) {\n var item = null,\n loaded = [];\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n if (this.$initItem) {\n if (this.$config.copyOnParse()) {\n item = utils.copy(item);\n }\n\n item = this.$initItem(item);\n }\n\n if (this.callEvent(\"onItemLoading\", [item])) {\n if (!this.pull.hasOwnProperty(item.id)) {\n this.fullOrder.push(item.id);\n }\n\n loaded.push(item);\n this.pull[item.id] = item;\n }\n }\n\n return loaded;\n },\n parse: function parse(data) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n if (!this.isSilent()) {\n this.refresh();\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n getItem: function getItem(id) {\n return this.pull[id];\n },\n _updateOrder: function _updateOrder(code) {\n code.call(this.visibleOrder);\n code.call(this.fullOrder);\n },\n updateItem: function updateItem(id, item) {\n if (!utils.defined(item)) item = this.getItem(id);\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeUpdate\", [item.id, item]) === false) return false;\n } // This is how it worked before updating the properties:\n // this.pull[id]=item;\n\n\n utils.mixin(this.pull[id], item, true);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterUpdate\", [item.id, item]);\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"update\"]);\n }\n },\n _removeItemInner: function _removeItemInner(id) {\n //clear from collections\n //this.visibleOrder.$remove(id);\n this._updateOrder(function () {\n this.$remove(id);\n });\n\n delete this.pull[id];\n },\n removeItem: function removeItem(id) {\n //utils.assert(this.exists(id), \"Not existing ID in remove command\"+id);\n var obj = this.getItem(id); //save for later event\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeDelete\", [obj.id, obj]) === false) return false;\n }\n\n this.callEvent(\"onAfterDeleteConfirmed\", [obj.id, obj]);\n\n this._removeItemInner(id);\n\n if (!this.isSilent()) {\n this.filter();\n this.callEvent(\"onAfterDelete\", [obj.id, obj]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"delete\"]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n //in case of treetable order is sent as 3rd parameter\n //var order = index;\n if (this.exists(item.id)) {\n this.silent(function () {\n this.updateItem(item.id, item);\n });\n } else {\n var order = this.visibleOrder; //by default item is added to the end of the list\n\n var data_size = order.length;\n if (!utils.defined(index) || index < 0) index = data_size; //check to prevent too big indexes\n\n if (index > data_size) {\n //dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n index = Math.min(order.length, index);\n }\n } //gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\n this.pull[item.id] = item;\n\n if (!this.isSilent()) {\n this._updateOrder(function () {\n if (this.$find(item.id) === -1) this.$insertAt(item.id, index);\n });\n }\n\n this.filter(); //order.$insertAt(item.id,index);\n },\n isVisible: function isVisible(id) {\n return this.visibleOrder.$find(id) > -1;\n },\n getVisibleItems: function getVisibleItems() {\n return this.getIndexRange();\n },\n addItem: function addItem(item, index) {\n if (!utils.defined(item.id)) item.id = utils.uid();\n\n if (this.$initItem) {\n item = this.$initItem(item);\n }\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n }\n\n this._addItemInner(item, index);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterAdd\", [item.id, item]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"add\"]);\n }\n\n return item.id;\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n if (this.pull[oldId]) this.pull[newId] = this.pull[oldId];\n var visibleOrder = this._searchVisibleOrder[oldId];\n this.pull[newId].id = newId;\n\n this._updateOrder(function () {\n this[this.$find(oldId)] = newId;\n });\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._searchVisibleOrder[oldId]; //this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\n delete this.pull[oldId];\n },\n changeId: function changeId(oldId, newId) {\n this._changeIdInner(oldId, newId);\n\n this.callEvent(\"onIdChange\", [oldId, newId]);\n },\n exists: function exists(id) {\n return !!this.pull[id];\n },\n _moveInner: function _moveInner(sindex, tindex) {\n var id = this.getIdByIndex(sindex);\n\n this._updateOrder(function () {\n this.$removeAt(sindex);\n this.$insertAt(id, Math.min(this.length, tindex));\n }); //this.visibleOrder.$removeAt(sindex);\t//remove at old position\n //if (sindex=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n var id = this.getIdByIndex(sindex);\n var obj = this.getItem(id);\n\n this._moveInner(sindex, tindex);\n\n if (!this.isSilent()) {\n //repaint signal\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n }\n },\n clearAll: function clearAll() {\n if (this.$destroyed) {\n return;\n } // GS-956 We need to unselect the resource as its ID is cached\n\n\n this.silent(function () {\n this.unselect();\n });\n this.pull = {};\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n if (this.isSilent()) return;\n this.callEvent(\"onClearAll\", []);\n this.refresh();\n },\n silent: function silent(code, master) {\n var alreadySilent = false;\n\n if (this.isSilent()) {\n alreadySilent = true;\n }\n\n this._skip_refresh = true;\n code.call(master || this);\n\n if (!alreadySilent) {\n this._skip_refresh = false;\n }\n },\n isSilent: function isSilent() {\n return !!this._skip_refresh;\n },\n arraysEqual: function arraysEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) return false;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) return false;\n }\n\n return true;\n },\n refresh: function refresh(id, quick) {\n if (this.isSilent()) return;\n var item;\n\n if (id) {\n item = this.getItem(id);\n }\n\n var args;\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n if (this.callEvent(\"onBeforeStoreUpdate\", args) === false) {\n return;\n }\n\n var skipFilter = this._quick_refresh && !this._mark_recompute;\n this._mark_recompute = false;\n\n if (id) {\n // if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n if (!quick && !skipFilter) {\n var oldOrder = this.visibleOrder;\n this.filter();\n\n if (!this.arraysEqual(oldOrder, this.visibleOrder)) {\n id = undefined;\n }\n }\n } else if (!skipFilter) {\n this.filter();\n }\n\n if (id) {\n args = [id, item, \"paint\"];\n } else {\n args = [null, null, null];\n }\n\n this.callEvent(\"onStoreUpdated\", args);\n },\n count: function count() {\n return this.fullOrder.length;\n },\n countVisible: function countVisible() {\n return this.visibleOrder.length;\n },\n sort: function sort(_sort) {},\n serialize: function serialize() {},\n eachItem: function eachItem(code) {\n for (var i = 0; i < this.fullOrder.length; i++) {\n var item = this.getItem(this.fullOrder[i]);\n code.call(this, item);\n }\n },\n find: function find(filter) {\n var result = [];\n this.eachItem(function (item) {\n if (filter(item)) {\n result.push(item);\n }\n });\n return result;\n },\n filter: function filter(rule) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeFilter\", []);\n }\n\n this.callEvent(\"onPreFilter\", []);\n var filteredOrder = powerArray.$create();\n var placeholderIds = [];\n this.eachItem(function (item) {\n if (this.callEvent(\"onFilterItem\", [item.id, item])) {\n if (isPlaceholderTask(item.id, null, this, this._ganttConfig)) {\n placeholderIds.push(item.id);\n } else {\n filteredOrder.push(item.id);\n }\n }\n });\n\n for (var i = 0; i < placeholderIds.length; i++) {\n filteredOrder.push(placeholderIds[i]);\n }\n\n this.visibleOrder = filteredOrder;\n this._searchVisibleOrder = {};\n\n for (var i = 0; i < this.visibleOrder.length; i++) {\n this._searchVisibleOrder[this.visibleOrder[i]] = i;\n }\n\n if (!this.isSilent()) {\n this.callEvent(\"onFilter\", []);\n }\n },\n getIndexRange: function getIndexRange(from, to) {\n var max = Math.min(to || Infinity, this.countVisible() - 1);\n var min = from || 0;\n var cacheKey = min + '-' + max;\n\n if (this._indexRangeCache[cacheKey]) {\n return this._indexRangeCache[cacheKey].slice();\n }\n\n var ret = [];\n\n for (var i = min; i <= max; i++) {\n ret.push(this.getItem(this.visibleOrder[i]));\n }\n\n this._indexRangeCache[cacheKey] = ret.slice();\n return ret;\n },\n getItems: function getItems() {\n if (this._getItemsCache) {\n return this._getItemsCache.slice();\n }\n\n var res = [];\n\n for (var i in this.pull) {\n res.push(this.pull[i]);\n }\n\n this._getItemsCache = res.slice();\n return res;\n },\n getIdByIndex: function getIdByIndex(index) {\n return this.visibleOrder[index];\n },\n getIndexById: function getIndexById(id) {\n var res = this._searchVisibleOrder[id];\n\n if (res === undefined) {\n res = -1;\n }\n\n return res;\n },\n _getNullIfUndefined: function _getNullIfUndefined(value) {\n if (value === undefined) {\n return null;\n } else {\n return value;\n }\n },\n getFirst: function getFirst() {\n return this._getNullIfUndefined(this.visibleOrder[0]);\n },\n getLast: function getLast() {\n return this._getNullIfUndefined(this.visibleOrder[this.visibleOrder.length - 1]);\n },\n getNext: function getNext(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) + 1]);\n },\n getPrev: function getPrev(id) {\n return this._getNullIfUndefined(this.visibleOrder[this.getIndexById(id) - 1]);\n },\n destructor: function destructor() {\n this.callEvent(\"onDestroy\", []);\n this.detachAllEvents();\n this.$destroyed = true;\n this.pull = null;\n this.$initItem = null;\n this.visibleOrder = null;\n this.fullOrder = null;\n this._skip_refresh = null;\n this._filterRule = null;\n this._searchVisibleOrder = null;\n this._indexRangeCache = {};\n }\n};\nmodule.exports = DataStore;","function checkTimeout(host, updPerSecond) {\n if (!updPerSecond) return true;\n if (host._on_timeout) return false;\n var timeout = Math.ceil(1000 / updPerSecond);\n if (timeout < 2) return true;\n setTimeout(function () {\n delete host._on_timeout;\n }, timeout);\n host._on_timeout = true;\n return true;\n}\n\nmodule.exports = checkTimeout;","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}","var utils = require(\"../../../utils/utils\");\n\nfunction createScope(addEvent, removeEvent) {\n addEvent = addEvent || utils.event;\n removeEvent = removeEvent || utils.eventRemove;\n var handlers = [];\n var eventScope = {\n attach: function attach(el, event, callback, capture) {\n handlers.push({\n element: el,\n event: event,\n callback: callback,\n capture: capture\n });\n addEvent(el, event, callback, capture);\n },\n detach: function detach(el, event, callback, capture) {\n removeEvent(el, event, callback, capture);\n\n for (var i = 0; i < handlers.length; i++) {\n var handler = handlers[i];\n\n if (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\n handlers.splice(i, 1);\n i--;\n }\n }\n },\n detachAll: function detachAll() {\n var staticArray = handlers.slice(); // original handlers array can be spliced on every iteration\n\n for (var i = 0; i < staticArray.length; i++) {\n var handler = staticArray[i];\n eventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\n eventScope.detach(handler.element, handler.event, handler.callback, undefined);\n eventScope.detach(handler.element, handler.event, handler.callback, false);\n eventScope.detach(handler.element, handler.event, handler.callback, true);\n }\n\n handlers.splice(0, handlers.length);\n },\n extend: function extend() {\n return createScope(this.event, this.eventRemove);\n }\n };\n return eventScope;\n}\n\nmodule.exports = createScope;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\nmodule.exports = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' ? self.FormData : window.FormData;","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar punycode = require('punycode');\n\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n} // Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\n\n\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\nsimplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\nunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\nautoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\nunsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that never have a hostname.\nhostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that always contain a // bit.\nslashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n},\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + _typeof(url));\n } // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n\n\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n var rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec;\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) hostEnd = rest.length;\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host; // strip [ and ] from the hostname\n // the host field still retains them, though\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n } // now rest is set to the post-host stuff.\n // chop off any delim chars.\n\n\n if (!unsafeProtocol[lowerProto]) {\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) continue;\n var esc = encodeURIComponent(ae);\n\n if (esc === ae) {\n esc = escape(ae);\n }\n\n rest = rest.split(ae).join(esc);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n\n if (rest) this.pathname = rest;\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n } //to support http.request\n\n\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n } // finally, reconstruct the href based on what has been validated.\n\n\n this.href = this.format();\n return this;\n}; // format a parsed object into a url string\n\n\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && util.isObject(this.query) && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || query && '?' + query || '';\n if (protocol && protocol.substr(-1) !== ':') protocol += ':'; // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n } // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n\n\n result.hash = relative.hash; // if the relative url is empty, then there's nothing left to do here.\n\n if (relative.href === '') {\n result.href = result.format();\n return result;\n } // hrefs like //foo/bar always cut to the protocol.\n\n\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') result[rkey] = relative[rkey];\n } //urlParse appends trailing / to urls like http://www.example.com\n\n\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n\n while (relPath.length && !(relative.host = relPath.shift())) {\n ;\n }\n\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port; // to support http.request\n\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname,\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol]; // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host);\n }\n\n result.host = '';\n\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host);\n }\n\n relative.host = null;\n }\n\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath; // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift(); //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n result.search = relative.search;\n result.query = relative.query; //to support http.request\n\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null; //to support http.request\n\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n\n result.href = result.format();\n return result;\n } // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n\n\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n\n var up = 0;\n\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/'; // put the host back\n\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || result.host && srcPath.length;\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n } //to support request.http\n\n\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) this.hostname = host;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n/**/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n\n case 'latin1':\n case 'binary':\n return 'latin1';\n\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n\n default:\n if (retried) return; // undefined\n\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n\n; // Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\n\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n} // StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\n\n\nexports.StringDecoder = StringDecoder;\n\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End; // Returns only complete characters in a Buffer\n\nStringDecoder.prototype.text = utf8Text; // Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\n\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n}; // Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\n\n\nfunction utf8CheckByte(_byte) {\n if (_byte <= 0x7F) return 0;else if (_byte >> 5 === 0x06) return 2;else if (_byte >> 4 === 0x0E) return 3;else if (_byte >> 3 === 0x1E) return 4;\n return _byte >> 6 === 0x02 ? -1 : -2;\n} // Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\n\n\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n\n return nb;\n }\n\n return 0;\n} // Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\n\n\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return \"\\uFFFD\";\n }\n\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return \"\\uFFFD\";\n }\n }\n }\n} // Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\n\n\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n} // Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\n\n\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n} // For UTF-8, a replacement character is added when ending on a partial\n// character.\n\n\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + \"\\uFFFD\";\n return r;\n} // UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\n\n\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n\n return r;\n }\n\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n} // For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\n\n\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n} // Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\n\n\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/**/\n\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options[\"final\"] === 'function') this._final = options[\"final\"];\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n// undocumented cb() API, needed for core, not for public API\n\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\n\nmodule.exports = EventEmitter; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n\nEventEmitter.defaultMaxListeners = 10; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\nEventEmitter.prototype.setMaxListeners = function (n) {\n if (!isNumber(n) || n < 0 || isNaN(n)) throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function (type) {\n var er, handler, len, args, i, listeners;\n if (!this._events) this._events = {}; // If there is no 'error' event listener then throw.\n\n if (type === 'error') {\n if (!this._events.error || isObject(this._events.error) && !this._events.error.length) {\n er = arguments[1];\n\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n if (isUndefined(handler)) return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n\n case 2:\n handler.call(this, arguments[1]);\n break;\n\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n\n for (i = 0; i < len; i++) {\n listeners[i].apply(this, args);\n }\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function (type, listener) {\n var m;\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n if (!this._events) this._events = {}; // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n\n if (this._events.newListener) this.emit('newListener', type, isFunction(listener.listener) ? listener.listener : listener);\n if (!this._events[type]) // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;else if (isObject(this._events[type])) // If we've already got an array, just append.\n this._events[type].push(listener);else // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener]; // Check for listener leak\n\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' + 'leak detected. %d listeners added. ' + 'Use emitter.setMaxListeners() to increase limit.', this._events[type].length);\n\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function (type, listener) {\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n return this;\n}; // emits a 'removeListener' event iff the listener was removed\n\n\nEventEmitter.prototype.removeListener = function (type, listener) {\n var list, position, length, i;\n if (!isFunction(listener)) throw TypeError('listener must be a function');\n if (!this._events || !this._events[type]) return this;\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener || isFunction(list.listener) && list.listener === listener) {\n delete this._events[type];\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener || list[i].listener && list[i].listener === listener) {\n position = i;\n break;\n }\n }\n\n if (position < 0) return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener) this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function (type) {\n var key, listeners;\n if (!this._events) return this; // not listening for removeListener, no need to emit\n\n if (!this._events.removeListener) {\n if (arguments.length === 0) this._events = {};else if (this._events[type]) delete this._events[type];\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length) {\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n }\n\n delete this._events[type];\n return this;\n};\n\nEventEmitter.prototype.listeners = function (type) {\n var ret;\n if (!this._events || !this._events[type]) ret = [];else if (isFunction(this._events[type])) ret = [this._events[type]];else ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function (type) {\n if (this._events) {\n var evlistener = this._events[type];\n if (isFunction(evlistener)) return 1;else if (evlistener) return evlistener.length;\n }\n\n return 0;\n};\n\nEventEmitter.listenerCount = function (emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n\n\nmodule.exports = Readable;\n/**/\n\nvar isArray = require('isarray');\n/**/\n\n/**/\n\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n/**/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/**/\n\n/**/\n\nvar debugUtil = require('util');\n\nvar debug = void 0;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/BufferList');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n var isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n\n return er;\n} // if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\n\n\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n}; // Don't raise the hwm > 8MB\n\n\nvar MAX_HWM = 0x800000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true; // emit 'readable' now to make sure it gets picked up.\n\n emitReadable(stream);\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n } // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n\n\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {}\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList; // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n} // Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n\n return ret;\n} // Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n} // Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState; // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');","var capability = require('./capability');\n\nvar inherits = require('inherits');\n\nvar stream = require('readable-stream');\n\nvar rStates = exports.readyStates = {\n UNSENT: 0,\n OPENED: 1,\n HEADERS_RECEIVED: 2,\n LOADING: 3,\n DONE: 4\n};\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n var self = this;\n stream.Readable.call(self);\n self._mode = mode;\n self.headers = {};\n self.rawHeaders = [];\n self.trailers = {};\n self.rawTrailers = []; // Fake the 'close' event, but only once 'end' fires\n\n self.on('end', function () {\n // The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n process.nextTick(function () {\n self.emit('close');\n });\n });\n\n if (mode === 'fetch') {\n var read = function read() {\n reader.read().then(function (result) {\n if (self._destroyed) return;\n\n if (result.done) {\n global.clearTimeout(fetchTimer);\n self.push(null);\n return;\n }\n\n self.push(new Buffer(result.value));\n read();\n })[\"catch\"](function (err) {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.emit('error', err);\n });\n };\n\n self._fetchResponse = response;\n self.url = response.url;\n self.statusCode = response.status;\n self.statusMessage = response.statusText;\n response.headers.forEach(function (header, key) {\n self.headers[key.toLowerCase()] = header;\n self.rawHeaders.push(key, header);\n });\n\n if (capability.writableStream) {\n var writable = new WritableStream({\n write: function write(chunk) {\n return new Promise(function (resolve, reject) {\n if (self._destroyed) {\n reject();\n } else if (self.push(new Buffer(chunk))) {\n resolve();\n } else {\n self._resumeFetch = resolve;\n }\n });\n },\n close: function close() {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.push(null);\n },\n abort: function abort(err) {\n if (!self._destroyed) self.emit('error', err);\n }\n });\n\n try {\n response.body.pipeTo(writable)[\"catch\"](function (err) {\n global.clearTimeout(fetchTimer);\n if (!self._destroyed) self.emit('error', err);\n });\n return;\n } catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\n } // fallback for when writableStream or pipeTo aren't available\n\n\n var reader = response.body.getReader();\n read();\n } else {\n self._xhr = xhr;\n self._pos = 0;\n self.url = xhr.responseURL;\n self.statusCode = xhr.status;\n self.statusMessage = xhr.statusText;\n var headers = xhr.getAllResponseHeaders().split(/\\r?\\n/);\n headers.forEach(function (header) {\n var matches = header.match(/^([^:]+):\\s*(.*)/);\n\n if (matches) {\n var key = matches[1].toLowerCase();\n\n if (key === 'set-cookie') {\n if (self.headers[key] === undefined) {\n self.headers[key] = [];\n }\n\n self.headers[key].push(matches[2]);\n } else if (self.headers[key] !== undefined) {\n self.headers[key] += ', ' + matches[2];\n } else {\n self.headers[key] = matches[2];\n }\n\n self.rawHeaders.push(matches[1], matches[2]);\n }\n });\n self._charset = 'x-user-defined';\n\n if (!capability.overrideMimeType) {\n var mimeType = self.rawHeaders['mime-type'];\n\n if (mimeType) {\n var charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/);\n\n if (charsetMatch) {\n self._charset = charsetMatch[1].toLowerCase();\n }\n }\n\n if (!self._charset) self._charset = 'utf-8'; // best guess\n }\n }\n};\n\ninherits(IncomingMessage, stream.Readable);\n\nIncomingMessage.prototype._read = function () {\n var self = this;\n var resolve = self._resumeFetch;\n\n if (resolve) {\n self._resumeFetch = null;\n resolve();\n }\n};\n\nIncomingMessage.prototype._onXHRProgress = function () {\n var self = this;\n var xhr = self._xhr;\n var response = null;\n\n switch (self._mode) {\n case 'text:vbarray':\n // For IE9\n if (xhr.readyState !== rStates.DONE) break;\n\n try {\n // This fails in IE8\n response = new global.VBArray(xhr.responseBody).toArray();\n } catch (e) {}\n\n if (response !== null) {\n self.push(new Buffer(response));\n break;\n }\n\n // Falls through in IE8\t\n\n case 'text':\n try {\n // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n response = xhr.responseText;\n } catch (e) {\n self._mode = 'text:vbarray';\n break;\n }\n\n if (response.length > self._pos) {\n var newData = response.substr(self._pos);\n\n if (self._charset === 'x-user-defined') {\n var buffer = new Buffer(newData.length);\n\n for (var i = 0; i < newData.length; i++) {\n buffer[i] = newData.charCodeAt(i) & 0xff;\n }\n\n self.push(buffer);\n } else {\n self.push(newData, self._charset);\n }\n\n self._pos = response.length;\n }\n\n break;\n\n case 'arraybuffer':\n if (xhr.readyState !== rStates.DONE || !xhr.response) break;\n response = xhr.response;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n\n case 'moz-chunked-arraybuffer':\n // take whole\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING || !response) break;\n self.push(new Buffer(new Uint8Array(response)));\n break;\n\n case 'ms-stream':\n response = xhr.response;\n if (xhr.readyState !== rStates.LOADING) break;\n var reader = new global.MSStreamReader();\n\n reader.onprogress = function () {\n if (reader.result.byteLength > self._pos) {\n self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))));\n self._pos = reader.result.byteLength;\n }\n };\n\n reader.onload = function () {\n self.push(null);\n }; // reader.onerror = ??? // TODO: this\n\n\n reader.readAsArrayBuffer(response);\n break;\n } // The ms-stream case handles end separately in reader.onload()\n\n\n if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n self.push(null);\n }\n};","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream);\nexports.writableStream = isFunction(global.WritableStream);\nexports.abortController = isFunction(global.AbortController);\nexports.blobConstructor = false;\n\ntry {\n new Blob([new ArrayBuffer(1)]);\n exports.blobConstructor = true;\n} catch (e) {} // The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\n\n\nvar xhr;\n\nfunction getXHR() {\n // Cache the xhr value\n if (xhr !== undefined) return xhr;\n\n if (global.XMLHttpRequest) {\n xhr = new global.XMLHttpRequest(); // If XDomainRequest is available (ie only, where xhr might not work\n // cross domain), use the page location. Otherwise use example.com\n // Note: this doesn't actually make an http request.\n\n try {\n xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com');\n } catch (e) {\n xhr = null;\n }\n } else {\n // Service workers don't have XHR\n xhr = null;\n }\n\n return xhr;\n}\n\nfunction checkTypeSupport(type) {\n var xhr = getXHR();\n if (!xhr) return false;\n\n try {\n xhr.responseType = type;\n return xhr.responseType === type;\n } catch (e) {}\n\n return false;\n} // For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\n\n\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined';\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice); // If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\n\nexports.arraybuffer = exports.fetch || haveArrayBuffer && checkTypeSupport('arraybuffer'); // These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\n\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream');\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer && checkTypeSupport('moz-chunked-arraybuffer'); // If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\n\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false);\nexports.vbArray = isFunction(global.VBArray);\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nxhr = null; // Help gc","var ClientRequest = require('./lib/request');\n\nvar response = require('./lib/response');\n\nvar extend = require('xtend');\n\nvar statusCodes = require('builtin-status-codes');\n\nvar url = require('url');\n\nvar http = exports;\n\nhttp.request = function (opts, cb) {\n if (typeof opts === 'string') opts = url.parse(opts);else opts = extend(opts); // Normally, the page is loaded from http or https, so not specifying a protocol\n // will result in a (valid) protocol-relative url. However, this won't work if\n // the protocol is something else, like 'file:'\n\n var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '';\n var protocol = opts.protocol || defaultProtocol;\n var host = opts.hostname || opts.host;\n var port = opts.port;\n var path = opts.path || '/'; // Necessary for IPv6 addresses\n\n if (host && host.indexOf(':') !== -1) host = '[' + host + ']'; // This may be a relative url. The browser should always be able to interpret it correctly.\n\n opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path;\n opts.method = (opts.method || 'GET').toUpperCase();\n opts.headers = opts.headers || {}; // Also valid opts.auth, opts.mode\n\n var req = new ClientRequest(opts);\n if (cb) req.on('response', cb);\n return req;\n};\n\nhttp.get = function get(opts, cb) {\n var req = http.request(opts, cb);\n req.end();\n return req;\n};\n\nhttp.ClientRequest = ClientRequest;\nhttp.IncomingMessage = response.IncomingMessage;\n\nhttp.Agent = function () {};\n\nhttp.Agent.defaultMaxSockets = 4;\nhttp.globalAgent = new http.Agent();\nhttp.STATUS_CODES = statusCodes;\nhttp.METHODS = ['CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNLOCK', 'UNSUBSCRIBE'];","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","export default class DateComparator {\n\tprotected _gantt: any;\n\n\tconstructor(gantt) {\n\t\tthis._gantt = gantt;\n\t}\n\n\tpublic isEqual(dateA: Date, dateB: Date, task: ITask): boolean {\n\t\treturn !this._gantt._hasDuration(dateA, dateB, task);\n\t}\n\n\tpublic isFirstSmaller(small: Date, big: Date, task: ITask): boolean {\n\t\tif (small.valueOf() < big.valueOf() && !this.isEqual(small, big, task)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic isSmallerOrDefault(smallDate: Date, bigDate: Date, task: ITask): boolean {\n\t\treturn !!(!smallDate || this.isFirstSmaller(smallDate, bigDate, task));\n\t}\n\n\tpublic isGreaterOrDefault(smallDate: Date, bigDate: Date, task: ITask): boolean {\n\t\treturn !!(!smallDate || this.isFirstSmaller(bigDate, smallDate, task));\n\t}\n}","var helpers = require(\"../../utils/helpers\");\n\nmodule.exports = function () {\n return {\n getVertices: function getVertices(relations) {\n var ids = {};\n var rel;\n\n for (var i = 0, len = relations.length; i < len; i++) {\n rel = relations[i];\n ids[rel.target] = rel.target;\n ids[rel.source] = rel.source;\n }\n\n var vertices = [];\n var id;\n\n for (var i in ids) {\n id = ids[i];\n vertices.push(id);\n }\n\n return vertices;\n },\n topologicalSort: function topologicalSort(edges) {\n var vertices = this.getVertices(edges);\n var hash = {};\n\n for (var i = 0, len = vertices.length; i < len; i++) {\n hash[vertices[i]] = {\n id: vertices[i],\n $source: [],\n $target: [],\n $incoming: 0\n };\n }\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var successor = hash[edges[i].target];\n successor.$target.push(i);\n successor.$incoming = successor.$target.length;\n hash[edges[i].source].$source.push(i);\n } // topological sort, Kahn's algorithm\n\n\n var S = vertices.filter(function (v) {\n return !hash[v].$incoming;\n });\n var L = [];\n\n while (S.length) {\n var n = S.pop();\n L.push(n);\n var node = hash[n];\n\n for (var i = 0; i < node.$source.length; i++) {\n var m = hash[edges[node.$source[i]].target];\n m.$incoming--;\n\n if (!m.$incoming) {\n S.push(m.id);\n }\n }\n }\n\n return L;\n },\n groupAdjacentEdges: function groupAdjacentEdges(edges) {\n var res = {};\n var edge;\n\n for (var i = 0, len = edges.length; i < len; i++) {\n edge = edges[i];\n\n if (!res[edge.source]) {\n res[edge.source] = [];\n }\n\n res[edge.source].push(edge);\n }\n\n return res;\n },\n tarjanStronglyConnectedComponents: function tarjanStronglyConnectedComponents(vertices, edges) {\n //https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n // iterative implementation\n var verticesHash = {};\n var stack = [];\n var edgesFromTasks = this.groupAdjacentEdges(edges);\n var recurse = false;\n var connectedComponents = [];\n\n for (var i = 0; i < vertices.length; i++) {\n var root = getVertex(vertices[i]);\n if (root.visited) continue;\n var workStack = [root];\n var index = 0;\n\n while (workStack.length) {\n var v = workStack.pop();\n\n if (!v.visited) {\n v.index = index;\n v.lowLink = index;\n index++;\n stack.push(v);\n v.onStack = true;\n v.visited = true;\n }\n\n recurse = false;\n var edges = edgesFromTasks[v.id] || [];\n\n for (var e = 0; e < edges.length; e++) {\n var w = getVertex(edges[e].target);\n w.edge = edges[e];\n\n if (w.index === undefined) {\n workStack.push(v);\n workStack.push(w);\n recurse = true;\n break;\n } else if (w.onStack) {\n v.lowLink = Math.min(v.lowLink, w.index);\n }\n }\n\n if (recurse) continue;\n\n if (v.index == v.lowLink) {\n var com = {\n tasks: [],\n links: [],\n linkKeys: []\n };\n\n while (true) {\n w = stack.pop();\n w.onStack = false;\n com.tasks.push(w.id);\n\n if (w.edge) {\n com.links.push(w.edge.id);\n com.linkKeys.push(w.edge.hashSum);\n }\n\n if (w == v) {\n break;\n }\n }\n\n connectedComponents.push(com);\n }\n\n if (workStack.length) {\n w = v;\n v = workStack[workStack.length - 1];\n v.lowLink = Math.min(v.lowLink, w.lowLink);\n }\n }\n }\n\n return connectedComponents;\n\n function getVertex(id) {\n if (!verticesHash[id]) {\n verticesHash[id] = {\n id: id,\n onStack: false,\n index: undefined,\n lowLink: undefined,\n edge: undefined\n };\n }\n\n return verticesHash[id];\n }\n },\n findLoops: function findLoops(relations) {\n var cycles = [];\n helpers.forEach(relations, function (rel) {\n if (rel.target == rel.source) cycles.push([rel.target, rel.source]);\n });\n var vertices = this.getVertices(relations);\n var connectedComponents = this.tarjanStronglyConnectedComponents(vertices, relations);\n helpers.forEach(connectedComponents, function (component) {\n if (component.tasks.length > 1) {\n cycles.push(component); //{ tasks: [task ids], links: [links ids]}\n }\n });\n return cycles; //{task:id, link:link.type, lag: link.lag || 0, source: link.source}\n }\n };\n};","module.exports = function (gantt) {\n return {\n getVirtualRoot: function getVirtualRoot() {\n return gantt.mixin(gantt.getSubtaskDates(), {\n id: gantt.config.root_id,\n type: gantt.config.types.project,\n $source: [],\n $target: [],\n $virtual: true\n });\n },\n getLinkedTasks: function getLinkedTasks(id, includePredecessors) {\n var startIds = [id]; //TODO: format links cache\n\n var clearCache = false;\n\n if (!gantt._isLinksCacheEnabled()) {\n gantt._startLinksCache();\n\n clearCache = true;\n }\n\n var relations = [];\n var visited = {};\n var result = {};\n\n for (var i = 0; i < startIds.length; i++) {\n this._getLinkedTasks(startIds[i], visited, includePredecessors, result);\n }\n\n for (var i in result) {\n relations.push(result[i]);\n } //TODO: remove redundant edges before continue https://en.wikipedia.org/wiki/Transitive_reduction\n\n\n if (clearCache) gantt._endLinksCache();\n return relations;\n },\n _collectRelations: function _collectRelations(rootObj, isChild, includePredecessors, visitedLinks) {\n var successors = gantt._getSuccessors(rootObj, isChild);\n\n var predecessors = [];\n\n if (includePredecessors) {\n predecessors = gantt._getPredecessors(rootObj, isChild);\n }\n\n var linkKey;\n var relations = [];\n\n for (var i = 0; i < successors.length; i++) {\n linkKey = successors[i].hashSum;\n\n if (visitedLinks[linkKey]) {\n continue;\n } else {\n visitedLinks[linkKey] = true;\n relations.push(successors[i]);\n }\n }\n\n for (var i = 0; i < predecessors.length; i++) {\n linkKey = predecessors[i].hashSum;\n\n if (visitedLinks[linkKey]) {\n continue;\n } else {\n visitedLinks[linkKey] = true;\n relations.push(predecessors[i]);\n }\n }\n\n return relations;\n },\n _getLinkedTasks: function _getLinkedTasks(rootTask, visitedTasks, includePredecessors, output) {\n var from = rootTask === undefined ? gantt.config.root_id : rootTask;\n var visitedTasks = {};\n var visitedLinks = {};\n var rootObj;\n var tasksStack = [{\n from: from,\n includePredecessors: includePredecessors,\n isChild: false\n }];\n\n while (tasksStack.length) {\n var current = tasksStack.pop();\n var isChild = current.isChild;\n from = current.from;\n\n if (visitedTasks[from]) {\n continue;\n }\n\n rootObj = gantt.isTaskExists(from) ? gantt.getTask(from) : this.getVirtualRoot();\n visitedTasks[from] = true;\n\n var relations = this._collectRelations(rootObj, isChild, includePredecessors, visitedLinks);\n\n for (var i = 0; i < relations.length; i++) {\n var rel = relations[i];\n var includeRelation = true;\n\n if (gantt.config.auto_scheduling_use_progress) {\n var target = gantt.getTask(rel.target);\n\n if (target.progress == 1) {\n includeRelation = false;\n }\n }\n\n if (includeRelation) {\n output[rel.hashSum] = rel;\n }\n\n var isSameParent = rel.sourceParent == rel.targetParent;\n var targetTask = rel.target;\n if (!visitedTasks[targetTask]) tasksStack.push({\n from: rel.target,\n includePredecessors: true,\n isChild: isSameParent\n });\n }\n\n if (gantt.hasChild(rootObj.id)) {\n var children = gantt.getChildren(rootObj.id);\n\n for (var i = 0; i < children.length; i++) {\n if (!visitedTasks[children[i]]) tasksStack.push({\n from: children[i],\n includePredecessors: true,\n isChild: true\n });\n }\n }\n }\n\n return output;\n }\n };\n};","module.exports = function (gantt) {\n // helpers for building chain of dependencies, used for critical path calculation and for auto scheduling\n gantt._get_linked_task = function (link, getTarget) {\n var task = null;\n var taskId = getTarget ? link.target : link.source;\n\n if (gantt.isTaskExists(taskId)) {\n task = gantt.getTask(taskId);\n }\n\n return task;\n };\n\n gantt._get_link_target = function (link) {\n return gantt._get_linked_task(link, true);\n };\n\n gantt._get_link_source = function (link) {\n return gantt._get_linked_task(link, false);\n };\n\n var caching = false;\n var formattedLinksStash = {};\n var inheritedSuccessorsStash = {};\n var inheritedPredecessorsStash = {};\n var getPredecessorsCache = {};\n\n gantt._isLinksCacheEnabled = function () {\n return caching;\n };\n\n gantt._startLinksCache = function () {\n formattedLinksStash = {};\n inheritedSuccessorsStash = {};\n inheritedPredecessorsStash = {};\n getPredecessorsCache = {};\n caching = true;\n };\n\n gantt._endLinksCache = function () {\n formattedLinksStash = {};\n inheritedSuccessorsStash = {};\n inheritedPredecessorsStash = {};\n getPredecessorsCache = {};\n caching = false;\n };\n\n gantt._formatLink = function (link) {\n if (caching && formattedLinksStash[link.id]) {\n return formattedLinksStash[link.id];\n }\n\n var relations = [];\n\n var target = this._get_link_target(link);\n\n var source = this._get_link_source(link);\n\n if (!(source && target)) {\n return relations;\n }\n\n if (gantt.isSummaryTask(target) && gantt.isChildOf(source.id, target.id) || gantt.isSummaryTask(source) && gantt.isChildOf(target.id, source.id)) {\n return relations;\n }\n\n var backwardsScheduling = gantt.config.schedule_from_end && gantt.config.project_end;\n var respectTargetOffset = gantt.config.auto_scheduling_move_projects;\n\n if (!gantt.config.auto_scheduling_compatibility && gantt.config.auto_scheduling_strict) {\n respectTargetOffset = false;\n } // there are three kinds of connections at this point\n // task -> task - regular link\n // task -> project - transform it into set of regular links (task -> [each subtask]), use offset beetween subtask and project dates as lag, in order not to change mutual positions of subtasks inside a project\n // project -> task - transform it into ([each subtask] -> task) links\n // project -> project - transform it into ([each subtask of p1] -> [each subtask of p2]) links\n\n\n var sourceDates = this.isSummaryTask(source) ? this.getSubtaskDates(source.id) : {\n start_date: source.start_date,\n end_date: source.end_date\n };\n\n var from = this._getImplicitLinks(link, source, function (c) {\n if (!respectTargetOffset || !backwardsScheduling) {\n return 0;\n } else {\n if (!c.$source.length && !(gantt.getState(\"tasksDnd\").drag_id == c.id)) {\n // drag_id - virtual lag shouldn't restrict task that is being moved inside project\n return gantt.calculateDuration({\n start_date: c.end_date,\n end_date: sourceDates.end_date,\n task: source\n });\n } else {\n return 0;\n }\n }\n }, true);\n\n var targetDates = this.isSummaryTask(target) ? this.getSubtaskDates(target.id) : {\n start_date: target.start_date,\n end_date: target.end_date\n };\n\n var to = this._getImplicitLinks(link, target, function (c) {\n if (!respectTargetOffset || backwardsScheduling) {\n return 0;\n } else {\n if (!c.$target.length && !(gantt.getState(\"tasksDnd\").drag_id == c.id)) {\n // drag_id - virtual lag shouldn't restrict task that is being moved inside project\n return gantt.calculateDuration({\n start_date: targetDates.start_date,\n end_date: c.start_date,\n task: source\n });\n } else {\n return 0;\n }\n }\n });\n\n for (var i = 0, fromLength = from.length; i < fromLength; i++) {\n var fromTask = from[i];\n\n for (var j = 0, toLength = to.length; j < toLength; j++) {\n var toTask = to[j];\n var lag = fromTask.lag * 1 + toTask.lag * 1;\n var subtaskLink = {\n id: link.id,\n type: link.type,\n source: fromTask.task,\n target: toTask.task,\n subtaskLink: fromTask.subtaskLink,\n lag: (link.lag * 1 || 0) + lag\n };\n relations.push(gantt._convertToFinishToStartLink(toTask.task, subtaskLink, source, target, fromTask.taskParent, toTask.taskParent));\n }\n }\n\n if (caching) formattedLinksStash[link.id] = relations;\n return relations;\n };\n\n gantt._isAutoSchedulable = function (task) {\n return task.auto_scheduling !== false;\n };\n\n gantt._getImplicitLinks = function (link, parent, selectOffset, selectSourceLinks) {\n var relations = [];\n\n if (this.isSummaryTask(parent)) {\n // if the summary task contains multiple chains of linked tasks - no need to consider every task of the chain,\n // it will be enough to check the first/last tasks of the chain\n // special conditions if there are unscheduled tasks in the chain, or negative lag values that put the end date of the successor task prior to its predecessors' date\n var children = {};\n this.eachTask(function (c) {\n if (!this.isSummaryTask(c)) {\n children[c.id] = c;\n }\n }, parent.id);\n var skipChild;\n\n for (var c in children) {\n var task = children[c];\n var linksCollection = selectSourceLinks ? task.$source : task.$target;\n skipChild = false;\n\n for (var l = 0; l < linksCollection.length; l++) {\n var siblingLink = gantt.getLink(linksCollection[l]);\n var siblingId = selectSourceLinks ? siblingLink.target : siblingLink.source;\n var siblingTask = children[siblingId];\n\n if (siblingTask && task.auto_scheduling !== false && siblingTask.auto_scheduling !== false) {\n if (siblingLink.target == siblingTask.id && Math.abs(siblingLink.lag) <= siblingTask.duration || siblingLink.target == task.id && Math.abs(siblingLink.lag) <= task.duration) {\n skipChild = true;\n break;\n }\n }\n }\n\n if (!skipChild) {\n relations.push({\n task: task.id,\n taskParent: task.parent,\n lag: selectOffset(task),\n subtaskLink: true\n });\n }\n }\n } else {\n relations.push({\n task: parent.id,\n taskParent: parent.parent,\n lag: 0\n });\n }\n\n return relations;\n };\n\n gantt._getDirectDependencies = function (task, selectSuccessors) {\n var links = [],\n successors = [];\n var linksIds = selectSuccessors ? task.$source : task.$target;\n\n for (var i = 0; i < linksIds.length; i++) {\n var link = this.getLink(linksIds[i]);\n\n if (this.isTaskExists(link.source) && this.isTaskExists(link.target)) {\n var target = this.getTask(link.target);\n\n if (!this._isAutoSchedulable(target)) {\n continue;\n } else if (gantt.config.auto_scheduling_use_progress) {\n if (target.progress == 1) {\n continue;\n } else {\n links.push(link);\n }\n } else {\n links.push(link);\n }\n }\n }\n\n for (var i = 0; i < links.length; i++) {\n successors = successors.concat(this._formatLink(links[i]));\n }\n\n return successors;\n };\n\n gantt._getInheritedDependencies = function (task, selectSuccessors) {\n //var successors = [];\n var stop = false;\n var inheritedRelations = [];\n var cacheCollection;\n\n if (this.isTaskExists(task.id)) {\n this.eachParent(function (parent) {\n if (stop) return;\n\n if (caching) {\n cacheCollection = selectSuccessors ? inheritedSuccessorsStash : inheritedPredecessorsStash;\n\n if (cacheCollection[parent.id]) {\n inheritedRelations = inheritedRelations.concat(cacheCollection[parent.id]);\n return;\n }\n }\n\n var parentDependencies;\n\n if (this.isSummaryTask(parent)) {\n if (!this._isAutoSchedulable(parent)) {\n stop = true;\n } else {\n parentDependencies = this._getDirectDependencies(parent, selectSuccessors);\n\n if (caching) {\n cacheCollection[parent.id] = parentDependencies;\n }\n\n inheritedRelations = inheritedRelations.concat(parentDependencies);\n }\n }\n }, task.id, this);\n }\n\n return inheritedRelations;\n };\n\n gantt._getDirectSuccessors = function (task) {\n return this._getDirectDependencies(task, true);\n };\n\n gantt._getInheritedSuccessors = function (task) {\n return this._getInheritedDependencies(task, true);\n };\n\n gantt._getDirectPredecessors = function (task) {\n return this._getDirectDependencies(task, false);\n };\n\n gantt._getInheritedPredecessors = function (task) {\n return this._getInheritedDependencies(task, false);\n };\n\n gantt._getSuccessors = function (task, skipInherited) {\n var successors = this._getDirectSuccessors(task);\n\n if (skipInherited) {\n return successors;\n } else {\n return successors.concat(this._getInheritedSuccessors(task));\n }\n };\n\n gantt._getPredecessors = function (task, skipInherited) {\n var key = String(task.id) + \"-\" + String(skipInherited);\n var result;\n\n if (caching && getPredecessorsCache[key]) {\n return getPredecessorsCache[key];\n }\n\n var predecessors = this._getDirectPredecessors(task);\n\n if (skipInherited) {\n result = predecessors;\n } else {\n result = predecessors.concat(this._getInheritedPredecessors(task));\n }\n\n if (caching) {\n getPredecessorsCache[key] = result;\n }\n\n return result;\n };\n\n gantt._convertToFinishToStartLink = function (id, link, sourceTask, targetTask, sourceParent, targetParent) {\n // convert finish-to-finish, start-to-finish and start-to-start to finish-to-start link and provide some additional properties\n var res = {\n target: id,\n link: gantt.config.links.finish_to_start,\n id: link.id,\n lag: link.lag || 0,\n sourceLag: 0,\n targetLag: 0,\n trueLag: link.lag || 0,\n source: link.source,\n preferredStart: null,\n sourceParent: sourceParent,\n targetParent: targetParent,\n hashSum: null,\n subtaskLink: link.subtaskLink\n }; // GS-148: switch uses strict comparison, so we need to convert the values to the same type\n\n var additionalLag = 0;\n\n switch (String(link.type)) {\n case String(gantt.config.links.start_to_start):\n additionalLag = -sourceTask.duration;\n res.sourceLag = additionalLag;\n break;\n\n case String(gantt.config.links.finish_to_finish):\n additionalLag = -targetTask.duration;\n res.targetLag = additionalLag;\n break;\n\n case String(gantt.config.links.start_to_finish):\n additionalLag = -sourceTask.duration - targetTask.duration;\n res.sourceLag = -sourceTask.duration;\n res.targetLag = -targetTask.duration;\n break;\n\n default:\n additionalLag = 0;\n }\n\n res.lag += additionalLag;\n res.hashSum = res.lag + \"_\" + res.link + \"_\" + res.source + \"_\" + res.target;\n return res;\n };\n};","module.exports = function (gantt) {\n gantt.config.auto_scheduling_use_progress = false;\n gantt.config.auto_scheduling_project_constraint = false;\n};","module.exports = function (gantt) {\n // TODO: why eslint fails on regexp?\n // eslint-disable-next-line no-control-regex\n var htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n var extraSpaces = new RegExp(\" +\", \"gm\");\n\n function stripHTMLLite(htmlText) {\n return (htmlText + \"\").replace(htmlTags, \" \").replace(extraSpaces, \" \");\n }\n\n var singleQuotes = new RegExp(\"'\", \"gm\");\n\n function escapeQuotes(text) {\n return (text + \"\").replace(singleQuotes, \"'\");\n }\n\n gantt._waiAria = {\n getAttributeString: function getAttributeString(attr) {\n var attributes = [\" \"];\n\n for (var i in attr) {\n var text = escapeQuotes(stripHTMLLite(attr[i]));\n attributes.push(i + \"='\" + text + \"'\");\n }\n\n attributes.push(\" \");\n return attributes.join(\" \");\n },\n getTimelineCellAttr: function getTimelineCellAttr(dateString) {\n return gantt._waiAria.getAttributeString({\n \"aria-label\": dateString\n });\n },\n _taskCommonAttr: function _taskCommonAttr(task, div) {\n if (!(task.start_date && task.end_date)) return;\n div.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n if (task.$dataprocessor_class) {\n div.setAttribute(\"aria-busy\", true);\n }\n },\n setTaskBarAttr: function setTaskBarAttr(task, div) {\n this._taskCommonAttr(task, div); // task bars are complex elements that should be treated as a single element\n\n\n div.setAttribute(\"role\", \"img\");\n\n if (!gantt.isReadonly(task) && gantt.config.drag_move) {\n if (task.id != gantt.getState(\"tasksDnd\").drag_id) {\n div.setAttribute(\"aria-grabbed\", false);\n } else {\n div.setAttribute(\"aria-grabbed\", true);\n }\n }\n },\n taskRowAttr: function taskRowAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.order_branch) {\n div.setAttribute(\"aria-grabbed\", false);\n }\n\n div.setAttribute(\"role\", \"row\"); // selected attribute should be added only to the grid because\n // other parts don't have the keyboard navigation\n\n div.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\"); // allowed values start from 1, set 1 for non-tree datastores\n\n div.setAttribute(\"aria-level\", task.$level + 1 || 1);\n\n if (gantt.hasChild(task.id)) {\n div.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n }\n },\n linkAttr: function linkAttr(link, div) {\n var linkTypes = gantt.config.links;\n var toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n var fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n var content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart); // links are complex elements that should be treated as a single element\n\n div.setAttribute(\"role\", \"img\");\n div.setAttribute(\"aria-label\", stripHTMLLite(content));\n\n if (gantt.isReadonly(link)) {\n div.setAttribute(\"aria-readonly\", true);\n }\n },\n gridSeparatorAttr: function gridSeparatorAttr(div) {\n // the only valid role for the grid header\n div.setAttribute(\"role\", \"columnheader\");\n },\n rowResizerAttr: function rowResizerAttr(div) {\n // the only valid role for the grid header\n div.setAttribute(\"role\", \"row\");\n },\n lightboxHiddenAttr: function lightboxHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n },\n lightboxVisibleAttr: function lightboxVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n lightboxAttr: function lightboxAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n div.setAttribute(\"aria-hidden\", \"true\");\n div.firstChild.setAttribute(\"role\", \"heading\");\n div.firstChild.setAttribute(\"aria-level\", \"1\");\n },\n lightboxButtonAttrString: function lightboxButtonAttrString(buttonName) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels[buttonName],\n \"tabindex\": \"0\"\n });\n },\n lightboxHeader: function lightboxHeader(div, headerText) {\n div.setAttribute(\"aria-label\", headerText);\n },\n lightboxSelectAttrString: function lightboxSelectAttrString(time_option) {\n var label = \"\";\n\n switch (time_option) {\n case \"%Y\":\n label = gantt.locale.labels.years;\n break;\n\n case \"%m\":\n label = gantt.locale.labels.months;\n break;\n\n case \"%d\":\n label = gantt.locale.labels.days;\n break;\n\n case \"%H:%i\":\n label = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n break;\n\n default:\n break;\n }\n\n return gantt._waiAria.getAttributeString({\n \"aria-label\": label\n });\n },\n lightboxDurationInputAttrString: function lightboxDurationInputAttrString(section) {\n return this.getAttributeString({\n \"aria-label\": gantt.locale.labels.column_duration,\n \"aria-valuemin\": \"0\",\n \"role\": \"spinbutton\"\n });\n },\n inlineEditorAttr: function inlineEditorAttr(div) {\n div.setAttribute(\"role\", \"row\");\n },\n gridAttrString: function gridAttrString() {\n return [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n },\n gridScaleRowAttrString: function gridScaleRowAttrString() {\n return \"role='row'\";\n },\n gridScaleCellAttrString: function gridScaleCellAttrString(column, label) {\n var attrs = \"\";\n\n if (column.name == \"add\") {\n // a more precise role is button, but it is not valid for the grid header\n attrs = this.getAttributeString({\n \"role\": \"columnheader\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n } else {\n var attributes = {\n \"role\": \"columnheader\",\n \"aria-label\": label\n };\n\n if (gantt._sort && gantt._sort.name == column.name) {\n if (gantt._sort.direction == \"asc\") {\n attributes[\"aria-sort\"] = \"ascending\";\n } else {\n attributes[\"aria-sort\"] = \"descending\";\n }\n }\n\n attrs = this.getAttributeString(attributes);\n }\n\n return attrs;\n },\n gridDataAttrString: function gridDataAttrString() {\n return \"role='rowgroup'\";\n },\n reorderMarkerAttr: function reorderMarkerAttr(div) {\n div.setAttribute(\"role\", \"grid\");\n div.firstChild.removeAttribute(\"aria-level\");\n div.firstChild.setAttribute(\"aria-grabbed\", \"true\");\n },\n gridCellAttrString: function gridCellAttrString(column, textValue, task) {\n var attributes = {\n \"role\": \"gridcell\",\n \"aria-label\": textValue\n };\n\n if (!column.editor || gantt.isReadonly(task)) {\n attributes[\"aria-readonly\"] = true;\n }\n\n return this.getAttributeString(attributes);\n },\n gridAddButtonAttrString: function gridAddButtonAttrString(column) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n },\n messageButtonAttrString: function messageButtonAttrString(buttonLabel) {\n return \"tabindex='0' role='button' aria-label='\" + buttonLabel + \"'\";\n },\n messageInfoAttr: function messageInfoAttr(div) {\n div.setAttribute(\"role\", \"alert\"); //div.setAttribute(\"tabindex\", \"-1\");\n },\n messageModalAttr: function messageModalAttr(div, uid) {\n div.setAttribute(\"role\", \"dialog\");\n\n if (uid) {\n div.setAttribute(\"aria-labelledby\", uid);\n } //\tdiv.setAttribute(\"tabindex\", \"-1\");\n\n },\n quickInfoAttr: function quickInfoAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n },\n quickInfoHeaderAttrString: function quickInfoHeaderAttrString() {\n return \" role='heading' aria-level='1' \";\n },\n quickInfoHeader: function quickInfoHeader(div, header) {\n div.setAttribute(\"aria-label\", header);\n },\n quickInfoButtonAttrString: function quickInfoButtonAttrString(label) {\n return gantt._waiAria.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": label,\n \"tabindex\": \"0\"\n });\n },\n tooltipAttr: function tooltipAttr(div) {\n div.setAttribute(\"role\", \"tooltip\");\n },\n tooltipVisibleAttr: function tooltipVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n tooltipHiddenAttr: function tooltipHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n }\n };\n\n function isDisabled() {\n return !gantt.config.wai_aria_attributes;\n }\n\n for (var i in gantt._waiAria) {\n gantt._waiAria[i] = function (payload) {\n return function () {\n if (isDisabled()) {\n return \"\";\n }\n\n return payload.apply(this, arguments);\n };\n }(gantt._waiAria[i]);\n }\n};","module.exports = function (gantt) {\n gantt._extend_to_optional = function (lightbox_block) {\n var duration = lightbox_block;\n var optional_time = {\n render: duration.render,\n focus: duration.focus,\n set_value: function set_value(node, value, task, section) {\n var mapping = gantt._resolve_default_mapping(section);\n\n if (!task[mapping.start_date] || mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task)) {\n optional_time.disable(node, section);\n var val = {};\n\n for (var i in mapping) {\n //take default values from the time control from task start/end dates\n val[mapping[i]] = task[i];\n }\n\n return duration.set_value.call(gantt, node, value, val, section); //set default value\n } else {\n optional_time.enable(node, section);\n return duration.set_value.call(gantt, node, value, task, section);\n }\n },\n get_value: function get_value(node, task, section) {\n if (section.disabled) {\n return {\n start_date: null\n };\n } else {\n return duration.get_value.call(gantt, node, task, section);\n }\n },\n update_block: function update_block(node, section) {\n gantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n node.style.display = section.disabled ? \"none\" : \"block\";\n\n if (section.button) {\n var button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n labels = gantt.locale.labels;\n var button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n button.innerHTML = button_text;\n }\n\n gantt.resizeLightbox();\n },\n disable: function disable(node, section) {\n section.disabled = true;\n optional_time.update_block(node, section);\n },\n enable: function enable(node, section) {\n section.disabled = false;\n optional_time.update_block(node, section);\n },\n button_click: function button_click(index, el, section, container) {\n if (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n return;\n }\n\n var config = gantt._get_typed_lightbox_config()[index];\n\n if (config.disabled) {\n optional_time.enable(container, config);\n } else {\n optional_time.disable(container, config);\n }\n }\n };\n return optional_time;\n };\n\n gantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n gantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function TypeselectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TypeselectControl, _super);\n\n TypeselectControl.prototype.render = function (sns) {\n var types = gantt.config.types,\n locale = gantt.locale.labels,\n options = [];\n\n var filter = sns.filter || function (typeKey, typeValue) {\n if (!types.placeholder || typeValue !== types.placeholder) {\n return true;\n }\n\n return false;\n };\n\n for (var i in types) {\n if (!filter(i, types[i]) === false) {\n options.push({\n key: types[i],\n label: locale[\"type_\" + i]\n });\n }\n }\n\n sns.options = options;\n var oldOnChange = sns.onchange;\n\n sns.onchange = function () {\n gantt.changeLightboxType(this.value);\n\n if (this.value === gantt.config.types.task) {\n gantt._lightbox_new_type = \"task\";\n }\n\n if (typeof oldOnChange == 'function') {\n oldOnChange.apply(this, arguments);\n }\n };\n\n return _super.prototype.render.apply(this, arguments);\n };\n\n return TypeselectControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function ConstraintControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ConstraintControl, _super);\n\n function isNonTimedConstraint(value) {\n if (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n return true;\n } else {\n return false;\n }\n }\n\n function toggleTimeSelect(timeSelects, typeValue) {\n var isNonTimed = isNonTimedConstraint(typeValue);\n\n for (var i = 0; i < timeSelects.length; i++) {\n timeSelects[i].disabled = isNonTimed;\n }\n }\n\n ConstraintControl.prototype.render = function (sns) {\n var height = (sns.height || 30) + \"px\";\n var html = \"
\";\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 += \"\" + htmlHelpers.getHtmlSelect(sns.options, [{\n key: \"data-type\",\n value: \"constraint-type\"\n }]) + \"\";\n var timeLabel = gantt.locale.labels[\"constraint_date\"] || \"Constraint date\";\n html += \"\";\n html += \"
\";\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 helpers = require(\"../../../../utils/helpers\");\n\nvar domHelpers = require(\"../../utils/dom_helpers\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nvar __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n var localCache = {\n resources: {},\n resourcesValues: {},\n filter: {},\n eventsInitialized: {},\n changed: false\n };\n gantt.attachEvent(\"onAfterLightbox\", _clearCached);\n\n function ResourcesControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ResourcesControl, _super);\n\n ResourcesControl.prototype.render = function (sns) {\n if (!sns.options) {\n sns.options = gantt.serverList(\"resourceOptions\");\n }\n\n if (!sns.map_to || sns.map_to == \"auto\") {\n sns.map_to = gantt.config.resource_property;\n }\n\n var html;\n var resourceFilterPlaceholder = gantt.locale.labels.resources_filter_placeholder || sns.filter_placeholder || \"type to filter\";\n var resourceFilterLabel = gantt.locale.labels.resources_filter_label || \"hide empty\"; // if set fixed height for this element, then resize of lightbox will be calculated improperly\n\n html = \"\";\n html += \"
\";\n html += \"
\";\n html += \"\";\n return html;\n };\n\n ResourcesControl.prototype.set_value = function (node, value, ev, sns) {\n var resourcesElement = _setResourcesElement(node, sns);\n\n var htmlResourceRow = \"\";\n var data;\n\n _setFilterCache(node, sns);\n\n _initEvents(node, ev, sns, this);\n\n helpers.forEach(sns.options, function (entry, index) {\n if (sns.unassigned_value == entry.key) {\n return;\n }\n\n data = _getDisplayValues(sns, value, entry);\n htmlResourceRow += [\"\"].join(\"\");\n });\n resourcesElement.innerHTML = htmlResourceRow; // weird element sizes in ie11 when display empty resource list, use zoom to force repaint\n\n resourcesElement.style.zoom = \"1\";\n resourcesElement._offsetSizes = resourcesElement.offsetHeight;\n resourcesElement.style.zoom = \"\";\n gantt.resizeLightbox();\n\n gantt._center_lightbox(gantt.getLightbox());\n\n localCache.changed = false;\n };\n\n ResourcesControl.prototype.get_value = function (node, ev, sns) {\n if (!localCache.changed) {\n return ev[sns.map_to || gantt.config.resource_property] || [];\n }\n\n var amountElement = _getResourcesElement(sns);\n\n var result = [];\n\n var selectorAdd = _getInputElementSelector(true);\n\n var selectorSub = _getInputElementSelector(false);\n\n var filterCache = _getFilterCache(sns);\n\n var settedValuesHash = gantt.copy(localCache.resourcesValues[sns.id]) || {};\n var itemsAdd = amountElement.querySelectorAll(selectorAdd);\n var itemsSub = amountElement.querySelectorAll(selectorSub);\n\n for (var i = 0; i < itemsSub.length; i++) {\n delete settedValuesHash[itemsSub[i].getAttribute(\"data-item-id\")];\n }\n\n for (var i = 0; i < itemsAdd.length; i++) {\n var originalId = itemsAdd[i].getAttribute(\"data-assignment-id\");\n var resourceId = itemsAdd[i].getAttribute(\"data-item-id\");\n var amount = itemsAdd[i].value.trim();\n\n if (amount !== \"\" && amount !== \"0\") {\n delete settedValuesHash[resourceId];\n result[result.length] = {\n resource_id: resourceId,\n value: amount,\n id: originalId\n };\n }\n }\n\n if (filterCache.filterApplied) {\n for (var item in settedValuesHash) {\n result[result.length] = {\n resource_id: item,\n value: settedValuesHash[item].value,\n id: settedValuesHash[item].id\n };\n }\n }\n\n return result;\n };\n\n ResourcesControl.prototype.focus = function (node) {\n gantt._focus(node.querySelector(\".gantt_resources\"));\n };\n\n function _getAmountInput(item, value, disabled, assignmentId) {\n var _attributes;\n\n var innerHTML = \"\";\n if (!item) return;\n _attributes = [{\n key: \"data-item-id\",\n value: item.key\n }, {\n key: \"data-assignment-id\",\n value: assignmentId || \"\"\n }, {\n key: \"class\",\n value: \"gantt_resource_amount_input\"\n }];\n\n if (disabled) {\n _attributes.push({\n key: \"disabled\",\n value: \"disabled\"\n });\n }\n\n if (item.options) {\n innerHTML += htmlHelpers.getHtmlSelect(item.options, _attributes, value);\n } else {\n _attributes[_attributes.length] = {\n key: \"value\",\n value: value || \"\"\n };\n innerHTML += htmlHelpers.getHtmlInput(_attributes);\n }\n\n return innerHTML;\n }\n\n function _getValue(el) {\n return el.value.trim();\n }\n\n function _initEvents(node, ev, sns, context) {\n if (localCache.eventsInitialized[sns.id]) return;\n\n var _applyFilter = function _applyFilter(e) {\n _saveValues(sns, node);\n\n var resultSns;\n var query;\n var hideUnsetted;\n var input;\n var checkbox;\n\n var filterCache = _getFilterCache(sns);\n\n checkbox = filterCache.checkbox;\n input = filterCache.input;\n hideUnsetted = checkbox.checked;\n query = _getValue(input);\n filterCache.filterApplied = !!query;\n\n if (gantt.getState().lightbox) {\n ev = gantt.getLightboxValues();\n }\n\n resultSns = _getSnsToHideUnsetted(sns, ev, query, hideUnsetted);\n var value = ev[sns.map_to];\n context.form_blocks.resources.set_value(node, value, ev, resultSns);\n };\n\n function _resourceChangeListener(e) {\n var target = e.target;\n var parent;\n var input;\n localCache.changed = true;\n\n if (e.target.type === \"checkbox\") {\n parent = target.parentNode;\n input = parent.querySelector(_getInputElementSelector());\n input.disabled = !target.checked;\n var itemId = input.getAttribute(\"data-item-id\");\n var row = domHelpers.locateClassName(e, \"gantt_resource_row\");\n var valueInput = row.querySelector(\".gantt_resource_amount_input\");\n row.setAttribute(\"data-checked\", target.checked);\n\n if (target.checked) {\n if (input.nodeName.toLowerCase() === \"select\") {\n gantt.callEvent(\"onResourcesSelectActivated\", [{\n target: input\n }]);\n }\n\n var resId = itemId;\n var defaultValue = sns.default_value;\n sns.options.forEach(function (option) {\n if (option.key == resId && option.default_value) {\n defaultValue = option.default_value;\n }\n });\n\n if (valueInput && !valueInput.value && defaultValue !== undefined) {\n valueInput.value = defaultValue;\n\n _saveValues(sns, this);\n }\n\n if (valueInput.select) {\n valueInput.select();\n } else if (valueInput.focus) {\n valueInput.focus();\n }\n } else {\n if (localCache.resourcesValues[sns.id]) {\n delete localCache.resourcesValues[sns.id][itemId];\n }\n }\n } else if (e.target.type === \"text\" || e.target.nodeName.toLowerCase() === \"select\") {\n parent = target.parentNode.parentNode;\n input = e.target;\n\n _saveValues(sns, this);\n }\n }\n\n function _saveValues(sns, domElement) {\n var selector = _getInputElementSelector();\n\n var inputs = domElement.querySelectorAll(selector);\n localCache.resourcesValues[sns.id] = localCache.resourcesValues[sns.id] || {};\n\n for (var i = 0; i < inputs.length; i++) {\n var key = inputs[i].getAttribute(\"data-item-id\");\n var originalAssignmentId = inputs[i].getAttribute(\"data-assignment-id\");\n\n if (!inputs[i].disabled) {\n localCache.resourcesValues[sns.id][key] = {\n value: inputs[i].value,\n id: originalAssignmentId\n };\n } else {\n delete localCache.resourcesValues[sns.id][key];\n }\n }\n }\n\n _applyFilter = helpers.throttle(_applyFilter, 100);\n\n _getFilterCache(sns).container.addEventListener(\"keyup\", _applyFilter);\n\n _getFilterCache(sns).container.addEventListener(\"input\", _applyFilter, true);\n\n _getFilterCache(sns).container.addEventListener(\"change\", _applyFilter, true);\n\n _getResourcesElement(sns).addEventListener(\"input\", _resourceChangeListener);\n\n _getResourcesElement(sns).addEventListener(\"change\", _resourceChangeListener);\n\n gantt.attachEvent(\"onResourcesSelectActivated\", gantt.bind(_resourceChangeListener, _getResourcesElement(sns)));\n localCache.eventsInitialized[sns.id] = true;\n }\n\n function _getSnsToHideUnsetted(controlConfig, task, query, hideUnsetted) {\n var comparison;\n var resultConfig;\n\n if (!hideUnsetted) {\n if (query === \"\") {\n // show all\n return controlConfig;\n }\n\n comparison = function comparison(entry) {\n // show matching labels only\n if (entry.label.toLowerCase().indexOf(query.toLowerCase()) >= 0) {\n return entry;\n }\n };\n } else {\n var collection = task[controlConfig.map_to] || [];\n\n if (!helpers.isArray(collection)) {\n collection = [collection];\n } // copy section array in order not to modify ev[sns.map_to]\n\n\n collection = collection.slice();\n\n if (collection.length === 0) {\n //nothing setted\n collection = [];\n resultConfig = gantt.copy(controlConfig);\n resultConfig.options = [];\n\n for (var key in localCache.resourcesValues[controlConfig.id]) {\n var cachedValue = localCache.resourcesValues[controlConfig.id][key];\n\n if (cachedValue.value !== \"\") {\n collection.push({\n resource_id: key,\n value: cachedValue.value,\n id: cachedValue.id\n });\n }\n }\n\n if (collection.length === 0) {\n return resultConfig;\n }\n } else {\n for (var key in localCache.resourcesValues[controlConfig.id]) {\n var cachedValue = localCache.resourcesValues[controlConfig.id][key];\n\n if (cachedValue.value !== \"\") {\n var searchResult = helpers.arrayFind(collection, function (entry) {\n return entry.id == key;\n });\n\n if (!searchResult) {\n collection.push({\n resource_id: key,\n value: cachedValue.value,\n id: cachedValue.id\n });\n }\n }\n }\n }\n\n var itemIds = {};\n\n for (var i = 0; i < collection.length; i++) {\n itemIds[collection[i].resource_id] = true;\n }\n\n comparison = function comparison(entry) {\n //show setted and filtered if field is filled\n if (itemIds[String(entry.key)] && (query === \"\" || entry.label.toLowerCase().indexOf(query.toLowerCase()) >= 0)) {\n return entry;\n }\n };\n }\n\n resultConfig = gantt.copy(controlConfig);\n resultConfig.options = helpers.arrayFilter(resultConfig.options, comparison);\n return resultConfig;\n }\n\n function _getInputElementSelector(isChecked) {\n if (isChecked === undefined) {\n return \".gantt_resource_amount_input\";\n } else {\n return \"[data-checked='\" + (isChecked ? \"true\" : \"false\") + \"'] .gantt_resource_amount_input\";\n }\n }\n\n function _setResourcesElement(node, sns) {\n if (!localCache.resources[sns.id]) {\n localCache.resources[sns.id] = node.querySelector(\".gantt_resources\");\n }\n\n return localCache.resources[sns.id];\n }\n\n function _getResourcesElement(sns) {\n return localCache.resources[sns.id];\n }\n\n function _setFilterCache(node, sns) {\n if (!localCache.filter[sns.id]) {\n var container = node.querySelector(\".gantt_resources_filter\");\n var input = container.querySelector(\".gantt_resources_filter_input\");\n var checkbox = container.querySelector(\".switch_unsetted\");\n localCache.filter[sns.id] = {\n container: container,\n input: input,\n checkbox: checkbox,\n filterApplied: false\n };\n }\n\n return localCache.filter[sns.id];\n }\n\n function _getFilterCache(sns) {\n return localCache.filter[sns.id];\n }\n\n function _clearCached() {\n for (var key in localCache.filter) {\n localCache.filter[key].checkbox.checked = false;\n localCache.filter[key].input.value = \"\";\n localCache.filter[key].filterApplied = false;\n }\n\n localCache.resourcesValues = {};\n }\n\n function _getDisplayValues(sns, value, option) {\n var data = {};\n\n if (value) {\n var searchResult;\n\n if (helpers.isArray(value)) {\n searchResult = helpers.arrayFind(value, function (val) {\n return val.resource_id == option.key;\n });\n } else if (value.resource_id == option.key) {\n searchResult = value;\n }\n\n if (searchResult) {\n data.value = searchResult.value;\n data.id = searchResult.id;\n }\n }\n\n if (localCache.resourcesValues[sns.id] && localCache.resourcesValues[sns.id][option.key]) {\n data.value = localCache.resourcesValues[sns.id][option.key].value;\n data.id = localCache.resourcesValues[sns.id][option.key].id;\n }\n\n return data;\n }\n\n return ResourcesControl;\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};","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}","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 = \"
\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"
\";\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 = \"
\" + \"\" + \"\" + \"\" + label + \"\" + \"
\";\n var html = \"
\" + time + \" \" + duration + \"
\";\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 = \"
\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"\";\n }\n }\n\n html += \"
\";\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 = \"
\";\n\n if (sns.options && sns.options.length) {\n for (var i = 0; i < sns.options.length; i++) {\n html += \"\";\n }\n } else {\n sns.single_value = true;\n html += \"\";\n }\n\n html += \"
\";\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 = \"
\";\n html += time;\n\n if (sns.single_date) {\n time = gantt.form_blocks.getTimePicker.call(this, sns, true);\n html += \"\";\n } else {\n html += \"  –  \";\n }\n\n html += time;\n html += \"
\";\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 \"
\";\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 \"
\";\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 = \"
 
\"; // GS-1952. Attaching the lightbox to the BODY element is not considered secure.\n // Attach it to Gantt container for Salesforce and other secure environments\n\n gantt._lightbox_root = gantt.$root;\n\n function setParentNode() {\n var cspEnvironment = gantt.config.csp === true;\n var salesforceEnvironment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"] || '$shadowResolver$' in document.body;\n\n if (cspEnvironment || salesforceEnvironment) {\n gantt._lightbox_root = gantt.$root;\n } else {\n gantt._lightbox_root = document.body;\n }\n } //TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"lightbox\", function () {\n return {\n lightbox: gantt._lightbox_id\n };\n });\n\n gantt.showLightbox = function (id) {\n if (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n var task = this.getTask(id);\n var box = this.getLightbox(this.getTaskType(task.type));\n\n this._center_lightbox(box);\n\n this.showCover();\n\n this._fill_lightbox(id, box);\n\n this._waiAria.lightboxVisibleAttr(box);\n\n this.callEvent(\"onLightbox\", [id]);\n };\n\n function _is_chart_visible(gantt) {\n var timeline = gantt.$ui.getView(\"timeline\");\n\n if (timeline && timeline.isVisible()) {\n return true;\n } else {\n return false;\n }\n }\n\n gantt._get_timepicker_step = function () {\n if (this.config.round_dnd_dates) {\n var step;\n\n if (_is_chart_visible(this)) {\n var scale = gantt.getScale();\n step = helpers.getSecondsInUnit(scale.unit) * scale.step / 60; //timepicker step is measured in minutes\n }\n\n if (!step || step >= 60 * 24) {\n step = this.config.time_step;\n }\n\n return step;\n }\n\n return this.config.time_step;\n };\n\n gantt.getLabel = function (property, key) {\n var sections = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sections.length; i++) {\n if (sections[i].map_to == property) {\n var options = sections[i].options;\n\n for (var j = 0; j < options.length; j++) {\n if (options[j].key == key) {\n return options[j].label;\n }\n }\n }\n }\n\n return \"\";\n };\n\n gantt.updateCollection = function (list_name, collection) {\n collection = collection.slice(0);\n var list = gantt.serverList(list_name);\n if (!list) return false;\n list.splice(0, list.length);\n list.push.apply(list, collection || []);\n gantt.resetLightbox();\n };\n\n gantt.getLightboxType = function () {\n return this.getTaskType(this._lightbox_type);\n };\n\n gantt.getLightbox = function (type) {\n var lightboxDiv;\n var fullWidth;\n var html;\n var sns;\n var ds;\n var classNames = \"\";\n setParentNode();\n if (type === undefined) type = this.getLightboxType();\n\n if (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n this._lightbox_type = this.getTaskType(type);\n lightboxDiv = document.createElement(\"div\");\n classNames = \"gantt_cal_light\";\n fullWidth = this._is_lightbox_timepicker();\n if (gantt.config.wide_form || fullWidth) classNames += \" gantt_cal_light_wide\";\n\n if (fullWidth) {\n gantt.config.wide_form = true;\n classNames += \" gantt_cal_light_full\";\n }\n\n lightboxDiv.className = classNames;\n lightboxDiv.style.visibility = \"hidden\";\n html = this._lightbox_template;\n html += getHtmlButtons(this.config.buttons_left);\n html += getHtmlButtons(this.config.buttons_right, true);\n lightboxDiv.innerHTML = html;\n\n gantt._waiAria.lightboxAttr(lightboxDiv);\n\n if (gantt.config.drag_lightbox) {\n lightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\n lightboxDiv.firstChild.onselectstart = function () {\n return false;\n };\n\n lightboxDiv.firstChild.style.cursor = \"pointer\";\n\n gantt._init_dnd_events();\n } // GS-1428: If there is lightbox node, we need to remove it from the DOM\n\n\n if (this._lightbox) {\n this.resetLightbox();\n }\n\n gantt._lightbox_root.insertBefore(lightboxDiv, gantt._lightbox_root.firstChild);\n\n this._lightbox = lightboxDiv;\n sns = this._get_typed_lightbox_config(type);\n html = this._render_sections(sns);\n ds = lightboxDiv.querySelector(\"div.gantt_cal_larea\"); //GS-1131. If gantt_cal_larea is displayed, Firefox renders buttons incorrectly;\n\n var backup_overflow = ds.style.overflow;\n ds.style.overflow = 'hidden';\n ds.innerHTML = html;\n bindLabelsToInputs(sns); //sizes\n\n this.resizeLightbox();\n ds.style.overflow = backup_overflow;\n\n this._init_lightbox_events(this);\n\n lightboxDiv.style.display = \"none\";\n lightboxDiv.style.visibility = \"visible\";\n }\n\n return this._lightbox;\n };\n\n gantt._render_sections = function (sns) {\n var html = \"\";\n\n for (var i = 0; i < sns.length; i++) {\n var block = this.form_blocks[sns[i].type];\n if (!block) continue; //ignore incorrect blocks\n\n sns[i].id = \"area_\" + this.uid();\n var display = sns[i].hidden ? \" style='display:none'\" : \"\";\n var button = \"\";\n\n if (sns[i].button) {\n button = \"
\" + this.locale.labels[\"button_\" + sns[i].button] + \"
\";\n }\n\n if (this.config.wide_form) {\n html += \"
\";\n }\n\n html += \"
\" + block.render.call(this, sns[i]);\n html += \"
\";\n }\n\n return html;\n };\n\n gantt.resizeLightbox = function () {\n if (!this._lightbox) return;\n\n var con = this._lightbox.querySelector(\".gantt_cal_larea\");\n\n con.style.height = \"0px\";\n con.style.height = con.scrollHeight + \"px\";\n this._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n con.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n };\n\n gantt._center_lightbox = function (box) {\n if (box) {\n box.style.display = \"block\";\n var scroll_top = window.pageYOffset || gantt._lightbox_root.scrollTop || document.documentElement.scrollTop;\n var scroll_left = window.pageXOffset || gantt._lightbox_root.scrollLeft || document.documentElement.scrollLeft;\n var view_height = window.innerHeight || document.documentElement.clientHeight;\n if (scroll_top) // if vertical scroll on window\n box.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";else // vertical scroll on body\n box.style.top = Math.round(Math.max((view_height - box.offsetHeight) / 2, 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n // not quite accurate but used for compatibility reasons\n\n if (document.documentElement.scrollWidth > gantt._lightbox_root.offsetWidth) // if horizontal scroll on the window\n box.style.left = Math.round(scroll_left + (gantt._lightbox_root.offsetWidth - box.offsetWidth) / 2) + \"px\";else // horizontal scroll on the body\n box.style.left = Math.round((gantt._lightbox_root.offsetWidth - box.offsetWidth) / 2) + \"px\";\n }\n };\n\n gantt.showCover = function () {\n if (this._cover) return;\n this._cover = document.createElement(\"DIV\");\n this._cover.className = \"gantt_cal_cover\";\n var rootElement = gantt._lightbox_root || gantt.$root;\n rootElement.appendChild(this._cover);\n };\n\n gantt.event(window, \"deviceorientation\", function () {\n if (gantt.getState().lightbox) {\n gantt._center_lightbox(gantt.getLightbox());\n }\n });\n\n gantt._init_lightbox_events = function () {\n gantt.lightbox_events = {};\n\n gantt.lightbox_events.gantt_save_btn = function () {\n gantt._save_lightbox();\n };\n\n gantt.lightbox_events.gantt_delete_btn = function () {\n gantt._lightbox_new_type = null;\n if (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id])) return;\n\n if (gantt.isTaskExists(gantt._lightbox_id)) {\n gantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n } else {\n gantt.hideLightbox();\n }\n };\n\n gantt.lightbox_events.gantt_cancel_btn = function () {\n gantt._cancel_lightbox();\n };\n\n gantt.lightbox_events[\"default\"] = function (e, src) {\n if (src.getAttribute(\"data-dhx-button\")) {\n gantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n } else {\n var index, block, sec;\n var className = domHelpers.getClassName(src);\n\n if (className.indexOf(\"gantt_custom_button\") != -1) {\n if (className.indexOf(\"gantt_custom_button_\") != -1) {\n index = src.parentNode.getAttribute(\"data-index\");\n sec = src;\n\n while (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n sec = sec.parentNode;\n }\n } else {\n index = src.getAttribute(\"data-index\");\n sec = src.parentNode;\n src = src.firstChild;\n }\n }\n\n var sections = gantt._get_typed_lightbox_config();\n\n if (index) {\n index = index * 1;\n block = gantt.form_blocks[sections[index * 1].type];\n block.button_click(index, src, sec, sec.nextSibling);\n }\n }\n };\n\n this.event(gantt.getLightbox(), \"click\", function (e) {\n e = e || window.event;\n var src = domHelpers.getTargetNode(e);\n var className = domHelpers.getClassName(src);\n\n if (!className) {\n src = src.previousSibling;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n src = src.firstChild;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className) {\n var func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n return func(e, src);\n }\n\n return false;\n });\n\n gantt.getLightbox().onkeydown = function (e) {\n var event = e || window.event;\n var target = e.target || e.srcElement;\n var buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n switch ((e || event).keyCode) {\n case gantt.constants.KEY_CODES.SPACE:\n {\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n }\n\n break;\n }\n\n case gantt.keys.edit_save:\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n } else {\n gantt._save_lightbox();\n }\n\n break;\n\n case gantt.keys.edit_cancel:\n gantt._cancel_lightbox();\n\n break;\n\n default:\n break;\n }\n };\n };\n\n gantt._cancel_lightbox = function () {\n var task = this.getLightboxValues();\n this.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\n if (gantt.isTaskExists(task.id) && task.$new) {\n this.silent(function () {\n gantt.$data.tasksStore.removeItem(task.id);\n\n gantt._update_flags(task.id, null);\n });\n this.refreshData();\n }\n\n this.hideLightbox();\n };\n\n gantt._save_lightbox = function () {\n var task = this.getLightboxValues();\n if (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new])) return; // GS-2170. Do not recalculate the indexes and dates of other tasks\n // as they will be recalculated in the `refreshData`\n\n gantt.$data.tasksStore._skipTaskRecalculation = \"lightbox\";\n\n if (task.$new) {\n delete task.$new;\n this.addTask(task, task.parent, this.getTaskIndex(task.id));\n } else if (this.isTaskExists(task.id)) {\n this.mixin(this.getTask(task.id), task, true);\n this.refreshTask(task.id);\n this.updateTask(task.id);\n }\n\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n this.refreshData(); // TODO: do we need any blockable events here to prevent closing lightbox?\n\n this.hideLightbox();\n };\n\n gantt._resolve_default_mapping = function (section) {\n var mapping = section.map_to;\n var time_controls = {\n \"time\": true,\n \"time_optional\": true,\n \"duration\": true,\n \"duration_optional\": true\n };\n\n if (time_controls[section.type]) {\n if (section.map_to == \"auto\") {\n mapping = {\n start_date: \"start_date\",\n end_date: \"end_date\",\n duration: \"duration\"\n };\n } else if (typeof section.map_to === \"string\") {\n mapping = {\n start_date: section.map_to\n };\n }\n } else if (section.type === \"constraint\") {\n if (!section.map_to || typeof section.map_to === \"string\") {\n mapping = {\n constraint_type: \"constraint_type\",\n constraint_date: \"constraint_date\"\n };\n }\n }\n\n return mapping;\n };\n\n gantt.getLightboxValues = function () {\n var task = {};\n\n if (gantt.isTaskExists(this._lightbox_id)) {\n task = this.mixin({}, this.getTask(this._lightbox_id));\n }\n\n var sns = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sns.length; i++) {\n var node = gantt._lightbox_root.querySelector(\"#\" + sns[i].id);\n\n node = node ? node.nextSibling : node;\n var block = this.form_blocks[sns[i].type];\n if (!block) continue;\n var res = block.get_value.call(this, node, task, sns[i]);\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n if (typeof map_to == \"string\" && map_to != \"auto\") {\n task[map_to] = res;\n } else if (_typeof(map_to) == \"object\") {\n for (var property in map_to) {\n if (map_to[property]) task[map_to[property]] = res[property];\n }\n }\n } // GS-1282 We need to preserve the task type even if the lightbox doesn't have the typeselect section\n\n\n if (gantt._lightbox_new_type == \"task\") {\n task.type = gantt.config.types.task;\n gantt._lightbox_new_type = null;\n }\n\n return task;\n };\n\n gantt.hideLightbox = function () {\n var box = this.getLightbox();\n if (box) box.style.display = \"none\";\n\n this._waiAria.lightboxHiddenAttr(box);\n\n this._lightbox_id = null;\n this.hideCover();\n this.callEvent(\"onAfterLightbox\", []);\n };\n\n gantt.hideCover = function () {\n if (this._cover) this._cover.parentNode.removeChild(this._cover);\n this._cover = null;\n };\n\n gantt.resetLightbox = function () {\n if (gantt._lightbox && !gantt._custom_lightbox) gantt._lightbox.parentNode.removeChild(gantt._lightbox);\n gantt._lightbox = null;\n gantt.hideCover();\n };\n\n gantt._set_lightbox_values = function (data, box) {\n var task = data;\n var s = box.getElementsByTagName(\"span\");\n var lightboxHeader = [];\n\n if (gantt.templates.lightbox_header) {\n lightboxHeader.push(\"\");\n lightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n s[1].innerHTML = \"\";\n s[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n } else {\n lightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n lightboxHeader.push(String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\n s[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n s[2].innerHTML = String(this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n }\n\n s[1].innerHTML = lightboxHeader[0];\n s[2].innerHTML = lightboxHeader[1];\n\n gantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n var sns = this._get_typed_lightbox_config(this.getLightboxType());\n\n for (var i = 0; i < sns.length; i++) {\n var section = sns[i];\n\n if (!this.form_blocks[section.type]) {\n continue; //skip incorrect sections, same check is done during rendering\n }\n\n var node = gantt._lightbox_root.querySelector(\"#\" + section.id).nextSibling;\n\n var block = this.form_blocks[section.type];\n\n var map_to = gantt._resolve_default_mapping(sns[i]);\n\n var value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n block.set_value.call(gantt, node, value, task, section);\n if (section.focus) block.focus.call(gantt, node);\n }\n\n if (gantt.isTaskExists(data.id)) {\n gantt._lightbox_id = data.id;\n }\n };\n\n gantt._fill_lightbox = function (id, box) {\n var task = this.getTask(id);\n\n this._set_lightbox_values(task, box);\n };\n\n gantt.getLightboxSection = function (name) {\n var config = this._get_typed_lightbox_config();\n\n var i = 0;\n\n for (i; i < config.length; i++) {\n if (config[i].name == name) break;\n }\n\n var section = config[i];\n if (!section) return null;\n if (!this._lightbox) this.getLightbox();\n\n var header = gantt._lightbox_root.querySelector(\"#\" + section.id);\n\n var node = header.nextSibling;\n var result = {\n section: section,\n header: header,\n node: node,\n getValue: function getValue(ev) {\n return gantt.form_blocks[section.type].get_value.call(gantt, node, ev || {}, section);\n },\n setValue: function setValue(value, ev) {\n return gantt.form_blocks[section.type].set_value.call(gantt, node, value, ev || {}, section);\n }\n };\n var handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n return handler ? handler(result) : result;\n };\n\n gantt._lightbox_methods.get_template_control = function (result) {\n result.control = result.node;\n return result;\n };\n\n gantt._lightbox_methods.get_select_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_textarea_control = function (result) {\n result.control = result.node.getElementsByTagName(\"textarea\")[0];\n return result;\n };\n\n gantt._lightbox_methods.get_time_control = function (result) {\n result.control = result.node.getElementsByTagName(\"select\"); // array\n\n return result;\n };\n\n gantt._init_dnd_events = function () {\n var eventElement = gantt._lightbox_root;\n this.event(eventElement, \"mousemove\", gantt._move_while_dnd);\n this.event(eventElement, \"mouseup\", gantt._finish_dnd); // GS-1952: In Salesforce environment, the lightbox is attached to the Gantt container. \n // So when Gantt is reinitialized, the events are no longer attached to the Gantt container.\n // gantt._init_dnd_events = function () {\n // };\n };\n\n gantt._move_while_dnd = function (event) {\n if (gantt._dnd_start_lb) {\n if (!document.gantt_unselectable) {\n gantt._lightbox_root.className += \" gantt_unselectable\";\n document.gantt_unselectable = true;\n }\n\n var lb = gantt.getLightbox();\n var now = [event.pageX, event.pageY];\n lb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n lb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n }\n };\n\n gantt._ready_to_dnd = function (event) {\n var lb = gantt.getLightbox();\n gantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n gantt._dnd_start_lb = [event.pageX, event.pageY];\n };\n\n gantt._finish_dnd = function () {\n if (gantt._lb_start) {\n gantt._lb_start = gantt._dnd_start_lb = false;\n gantt._lightbox_root.className = gantt._lightbox_root.className.replace(\" gantt_unselectable\", \"\");\n document.gantt_unselectable = false;\n }\n };\n\n gantt._focus = function (node, select) {\n if (node && node.focus) {\n if (gantt.config.touch) {//do not focus editor, to prevent auto-zoom\n } else {\n try {\n if (select && node.select) node.select();\n node.focus();\n } catch (e) {// silent errors\n }\n }\n }\n };\n\n gantt.form_blocks = {\n getTimePicker: function getTimePicker(sns, hidden) {\n var html = \"\";\n var cfg = this.config;\n var i;\n var options;\n var ariaAttrs;\n var readonly;\n var display;\n var settings = {\n first: 0,\n last: 24 * 60,\n date: this.date.date_part(new Date(gantt._min_date.valueOf())),\n timeFormat: getTimeFormat(sns)\n }; // map: default order => real one\n\n sns._time_format_order = {\n size: 0\n };\n\n if (gantt.config.limit_time_select) {\n settings.first = 60 * cfg.first_hour;\n settings.last = 60 * cfg.last_hour + 1;\n settings.date.setHours(cfg.first_hour);\n }\n\n for (i = 0; i < settings.timeFormat.length; i++) {\n // adding spaces between selects\n if (i > 0) {\n html += \" \";\n }\n\n options = getHtmlTimePickerOptions(sns, i, settings);\n\n if (options) {\n ariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n display = hidden ? \" style='display:none' \" : \"\";\n html += \"\";\n }\n }\n\n return html;\n },\n getTimePickerValue: function getTimePickerValue(selects, config, offset) {\n var map = config._time_format_order;\n var needSetTime = gantt.defined(map[3]);\n var time;\n var hours = 0;\n var minutes = 0;\n var mapOffset = offset || 0;\n\n if (needSetTime) {\n time = parseInt(selects[map[3] + mapOffset].value, 10);\n hours = Math.floor(time / 60);\n minutes = time % 60;\n }\n\n return new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n },\n _fill_lightbox_select: function _fill_lightbox_select(s, i, d, map) {\n s[i + map[0]].value = d.getDate();\n s[i + map[1]].value = d.getMonth();\n s[i + map[2]].value = d.getFullYear();\n\n if (gantt.defined(map[3])) {\n var v = d.getHours() * 60 + d.getMinutes();\n v = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n var input = s[i + map[3]];\n input.value = v; //in case option not shown\n\n input.setAttribute(\"data-value\", v);\n }\n },\n template: new TemplateControl(),\n textarea: new TextareaControl(),\n select: new SelectControl(),\n time: new TimeControl(),\n duration: new DurationControl(),\n parent: new ParentControl(),\n radio: new RadioControl(),\n checkbox: new CheckboxControl(),\n resources: new ResourcesControl(),\n constraint: new ConstraintControl(),\n typeselect: new TypeselectControl()\n };\n\n gantt._is_lightbox_timepicker = function () {\n var s = this._get_typed_lightbox_config();\n\n for (var i = 0; i < s.length; i++) {\n if (s[i].name == \"time\" && s[i].type == \"time\") return true;\n }\n\n return false;\n };\n\n gantt._simple_confirm = function (message, title, callback, ok) {\n if (!message) return callback();\n var opts = {\n text: message\n };\n if (title) opts.title = title;\n\n if (ok) {\n opts.ok = ok;\n }\n\n if (callback) {\n opts.callback = function (result) {\n if (result) callback();\n };\n }\n\n gantt.confirm(opts);\n };\n\n function _get_type_name(type_value) {\n for (var i in this.config.types) {\n if (this.config.types[i] == type_value) {\n return i;\n }\n }\n\n return \"task\";\n }\n\n gantt._get_typed_lightbox_config = function (type) {\n if (type === undefined) {\n type = this.getLightboxType();\n }\n\n var field = _get_type_name.call(this, type);\n\n if (gantt.config.lightbox[field + \"_sections\"]) {\n return gantt.config.lightbox[field + \"_sections\"];\n } else {\n return gantt.config.lightbox.sections;\n }\n };\n\n gantt._silent_redraw_lightbox = function (type) {\n var oldType = this.getLightboxType();\n\n if (this.getState().lightbox) {\n var taskId = this.getState().lightbox;\n var formData = this.getLightboxValues(),\n task = this.copy(this.getTask(taskId));\n this.resetLightbox();\n var updTask = this.mixin(task, formData, true);\n var box = this.getLightbox(type ? type : undefined);\n\n this._center_lightbox(this.getLightbox());\n\n this._set_lightbox_values(updTask, box);\n\n this.showCover();\n } else {\n this.resetLightbox();\n this.getLightbox(type ? type : undefined);\n }\n\n this.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n };\n\n function bindLabelsToInputs(sns) {\n var section;\n var label;\n var labelBlock;\n var inputBlock;\n var input;\n var i;\n\n for (i = 0; i < sns.length; i++) {\n section = sns[i];\n labelBlock = gantt._lightbox_root.querySelector(\"#\" + section.id);\n if (!section.id || !labelBlock) continue;\n label = labelBlock.querySelector(\"label\");\n inputBlock = labelBlock.nextSibling;\n if (!inputBlock) continue;\n input = inputBlock.querySelector(\"input, select, textarea\");\n\n if (input) {\n input.id = input.id || \"input_\" + gantt.uid();\n section.inputId = input.id;\n label.setAttribute(\"for\", section.inputId);\n }\n }\n }\n\n function getHtmlButtons(buttons, floatRight) {\n var button;\n var ariaAttr;\n var html = \"\";\n var i;\n\n for (i = 0; i < buttons.length; i++) {\n // needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n button = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n ariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n html += \"
\" + gantt.locale.labels[button] + \"
\";\n }\n\n return html;\n }\n\n function getTimeFormat(sns) {\n var scale;\n var unit;\n var result;\n if (sns.time_format) return sns.time_format; // default order\n\n result = [\"%d\", \"%m\", \"%Y\"];\n scale = gantt.getScale();\n unit = scale ? scale.unit : gantt.config.duration_unit;\n\n if (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n result.push(\"%H:%i\");\n }\n\n return result;\n }\n\n function getHtmlTimePickerOptions(sns, index, settings) {\n var range;\n var offset;\n var start_year;\n var end_year;\n var i;\n var time;\n var diff;\n var tdate;\n var html = \"\";\n\n switch (settings.timeFormat[index]) {\n case \"%Y\":\n sns._time_format_order[2] = index;\n sns._time_format_order.size++; //year\n\n if (sns.year_range) {\n if (!isNaN(sns.year_range)) {\n range = sns.year_range;\n } else if (sns.year_range.push) {\n // if\n start_year = sns.year_range[0];\n end_year = sns.year_range[1];\n }\n }\n\n range = range || 10;\n offset = offset || Math.floor(range / 2);\n start_year = start_year || settings.date.getFullYear() - offset;\n end_year = end_year || gantt.getState().max_date.getFullYear() + offset;\n\n for (i = start_year; i < end_year; i++) {\n html += \"\";\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 += \"\";\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 += \"\";\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 += \"\";\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\t// GS-1450. Don't try to get the visible date if there is no timeline\n\t\tif (!this.$gantt.$task){\n\t\t\treturn null;\n\t\t}\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 && !!gantt.$task;\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 } // GS-1150: if we reorder or resize something in the grid, we should obtain the grid container\n\n\n var gridDrag = false;\n var gridMarkers = [\".gantt_drag_marker.gantt_grid_resize_area\", \".gantt_drag_marker .gantt_row.gantt_row_task\", \".gantt_drag_marker.gantt_grid_dnd_marker\"];\n gridMarkers.forEach(function (selector) {\n gridDrag = gridDrag || !!document.querySelector(selector);\n });\n\n if (gridDrag) {\n container = gantt.$grid;\n }\n\n var box = domHelpers.getNodePosition(container);\n var posX = eventPos.x - box.x;\n var posY = eventPos.y - box.y + window.scrollY; // GS-1315: window.scrollY here and below for the elements above Gantt\n\n var scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n var scrollTop = need_scroll(posY, box.height, startPos.y - box.y + window.scrollY);\n var scrollState = gantt.getScrollState();\n var currentScrollTop = scrollState.y,\n scrollOuterHeight = scrollState.inner_height,\n scrollInnerHeight = scrollState.height,\n currentScrollLeft = scrollState.x,\n scrollOuterWidth = scrollState.inner_width,\n scrollInnerWidth = scrollState.width; // do scrolling only if we have scrollable area to do so\n\n if (scrollTop && !scrollOuterHeight) {\n scrollTop = 0;\n } else if (scrollTop < 0 && !currentScrollTop) {\n scrollTop = 0;\n } else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n scrollTop = 0;\n }\n\n if (scrollLeft && !scrollOuterWidth) {\n scrollLeft = 0;\n } else if (scrollLeft < 0 && !currentScrollLeft) {\n scrollLeft = 0;\n } else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n scrollLeft = 0;\n }\n\n var step = gantt.config.autoscroll_step;\n if (step && step < 2) // limit step value to 2\n step = 2;\n scrollLeft = scrollLeft * (step || scrollStep);\n scrollTop = scrollTop * (step || scrollStep);\n\n if (scrollLeft || scrollTop) {\n scroll(scrollLeft, scrollTop);\n }\n }\n\n function need_scroll(pos, boxSize, startCoord) {\n if (pos - scrollRange < 0 && pos < startCoord) return -1;else if (pos > boxSize - scrollRange && pos > startCoord) return 1;\n return 0;\n }\n\n function scroll(left, top) {\n var scrollState = gantt.getScrollState();\n var scrollLeft = null,\n scrollTop = null;\n\n if (left) {\n scrollLeft = scrollState.x + left;\n scrollLeft = Math.min(scrollState.width, scrollLeft);\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (top) {\n scrollTop = scrollState.y + top;\n scrollTop = Math.min(scrollState.height, scrollTop);\n scrollTop = Math.max(0, scrollTop);\n }\n\n gantt.scrollTo(scrollLeft, scrollTop);\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var eventElement = domHelpers.getRootNode(gantt.$root) || document.body;\n gantt.eventRemove(eventElement, \"mousemove\", autoscrollInterval);\n gantt.event(eventElement, \"mousemove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"touchmove\", autoscrollInterval);\n gantt.event(eventElement, \"touchmove\", autoscrollInterval);\n gantt.eventRemove(eventElement, \"pointermove\", autoscrollInterval);\n gantt.event(eventElement, \"pointermove\", autoscrollInterval);\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n defineScrollInterval(false);\n });\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./autoscroll\"), require(\"./jquery_hooks\"), require(\"./dhtmlx_hooks\")];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n\n var TimelineZoom = require(\"./timeline_zoom\")[\"default\"];\n\n gantt.ext.zoom = new TimelineZoom(gantt);\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_white\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins[\"contrast_black\"] = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 100,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.material = {\n config: {\n grid_width: 411,\n row_height: 34,\n task_height_offset: 6,\n scale_height: 36,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 80\n },\n _second_column_width: 110,\n _third_column_width: 75,\n _redefine_lightbox_buttons: {\n \"buttons_left\": [\"dhx_delete_btn\"],\n \"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n }\n };\n gantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n var t = gantt.getTaskNode(id);\n\n if (t) {\n t.className += \" gantt_drag_animation\";\n setTimeout(function () {\n var indx = t.className.indexOf(\" gantt_drag_animation\");\n\n if (indx > -1) {\n t.className = t.className.slice(0, indx);\n }\n }, 200);\n }\n });\n};","module.exports = function (gantt) {\n gantt.skins.broadway = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 1,\n link_arrow_size: 7,\n lightbox_additional_height: 86\n },\n _second_column_width: 90,\n _third_column_width: 80,\n _lightbox_template: \"
 
\",\n _config_buttons_left: {},\n _config_buttons_right: {\n \"gantt_delete_btn\": \"icon_delete\",\n \"gantt_save_btn\": \"icon_save\"\n }\n };\n};","module.exports = function (gantt) {\n gantt.skins.terrace = {\n config: {\n grid_width: 360,\n row_height: 35,\n scale_height: 35,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 75\n },\n _second_column_width: 90,\n _third_column_width: 70\n };\n};","module.exports = function (gantt) {\n gantt.skins.meadow = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 30,\n link_line_width: 2,\n link_arrow_size: 6,\n lightbox_additional_height: 72\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","module.exports = function (gantt) {\n gantt.skins.skyblue = {\n config: {\n grid_width: 350,\n row_height: 27,\n scale_height: 27,\n link_line_width: 1,\n link_arrow_size: 8,\n lightbox_additional_height: 75\n },\n _second_column_width: 95,\n _third_column_width: 80\n };\n};","function _configure(col, data, force) {\n for (var key in data) {\n if (typeof col[key] == \"undefined\" || force) col[key] = data[key];\n }\n}\n\nfunction _get_skin(force, gantt) {\n var skin = gantt.skin;\n\n if (!skin || force) {\n var links = document.getElementsByTagName(\"link\");\n\n for (var i = 0; i < links.length; i++) {\n var res = links[i].href.match(\"dhtmlxgantt_([a-z_]+).css\");\n\n if (res) {\n if (gantt.skins[res[1]] || !skin) {\n skin = res[1];\n break;\n }\n }\n }\n }\n\n gantt.skin = skin || \"terrace\";\n var skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"]; //apply skin related settings\n\n _configure(gantt.config, skinset.config, force);\n\n var config = gantt.getGridColumns();\n if (config[1] && !gantt.defined(config[1].width)) config[1].width = skinset._second_column_width;\n if (config[2] && !gantt.defined(config[2].width)) config[2].width = skinset._third_column_width;\n\n for (var i = 0; i < config.length; i++) {\n var column = config[i];\n\n if (column.name == \"add\") {\n if (!column.width) {\n column.width = 44;\n }\n\n if (!(gantt.defined(column.min_width) && gantt.defined(column.max_width))) {\n column.min_width = column.min_width || column.width;\n column.max_width = column.max_width || column.width;\n }\n\n if (column.min_width) column.min_width = +column.min_width;\n if (column.max_width) column.max_width = +column.max_width;\n\n if (column.width) {\n column.width = +column.width;\n column.width = column.min_width && column.min_width > column.width ? column.min_width : column.width;\n column.width = column.max_width && column.max_width < column.width ? column.max_width : column.width;\n }\n }\n }\n\n if (skinset.config.task_height) {\n gantt.config.task_height = skinset.config.task_height || \"full\";\n }\n\n if (skinset.config.bar_height) {\n gantt.config.bar_height = skinset.config.bar_height || \"full\";\n }\n\n if (skinset._lightbox_template) gantt._lightbox_template = skinset._lightbox_template;\n\n if (skinset._redefine_lightbox_buttons) {\n gantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n gantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n }\n\n gantt.resetLightbox();\n}\n\nmodule.exports = function (gantt) {\n if (!gantt.resetSkin) {\n gantt.resetSkin = function () {\n this.skin = \"\";\n\n _get_skin(true, this);\n };\n\n gantt.skins = {};\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n _get_skin(false, this);\n });\n }\n};","function createLayoutFacade() {\n function getTimeline(gantt) {\n return gantt.$ui.getView(\"timeline\");\n }\n\n function getGrid(gantt) {\n return gantt.$ui.getView(\"grid\");\n }\n\n function getBaseCell(gantt) {\n var timeline = getTimeline(gantt);\n\n if (timeline && !timeline.$config.hidden) {\n return timeline;\n } else {\n var grid = getGrid(gantt);\n\n if (grid && !grid.$config.hidden) {\n return grid;\n } else {\n return null;\n }\n }\n }\n\n function getVerticalScrollbar(gantt) {\n var baseCell = null; // GS-1150: if we reorder or resize something in the grid, we should obtain the grid container\n\n var gridDrag = false;\n var gridMarkers = [\".gantt_drag_marker.gantt_grid_resize_area\", \".gantt_drag_marker .gantt_row.gantt_row_task\", \".gantt_drag_marker.gantt_grid_dnd_marker\"];\n gridMarkers.forEach(function (selector) {\n gridDrag = gridDrag || !!document.querySelector(selector);\n });\n\n if (gridDrag) {\n baseCell = getGrid(gantt);\n } else {\n baseCell = getBaseCell(gantt);\n } // GS-1827. If there is no grid and timeline, there is no scrollbar for them\n\n\n if (!baseCell) {\n return null;\n }\n\n var verticalScrollbar = getAttachedScrollbar(gantt, baseCell, \"scrollY\");\n return verticalScrollbar;\n }\n\n function getHorizontalScrollbar(gantt) {\n var baseCell = getBaseCell(gantt);\n\n if (!baseCell || baseCell.id == \"grid\") {\n return null; // if the timeline is not displayed, do not return the scrollbar\n }\n\n var horizontalScrollbar = getAttachedScrollbar(gantt, baseCell, \"scrollX\");\n return horizontalScrollbar;\n }\n\n function getAttachedScrollbar(gantt, cell, type) {\n var attachedScrollbar = cell.$config[type];\n var scrollbarView = gantt.$ui.getView(attachedScrollbar);\n return scrollbarView;\n }\n\n var DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n function tryCall(getView, method, args, fallback) {\n var view = getView(this);\n\n if (!(view && view.isVisible())) {\n if (fallback) {\n return fallback();\n } else {\n return DEFAULT_VALUE;\n }\n } else {\n return view[method].apply(view, args);\n }\n }\n\n return {\n getColumnIndex: function getColumnIndex(name) {\n var res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n dateFromPos: function dateFromPos(x) {\n var res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\n if (res === DEFAULT_VALUE) {\n return this.getState().min_date;\n } else {\n return res;\n }\n },\n posFromDate: function posFromDate(date) {\n var res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getRowTop: function getRowTop(index) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getRowTop\", [index], function () {\n return tryCall.call(self, getGrid, \"getRowTop\", [index]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskTop: function getTaskTop(id) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemTop\", [id], function () {\n return tryCall.call(self, getGrid, \"getItemTop\", [id]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskPosition: function getTaskPosition(task, start_date, end_date) {\n var res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n if (res === DEFAULT_VALUE) {\n var top = this.getTaskTop(task.id);\n var height = this.getTaskBarHeight(task.id);\n return {\n left: 0,\n top: top,\n height: height,\n width: 0\n };\n } else {\n return res;\n }\n },\n getTaskBarHeight: function getTaskBarHeight(taskId, isMilestoneRender) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getBarHeight\", [taskId, isMilestoneRender], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n getTaskHeight: function getTaskHeight(taskId) {\n var self = this;\n var res = tryCall.call(self, getTimeline, \"getItemHeight\", [taskId], function () {\n return tryCall.call(self, getGrid, \"getItemHeight\", [taskId]);\n });\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n columnIndexByDate: function columnIndexByDate(date) {\n var res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\n if (res === DEFAULT_VALUE) {\n return 0;\n } else {\n return res;\n }\n },\n roundTaskDates: function roundTaskDates() {\n tryCall.call(this, getTimeline, \"roundTaskDates\", []);\n },\n getScale: function getScale() {\n var res = tryCall.call(this, getTimeline, \"getScale\", []);\n\n if (res === DEFAULT_VALUE) {\n return null;\n } else {\n return res;\n }\n },\n getTaskNode: function getTaskNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline || !timeline.isVisible()) {\n return null;\n } else {\n var node = timeline._taskRenderer.rendered[id];\n\n if (!node) {\n var domAttr = timeline.$config.item_attribute;\n node = timeline.$task_bars.querySelector(\"[\" + domAttr + \"='\" + id + \"']\");\n }\n\n return node || null;\n }\n },\n getLinkNode: function getLinkNode(id) {\n var timeline = getTimeline(this);\n\n if (!timeline.isVisible()) {\n return null;\n } else {\n return timeline._linkRenderer.rendered[id];\n }\n },\n scrollTo: function scrollTo(left, top) {\n var vertical = getVerticalScrollbar(this);\n var horizontal = getHorizontalScrollbar(this);\n var oldH = {\n position: 0\n },\n oldV = {\n position: 0\n };\n\n if (vertical) {\n oldV = vertical.getScrollState();\n }\n\n if (horizontal) {\n oldH = horizontal.getScrollState();\n }\n\n var scrollHorizontal = horizontal && left * 1 == left;\n var scrollVertical = vertical && top * 1 == top;\n var scrollBoth = scrollHorizontal && scrollVertical;\n\n if (scrollBoth) {\n // some views will be scrolled both horizontally and vertically and smart rendering can be called twice\n // set flag in order not to invoke smart rendering at the horizontal scroll stage\n // so it will repaint only once when the scroll is completed\n var verticalViews = vertical._getLinkedViews();\n\n var horizontalViews = horizontal._getLinkedViews();\n\n var commonViews = [];\n\n for (var i = 0; i < verticalViews.length; i++) {\n for (var j = 0; j < horizontalViews.length; j++) {\n if (verticalViews[i].$config.id && horizontalViews[j].$config.id && verticalViews[i].$config.id === horizontalViews[j].$config.id) {\n commonViews.push(verticalViews[i].$config.id);\n }\n }\n }\n }\n\n if (scrollHorizontal) {\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = true;\n }.bind(this));\n }\n\n horizontal.scroll(left);\n\n if (commonViews) {\n commonViews.forEach(function (viewId) {\n this.$ui.getView(viewId).$config.$skipSmartRenderOnScroll = false;\n }.bind(this));\n }\n }\n\n if (scrollVertical) {\n vertical.scroll(top);\n }\n\n var newV = {\n position: 0\n },\n newH = {\n position: 0\n };\n\n if (vertical) {\n newV = vertical.getScrollState();\n }\n\n if (horizontal) {\n newH = horizontal.getScrollState();\n }\n\n this.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n },\n showDate: function showDate(date) {\n var date_x = this.posFromDate(date);\n var scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n this.scrollTo(scroll_to);\n },\n showTask: function showTask(id) {\n var pos = this.getTaskPosition(this.getTask(id)); // GS-1261: we need to show the start_date even in the RTL mode\n\n var leftPos = pos.left;\n if (this.config.rtl) leftPos = pos.left + pos.width;\n var left = Math.max(leftPos - this.config.task_scroll_offset, 0);\n\n var dataHeight = this._scroll_state().y;\n\n var top;\n\n if (!dataHeight) {\n top = pos.top;\n } else {\n top = pos.top - (dataHeight - this.getTaskBarHeight(id)) / 2;\n }\n\n this.scrollTo(left, top); // GS-1150: if the grid and timeline have different scrollbars, we need to scroll thegrid to show the task\n\n var gridCell = getGrid(this);\n var timelineCell = getTimeline(this);\n\n if (gridCell && timelineCell && gridCell.$config.scrollY != timelineCell.$config.scrollY) {\n var gridScrollbar = getAttachedScrollbar(this, gridCell, \"scrollY\");\n gridScrollbar.scrollTo(null, top);\n }\n },\n _scroll_state: function _scroll_state() {\n var result = {\n x: false,\n y: false,\n x_pos: 0,\n y_pos: 0,\n scroll_size: this.config.scroll_size + 1,\n //1px for inner content\n x_inner: 0,\n y_inner: 0\n };\n var scrollVer = getVerticalScrollbar(this),\n scrollHor = getHorizontalScrollbar(this);\n\n if (scrollHor) {\n var horState = scrollHor.getScrollState();\n\n if (horState.visible) {\n result.x = horState.size;\n result.x_inner = horState.scrollSize;\n }\n\n result.x_pos = horState.position || 0;\n }\n\n if (scrollVer) {\n var verState = scrollVer.getScrollState();\n\n if (verState.visible) {\n result.y = verState.size;\n result.y_inner = verState.scrollSize;\n }\n\n result.y_pos = verState.position || 0;\n }\n\n return result;\n },\n getScrollState: function getScrollState() {\n var state = this._scroll_state();\n\n return {\n x: state.x_pos,\n y: state.y_pos,\n inner_width: state.x,\n inner_height: state.y,\n width: state.x_inner,\n height: state.y_inner\n };\n },\n getLayoutView: function getLayoutView(cellName) {\n return this.$ui.getView(cellName);\n },\n scrollLayoutCell: function scrollLayoutCell(cellName, left, top) {\n var cell = this.$ui.getView(cellName);\n\n if (!cell) {\n return false;\n }\n\n if (left !== null) {\n var horizontalScroll = this.$ui.getView(cell.$config.scrollX);\n\n if (horizontalScroll) {\n horizontalScroll.scrollTo(left, null);\n }\n }\n\n if (top !== null) {\n var verticalScroll = this.$ui.getView(cell.$config.scrollY);\n\n if (verticalScroll) {\n verticalScroll.scrollTo(null, top);\n }\n }\n }\n };\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function (gantt) {};","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n getVerticalScrollbar: function getVerticalScrollbar() {\n return gantt.$ui.getView(\"scrollVer\");\n },\n getHorizontalScrollbar: function getHorizontalScrollbar() {\n return gantt.$ui.getView(\"scrollHor\");\n },\n _legacyGridResizerClass: function _legacyGridResizerClass(layout) {\n var resizers = layout.getCellsByType(\"resizer\");\n\n for (var i = 0; i < resizers.length; i++) {\n var r = resizers[i];\n var gridResizer = false;\n var prev = r.$parent.getPrevSibling(r.$id);\n\n if (prev && prev.$config && prev.$config.id === \"grid\") {\n gridResizer = true;\n } else {\n var next = r.$parent.getNextSibling(r.$id);\n\n if (next && next.$config && next.$config.id === \"grid\") {\n gridResizer = true;\n }\n }\n\n if (gridResizer) {\n r.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n }\n }\n },\n onCreated: function onCreated(layout) {\n var first = true;\n\n this._legacyGridResizerClass(layout);\n\n layout.attachEvent(\"onBeforeResize\", function () {\n var mainTimeline = gantt.$ui.getView(\"timeline\");\n if (mainTimeline) mainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n var mainGrid = gantt.$ui.getView(\"grid\");\n if (!mainGrid) return;\n\n var colsWidth = mainGrid._getColsTotalWidth();\n\n var hideGrid = !gantt.config.show_grid || !gantt.config.grid_width || colsWidth === 0;\n\n if (first && !hideGrid && colsWidth !== false) {\n gantt.config.grid_width = colsWidth;\n }\n\n mainGrid.$config.hidden = mainGrid.$parent.$config.hidden = hideGrid;\n\n if (!mainGrid.$config.hidden) {\n /* restrict grid width due to min_width, max_width, min_grid_column_width */\n var grid_limits = mainGrid._getGridWidthLimits();\n\n if (grid_limits[0] && gantt.config.grid_width < grid_limits[0]) gantt.config.grid_width = grid_limits[0];\n if (grid_limits[1] && gantt.config.grid_width > grid_limits[1]) gantt.config.grid_width = grid_limits[1];\n\n if (mainTimeline && gantt.config.show_chart) {\n mainGrid.$config.width = gantt.config.grid_width - 1; // GS-1314: Don't let the non-scrollable grid to be larger than the container with the correct width\n\n if (!mainGrid.$config.scrollable && mainGrid.$config.scrollY && gantt.$root.offsetWidth) {\n var ganttContainerWidth = mainGrid.$gantt.$layout.$container.offsetWidth;\n var verticalScrollbar = gantt.$ui.getView(mainGrid.$config.scrollY);\n var verticalScrollbarWidth = verticalScrollbar.$config.width;\n var gridOverflow = ganttContainerWidth - (mainGrid.$config.width + verticalScrollbarWidth);\n\n if (gridOverflow < 0) {\n mainGrid.$config.width += gridOverflow;\n gantt.config.grid_width += gridOverflow;\n }\n }\n\n if (!first) {\n if (mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // timeline is being displayed after being not visible, reset grid with from full screen\n if (!mainGrid.$config.original_grid_width) {\n var skinSettings = gantt.skins[gantt.skin];\n\n if (skinSettings && skinSettings.config && skinSettings.config.grid_width) {\n mainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n } else {\n mainGrid.$config.original_grid_width = 0;\n }\n }\n\n gantt.config.grid_width = mainGrid.$config.original_grid_width;\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n } else {\n mainGrid.$parent._setContentSize(mainGrid.$config.width, null);\n\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: gantt.config.grid_width,\n isGravity: false\n });\n }\n } else {\n mainGrid.$parent.$config.width = gantt.config.grid_width;\n\n if (mainGrid.$parent.$config.group) {\n gantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, {\n value: mainGrid.$parent.$config.width,\n isGravity: false\n });\n }\n }\n } else {\n if (mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)) {\n // hiding timeline, remember grid with to restore it when timeline is displayed again\n mainGrid.$config.original_grid_width = gantt.config.grid_width;\n }\n\n if (!first) {\n mainGrid.$parent.$config.width = 0;\n }\n }\n }\n\n first = false;\n });\n\n this._initScrollStateEvents(layout);\n },\n _initScrollStateEvents: function _initScrollStateEvents(layout) {\n gantt._getVerticalScrollbar = this.getVerticalScrollbar;\n gantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n var vertical = this.getVerticalScrollbar();\n var horizontal = this.getHorizontalScrollbar();\n\n if (vertical) {\n vertical.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n });\n }\n\n if (horizontal) {\n horizontal.attachEvent(\"onScroll\", function (oldPos, newPos, dir) {\n var scrollState = gantt.getScrollState();\n gantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]); // if the grid doesn't fit the width, scroll the row container\n\n var grid = gantt.$ui.getView(\"grid\");\n\n if (grid && grid.$grid_data && !grid.$config.scrollable) {\n grid.$grid_data.style.left = grid.$grid.scrollLeft + \"px\";\n grid.$grid_data.scrollLeft = grid.$grid.scrollLeft;\n }\n });\n }\n\n layout.attachEvent(\"onResize\", function () {\n if (vertical && !gantt.$scroll_ver) {\n gantt.$scroll_ver = vertical.$scroll_ver;\n }\n\n if (horizontal && !gantt.$scroll_hor) {\n gantt.$scroll_hor = horizontal.$scroll_hor;\n }\n });\n },\n _findGridResizer: function _findGridResizer(layout, grid) {\n var resizers = layout.getCellsByType(\"resizer\");\n var gridFirst = true;\n var gridResizer;\n\n for (var i = 0; i < resizers.length; i++) {\n var res = resizers[i];\n\n res._getSiblings();\n\n var prev = res._behind;\n var next = res._front;\n\n if (prev && prev.$content === grid || prev.isChild && prev.isChild(grid)) {\n gridResizer = res;\n gridFirst = true;\n break;\n } else if (next && next.$content === grid || next.isChild && next.isChild(grid)) {\n gridResizer = res;\n gridFirst = false;\n break;\n }\n }\n\n return {\n resizer: gridResizer,\n gridFirst: gridFirst\n };\n },\n onInitialized: function onInitialized(layout) {\n var grid = gantt.$ui.getView(\"grid\");\n\n var resizeInfo = this._findGridResizer(layout, grid); // expose grid resize events\n\n\n if (resizeInfo.resizer) {\n var gridFirst = resizeInfo.gridFirst,\n next = resizeInfo.resizer;\n\n if (next.$config.mode !== \"x\") {\n return; // track only horizontal resize\n }\n\n var initialWidth;\n next.attachEvent(\"onResizeStart\", function (prevCellWidth, nextCellWidth) {\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n var limits = grid._getGridWidthLimits(); // min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\n\n if (!grid.$config.scrollable) viewCell.$config.minWidth = limits[0];\n viewCell.$config.maxWidth = limits[1];\n }\n\n initialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n return gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n });\n next.attachEvent(\"onResize\", function (newBehindSize, newFrontSize) {\n var newSize = gridFirst ? newBehindSize : newFrontSize;\n return gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n });\n next.attachEvent(\"onResizeEnd\", function (oldBackSize, oldFrontSize, newBackSize, newFrontSize) {\n var oldSize = gridFirst ? oldBackSize : oldFrontSize;\n var newSize = gridFirst ? newBackSize : newFrontSize;\n var grid = gantt.$ui.getView(\"grid\");\n var viewCell = grid ? grid.$parent : null;\n\n if (viewCell) {\n viewCell.$config.minWidth = undefined;\n }\n\n var res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\n if (res && newSize !== 0) {\n // new size may be numeric zero when cell size is defined by 'gravity', actual size will be calculated by layout later\n gantt.config.grid_width = newSize;\n }\n\n return res;\n });\n }\n },\n onDestroyed: function onDestroyed(timeline) {}\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar initLinksDND = function initLinksDND(timeline, gantt) {\n var _link_landing,\n _link_target_task,\n _link_target_task_start,\n _link_source_task,\n _link_source_task_start,\n markerDefaultOffset = 10,\n scrollDefaultSize = 18;\n\n function getVisibleMilestoneWidth(taskId) {\n var origWidth = timeline.getBarHeight(taskId, true); //m-s have square shape\n\n return Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n }\n\n function isMilestone(task) {\n return gantt.getTaskType(task.type) == gantt.config.types.milestone;\n }\n\n function getDndState() {\n return {\n link_source_id: _link_source_task,\n link_target_id: _link_target_task,\n link_from_start: _link_source_task_start,\n link_to_start: _link_target_task_start,\n link_landing_area: _link_landing\n };\n }\n\n var services = gantt.$services;\n var state = services.getService(\"state\");\n var DnD = services.getService(\"dnd\");\n state.registerProvider(\"linksDnD\", getDndState);\n var start_marker = \"task_start_date\",\n end_marker = \"task_end_date\",\n link_edge_marker = \"gantt_link_point\",\n link_landing_hover_area = \"gantt_link_control\";\n var dnd = new DnD(timeline.$task_bars, {\n sensitivity: 0,\n updates_per_second: 60,\n mousemoveContainer: gantt.$root,\n selector: \".\" + link_edge_marker,\n preventDefault: true\n });\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var target = e.target || e.srcElement;\n resetDndState();\n if (gantt.getState(\"tasksDnd\").drag_id) return false;\n\n if (domHelpers.locateClassName(target, link_edge_marker)) {\n if (domHelpers.locateClassName(target, start_marker)) _link_source_task_start = true;\n var sid = gantt.locate(e);\n _link_source_task = sid;\n var t = gantt.getTask(sid);\n\n if (gantt.isReadonly(t)) {\n resetDndState();\n return false;\n }\n\n var shift = 0;\n this._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n return true;\n } else {\n return false;\n }\n }, this));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n if (gantt.config.touch) {\n gantt.refreshData();\n }\n\n updateMarkedHtml(dnd.config.marker);\n }, this));\n\n function getLinePos(task, to_start, shift, cfg, isStart) {\n var taskPos = getMilestonePosition(task, function (task) {\n return gantt.getTaskPosition(task);\n }, cfg);\n var pos = {\n x: taskPos.x,\n y: taskPos.y\n };\n\n if (!to_start) {\n pos.x = taskPos.xEnd;\n } //var pos = gantt._get_task_pos(task, !!to_start);\n\n\n pos.y += gantt.getTaskHeight(task.id) / 2;\n var offset = isMilestone(task) && isStart ? 2 : 0;\n shift = shift || 0;\n if (cfg.rtl) shift = shift * -1;\n pos.x += (to_start ? -1 : 1) * shift - offset;\n return pos;\n }\n\n function getMilestonePosition(task, getTaskPosition, cfg) {\n var pos = getTaskPosition(task);\n var res = {\n x: pos.left,\n y: pos.top,\n width: pos.width,\n height: pos.height\n };\n\n if (cfg.rtl) {\n res.xEnd = res.x;\n res.x = res.xEnd + res.width;\n } else {\n res.xEnd = res.x + res.width;\n }\n\n res.yEnd = res.y + res.height;\n\n if (gantt.getTaskType(task.type) == gantt.config.types.milestone) {\n var milestoneWidth = getVisibleMilestoneWidth(task.id);\n res.x += (!cfg.rtl ? -1 : 1) * (milestoneWidth / 2);\n res.xEnd += (!cfg.rtl ? 1 : -1) * (milestoneWidth / 2); //pos.x -= milestoneWidth / 2;\n //pos.xEnd += milestoneWidth / 2;\n\n res.width = pos.xEnd - pos.x;\n }\n\n return res;\n }\n\n function getVieportSize() {\n var root = gantt.$root;\n return {\n right: root.offsetWidth,\n bottom: root.offsetHeight\n };\n }\n\n function getMarkerSize(marker) {\n var width = 0,\n height = 0;\n\n if (marker) {\n width = marker.offsetWidth || 0;\n height = marker.offsetHeight || 0;\n }\n\n return {\n width: width,\n height: height\n };\n }\n\n function getPosition(e, marker) {\n var oldPos = dnd.getPosition(e);\n var markerSize = getMarkerSize(marker);\n var viewportSize = getVieportSize();\n var offsetX = gantt.config.tooltip_offset_x || markerDefaultOffset;\n var offsetY = gantt.config.tooltip_offset_y || markerDefaultOffset;\n var scrollSize = gantt.config.scroll_size || scrollDefaultSize; // GS-1315: Add offset if there are elements above Gantt\n\n var ganttOffsetY = gantt.$container.getBoundingClientRect().y + window.scrollY;\n var position = {\n y: oldPos.y + offsetY,\n x: oldPos.x + offsetX,\n bottom: oldPos.y + markerSize.height + offsetY + scrollSize,\n right: oldPos.x + markerSize.width + offsetX + scrollSize\n };\n\n if (position.bottom > viewportSize.bottom + ganttOffsetY) {\n position.y = viewportSize.bottom + ganttOffsetY - markerSize.height - offsetY;\n }\n\n if (position.right > viewportSize.right) {\n position.x = viewportSize.right - markerSize.width - offsetX;\n }\n\n return position;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var dd = dnd.config;\n var pos = getPosition(e, dd.marker);\n advanceMarker(dd.marker, pos);\n var landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n var prevTarget = _link_target_task;\n var prevLanding = _link_landing;\n var prevToStart = _link_target_task_start;\n var targ = gantt.locate(e),\n to_start = true; // can drag and drop link to another gantt on the page, such links are not supported\n\n var eventTarget = domHelpers.getTargetNode(e);\n var sameGantt = domHelpers.isChildOf(eventTarget, gantt.$root);\n\n if (!sameGantt) {\n landing = false;\n targ = null;\n }\n\n if (landing) {\n //refreshTask\n to_start = !domHelpers.locateClassName(e, end_marker);\n landing = !!targ;\n }\n\n _link_target_task = targ;\n _link_landing = landing;\n _link_target_task_start = to_start;\n\n if (landing) {\n var t = gantt.getTask(targ);\n var config = timeline.$getConfig();\n var node = domHelpers.locateClassName(e, link_landing_hover_area);\n var shift = 0;\n\n if (node) {\n shift = Math.floor(node.offsetWidth / 2);\n }\n\n this._dir_end = getLinePos(t, !!_link_target_task_start, shift, config);\n } else {\n this._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\n if (gantt.env.isEdge) {\n // to fix margin collapsing\n this._dir_end.y += window.scrollY;\n }\n }\n\n var targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\n if (targetChanged) {\n if (prevTarget) gantt.refreshTask(prevTarget, false);\n if (targ) gantt.refreshTask(targ, false);\n }\n\n if (targetChanged) {\n updateMarkedHtml(dd.marker);\n }\n\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n return true;\n }, this));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var drag = getDndState();\n\n if (drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id) {\n var type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n var link = {\n source: drag.link_source_id,\n target: drag.link_target_id,\n type: type\n };\n\n if (link.type && gantt.isLinkAllowed(link)) {\n if (gantt.callEvent(\"onLinkCreated\", [link])) {\n gantt.addLink(link);\n }\n }\n }\n\n resetDndState();\n\n if (gantt.config.touch) {\n gantt.refreshData();\n } else {\n if (drag.link_source_id) gantt.refreshTask(drag.link_source_id, false);\n if (drag.link_target_id) gantt.refreshTask(drag.link_target_id, false);\n }\n\n removeDirectionLine();\n }, this));\n\n function updateMarkedHtml(marker) {\n var link = getDndState();\n var css = [\"gantt_link_tooltip\"];\n\n if (link.link_source_id && link.link_target_id) {\n if (gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)) {\n css.push(\"gantt_allowed_link\");\n } else {\n css.push(\"gantt_invalid_link\");\n }\n }\n\n var className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n if (className) css.push(className);\n var html = \"
\" + gantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) + \"
\";\n marker.innerHTML = html;\n }\n\n function advanceMarker(marker, pos) {\n marker.style.left = pos.x + \"px\";\n marker.style.top = pos.y + \"px\";\n }\n\n function resetDndState() {\n _link_source_task = _link_source_task_start = _link_target_task = null;\n _link_target_task_start = true;\n }\n\n function showDirectingLine(s_x, s_y, e_x, e_y) {\n var div = getDirectionLine();\n var link = getDndState();\n var css = [\"gantt_link_direction\"];\n\n if (gantt.templates.link_direction_class) {\n css.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n }\n\n var dist = Math.sqrt(Math.pow(e_x - s_x, 2) + Math.pow(e_y - s_y, 2));\n dist = Math.max(0, dist - 3);\n if (!dist) return;\n div.className = css.join(\" \");\n var tan = (e_y - s_y) / (e_x - s_x),\n angle = Math.atan(tan);\n\n if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2) {\n angle += Math.PI;\n } else if (coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3) {\n angle -= Math.PI;\n }\n\n var sin = Math.sin(angle),\n cos = Math.cos(angle),\n top = Math.round(s_y),\n left = Math.round(s_x);\n var style = [\"-webkit-transform: rotate(\" + angle + \"rad)\", \"-moz-transform: rotate(\" + angle + \"rad)\", \"-ms-transform: rotate(\" + angle + \"rad)\", \"-o-transform: rotate(\" + angle + \"rad)\", \"transform: rotate(\" + angle + \"rad)\", \"width:\" + Math.round(dist) + \"px\"];\n\n if (window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1) {\n //ms-filter breaks styles in ie9, so add it only for 8th\n style.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n var shiftLeft = Math.abs(Math.round(s_x - e_x)),\n shiftTop = Math.abs(Math.round(e_y - s_y)); //fix rotation axis\n\n switch (coordinateCircleQuarter(s_x, e_x, s_y, e_y)) {\n case 1:\n top -= shiftTop;\n break;\n\n case 2:\n left -= shiftLeft;\n top -= shiftTop;\n break;\n\n case 3:\n left -= shiftLeft;\n break;\n\n default:\n break;\n }\n }\n\n style.push(\"top:\" + top + \"px\");\n style.push(\"left:\" + left + \"px\");\n div.style.cssText = style.join(\";\");\n }\n\n function ieTransform(sin, cos) {\n return \"progid:DXImageTransform.Microsoft.Matrix(\" + \"M11 = \" + cos + \",\" + \"M12 = -\" + sin + \",\" + \"M21 = \" + sin + \",\" + \"M22 = \" + cos + \",\" + \"SizingMethod = 'auto expand'\" + \")\";\n }\n\n function coordinateCircleQuarter(sX, eX, sY, eY) {\n if (eX >= sX) {\n if (eY <= sY) {\n return 1;\n } else {\n return 4;\n }\n } else {\n if (eY <= sY) {\n return 2;\n } else {\n return 3;\n }\n }\n }\n\n function getDirectionLine() {\n if (!dnd._direction || !dnd._direction.parentNode) {\n dnd._direction = document.createElement(\"div\");\n timeline.$task_links.appendChild(dnd._direction);\n }\n\n return dnd._direction;\n }\n\n function removeDirectionLine() {\n if (dnd._direction) {\n if (dnd._direction.parentNode) //the event line can be detached because of data refresh\n dnd._direction.parentNode.removeChild(dnd._direction);\n dnd._direction = null;\n }\n }\n\n gantt.attachEvent(\"onGanttRender\", gantt.bind(function () {\n if (dnd._direction) {\n showDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n }\n }, this));\n};\n\nmodule.exports = {\n createLinkDND: function createLinkDND() {\n return {\n init: initLinksDND\n };\n }\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar utils = require(\"../../../utils/utils\");\n\nvar timeout = require(\"../../../utils/timeout\");\n\nvar helpers = require(\"../../../utils/helpers\");\n\nfunction createTaskDND(timeline, gantt) {\n var services = gantt.$services;\n return {\n drag: null,\n dragMultiple: {},\n _events: {\n before_start: {},\n before_finish: {},\n after_finish: {}\n },\n _handlers: {},\n init: function init() {\n this._domEvents = gantt._createDomEventScope();\n this.clear_drag_state();\n var drag = gantt.config.drag_mode;\n this.set_actions();\n var stateService = services.getService(\"state\");\n stateService.registerProvider(\"tasksDnd\", utils.bind(function () {\n return {\n drag_id: this.drag ? this.drag.id : undefined,\n drag_mode: this.drag ? this.drag.mode : undefined,\n drag_from_start: this.drag ? this.drag.left : undefined\n };\n }, this));\n var evs = {\n \"before_start\": \"onBeforeTaskDrag\",\n \"before_finish\": \"onBeforeTaskChanged\",\n \"after_finish\": \"onAfterTaskDrag\"\n }; //for now, all drag operations will trigger the same events\n\n for (var stage in this._events) {\n for (var mode in drag) {\n this._events[stage][mode] = evs[stage];\n }\n }\n\n this._handlers[drag.move] = this._move;\n this._handlers[drag.resize] = this._resize;\n this._handlers[drag.progress] = this._resize_progress;\n },\n set_actions: function set_actions() {\n var data = timeline.$task_data;\n\n this._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\n this.on_mouse_move(e);\n }, this));\n\n this._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\n this.on_mouse_down(e);\n }, this));\n\n this._domEvents.attach(document.body, \"mouseup\", gantt.bind(function (e) {\n this.on_mouse_up(e);\n }, this));\n },\n clear_drag_state: function clear_drag_state() {\n this.drag = {\n id: null,\n mode: null,\n pos: null,\n start_x: null,\n start_y: null,\n obj: null,\n left: null\n };\n this.dragMultiple = {};\n },\n _resize: function _resize(task, shift, drag) {\n var cfg = timeline.$getConfig();\n\n var coords_x = this._drag_task_coords(task, drag);\n\n if (drag.left) {\n task.start_date = gantt.dateFromPos(coords_x.start + shift);\n\n if (!task.start_date) {\n task.start_date = new Date(gantt.getState().min_date);\n }\n } else {\n task.end_date = gantt.dateFromPos(coords_x.end + shift);\n\n if (!task.end_date) {\n task.end_date = new Date(gantt.getState().max_date);\n }\n }\n\n var minDurationInUnits = this._calculateMinDuration(cfg.min_duration, cfg.duration_unit);\n\n if (task.end_date - task.start_date < cfg.min_duration) {\n if (drag.left) task.start_date = gantt.calculateEndDate(task.end_date, -minDurationInUnits, cfg.duration_unit, task);else task.end_date = gantt.calculateEndDate(task.start_date, minDurationInUnits, cfg.duration_unit, task);\n }\n\n gantt._init_task_timing(task);\n },\n _calculateMinDuration: function _calculateMinDuration(duration, unit) {\n var inMs = {\n \"minute\": 60000,\n \"hour\": 3600000,\n \"day\": 86400000,\n \"week\": 604800000,\n \"month\": 2419200000,\n \"year\": 31356000000\n };\n return Math.ceil(duration / inMs[unit]);\n },\n _resize_progress: function _resize_progress(task, shift, drag) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var config = timeline.$getConfig();\n var diffValue = !config.rtl ? drag.pos.x - coords_x.start : coords_x.start - drag.pos.x;\n var diff = Math.max(0, diffValue);\n task.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n },\n _find_max_shift: function _find_max_shift(dragItems, shift) {\n var correctShift;\n\n for (var i in dragItems) {\n var drag = dragItems[i];\n var task = gantt.getTask(drag.id);\n\n var coords_x = this._drag_task_coords(task, drag);\n\n var minX = gantt.posFromDate(new Date(gantt.getState().min_date));\n var maxX = gantt.posFromDate(new Date(gantt.getState().max_date));\n\n if (coords_x.end + shift > maxX) {\n var maxShift = maxX - coords_x.end;\n\n if (maxShift < correctShift || correctShift === undefined) {\n correctShift = maxShift;\n }\n } else if (coords_x.start + shift < minX) {\n var minShift = minX - coords_x.start;\n\n if (minShift > correctShift || correctShift === undefined) {\n correctShift = minShift;\n }\n }\n }\n\n return correctShift;\n },\n _move: function _move(task, shift, drag, multipleDragShift) {\n var coords_x = this._drag_task_coords(task, drag);\n\n var new_start = null,\n new_end = null; // GS-454: If we drag multiple tasks, rely on the dates instead of timeline coordinates\n\n if (multipleDragShift) {\n new_start = new Date(+drag.obj.start_date + multipleDragShift), new_end = new Date(+drag.obj.end_date + multipleDragShift);\n } else {\n new_start = gantt.dateFromPos(coords_x.start + shift), new_end = gantt.dateFromPos(coords_x.end + shift);\n }\n\n if (!new_start) {\n task.start_date = new Date(gantt.getState().min_date);\n task.end_date = gantt.dateFromPos(gantt.posFromDate(task.start_date) + (coords_x.end - coords_x.start));\n } else if (!new_end) {\n task.end_date = new Date(gantt.getState().max_date);\n task.start_date = gantt.dateFromPos(gantt.posFromDate(task.end_date) - (coords_x.end - coords_x.start));\n } else {\n task.start_date = new_start;\n task.end_date = new_end;\n }\n },\n _drag_task_coords: function _drag_task_coords(t, drag) {\n var start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n var end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n return {\n start: start,\n end: end\n };\n },\n _mouse_position_change: function _mouse_position_change(oldPos, newPos) {\n var dx = oldPos.x - newPos.x,\n dy = oldPos.y - newPos.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n _is_number: function _is_number(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n },\n on_mouse_move: function on_mouse_move(e) {\n if (this.drag.start_drag) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var sX = this.drag.start_drag.start_x,\n sY = this.drag.start_drag.start_y;\n\n if (Date.now() - this.drag.timestamp > 50 || this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n x: sX,\n y: sY\n }, pos) > 20) {\n this._start_dnd(e);\n }\n }\n\n var drag = this.drag;\n\n if (drag.mode) {\n if (!timeout(this, 40)) //limit update frequency\n return;\n\n this._update_on_move(e);\n }\n },\n _update_item_on_move: function _update_item_on_move(shift, id, mode, drag, e, multipleDragShift) {\n var task = gantt.getTask(id);\n var original = gantt.mixin({}, task);\n var copy = gantt.mixin({}, task);\n\n this._handlers[mode].apply(this, [copy, shift, drag, multipleDragShift]);\n\n gantt.mixin(task, copy, true); //gantt._update_parents(drag.id, true);\n\n gantt.callEvent(\"onTaskDrag\", [task.id, mode, copy, original, e]);\n gantt.mixin(task, copy, true);\n gantt.refreshTask(id);\n },\n _update_on_move: function _update_on_move(e) {\n var drag = this.drag;\n var config = timeline.$getConfig();\n\n if (drag.mode) {\n var pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n if (drag.pos && drag.pos.x == pos.x) return;\n drag.pos = pos;\n var curr_date = gantt.dateFromPos(pos.x);\n if (!curr_date || isNaN(curr_date.getTime())) return;\n var shift = pos.x - drag.start_x;\n var task = gantt.getTask(drag.id);\n\n if (this._handlers[drag.mode]) {\n if (drag.mode === config.drag_mode.move) {\n var dragHash = {};\n\n if (this._isMultiselect()) {\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n dragHash = this.dragMultiple;\n }\n }\n\n var dragProject = false;\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project) {\n var initialDrag = {};\n initialDrag[drag.id] = utils.copy(drag);\n dragProject = true;\n dragHash = utils.mixin(initialDrag, this.dragMultiple);\n }\n\n var maxShift = this._find_max_shift(dragHash, shift);\n\n if (maxShift !== undefined) {\n shift = maxShift;\n }\n\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\n for (var i in dragHash) {\n var childDrag = dragHash[i];\n\n if (dragProject && childDrag.id != drag.id) {\n gantt._bulk_dnd = true;\n } // GS-454: Calculate the date shift in milliseconds instead of pixels\n\n\n if (maxShift === undefined && (dragProject || Object.keys(dragHash).length > 1)) {\n var shiftDate = gantt.dateFromPos(drag.start_x);\n var multipleDragShift = curr_date - shiftDate;\n }\n\n this._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e, multipleDragShift);\n }\n\n gantt._bulk_dnd = false;\n } else {\n // for resize and progress\n this._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n }\n\n gantt._update_parents(drag.id);\n }\n }\n },\n on_mouse_down: function on_mouse_down(e, src) {\n // on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n // let's ignore right mouse button then\n if (e.button == 2 && e.button !== undefined) return;\n var config = timeline.$getConfig();\n var id = gantt.locate(e);\n var task = null;\n\n if (gantt.isTaskExists(id)) {\n task = gantt.getTask(id);\n }\n\n if (gantt.isReadonly(task) || this.drag.mode) return;\n this.clear_drag_state();\n src = src || e.target || e.srcElement;\n var className = domHelpers.getClassName(src);\n\n var drag = this._get_drag_mode(className, src);\n\n if (!className || !drag) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);else return;\n }\n\n if (!drag) {\n if (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n if (src.parentNode) return this.on_mouse_down(e, src.parentNode);\n }\n } else {\n if (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n id = gantt.locate(src);\n task = gantt.copy(gantt.getTask(id) || {});\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return false;\n }\n\n if (gantt.isSummaryTask(task) && !config.drag_project && drag.mode != config.drag_mode.progress) {\n //only progress drag is allowed for tasks with flexible duration\n this.clear_drag_state();\n return;\n }\n\n drag.id = id;\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n drag.start_x = pos.x;\n drag.start_y = pos.y;\n drag.obj = task;\n this.drag.start_drag = drag;\n this.drag.timestamp = Date.now();\n } else this.clear_drag_state();\n }\n },\n _fix_dnd_scale_time: function _fix_dnd_scale_time(task, drag) {\n var config = timeline.$getConfig();\n var unit = gantt.getScale().unit,\n step = gantt.getScale().step;\n\n if (!config.round_dnd_dates) {\n unit = 'minute';\n step = config.time_step;\n }\n\n function fixStart(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(task.start_date, undefined, task)) task.start_date = gantt.calculateEndDate({\n start_date: task.start_date,\n duration: -1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n function fixEnd(task) {\n if (!gantt.config.correct_work_time) return;\n var config = timeline.$getConfig();\n if (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task)) task.end_date = gantt.calculateEndDate({\n start_date: task.end_date,\n duration: 1,\n unit: config.duration_unit,\n task: task\n });\n }\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n } else {\n task.end_date = gantt.roundDate({\n date: task.end_date,\n unit: unit,\n step: step\n });\n fixEnd(task);\n }\n } else if (drag.mode == config.drag_mode.move) {\n task.start_date = gantt.roundDate({\n date: task.start_date,\n unit: unit,\n step: step\n });\n fixStart(task);\n task.end_date = gantt.calculateEndDate(task);\n }\n },\n _fix_working_times: function _fix_working_times(task, drag) {\n var config = timeline.$getConfig();\n var drag = drag || {\n mode: config.drag_mode.move\n };\n\n if (drag.mode == config.drag_mode.resize) {\n if (drag.left) {\n task.start_date = gantt.getClosestWorkTime({\n date: task.start_date,\n dir: 'future',\n task: task\n });\n } else {\n task.end_date = gantt.getClosestWorkTime({\n date: task.end_date,\n dir: 'past',\n task: task\n });\n }\n } else if (drag.mode == config.drag_mode.move) {\n gantt.correctTaskWorkTime(task);\n }\n },\n _finalize_mouse_up: function _finalize_mouse_up(taskId, config, drag, e) {\n var task = gantt.getTask(taskId);\n\n if (config.work_time && config.correct_work_time) {\n this._fix_working_times(task, drag);\n }\n\n this._fix_dnd_scale_time(task, drag);\n\n if (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n //drag.obj._dhx_changed = false;\n this.clear_drag_state();\n\n if (taskId == drag.id) {\n drag.obj._dhx_changed = false;\n gantt.mixin(task, drag.obj, true);\n }\n\n gantt.refreshTask(task.id);\n } else {\n var drag_id = taskId;\n\n gantt._init_task_timing(task);\n\n this.clear_drag_state();\n gantt.updateTask(task.id);\n\n this._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n }\n },\n on_mouse_up: function on_mouse_up(e) {\n var drag = this.drag;\n\n if (drag.mode && drag.id) {\n var config = timeline.$getConfig(); //drop\n\n var task = gantt.getTask(drag.id);\n var dragMultiple = this.dragMultiple;\n var finalizingBulkMove = false;\n var moveCount = 0;\n\n if (drag.mode === config.drag_mode.move) {\n if (gantt.isSummaryTask(task) && config.drag_project || this._isMultiselect()) {\n finalizingBulkMove = true;\n moveCount = Object.keys(dragMultiple).length;\n }\n }\n\n var doFinalize = function doFinalize() {\n if (finalizingBulkMove) {\n for (var i in dragMultiple) {\n this._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n }\n }\n\n this._finalize_mouse_up(drag.id, config, drag, e);\n };\n\n if (finalizingBulkMove && moveCount > 10) {\n // 10 - arbitrary threshold for bulk dnd at which we start doing complete repaint to refresh\n gantt.batchUpdate(function () {\n doFinalize.call(this);\n }.bind(this));\n } else {\n doFinalize.call(this);\n }\n }\n\n this.clear_drag_state();\n },\n _get_drag_mode: function _get_drag_mode(className, el) {\n var config = timeline.$getConfig();\n var modes = config.drag_mode;\n var classes = (className || \"\").split(\" \");\n var classname = classes[0];\n var drag = {\n mode: null,\n left: null\n };\n\n switch (classname) {\n case \"gantt_task_line\":\n case \"gantt_task_content\":\n drag.mode = modes.move;\n break;\n\n case \"gantt_task_drag\":\n drag.mode = modes.resize;\n var dragProperty = el.getAttribute(\"data-bind-property\");\n\n if (dragProperty == \"start_date\") {\n drag.left = true;\n } else {\n drag.left = false;\n }\n\n break;\n\n case \"gantt_task_progress_drag\":\n drag.mode = modes.progress;\n break;\n\n case \"gantt_link_control\":\n case \"gantt_link_point\":\n drag.mode = modes.ignore;\n break;\n\n default:\n drag = null;\n break;\n }\n\n return drag;\n },\n _start_dnd: function _start_dnd(e) {\n var drag = this.drag = this.drag.start_drag;\n delete drag.start_drag;\n var cfg = timeline.$getConfig();\n var id = drag.id;\n\n if (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n this.clear_drag_state();\n } else {\n delete drag.start_drag;\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n this.clear_drag_state();\n return;\n }\n\n if (this._isMultiselect()) {\n // for don't move selected tasks when drag unselected task\n var selectedTasksIds = gantt.getSelectedTasks();\n\n if (selectedTasksIds.indexOf(drag.id) >= 0) {\n helpers.forEach(selectedTasksIds, gantt.bind(function (taskId) {\n var selectedTask = gantt.getTask(taskId);\n\n if (gantt.isSummaryTask(selectedTask) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(selectedTask.id);\n }\n\n this.dragMultiple[taskId] = gantt.mixin({\n id: selectedTask.id,\n obj: gantt.copy(selectedTask)\n }, this.drag);\n }, this));\n }\n } // for move unselected summary\n\n\n if (gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move) {\n this._addSubtasksToDragMultiple(task.id);\n }\n\n gantt.callEvent(\"onTaskDragStart\", []);\n }\n },\n _fireEvent: function _fireEvent(stage, mode, params) {\n gantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n var trigger = this._events[stage][mode];\n gantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n gantt.assert(params, \"Invalid event arguments\");\n if (!gantt.checkEvent(trigger)) return true;\n return gantt.callEvent(trigger, params);\n },\n round_task_dates: function round_task_dates(task) {\n var drag_state = this.drag;\n var config = timeline.$getConfig();\n\n if (!drag_state) {\n drag_state = {\n mode: config.drag_mode.move\n };\n }\n\n this._fix_dnd_scale_time(task, drag_state);\n },\n destructor: function destructor() {\n this._domEvents.detachAll();\n },\n _isMultiselect: function _isMultiselect() {\n return gantt.config.drag_multiple && !!(gantt.getSelectedTasks && gantt.getSelectedTasks().length > 0);\n },\n _addSubtasksToDragMultiple: function _addSubtasksToDragMultiple(summaryId) {\n gantt.eachTask(function (child) {\n this.dragMultiple[child.id] = gantt.mixin({\n id: child.id,\n obj: gantt.copy(child)\n }, this.drag);\n }, summaryId, this);\n }\n };\n}\n\nfunction initTaskDND() {\n var _tasks_dnd;\n\n return {\n extend: function extend(timeline) {\n timeline.roundTaskDates = function (task) {\n _tasks_dnd.round_task_dates(task);\n };\n },\n init: function init(timeline, gantt) {\n _tasks_dnd = createTaskDND(timeline, gantt); // TODO: entry point for touch handlers, move touch to timeline\n\n timeline._tasks_dnd = _tasks_dnd;\n return _tasks_dnd.init(gantt);\n },\n destructor: function destructor() {\n if (_tasks_dnd) {\n _tasks_dnd.destructor();\n\n _tasks_dnd = null;\n }\n }\n };\n}\n\nmodule.exports = {\n createTaskDND: initTaskDND\n};","var utils = require(\"../../../utils/utils\"),\n taskDnD = require(\"./tasks_dnd\"),\n linkDnD = require(\"./links_dnd\"),\n domHelpers = require(\"../utils/dom_helpers\");\n\nvar initializer = function () {\n return function (gantt) {\n var services = gantt.$services;\n return {\n onCreated: function onCreated(timeline) {\n var config = timeline.$config;\n config.bind = utils.defined(config.bind) ? config.bind : \"task\";\n config.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n timeline._linksDnD = linkDnD.createLinkDND();\n timeline._tasksDnD = taskDnD.createTaskDND();\n\n timeline._tasksDnD.extend(timeline);\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(timeline) {\n this._attachDomEvents(gantt);\n\n this._attachStateProvider(gantt, timeline);\n\n timeline._tasksDnD.init(timeline, gantt);\n\n timeline._linksDnD.init(timeline, gantt);\n\n if (timeline.$config.id == \"timeline\") {\n this.extendDom(timeline);\n }\n },\n onDestroyed: function onDestroyed(timeline) {\n this._clearDomEvents(gantt);\n\n this._clearStateProvider(gantt);\n\n if (timeline._tasksDnD) {\n timeline._tasksDnD.destructor();\n }\n },\n extendDom: function extendDom(timeline) {\n gantt.$task = timeline.$task;\n gantt.$task_scale = timeline.$task_scale;\n gantt.$task_data = timeline.$task_data;\n gantt.$task_bg = timeline.$task_bg;\n gantt.$task_links = timeline.$task_links;\n gantt.$task_bars = timeline.$task_bars;\n },\n _clearDomEvents: function _clearDomEvents() {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n _attachDomEvents: function _attachDomEvents(gantt) {\n function _delete_link_handler(id, e) {\n if (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n var link = this.getLink(id);\n if (this.isReadonly(link)) return;\n var title = \"\";\n var question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n window.setTimeout(function () {\n gantt._simple_confirm(question, title, function () {\n gantt.deleteLink(id);\n });\n }, this.config.touch ? 300 : 1);\n }\n }\n\n this._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n var id = this.locate(e, this.config.link_attribute);\n\n if (id) {\n this.callEvent(\"onLinkClick\", [id, e]);\n }\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n var pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n var date = gantt.dateFromPos(pos.x);\n var coll = Math.floor(gantt.columnIndexByDate(date));\n var coll_date = gantt.getScale().trace_x[coll];\n gantt.callEvent(\"onScaleClick\", [e, coll_date]);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e, gantt.config.link_attribute);\n\n _delete_link_handler.call(this, id, e);\n }, gantt), this.$task);\n\n this._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n var id = this.locate(e),\n task = this.getTask(id);\n var link = null;\n\n if (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n if (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n link = task.$target[0];\n } else {\n link = task.$source[0];\n }\n }\n\n if (link) _delete_link_handler.call(this, link, e);\n return false;\n }, gantt), this.$task);\n },\n _attachStateProvider: function _attachStateProvider(gantt, timeline) {\n var self = timeline;\n var state = services.getService(\"state\");\n state.registerProvider(\"tasksTimeline\", function () {\n return {\n scale_unit: self._tasks ? self._tasks.unit : undefined,\n scale_step: self._tasks ? self._tasks.step : undefined\n };\n });\n },\n _clearStateProvider: function _clearStateProvider() {\n var state = services.getService(\"state\");\n state.unregisterProvider(\"tasksTimeline\");\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../utils/dom_helpers\");\n/**\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.width = markerPos.width + \"px\";\n root.marker.style.overflow = \"hidden\";\n var markerLine = root.markerLine;\n\n if (!markerLine) {\n markerLine = document.createElement(\"div\");\n markerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n markerLine.innerHTML = \"
\";\n markerLine.style.pointerEvents = \"none\";\n }\n\n if (target.child) {\n highlightFolder(target, markerLine, grid);\n } else {\n highlightRow(target, markerLine, grid);\n }\n\n if (!root.markerLine) {\n document.body.appendChild(markerLine);\n root.markerLine = markerLine;\n }\n}\n\nfunction removeLineHighlight(root) {\n if (root.markerLine && root.markerLine.parentNode) {\n root.markerLine.parentNode.removeChild(root.markerLine);\n }\n\n root.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid) {\n var linePos = getLineMarkerPosition(target, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom + window.scrollY;\n markerLine.innerHTML = \"
\";\n markerLine.style.left = linePos.x + \"px\";\n markerLine.style.height = \"4px\";\n var markerLineTop = linePos.y - 2;\n markerLine.style.top = markerLineTop + \"px\";\n markerLine.style.width = linePos.width + \"px\";\n\n if (markerLineTop > maxBottom) {\n markerLine.style.top = maxBottom + 'px';\n }\n\n return markerLine;\n}\n\nfunction highlightFolder(target, markerFolder, grid) {\n var id = target.targetParent;\n var pos = gridToPageCoordinates({\n x: 0,\n y: grid.getItemTop(id)\n }, grid);\n var maxBottom = grid.$grid_data.getBoundingClientRect().bottom + window.scrollY;\n var folderHighlightWidth = setWidthWithinContainer(grid.$gantt, grid.$grid_data.offsetWidth);\n markerFolder.innerHTML = \"
\";\n markerFolder.style.width = folderHighlightWidth + \"px\";\n markerFolder.style.top = pos.y + \"px\";\n markerFolder.style.left = pos.x + \"px\";\n markerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\n if (pos.y > maxBottom) {\n markerFolder.style.top = maxBottom + 'px';\n }\n\n return markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid) {\n var store = grid.$config.rowStore;\n var pos = {\n x: 0,\n y: 0\n };\n var indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n var indent = 15;\n var level = 0;\n\n if (indentNode) {\n indent = indentNode.offsetWidth;\n }\n\n var iconWidth = 40;\n\n if (target.targetId !== store.$getRootId()) {\n var itemTop = grid.getItemTop(target.targetId);\n var itemHeight = grid.getItemHeight(target.targetId);\n level = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n if (target.prevSibling) {\n pos.y = itemTop;\n } else if (target.nextSibling) {\n var childCount = 0;\n store.eachItem(function (child) {\n if (store.getIndexById(child.id) !== -1) childCount++;\n }, target.targetId);\n pos.y = itemTop + itemHeight + childCount * itemHeight;\n } else {\n pos.y = itemTop + itemHeight;\n level += 1;\n }\n }\n\n pos.x = iconWidth + level * indent;\n pos.width = setWidthWithinContainer(grid.$gantt, Math.max(grid.$grid_data.offsetWidth - pos.x, 0), pos.x);\n return gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid) {\n var gridPos = domHelpers.getNodePosition(grid.$grid_data);\n pos.x += gridPos.x + grid.$grid.scrollLeft;\n pos.y += gridPos.y - grid.$grid_data.scrollTop;\n return pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data); // row offset\n\n var x = pos.x + grid.$grid.scrollLeft;\n var y = ePos.y - 10;\n var rowHeight = grid.getItemHeight(e.targetId); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n pos.x = x;\n pos.y = y;\n pos.width = setWidthWithinContainer(grid.$gantt, pos.width, 9);\n return pos;\n}\n\nfunction setWidthWithinContainer(gantt, width) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var containerSize = domHelpers.getNodePosition(gantt.$root);\n\n if (width > containerSize.width) {\n width = containerSize.width - offset - 2;\n }\n\n return width;\n}\n\nmodule.exports = {\n removeLineHighlight: removeLineHighlight,\n highlightPosition: highlightPosition\n};","/**\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\n if (!document.doctype) {\n y += window.scrollY;\n }\n\n y = y || 0; // limits for the marker according to the layout layer\n\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos + window.scrollY;\n var minTop = scrollPos;\n var firstVisibleTaskIndex = grid.getItemIndexByTopPosition(grid.$state.scrollTop);\n\n if (!store.exists(firstVisibleTaskIndex)) {\n firstVisibleTaskIndex = store.countVisible() - 1;\n }\n\n if (firstVisibleTaskIndex < 0) {\n return store.$getRootId();\n }\n\n var firstVisibleTaskId = store.getIdByIndex(firstVisibleTaskIndex);\n var firstVisibleTaskPos = grid.$state.scrollTop / grid.getItemHeight(firstVisibleTaskId);\n var hiddenTaskPart = firstVisibleTaskPos - Math.floor(firstVisibleTaskPos);\n\n if (hiddenTaskPart > 0.1 && hiddenTaskPart < 0.9) {\n maxBottom = maxBottom - grid.getItemHeight(firstVisibleTaskId) * hiddenTaskPart;\n minTop = minTop + grid.getItemHeight(firstVisibleTaskId) * (1 - hiddenTaskPart);\n } // GS-715. The placeholder task row shouldn't be draggable below the Gantt container\n\n\n var gridPosition = domHelpers.getNodePosition(grid.$grid_data);\n var gridBottom = gridPosition.y + gridPosition.height;\n var placeholderRowHeight = dnd.config.marker.offsetHeight;\n\n if (y + placeholderRowHeight + window.scrollY >= maxBottom) {\n dnd.config.marker.style.top = gridBottom - placeholderRowHeight + \"px\";\n }\n\n if (y >= maxBottom) {\n y = maxBottom;\n } else if (y <= minTop) {\n y = minTop;\n dnd.config.marker.style.top = gridPosition.y + \"px\";\n }\n\n var index = grid.getItemIndexByTopPosition(y);\n\n if (index > store.countVisible() - 1 || index < 0) {\n return store.$getRootId();\n }\n\n var targetId = store.getIdByIndex(index);\n\n if (checkPlaceholderTask(targetId)) {\n return store.getPrevSibling(targetId);\n }\n\n return store.getIdByIndex(index);\n }\n\n function getDropPosition(e) {\n var targetTaskId = getTargetTaskId(e);\n var relTargetPos = null;\n var store = grid.$config.rowStore;\n var config = grid.$getConfig();\n var lockLevel = !config.order_branch_free;\n var eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n if (!document.doctype) {\n eventTop += window.scrollY;\n }\n\n if (targetTaskId !== store.$getRootId()) {\n var rowTop = grid.getItemTop(targetTaskId);\n var rowHeight = grid.getItemHeight(targetTaskId);\n relTargetPos = (eventTop - rowTop) / rowHeight;\n }\n\n var result;\n\n if (!lockLevel) {\n result = getMultiLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store);\n } else {\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\n if (result && result.targetParent && checkPlaceholderTask(result.targetParent)) {\n targetTaskId = store.getPrevSibling(result.targetParent);\n result = getLockedLevelTarget(dnd.config.id, targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n }\n }\n\n return result;\n }\n\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var target = getDropPosition(e);\n\n if (!target || gantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n target = dropTarget.createDropTargetObject(dnd.config.drop_target);\n }\n\n higlighter.highlightPosition(target, dnd.config, grid);\n dnd.config.drop_target = target;\n\n gantt._waiAria.reorderMarkerAttr(dnd.config.marker);\n\n this.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = grid.$config.rowStore;\n var task = store.getItem(dnd.config.id);\n higlighter.removeLineHighlight(dnd.config);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n var target = dnd.config.drop_target;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n task.$drop_target = null;\n } else {\n store.move(dnd.config.id, target.targetIndex, target.targetParent);\n gantt.render();\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n }\n\n store.refresh(task.id);\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var domHelpers = require(\"../utils/dom_helpers\");\n\nvar isPlaceholderTask = require(\"../../../utils/placeholder_task\");\n\nfunction _init_dnd(gantt, grid) {\n var DnD = gantt.$services.getService(\"dnd\");\n\n if (!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)) {\n return;\n }\n\n function locate(e) {\n return domHelpers.locateAttribute(e, grid.$config.item_attribute);\n }\n\n function getStore() {\n return gantt.getDatastore(grid.$config.bind);\n }\n\n function checkPlaceholderTask(id) {\n return isPlaceholderTask(id, gantt, getStore());\n }\n\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(grid.$getConfig().dnd_sensitivity)) dnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n if (!el) return false;\n if (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n if (domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\")) {\n return false;\n }\n\n var id = el.getAttribute(grid.$config.item_attribute);\n if (checkPlaceholderTask(id)) return false;\n var datastore = getStore();\n var task = datastore.getItem(id);\n if (gantt.isReadonly(task)) return false;\n dnd.config.initial_open_state = task.$open;\n\n if (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n return false;\n }\n }, gantt));\n dnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n var el = locate(e);\n dnd.config.marker.innerHTML = el.outerHTML;\n var element = dnd.config.marker.firstChild;\n\n if (element) {\n element.style.position = \"static\";\n }\n\n dnd.config.id = el.getAttribute(grid.$config.item_attribute);\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n dnd.config.index = store.getBranchIndex(dnd.config.id);\n dnd.config.parent = task.parent;\n task.$open = false;\n task.$transparent = true;\n this.refreshData();\n }, gantt));\n\n dnd.lastTaskOfLevel = function (level) {\n var last_item = null;\n var store = getStore();\n var tasks = store.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n if (tasks[i].$level == level) {\n last_item = tasks[i];\n }\n }\n\n return last_item ? last_item.id : null;\n };\n\n dnd._getGridPos = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data); // row offset\n\n var x = pos.x + grid.$grid.scrollLeft;\n var y = e.pos.y - 10;\n var rowHeight = grid.getItemHeight(dnd.config.id); // prevent moving row out of grid_data container\n\n if (y < pos.y) y = pos.y;\n var gridHeight = grid.getTotalHeight();\n if (y > pos.y + gridHeight - rowHeight) y = pos.y + gridHeight - rowHeight;\n var maxBottom = pos.y + pos.height;\n\n if (y > maxBottom - rowHeight) {\n y = maxBottom - rowHeight;\n }\n\n pos.x = x;\n pos.y = y;\n return pos;\n }, gantt);\n dnd._getTargetY = gantt.bind(function (e) {\n var pos = domHelpers.getNodePosition(grid.$grid_data);\n var scrollPos = grid.$state.scrollTop || 0;\n var maxBottom = gantt.$grid_data.getBoundingClientRect().height + scrollPos;\n var y = e.pageY - pos.y + scrollPos;\n\n if (y > maxBottom) {\n y = maxBottom;\n } else if (y < scrollPos) {\n y = scrollPos;\n }\n\n return y;\n }, gantt);\n dnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n var store = getStore();\n y = y || 0;\n var index = grid.getItemIndexByTopPosition(y);\n index = dropIndex < index ? index - 1 : index;\n if (index > store.countVisible() - 1) return null;\n return store.getIdByIndex(index);\n }, gantt);\n dnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n var gridDataSizes = gantt.$grid_data.getBoundingClientRect();\n var maxBottom = gridDataSizes.height + gridDataSizes.y + (grid.$state.scrollTop || 0) + window.scrollY;\n var dd = dnd.config;\n\n var pos = dnd._getGridPos(e);\n\n gantt._waiAria.reorderMarkerAttr(dd.marker);\n\n var config = grid.$getConfig(),\n store = getStore(); // setting position of row\n\n if (pos.y < maxBottom) {\n dd.marker.style.top = pos.y + \"px\";\n } else {\n dd.marker.style.top = maxBottom + \"px\";\n }\n\n dd.marker.style.left = pos.x + 10 + \"px\";\n var containerSize = domHelpers.getNodePosition(gantt.$root);\n\n if (pos.width > containerSize.width) {\n dd.marker.style.width = containerSize.width - 10 - 2 + \"px\";\n dd.marker.style.overflow = \"hidden\";\n } // highlight row when mouseover\n\n\n var item = store.getItem(dnd.config.id);\n\n var targetY = dnd._getTargetY(e);\n\n var el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n if (!store.exists(el)) {\n el = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\n if (el == dnd.config.id) {\n el = null;\n }\n }\n\n function allowedLevel(next, item) {\n return !store.isChildOf(over.id, item.id) && (next.$level == item.$level || config.order_branch_free);\n }\n\n if (store.exists(el)) {\n var over = store.getItem(el);\n var itemTop = grid.getItemTop(over.id);\n var itemHeight = grid.getItemHeight(over.id);\n\n if (itemTop + itemHeight / 2 < targetY) {\n //hovering over bottom part of item, check can be drop to bottom\n var index = store.getIndexById(over.id);\n var nextId = store.getNext(over.id); //adds +1 when hovering over placeholder\n\n var next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (next) {\n if (next.id != item.id) {\n over = next; //there is a valid target\n } else {\n if (config.order_branch_free) {\n if (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1)) return;else {\n store.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n return;\n }\n } else {\n return;\n }\n }\n } else {\n //we at end of the list, check and drop at the end of list\n nextId = store.getIdByIndex(index);\n next = store.getItem(nextId);\n\n if (checkPlaceholderTask(nextId)) {\n var prevId = store.getPrev(next.id);\n next = store.getItem(prevId);\n }\n\n if (allowedLevel(next, item) && next.id != item.id) {\n store.move(item.id, -1, store.getParent(next.id));\n return;\n }\n }\n } else if (config.order_branch_free) {\n if (over.id != item.id && allowedLevel(over, item) && !checkPlaceholderTask(over.id)) {\n if (!store.hasChild(over.id)) {\n over.$open = true;\n store.move(item.id, -1, over.id);\n return;\n }\n\n if (store.getIndexById(over.id) || itemHeight / 3 < targetY) return;\n }\n } //if item is on different level, check the one before it\n\n\n var index = store.getIndexById(over.id),\n prevId = store.getIdByIndex(index - 1);\n var prev = store.getItem(prevId);\n var shift = 1;\n\n while ((!prev || prev.id == over.id) && index - shift >= 0) {\n prevId = store.getIdByIndex(index - shift);\n prev = store.getItem(prevId);\n shift++;\n }\n\n if (item.id == over.id || checkPlaceholderTask(over.id)) return; //replacing item under cursor\n\n if (allowedLevel(over, item) && item.id != over.id) {\n store.move(item.id, 0, 0, over.id);\n } else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n store.move(item.id, 0, over.id);\n } else if (prev && allowedLevel(prev, item) && item.id != prev.id) {\n store.move(item.id, -1, store.getParent(prev.id));\n }\n }\n\n return true;\n }, gantt));\n dnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n var store = getStore();\n var task = store.getItem(dnd.config.id);\n task.$transparent = false;\n task.$open = dnd.config.initial_open_state;\n\n if (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n store.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n task.$drop_target = null;\n } else {\n this.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n }\n\n gantt.render();\n this.refreshData();\n }, gantt));\n}\n\nmodule.exports = {\n init: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\n\nvar rowDnd = require(\"./tasks_grid_dnd\");\n\nvar rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\nvar initializer = function () {\n return function (gantt) {\n return {\n onCreated: function onCreated(grid) {\n grid.$config = utils.mixin(grid.$config, {\n bind: \"task\"\n });\n\n if (grid.$config.id == \"grid\") {\n this.extendGantt(grid);\n gantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n gantt.ext.inlineEditors.init();\n }\n\n this._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n },\n onInitialized: function onInitialized(grid) {\n var config = grid.$getConfig();\n\n if (config.order_branch) {\n if (config.order_branch == \"marker\") {\n rowDndMarker.init(grid.$gantt, grid);\n } else {\n rowDnd.init(grid.$gantt, grid);\n }\n }\n\n this.initEvents(grid, gantt);\n\n if (grid.$config.id == \"grid\") {\n this.extendDom(grid);\n }\n },\n onDestroyed: function onDestroyed(grid) {\n if (grid.$config.id == \"grid\") {\n gantt.ext.inlineEditors.destructor();\n }\n\n this.clearEvents(grid, gantt);\n },\n initEvents: function initEvents(grid, gantt) {\n this._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n\n if (id !== null) {\n var task = this.getTask(id);\n if (config.scroll_on_click && !gantt._is_icon_open_click(e)) this.showDate(task.start_date);\n gantt.callEvent(\"onTaskRowClick\", [id, trg]);\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n var column = trg.getAttribute(\"data-column-id\");\n if (!gantt.callEvent(\"onGridHeaderClick\", [column, e])) return;\n var config = grid.$getConfig();\n\n if (column == \"add\") {\n var mouseEvents = gantt.$services.getService(\"mouseEvents\");\n mouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n return;\n }\n\n if (config.sort && column) {\n // GS-929: if there is no column name, we cannot sort the column\n var sorting_method = column,\n conf;\n\n for (var i = 0; i < config.columns.length; i++) {\n if (config.columns[i].name == column) {\n conf = config.columns[i];\n break;\n }\n }\n\n if (conf && conf.sort !== undefined && conf.sort !== true) {\n sorting_method = conf.sort;\n\n if (!sorting_method) {\n // column sort property 'false', no sorting\n return;\n }\n }\n\n var sort = this._sort && this._sort.direction && this._sort.name == column ? this._sort.direction : \"desc\"; // invert sort direction\n\n sort = sort == \"desc\" ? \"asc\" : \"desc\";\n this._sort = {\n name: column,\n direction: sort\n };\n this.sort(sorting_method, sort == \"desc\");\n }\n }, gantt), grid.$grid);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n var config = grid.$getConfig();\n if (config.readonly) return;\n var item = {};\n this.createTask(item, id ? id : gantt.config.root_id);\n return false;\n }, gantt), grid.$grid);\n },\n clearEvents: function clearEvents(grid, gantt) {\n this._mouseDelegates.destructor();\n\n this._mouseDelegates = null;\n },\n extendDom: function extendDom(grid) {\n gantt.$grid = grid.$grid;\n gantt.$grid_scale = grid.$grid_scale;\n gantt.$grid_data = grid.$grid_data;\n },\n extendGantt: function extendGantt(grid) {\n gantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n grid.attachEvent(\"onColumnResizeStart\", function () {\n return gantt.callEvent(\"onColumnResizeStart\", arguments);\n });\n grid.attachEvent(\"onColumnResize\", function () {\n return gantt.callEvent(\"onColumnResize\", arguments);\n });\n grid.attachEvent(\"onColumnResizeEnd\", function () {\n return gantt.callEvent(\"onColumnResizeEnd\", arguments);\n });\n grid.attachEvent(\"onColumnResizeComplete\", function (columns, totalWidth) {\n gantt.config.grid_width = totalWidth;\n });\n grid.attachEvent(\"onBeforeRowResize\", function () {\n return gantt.callEvent(\"onBeforeRowResize\", arguments);\n });\n grid.attachEvent(\"onRowResize\", function () {\n return gantt.callEvent(\"onRowResize\", arguments);\n });\n grid.attachEvent(\"onBeforeRowResizeEnd\", function () {\n return gantt.callEvent(\"onBeforeRowResizeEnd\", arguments);\n });\n grid.attachEvent(\"onAfterRowResize\", function () {\n return gantt.callEvent(\"onAfterRowResize\", arguments);\n });\n }\n };\n };\n}();\n\nmodule.exports = initializer;","var getRowRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createGridTaskRowResizerRender(gantt) {\n function _render_grid_item(item, view, viewport) {\n var config = view.$getConfig();\n var resize_el = document.createElement(\"div\");\n resize_el.className = \"gantt_task_grid_row_resize_wrap\";\n resize_el.style.top = view.getItemTop(item.id) + view.getItemHeight(item.id) + \"px\";\n resize_el.innerHTML = \"
\";\n resize_el.setAttribute(config.task_grid_row_resizer_attribute, item.id);\n\n gantt._waiAria.rowResizerAttr(resize_el);\n\n return resize_el;\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createGridTaskRowResizerRender;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction renderBar(level, start, end, timeline) {\n var top = (1 - (level * 1 || 0)) * 100;\n var left = timeline.posFromDate(start);\n var right = timeline.posFromDate(end);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_hor_bar\";\n element.style.top = top + '%';\n element.style.left = left + \"px\";\n element.style.width = right - left + 1 + \"px\";\n return element;\n}\n\nfunction renderConnection(prevLevel, nextLevel, left) {\n if (prevLevel === nextLevel) {\n return null;\n }\n\n var top = 1 - Math.max(prevLevel, nextLevel);\n var height = Math.abs(prevLevel - nextLevel);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_vert_bar\";\n element.style.top = top * 100 + \"%\";\n element.style.height = height * 100 + \"%\";\n element.style.left = left + \"px\";\n return element;\n}\n\nfunction generateRenderResourceHistogram(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedHistogramCells = {};\n var renderedHistogramRows = {};\n var renderedHistogramCapacity = {};\n\n function detachRenderedHistogramCell(id, index) {\n var renderedRow = renderedHistogramCells[id];\n\n if (renderedRow && renderedRow[index] && renderedRow[index].parentNode) {\n renderedRow[index].parentNode.removeChild(renderedRow[index]);\n }\n }\n\n function renderHistogramLine(capacity, timeline, maxCapacity, viewport) {\n var scale = timeline.getScale();\n var el = document.createElement(\"div\");\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var i = range.start; i <= range.end; i++) {\n var colStart = scale.trace_x[i];\n var colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n var col = scale.trace_x[i].valueOf();\n var level = Math.min(capacity[col] / maxCapacity, 1) || 0; // do not render histogram for lines with below zero capacity, as it's reserved for folders\n\n if (level < 0) {\n return null;\n }\n\n var nextLevel = Math.min(capacity[colEnd.valueOf()] / maxCapacity, 1) || 0;\n var bar = renderBar(level, colStart, colEnd, timeline);\n\n if (bar) {\n el.appendChild(bar);\n }\n\n var connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\n if (connection) {\n el.appendChild(connection);\n }\n }\n\n return el;\n }\n\n function renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport) {\n var renderedElement = renderedHistogramCapacity[resource.id];\n\n if (renderedElement && renderedElement.parentNode) {\n renderedElement.parentNode.removeChild(renderedElement);\n }\n\n var capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\n\n if (capacityElement && sizes) {\n capacityElement.setAttribute(\"data-resource-id\", resource.id);\n capacityElement.setAttribute(timeline.$config.item_attribute, resource.id);\n capacityElement.style.position = \"absolute\";\n capacityElement.style.top = sizes.top + 1 + \"px\";\n capacityElement.style.height = timeline.getItemHeight(resource.id) - 1 + \"px\";\n capacityElement.style.left = 0;\n }\n\n return capacityElement;\n }\n\n function renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline) {\n var css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var el = document.createElement('div');\n el.className = [\"gantt_histogram_cell\", css].join(\" \");\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + (sizes.top + 1) + 'px'].join(\";\");\n\n if (content) {\n content = \"
\" + content + \"
\";\n }\n\n if (fill) {\n content = \"
\" + 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 = \"
\";\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 = \"
\" + value + \"
\";\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 = \"
\" + tree.join(\"\") + \"
\";\n cells.push(cell);\n } // GS-291. The odd class should be assigned correctly\n\n\n css = \"\";\n var storeName = store.$config.name;\n\n switch (storeName) {\n case \"task\":\n css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n break;\n\n case \"resource\":\n css = store.visibleOrder.indexOf(item.id) % 2 === 0 ? \"\" : \" odd\";\n break;\n }\n\n css += item.$transparent ? \" gantt_transparent\" : \"\";\n css += item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\";\n\n if (templates.grid_row_class) {\n var css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n if (css_template) css += \" \" + css_template;\n }\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n var height = view.getItemHeight(item.id);\n el.style.height = height + \"px\";\n el.style.lineHeight = height + \"px\";\n\n if (config.smart_rendering) {\n el.style.position = \"absolute\";\n el.style.left = \"0px\";\n el.style.top = view.getItemTop(item.id) + \"px\";\n }\n\n if (view.$config.item_attribute) {\n el.setAttribute(view.$config.item_attribute, item.id);\n el.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n gantt._waiAria.taskRowAttr(item, el);\n\n el.innerHTML = cells.join(\"\");\n return el;\n }\n\n function onrender(item, rowNode, view) {\n var columns = view.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n var column = columns[i];\n\n if (column.onrender) {\n // find cell node for current column\n var cellNode = rowNode.querySelector(\"[data-column-name=\" + column.name + \"]\");\n\n if (cellNode) {\n var content = column.onrender(item, cellNode);\n\n if (content && typeof content === \"string\") {\n cellNode.innerHTML = content;\n } else if (content && _typeof(content) === \"object\") {\n // render object to node using additional functionality\n if (gantt.config.external_render) {\n var adapter = gantt.config.external_render;\n\n if (adapter.isElement(content)) {\n adapter.renderElement(content, cellNode);\n }\n }\n }\n }\n }\n }\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n onrender: onrender\n };\n}\n\nmodule.exports = createGridLineRender;","var isInViewPort = require(\"./viewport/is_link_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/factory/get_visible_link_range\");\n\nfunction createLinkRender(gantt) {\n function _render_link_element(link, view, config) {\n var source = gantt.getTask(link.source);\n\n if (source.hide_bar) {\n return;\n }\n\n var target = gantt.getTask(link.target);\n\n if (target.hide_bar) {\n return;\n }\n\n var pt = path_builder.get_endpoint(link, view, source, target);\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n\n if (!dx && !dy) {\n return null;\n }\n\n var dots = path_builder.get_points(link, view, source, target);\n var lines = drawer.get_lines(dots, view);\n var div = document.createElement(\"div\");\n var css = \"gantt_task_link\";\n\n if (link.color) {\n css += \" gantt_link_inline_color\";\n }\n\n var cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\n if (cssTemplate) {\n css += \" \" + cssTemplate;\n }\n\n if (config.highlight_critical_path && gantt.isCriticalLink) {\n if (gantt.isCriticalLink(link)) css += \" gantt_critical_link\";\n }\n\n div.className = css;\n\n if (view.$config.link_attribute) {\n div.setAttribute(view.$config.link_attribute, link.id);\n div.setAttribute(\"link_id\", link.id);\n }\n\n for (var i = 0; i < lines.length; i++) {\n if (i == lines.length - 1) {\n lines[i].size -= config.link_arrow_size;\n }\n\n var el = drawer.render_line(lines[i], lines[i + 1], view, link.source);\n\n if (link.color) {\n el.firstChild.style.backgroundColor = link.color;\n }\n\n div.appendChild(el);\n }\n\n var direction = lines[lines.length - 1].direction;\n\n var endpoint = _render_link_arrow(dots[dots.length - 1], direction, view, link.source);\n\n if (link.color) {\n endpoint.style.borderColor = link.color;\n }\n\n div.appendChild(endpoint);\n\n gantt._waiAria.linkAttr(link, div);\n\n return div;\n }\n\n function _render_link_arrow(point, direction, view, targetId) {\n var config = view.$getConfig();\n var div = document.createElement(\"div\");\n var top = point.y;\n var left = point.x;\n var size = config.link_arrow_size;\n var className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\n switch (direction) {\n case drawer.dirs.right:\n top -= size / 2;\n left -= size;\n break;\n\n case drawer.dirs.left:\n top -= size / 2;\n break;\n\n case drawer.dirs.up:\n left -= size;\n break;\n\n case drawer.dirs.down:\n top += size * 2;\n left -= size;\n break;\n\n default:\n break;\n }\n\n div.style.cssText = [\"top:\" + top + \"px\", \"left:\" + left + 'px'].join(';');\n div.className = className;\n return div;\n }\n\n var drawer = {\n current_pos: null,\n dirs: {\n \"left\": 'left',\n \"right\": 'right',\n \"up\": 'up',\n \"down\": 'down'\n },\n path: [],\n clear: function clear() {\n this.current_pos = null;\n this.path = [];\n },\n point: function point(pos) {\n this.current_pos = gantt.copy(pos);\n },\n get_lines: function get_lines(dots) {\n this.clear();\n this.point(dots[0]);\n\n for (var i = 1; i < dots.length; i++) {\n this.line_to(dots[i]);\n }\n\n return this.get_path();\n },\n line_to: function line_to(pos) {\n var next = gantt.copy(pos);\n var prev = this.current_pos;\n\n var line = this._get_line(prev, next);\n\n this.path.push(line);\n this.current_pos = next;\n },\n get_path: function get_path() {\n return this.path;\n },\n get_wrapper_sizes: function get_wrapper_sizes(v, view, itemId) {\n var config = view.$getConfig();\n var res,\n wrapper_size = config.link_wrapper_width,\n y = v.y - wrapper_size / 2;\n\n switch (v.direction) {\n case this.dirs.left:\n res = {\n top: y,\n height: wrapper_size,\n lineHeight: wrapper_size,\n left: v.x - v.size - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.right:\n res = {\n top: y,\n lineHeight: wrapper_size,\n height: wrapper_size,\n left: v.x - wrapper_size / 2,\n width: v.size + wrapper_size\n };\n break;\n\n case this.dirs.up:\n res = {\n top: y - v.size,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n case this.dirs.down:\n res = {\n top: y\n /*- wrapper_size/2*/\n ,\n lineHeight: v.size + wrapper_size,\n height: v.size + wrapper_size,\n left: v.x - wrapper_size / 2,\n width: wrapper_size\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n get_line_sizes: function get_line_sizes(v, view) {\n var config = view.$getConfig();\n var res,\n line_size = config.link_line_width,\n wrapper_size = config.link_wrapper_width,\n size = v.size + line_size;\n\n switch (v.direction) {\n case this.dirs.left:\n case this.dirs.right:\n res = {\n height: line_size,\n width: size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n case this.dirs.up:\n case this.dirs.down:\n res = {\n height: size,\n width: line_size,\n marginTop: (wrapper_size - line_size) / 2,\n marginLeft: (wrapper_size - line_size) / 2\n };\n break;\n\n default:\n break;\n }\n\n return res;\n },\n render_line: function render_line(v, end, view, itemId) {\n var pos = this.get_wrapper_sizes(v, view, itemId);\n var wrapper = document.createElement(\"div\");\n wrapper.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"height:\" + pos.height + \"px\", \"width:\" + pos.width + \"px\"].join(';');\n wrapper.className = \"gantt_line_wrapper\";\n var innerPos = this.get_line_sizes(v, view);\n var inner = document.createElement(\"div\");\n inner.style.cssText = [\"height:\" + innerPos.height + \"px\", \"width:\" + innerPos.width + \"px\", \"margin-top:\" + innerPos.marginTop + \"px\", \"margin-left:\" + innerPos.marginLeft + \"px\"].join(\";\");\n inner.className = \"gantt_link_line_\" + v.direction;\n wrapper.appendChild(inner);\n return wrapper;\n },\n _get_line: function _get_line(from, to) {\n var direction = this.get_direction(from, to);\n var vect = {\n x: from.x,\n y: from.y,\n direction: this.get_direction(from, to)\n };\n\n if (direction == this.dirs.left || direction == this.dirs.right) {\n vect.size = Math.abs(from.x - to.x);\n } else {\n vect.size = Math.abs(from.y - to.y);\n }\n\n return vect;\n },\n get_direction: function get_direction(from, to) {\n var direction = 0;\n\n if (to.x < from.x) {\n direction = this.dirs.left;\n } else if (to.x > from.x) {\n direction = this.dirs.right;\n } else if (to.y > from.y) {\n direction = this.dirs.down;\n } else {\n direction = this.dirs.up;\n }\n\n return direction;\n }\n };\n var path_builder = {\n path: [],\n clear: function clear() {\n this.path = [];\n },\n current: function current() {\n return this.path[this.path.length - 1];\n },\n point: function point(next) {\n if (!next) return this.current();\n this.path.push(gantt.copy(next));\n return next;\n },\n point_to: function point_to(direction, diff, point) {\n if (!point) point = gantt.copy(this.point());else point = {\n x: point.x,\n y: point.y\n };\n var dir = drawer.dirs;\n\n switch (direction) {\n case dir.left:\n point.x -= diff;\n break;\n\n case dir.right:\n point.x += diff;\n break;\n\n case dir.up:\n point.y -= diff;\n break;\n\n case dir.down:\n point.y += diff;\n break;\n\n default:\n break;\n }\n\n return this.point(point);\n },\n get_points: function get_points(link, view, source, target) {\n var pt = this.get_endpoint(link, view, source, target);\n var xy = gantt.config;\n var dy = pt.e_y - pt.y;\n var dx = pt.e_x - pt.x;\n var dir = drawer.dirs;\n var rowHeight = view.getItemHeight(link.source);\n this.clear();\n this.point({\n x: pt.x,\n y: pt.y\n });\n var shiftX = 2 * xy.link_arrow_size; //just random size for first line\n\n var lineType = this.get_line_type(link, view.$getConfig());\n var forward = pt.e_x > pt.x;\n\n if (lineType.from_start && lineType.to_start) {\n this.point_to(dir.left, shiftX);\n\n if (forward) {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n }\n\n this.point_to(dir.right, shiftX);\n } else if (!lineType.from_start && lineType.to_start) {\n forward = pt.e_x > pt.x + 2 * shiftX;\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n dx -= shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx -= 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.right, shiftX);\n }\n } else if (!lineType.from_start && !lineType.to_start) {\n this.point_to(dir.right, shiftX);\n\n if (forward) {\n this.point_to(dir.right, dx);\n this.point_to(dir.down, dy);\n } else {\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n }\n\n this.point_to(dir.left, shiftX);\n } else if (lineType.from_start && !lineType.to_start) {\n forward = pt.e_x > pt.x - 2 * shiftX;\n this.point_to(dir.left, shiftX);\n\n if (!forward) {\n dx += shiftX;\n this.point_to(dir.down, dy);\n this.point_to(dir.right, dx);\n } else {\n dx += 2 * shiftX;\n var sign = dy > 0 ? 1 : -1;\n this.point_to(dir.down, sign * (rowHeight / 2));\n this.point_to(dir.right, dx);\n this.point_to(dir.down, sign * (Math.abs(dy) - rowHeight / 2));\n this.point_to(dir.left, shiftX);\n }\n }\n\n return this.path;\n },\n get_line_type: function get_line_type(link, config) {\n var types = config.links;\n var from_start = false,\n to_start = false;\n\n if (link.type == types.start_to_start) {\n from_start = to_start = true;\n } else if (link.type == types.finish_to_finish) {\n from_start = to_start = false;\n } else if (link.type == types.finish_to_start) {\n from_start = false;\n to_start = true;\n } else if (link.type == types.start_to_finish) {\n from_start = true;\n to_start = false;\n } else {\n gantt.assert(false, \"Invalid link type\");\n }\n\n if (config.rtl) {\n from_start = !from_start;\n to_start = !to_start;\n }\n\n return {\n from_start: from_start,\n to_start: to_start\n };\n },\n get_endpoint: function get_endpoint(link, view, source, target) {\n var config = view.$getConfig();\n var lineType = this.get_line_type(link, config);\n var from_start = lineType.from_start,\n to_start = lineType.to_start;\n var from = getMilestonePosition(source, view, config),\n to = getMilestonePosition(target, view, config);\n return {\n x: from_start ? from.left : from.left + from.width,\n e_x: to_start ? to.left : to.left + to.width,\n y: from.top + from.rowHeight / 2 - 1,\n e_y: to.top + to.rowHeight / 2 - 1\n };\n }\n };\n\n function getMilestonePosition(task, view, config) {\n var pos = view.getItemPosition(task);\n\n if (gantt.getTaskType(task.type) == config.types.milestone) {\n var milestoneHeight = view.getBarHeight(task.id, true);\n var milestoneWidth = Math.sqrt(2 * milestoneHeight * milestoneHeight);\n pos.left -= milestoneWidth / 2;\n pos.width = milestoneWidth;\n }\n\n return pos;\n }\n\n return {\n render: _render_link_element,\n update: null,\n //getRectangle: getLinkRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange()\n };\n}\n\nmodule.exports = createLinkRender;","module.exports = function (items, gantt) {\n var placeholderConfig = gantt.config.timeline_placeholder;\n items = items || [];\n\n if (placeholderConfig && items.filter(function (e) {\n return e.id === 'timeline_placeholder_task';\n }).length === 0) {\n var state = gantt.getState();\n var lastTaskId = null;\n var start_date = state.min_date;\n var end_date = state.max_date;\n\n if (items.length) {\n lastTaskId = items[items.length - 1].id;\n }\n\n var placeholderTask = {\n start_date: start_date,\n end_date: end_date,\n row_height: placeholderConfig.height || 0,\n id: \"timeline_placeholder_task\",\n unscheduled: true,\n lastTaskId: lastTaskId,\n calendar_id: placeholderConfig.calendar || \"global\",\n $source: [],\n $target: []\n };\n items.push(placeholderTask);\n }\n};","var getRowRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar bgPlaceholder = require(\"./prerender/task_bg_placeholder\");\n\nfunction createTaskBgRender(gantt) {\n var renderedCells = {};\n var visibleCells = {};\n\n function isRendered(item, columnIndex) {\n if (renderedCells[item.id][columnIndex] && renderedCells[item.id][columnIndex].parentNode) {\n return true;\n } else {\n return false;\n }\n }\n\n function detachRenderedCell(itemId, columnIndex) {\n if (renderedCells[itemId] && renderedCells[itemId][columnIndex] && renderedCells[itemId][columnIndex].parentNode) {\n renderedCells[itemId][columnIndex].parentNode.removeChild(renderedCells[itemId][columnIndex]);\n }\n }\n\n function getCellClassTemplate(view) {\n var templates = view.$getTemplates();\n var cssTemplate;\n\n if (typeof templates.task_cell_class !== \"undefined\") {\n cssTemplate = templates.task_cell_class; // eslint-disable-next-line no-console\n\n var log = console.warn || console.log;\n log('gantt.templates.task_cell_class template is deprecated and will be removed soon. Please use gantt.templates.timeline_cell_class instead.');\n } else {\n cssTemplate = templates.timeline_cell_class;\n }\n\n return cssTemplate;\n }\n\n function getCellContentTemplate(view) {\n var templates = view.$getTemplates();\n var contentTemplate = templates.timeline_cell_content;\n return contentTemplate;\n }\n\n function renderCells(item, node, view, config, viewPort) {\n var cfg = view.getScale();\n var count = cfg.count;\n var cssTemplate = getCellClassTemplate(view);\n var contentTemplate = getCellContentTemplate(view);\n\n if (config.show_task_cells) {\n if (!renderedCells[item.id]) {\n renderedCells[item.id] = {};\n }\n\n if (!visibleCells[item.id]) {\n visibleCells[item.id] = {};\n }\n\n var range = getVisibleCellsRange(cfg, viewPort);\n\n for (var i in visibleCells[item.id]) {\n var index = visibleCells[item.id][i];\n\n if (Number(index) < range.start || Number(index) > range.end) {\n detachRenderedCell(item.id, index);\n }\n }\n\n visibleCells[item.id] = {}; // TODO: do not iterate all cell, only ones in the viewport and once that are already rendered\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cssTemplate, contentTemplate, config);\n\n if (!cell && isRendered(item, columnIndex)) {\n detachRenderedCell(item.id, columnIndex);\n } else if (cell && !cell.parentNode) {\n node.appendChild(cell);\n }\n }\n }\n }\n\n function renderOneCell(scale, columnIndex, item, viewPort, count, cssTemplate, contentTemplate, config) {\n var width = scale.width[columnIndex],\n cssclass = \"\";\n\n if (isColumnVisible(columnIndex, scale, viewPort, gantt)) {\n //do not render skipped columns\n var cssTemplateContent = cssTemplate(item, scale.trace_x[columnIndex]);\n var htmlTemplateContent = \"\";\n\n if (contentTemplate) {\n // for backward compatibility, contentTemplate was added in 7.2.0+, will be undefined if someone used copy of old config/template object\n htmlTemplateContent = contentTemplate(item, scale.trace_x[columnIndex]);\n }\n\n if (config.static_background) {\n // if cell render in static background is not allowed, or if it's a blank cell\n var customCell = !!(cssTemplateContent || htmlTemplateContent);\n\n if (!(config.static_background_cells && customCell)) {\n return null;\n }\n }\n\n if (renderedCells[item.id][columnIndex]) {\n visibleCells[item.id][columnIndex] = columnIndex;\n return renderedCells[item.id][columnIndex];\n }\n\n var cell = document.createElement(\"div\");\n cell.style.width = width + \"px\";\n cssclass = \"gantt_task_cell\" + (columnIndex == count - 1 ? \" gantt_last_cell\" : \"\");\n\n if (cssTemplateContent) {\n cssclass += \" \" + cssTemplateContent;\n }\n\n cell.className = cssclass;\n\n if (htmlTemplateContent) {\n cell.innerHTML = htmlTemplateContent;\n }\n\n cell.style.position = \"absolute\";\n cell.style.left = scale.left[columnIndex] + \"px\";\n renderedCells[item.id][columnIndex] = cell;\n visibleCells[item.id][columnIndex] = columnIndex;\n return cell;\n }\n\n return null;\n }\n\n function _render_bg_line(item, view, config, viewPort) {\n var templates = view.$getTemplates();\n var cfg = view.getScale();\n var count = cfg.count;\n\n if (config.static_background && !config.static_background_cells) {\n return null;\n }\n\n var row = document.createElement(\"div\");\n var cellCssTemplate = getCellClassTemplate(view);\n var cellHtmlTemplate = getCellContentTemplate(view);\n var range;\n\n if (!viewPort || !config.smart_rendering || isLegacyRender(gantt)) {\n range = {\n start: 0,\n end: count - 1\n };\n } else {\n range = getVisibleCellsRange(cfg, viewPort.x);\n }\n\n if (config.show_task_cells) {\n renderedCells[item.id] = {};\n visibleCells[item.id] = {};\n\n for (var columnIndex = range.start; columnIndex <= range.end; columnIndex++) {\n var cell = renderOneCell(cfg, columnIndex, item, viewPort, count, cellCssTemplate, cellHtmlTemplate, config);\n\n if (cell) {\n row.appendChild(cell);\n }\n }\n } // GS-291. The odd class should be assigned correctly\n\n\n var store = view.$config.rowStore;\n var odd = store.getIndexById(item.id) % 2 !== 0;\n var cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n var css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n\n if (store.isSelected(item.id)) {\n css += \" gantt_selected\";\n }\n\n row.className = css;\n\n if (config.smart_rendering) {\n row.style.position = \"absolute\";\n row.style.top = view.getItemTop(item.id) + \"px\";\n row.style.width = \"100%\";\n } else {\n row.style.position = \"relative\";\n }\n\n row.style.height = view.getItemHeight(item.id) + \"px\";\n\n if (item.id == \"timeline_placeholder_task\") {\n var placeholderTop = 0;\n\n if (item.lastTaskId) {\n var lastTaskTop = view.getItemTop(item.lastTaskId);\n var lastTaskHeight = view.getItemHeight(item.lastTaskId);\n placeholderTop = lastTaskTop + lastTaskHeight;\n }\n\n var maxHeight = item.row_height || view.$task_data.offsetHeight;\n var placeholderHeight = maxHeight - placeholderTop; // So that it won't exceed the placeholder timeline height\n\n if (placeholderHeight < 0) {\n placeholderHeight = 0;\n }\n\n if (config.smart_rendering) {\n row.style.top = placeholderTop + \"px\";\n }\n\n row.style.height = placeholderHeight + \"px\";\n }\n\n if (view.$config.item_attribute) {\n row.setAttribute(view.$config.item_attribute, item.id);\n row.setAttribute(view.$config.bind + \"_id\", item.id); // 'task_id'/'resource_id' for backward compatibility\n }\n\n return row;\n }\n\n return {\n render: _render_bg_line,\n update: renderCells,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange,\n prepareData: bgPlaceholder\n };\n}\n\nmodule.exports = createTaskBgRender;","var createBaseBarRender = require(\"./task_bar_render\");\n\nvar isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n var renderedNodes = {};\n\n function checkVisibility(child, viewPort, timeline, config, gantt) {\n var isVisible = true; // GS-2123. Don't render rollup tasks that are outside the viewport\n\n if (config.smart_rendering) {\n isVisible = isInViewPort(child, viewPort, timeline, config, gantt);\n }\n\n return isVisible;\n }\n\n function generateChildElement(task, child, timeline, sizes) {\n var childCopy = gantt.copy(gantt.getTask(child.id));\n childCopy.$rendered_at = task.id; // a way to filter rollup tasks:\n\n var displayRollup = gantt.callEvent(\"onBeforeRollupTaskDisplay\", [childCopy.id, childCopy, task.id]);\n\n if (displayRollup === false) {\n return;\n }\n\n var element = defaultRender(childCopy, timeline);\n\n if (!element) {\n return;\n }\n\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_rollup_child\");\n element.setAttribute(\"data-rollup-parent-id\", task.id);\n return element;\n }\n\n function getKey(childId, renderParentId) {\n return childId + \"_\" + renderParentId;\n }\n\n function renderRollupTask(task, timeline, config, viewPort) {\n if (task.rollup !== false && task.$rollup && task.$rollup.length) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered\n\n viewPort.y = 0;\n viewPort.y_end = gantt.$task_bg.scrollHeight;\n task.$rollup.forEach(function (itemId) {\n if (!gantt.isTaskExists(itemId)) {\n return;\n }\n\n var child = gantt.getTask(itemId);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n var element = generateChildElement(task, child, timeline, sizes);\n\n if (element) {\n renderedNodes[getKey(child.id, task.id)] = element;\n el.appendChild(element);\n } else {\n renderedNodes[getKey(child.id, task.id)] = false;\n }\n });\n return el;\n }\n\n return false;\n }\n\n function repaintRollupTask(task, itemNode, timeline, config, viewPort) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task); // vertical position is not important for the rollup tasks as long as the parent is rendered\n\n viewPort.y = 0;\n viewPort.y_end = gantt.$task_bg.scrollHeight;\n task.$rollup.forEach(function (itemId) {\n var child = gantt.getTask(itemId);\n var rollupKey = getKey(child.id, task.id);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[rollupKey]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[rollupKey] = element || false;\n } else {\n renderedNodes[rollupKey] = false;\n }\n }\n\n if (!!renderedNodes[rollupKey]) {\n el.appendChild(renderedNodes[rollupKey]);\n }\n\n itemNode.innerHTML = \"\";\n itemNode.appendChild(el);\n });\n }\n\n return {\n render: renderRollupTask,\n update: repaintRollupTask,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isBarInViewport = require(\"./is_bar_in_viewport\");\n\nmodule.exports = function isSplitTaskInViewport(item, viewport, view, config, gantt) {\n if (!gantt.isSplitTask(item)) {\n return false;\n }\n\n var range = gantt.getSubtaskDates(item.id);\n return isBarInViewport({\n id: item.id,\n start_date: range.start_date,\n end_date: range.end_date,\n parent: item.parent\n }, viewport, view, gantt);\n};","var createBaseBarRender = require(\"./task_bar_render\"); //const isInViewPort = require(\"./viewport/is_split_task_in_viewport\");\n\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar isInViewPortParent = require(\"./viewport/is_split_task_in_viewport\");\n\nvar isInViewPortChild = require(\"./viewport/is_bar_in_viewport\");\n\nfunction createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n var renderedNodes = {};\n\n function checkVisibility(child, viewPort, timeline, config, gantt) {\n var isVisible = !child.hide_bar; // GS-1195. Don't render split tasks that are outside the viewport\n\n if (config.smart_rendering && isVisible) {\n isVisible = isInViewPortChild(child, viewPort, timeline, config, gantt);\n }\n\n return isVisible;\n }\n\n function generateChildElement(task, child, timeline, sizes) {\n if (child.hide_bar) {\n return;\n }\n\n var isProject = gantt.isSummaryTask(child);\n\n if (isProject) {\n gantt.resetProjectDates(child);\n }\n\n var childCopy = gantt.copy(gantt.getTask(child.id));\n childCopy.$rendered_at = task.id; // a way to filter split tasks:\n\n var showSplitTask = gantt.callEvent(\"onBeforeSplitTaskDisplay\", [childCopy.id, childCopy, task.id]);\n\n if (showSplitTask === false) {\n return;\n }\n\n var element = defaultRender(childCopy, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_split_child\");\n\n if (isProject) {\n element.classList.add(\"gantt_split_subproject\");\n }\n\n return element;\n }\n\n function getKey(childId, renderParentId) {\n return childId + \"_\" + renderParentId;\n }\n\n function shouldUseSplitRendering(task, config) {\n return gantt.isSplitTask(task) && (config.open_split_tasks && !task.$open || !config.open_split_tasks) && gantt.hasChild(task.id);\n }\n\n function renderSplitTask(task, timeline, config, viewPort) {\n if (shouldUseSplitRendering(task, config)) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n\n if (gantt.hasChild(task.id)) {\n gantt.eachTask(function (child) {\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n var element = generateChildElement(task, child, timeline, sizes);\n\n if (element) {\n renderedNodes[getKey(child.id, task.id)] = element;\n el.appendChild(element);\n } else {\n renderedNodes[getKey(child.id, task.id)] = false;\n }\n }, task.id);\n }\n\n return el;\n }\n\n return false;\n }\n\n function repaintSplitTask(task, itemNode, timeline, config, viewPort) {\n if (shouldUseSplitRendering(task, config)) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task);\n gantt.eachTask(function (child) {\n var splitKey = getKey(child.id, task.id);\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[splitKey]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[splitKey] = element || false;\n } else {\n renderedNodes[splitKey] = false;\n }\n }\n\n if (!!renderedNodes[splitKey]) {\n el.appendChild(renderedNodes[splitKey]);\n }\n\n itemNode.innerHTML = \"\";\n itemNode.appendChild(el);\n }, task.id);\n }\n }\n\n return {\n render: renderSplitTask,\n update: repaintSplitTask,\n isInViewPort: isInViewPortParent,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isInViewPort = require(\"./viewport/is_bar_in_viewport\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar createBaseBarRender = require(\"./task_bar_render\");\n\nmodule.exports = function createTaskRenderer(gantt) {\n var defaultRender = createBaseBarRender(gantt);\n return {\n render: defaultRender,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n};","module.exports = function (gantt) {\n return function processTaskDateProperties(item, mapTo, mode) {\n if (mode == \"keepDates\") {\n keepDatesOnEdit(item, mapTo);\n } else if (mode == \"keepDuration\") {\n keepDurationOnEdit(item, mapTo);\n } else {\n defaultActionOnEdit(item, mapTo);\n }\n }; // resize task\n // resize task when start/end/duration changes\n\n function keepDatesOnEdit(item, mapTo) {\n if (mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\" || mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } // move task(before 6.2)\n // move task when start/end dates changes\n // resize task when duration changes\n\n\n function keepDurationOnEdit(item, mapTo) {\n if (mapTo == \"end_date\") {\n item.start_date = decreaseStartDate(item);\n } else if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n }\n } // default behavior\n // move task when start date changes\n // resize task when end date/duration changes\n\n\n function defaultActionOnEdit(item, mapTo) {\n if (gantt.config.schedule_from_end) {\n if (mapTo == \"end_date\" || mapTo == \"duration\") {\n item.start_date = decreaseStartDate(item);\n } else if (mapTo == \"start_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n } else {\n if (mapTo == \"start_date\" || mapTo == \"duration\") {\n item.end_date = gantt.calculateEndDate(item);\n } else if (mapTo == \"end_date\") {\n item.duration = gantt.calculateDuration(item);\n }\n }\n }\n\n function decreaseStartDate(item) {\n return gantt.calculateEndDate({\n start_date: item.end_date,\n duration: -item.duration,\n task: item\n });\n }\n};","module.exports = function (gantt) {\n var BaseEditor = require(\"./base\")(gantt),\n utils = require(\"../../../../../utils/utils\");\n\n var __extends = require(\"../../../../../utils/extends\");\n\n function TextEditor() {\n var self = BaseEditor.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TextEditor, BaseEditor);\n\n function getFormatter(config) {\n return config.formatter || gantt.ext.formatters.durationFormatter();\n }\n\n utils.mixin(TextEditor.prototype, {\n show: function show(id, column, config, placeholder) {\n var html = \"
\");\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 = \"
\");\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 = \"
\");\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 = \"
\";\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 = \"
\");\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 = \"
\");\n placeholder.innerHTML = html;\n }\n }, true);\n return TextEditor;\n};","module.exports = {\n init: function init(controller, grid) {\n var self = controller;\n var gantt = grid.$gantt;\n var onBlurDelay = null;\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onBeforeFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n clearTimeout(onBlurDelay);\n\n if (activeCell) {\n var columnName = activeCell.columnName;\n var id = activeCell.id;\n var editorState = self.getState();\n\n if (self.isVisible()) {\n if (editorState.id == id && editorState.columnName === columnName) {\n return false;\n }\n }\n }\n\n return true;\n });\n keyNav.attachEvent(\"onFocus\", function (node) {\n var activeCell = controller.locateCell(node);\n var state = controller.getState();\n clearTimeout(onBlurDelay);\n\n if (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n if (self.isVisible()) {\n self.save();\n }\n }\n\n return true;\n });\n controller.attachEvent(\"onHide\", function () {\n clearTimeout(onBlurDelay);\n });\n keyNav.attachEvent(\"onBlur\", function () {\n onBlurDelay = setTimeout(function () {\n self.save();\n });\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n // block lightbox on double click inside editor\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n self.save();\n return true;\n });\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var activeCell = controller.locateCell(e.target);\n var hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n var state = controller.getState();\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.ENTER:\n if (controller.isVisible()) {\n controller.save();\n e.preventDefault();\n preventKeyNav = true;\n } else if (hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.ESC:\n if (controller.isVisible()) {\n controller.hide();\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n break;\n\n case keyboard.LEFT:\n case keyboard.RIGHT:\n if (hasEditor && controller.isVisible() || state.editorType === \"date\") {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.DELETE:\n if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n } else if (hasEditor && controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n\n case keyboard.TAB:\n if (controller.isVisible()) {\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n var newState = controller.getState();\n\n if (newState.id) {\n keyNav.focus({\n type: \"taskCell\",\n id: newState.id,\n column: newState.columnName\n });\n }\n\n e.preventDefault();\n preventKeyNav = true;\n }\n\n break;\n\n default:\n if (controller.isVisible()) preventKeyNav = true;else {\n // start editing on character key\n if (keyCode >= 48 && keyCode <= 57 || // [0-9]\n keyCode > 95 && keyCode < 112 || // numpad\n keyCode >= 64 && keyCode <= 91 || // [a-z]\n keyCode > 185 && keyCode < 193 || //;=-,etc\n keyCode > 218 && keyCode < 223) {\n var modifiers = command.modifiers;\n var anyModifier = modifiers.alt || modifiers.ctrl || modifiers.meta || modifiers.shift;\n\n if (modifiers.alt) {// don't start editing on alt+key\n } else if (anyModifier && keyNav.getCommandHandler(command, \"taskCell\")) {// don't start editing if command already have a keyboard shortcut\n } else if (hasEditor && !controller.isVisible()) {\n self.startEdit(activeCell.id, activeCell.columnName);\n preventKeyNav = true;\n }\n }\n }\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n },\n onShow: function onShow(controller, placeholder, grid) {},\n onHide: function onHide(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n gantt.focus();\n },\n destroy: function destroy() {}\n};","module.exports = {\n init: function init(controller, grid) {\n var gantt = grid.$gantt;\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._is_icon_open_click(e)) return true;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n\n return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onEmptyClick\", function () {\n if (controller.isVisible() && controller.isChanged()) {\n controller.save();\n } else {\n controller.hide();\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskDblClick\", function (id, e) {\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (cell && controller.isVisible() && cell.columnName == state.columnName) {\n //GS-933 probably, we don't need to hide the inline editor because the lightbox cannot be opened if you double-click on an inline editor\n //remove this code later if people don't complain\n //controller.hide();\n return false;\n }\n\n return true;\n });\n },\n onShow: function onShow(controller, placeholder, grid) {\n var gantt = grid.$gantt;\n\n if (gantt.ext && gantt.ext.keyboardNavigation) {\n var keyNav = gantt.ext.keyboardNavigation;\n keyNav.attachEvent(\"onKeyDown\", function (command, e) {\n var keyboard = gantt.constants.KEY_CODES;\n var keyCode = e.keyCode;\n var preventKeyNav = false;\n\n switch (keyCode) {\n case keyboard.SPACE:\n if (controller.isVisible()) {\n preventKeyNav = true;\n }\n\n break;\n }\n\n if (preventKeyNav) {\n return false;\n } else {\n return true;\n }\n });\n }\n\n placeholder.onkeydown = function (e) {\n e = e || window.event;\n var keyboard = gantt.constants.KEY_CODES;\n\n if (e.defaultPrevented || e.shiftKey && e.keyCode != keyboard.TAB) {\n return;\n }\n\n var shouldPrevent = true;\n\n switch (e.keyCode) {\n case gantt.keys.edit_save:\n controller.save();\n break;\n\n case gantt.keys.edit_cancel:\n controller.hide();\n break;\n\n case keyboard.UP:\n case keyboard.DOWN:\n if (controller.isVisible()) {\n controller.hide();\n shouldPrevent = false;\n }\n\n break;\n\n case keyboard.TAB:\n if (e.shiftKey) {\n controller.editPrevCell(true);\n } else {\n controller.editNextCell(true);\n }\n\n break;\n\n default:\n shouldPrevent = false;\n break;\n }\n\n if (shouldPrevent) {\n e.preventDefault();\n }\n };\n },\n onHide: function onHide() {},\n destroy: function destroy() {}\n};","var defaultMapping = require(\"./keyboard_mappings/default\");\n\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function (gantt) {\n var mapping = null;\n return {\n setMapping: function setMapping(map) {\n mapping = map;\n },\n getMapping: function getMapping() {\n if (mapping) {\n return mapping;\n } else if (gantt.config.keyboard_navigation_cells && gantt.ext.keyboardNavigation) {\n return keyNavMappings;\n } else {\n return defaultMapping;\n }\n }\n };\n};","var getKeyboardMapping = require(\"./keyboard_mappings\");\n\nvar textEditorFactory = require(\"./editors/text\"),\n numberEditorFactory = require(\"./editors/number\"),\n selectEditorFactory = require(\"./editors/select\"),\n dateEditorFactory = require(\"./editors/date\"),\n predecessorEditorFactory = require(\"./editors/predecessor\"),\n durationEditorFactory = require(\"./editors/duration\");\n\nvar utils = require(\"../../../../utils/utils\");\n\nvar domHelpers = require(\"../../utils/dom_helpers\");\n\nvar eventable = require(\"../../../../utils/eventable\");\n\nvar linkedPropertiesProcessor = require(\"./linked_properties\");\n\nfunction initConfigs(gantt) {\n gantt.config.editor_types = {\n text: new (textEditorFactory(gantt))(),\n number: new (numberEditorFactory(gantt))(),\n select: new (selectEditorFactory(gantt))(),\n date: new (dateEditorFactory(gantt))(),\n predecessor: new (predecessorEditorFactory(gantt))(),\n duration: new (durationEditorFactory(gantt))()\n };\n}\n\nfunction create(gantt) {\n var keyboardMapping = getKeyboardMapping(gantt);\n var eventBus = {};\n eventable(eventBus);\n\n function createGridEditors(grid) {\n function _getGridCellFromNode(node) {\n if (!domHelpers.isChildOf(node, grid.$grid)) {\n return null;\n }\n\n var row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n var cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\n if (row && cell) {\n var columnName = cell.getAttribute(\"data-column-name\");\n var id = row.getAttribute(grid.$config.item_attribute);\n return {\n id: id,\n columnName: columnName\n };\n }\n\n return null;\n }\n\n function _getEditorPosition(itemId, columnName) {\n var config = grid.$getConfig();\n var top = grid.getItemTop(itemId);\n var height = grid.getItemHeight(itemId);\n var cols = grid.getGridColumns();\n var left = 0,\n right = 0,\n width = 0;\n\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].name == columnName) {\n width = cols[i].width;\n break;\n }\n\n if (config.rtl) {\n right += cols[i].width;\n } else {\n left += cols[i].width;\n }\n }\n\n if (config.rtl) {\n return {\n top: top,\n right: right,\n height: height,\n width: width\n };\n } else {\n return {\n top: top,\n left: left,\n height: height,\n width: width\n };\n }\n }\n\n function findVisibleIndex(grid, columnName) {\n var columns = grid.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n function _createPlaceholder(itemId, columnName) {\n var config = grid.$getConfig();\n\n var pos = _getEditorPosition(itemId, columnName);\n\n var el = document.createElement(\"div\");\n el.className = \"gantt_grid_editor_placeholder\";\n el.setAttribute(grid.$config.item_attribute, itemId);\n el.setAttribute(grid.$config.bind + \"_id\", itemId); // for backward compatibility\n\n el.setAttribute(\"data-column-name\", columnName);\n var visibleIndex = findVisibleIndex(grid, columnName);\n el.setAttribute(\"data-column-index\", visibleIndex);\n\n gantt._waiAria.inlineEditorAttr(el);\n\n if (config.rtl) {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"right:\" + pos.right + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n } else {\n el.style.cssText = [\"top:\" + pos.top + \"px\", \"left:\" + pos.left + \"px\", \"width:\" + pos.width + \"px\", \"height:\" + pos.height + \"px\"].join(\";\");\n }\n\n return el;\n }\n\n var updateTaskDateProperties = linkedPropertiesProcessor(gantt);\n var handlers = [];\n var ganttHandlers = [];\n var store = null;\n var controller = {\n _itemId: null,\n _columnName: null,\n _editor: null,\n _editorType: null,\n _placeholder: null,\n locateCell: _getGridCellFromNode,\n getEditorConfig: function getEditorConfig(columnName) {\n var column = grid.getColumn(columnName);\n return column.editor;\n },\n init: function init() {\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.init) {\n mapping.init(this, grid);\n }\n\n store = grid.$gantt.getDatastore(grid.$config.bind);\n var self = this;\n handlers.push(store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (self._itemId == oldId) {\n self._itemId = newId;\n }\n }));\n handlers.push(store.attachEvent(\"onStoreUpdated\", function () {\n if (grid.$gantt.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (self.isVisible() && !store.isVisible(self._itemId)) {\n self.hide();\n }\n }));\n ganttHandlers.push(gantt.attachEvent(\"onDataRender\", function () {\n if (self._editor && self._placeholder && !domHelpers.isChildOf(self._placeholder, gantt.$root)) {\n grid.$grid_data.appendChild(self._placeholder);\n }\n }));\n\n this.init = function () {};\n },\n getState: function getState() {\n return {\n editor: this._editor,\n editorType: this._editorType,\n placeholder: this._placeholder,\n id: this._itemId,\n columnName: this._columnName\n };\n },\n startEdit: function startEdit(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n\n if (gantt.isReadonly(store.getItem(itemId))) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n if (this.callEvent(\"onBeforeEditStart\", [editorState]) === false) {\n this.callEvent(\"onEditPrevent\", [editorState]);\n return;\n }\n\n this.show(editorState.id, editorState.columnName);\n this.setValue();\n this.callEvent(\"onEditStart\", [editorState]);\n },\n isVisible: function isVisible() {\n return !!(this._editor && domHelpers.isChildOf(this._placeholder, gantt.$root));\n },\n show: function show(itemId, columnName) {\n if (this.isVisible()) {\n this.save();\n }\n\n var editorState = {\n id: itemId,\n columnName: columnName\n };\n var column = grid.getColumn(editorState.columnName);\n var editorConfig = this.getEditorConfig(column.name);\n if (!editorConfig) return;\n var editor = grid.$getConfig().editor_types[editorConfig.type];\n\n var placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\n grid.$grid_data.appendChild(placeholder);\n editor.show(editorState.id, column, editorConfig, placeholder);\n this._editor = editor;\n this._placeholder = placeholder;\n this._itemId = editorState.id;\n this._columnName = editorState.columnName;\n this._editorType = editorConfig.type;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onShow) {\n mapping.onShow(this, placeholder, grid);\n }\n },\n setValue: function setValue() {\n var state = this.getState();\n var itemId = state.id,\n columnName = state.columnName;\n var column = grid.getColumn(columnName);\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n if (!editorConfig) return;\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(itemId);\n }\n\n this._editor.set_value(value, itemId, column, this._placeholder);\n\n this.focus();\n },\n focus: function focus() {\n this._editor.focus(this._placeholder);\n },\n getValue: function getValue() {\n var column = grid.getColumn(this._columnName);\n return this._editor.get_value(this._itemId, column, this._placeholder);\n },\n _getItemValue: function _getItemValue() {\n var editorConfig = this.getEditorConfig(this._columnName);\n if (!editorConfig) return;\n var item = gantt.getTask(this._itemId);\n var value = item[editorConfig.map_to];\n\n if (editorConfig.map_to == \"auto\") {\n value = store.getItem(this._itemId);\n }\n\n return value;\n },\n isChanged: function isChanged() {\n var column = grid.getColumn(this._columnName);\n\n var value = this._getItemValue();\n\n return this._editor.is_changed(value, this._itemId, column, this._placeholder);\n },\n hide: function hide() {\n if (!this._itemId) return;\n var itemId = this._itemId,\n columnName = this._columnName;\n var mapping = keyboardMapping.getMapping();\n\n if (mapping.onHide) {\n mapping.onHide(this, this._placeholder, grid);\n }\n\n this._itemId = null;\n this._columnName = null;\n this._editorType = null;\n if (!this._placeholder) return;\n\n if (this._editor && this._editor.hide) {\n this._editor.hide(this._placeholder);\n }\n\n this._editor = null;\n\n if (this._placeholder.parentNode) {\n this._placeholder.parentNode.removeChild(this._placeholder);\n }\n\n this._placeholder = null;\n this.callEvent(\"onEditEnd\", [{\n id: itemId,\n columnName: columnName\n }]);\n },\n save: function save() {\n if (!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n this.hide();\n return;\n }\n\n var itemId = this._itemId,\n columnName = this._columnName;\n\n if (!store.exists(itemId)) {\n return;\n }\n\n var item = store.getItem(itemId);\n var editorConfig = this.getEditorConfig(columnName);\n var editorState = {\n id: itemId,\n columnName: columnName,\n newValue: this.getValue(),\n oldValue: this._getItemValue()\n };\n\n if (this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n if (!this._editor.is_valid || this._editor.is_valid(editorState.newValue, editorState.id, grid.getColumn(columnName), this._placeholder)) {\n var mapTo = editorConfig.map_to;\n var value = editorState.newValue;\n\n if (mapTo != \"auto\") {\n item[mapTo] = value;\n updateTaskDateProperties(item, mapTo, gantt.config.inline_editors_date_processing);\n store.updateItem(itemId);\n } else {\n this._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n }\n\n this.callEvent(\"onSave\", [editorState]);\n }\n }\n\n this.hide();\n },\n _findEditableCell: function findEditableCell(start, direction) {\n var nextIndex = start;\n var columns = grid.getGridColumns();\n var nextColumn = columns[nextIndex];\n var columnName = nextColumn ? nextColumn.name : null;\n\n if (columnName) {\n while (columnName && !this.getEditorConfig(columnName)) {\n columnName = this._findEditableCell(start + direction, direction);\n }\n\n return columnName;\n }\n\n return null;\n },\n getNextCell: function moveCell(dir) {\n // GS-1257. true means to exclude hidden columns\n return this._findEditableCell(grid.getColumnIndex(this._columnName, true) + dir, dir);\n },\n getFirstCell: function getFirstCell() {\n return this._findEditableCell(0, 1);\n },\n getLastCell: function getLastCell() {\n return this._findEditableCell(grid.getGridColumns().length - 1, -1);\n },\n editNextCell: function nextCell(canChangeRow) {\n var cell = this.getNextCell(1);\n\n if (cell) {\n var nextColumn = this.getNextCell(1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(1)) {\n var task = this.moveRow(1);\n cell = this.getFirstCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n editPrevCell: function prevCell(canChangeRow) {\n var cell = this.getNextCell(-1);\n\n if (cell) {\n var nextColumn = this.getNextCell(-1);\n\n if (nextColumn && this.getEditorConfig(nextColumn)) {\n this.startEdit(this._itemId, nextColumn);\n }\n } else if (canChangeRow && this.moveRow(-1)) {\n var task = this.moveRow(-1);\n cell = this.getLastCell();\n\n if (cell && this.getEditorConfig(cell)) {\n this.startEdit(task, cell);\n }\n }\n },\n moveRow: function moveRow(dir) {\n var moveTask = dir > 0 ? gantt.getNext : gantt.getPrev;\n moveTask = gantt.bind(moveTask, gantt);\n var nextItem = moveTask(this._itemId); // skip readonly rows\n\n while (gantt.isTaskExists(nextItem) && gantt.isReadonly(gantt.getTask(nextItem))) {\n nextItem = moveTask(nextItem);\n }\n\n return nextItem;\n },\n editNextRow: function nextRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var next = null;\n\n if (skipReadonly) {\n next = this.moveRow(1);\n } else {\n next = gantt.getNext(id);\n }\n\n if (gantt.isTaskExists(next)) {\n this.startEdit(next, this._columnName);\n }\n },\n editPrevRow: function prevRow(skipReadonly) {\n var id = this.getState().id;\n if (!gantt.isTaskExists(id)) return;\n var prev = null;\n\n if (skipReadonly) {\n prev = this.moveRow(-1);\n } else {\n prev = gantt.getPrev(id);\n }\n\n if (gantt.isTaskExists(prev)) {\n this.startEdit(prev, this._columnName);\n }\n },\n destructor: function destructor() {\n handlers.forEach(function (handlerId) {\n store.detachEvent(handlerId);\n });\n ganttHandlers.forEach(function (handlerId) {\n gantt.detachEvent(handlerId);\n });\n handlers = [];\n ganttHandlers = [];\n store = null;\n this.hide();\n this.detachAllEvents();\n }\n };\n utils.mixin(controller, keyboardMapping);\n utils.mixin(controller, eventBus);\n return controller;\n }\n\n var inlineEditController = {\n init: initConfigs,\n createEditors: createGridEditors\n };\n utils.mixin(inlineEditController, keyboardMapping);\n utils.mixin(inlineEditController, eventBus);\n return inlineEditController;\n}\n\nmodule.exports = create;","var utils = require(\"../../../utils/utils\");\n\nvar ResourceTimeline = require(\"./resource_timeline\");\n\nvar resourceStoreMixin = require(\"../resource_store_mixin\");\n\nvar __extends = require(\"../../../utils/extends\");\n\nvar ResourceHistogram = function (_super) {\n function ResourceHistogram(parent, config, factory, gantt) {\n var self = _super.apply(this, arguments) || this;\n self.$config.bindLinks = null;\n return self;\n }\n\n __extends(ResourceHistogram, _super);\n\n utils.mixin(ResourceHistogram.prototype, {\n _createLayerConfig: function _createLayerConfig() {\n var self = this;\n\n var taskFilter = function taskFilter() {\n return self.isVisible();\n };\n\n var taskLayers = [{\n renderer: this.$gantt.$ui.layers.resourceHistogram(),\n container: this.$task_bars,\n filter: [taskFilter]\n }, {\n renderer: this.$gantt.$ui.layers.taskBg(),\n container: this.$task_bg,\n filter: [taskFilter]\n }];\n var linkLayers = [];\n return {\n tasks: taskLayers,\n links: linkLayers\n };\n }\n }, true);\n utils.mixin(ResourceHistogram.prototype, resourceStoreMixin(_super), true);\n return ResourceHistogram;\n}(ResourceTimeline);\n\nmodule.exports = ResourceHistogram;","var domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n resourceStoreMixin = require(\"../resource_store_mixin\"),\n Grid = require(\"./grid\");\n\nvar __extends = require(\"../../../utils/extends\");\n\nvar ResourceGrid = function (_super) {\n function ResourceGrid(parent, config, factory, gantt) {\n return _super.apply(this, arguments) || this;\n }\n\n __extends(ResourceGrid, _super);\n\n utils.mixin(ResourceGrid.prototype, {\n init: function init() {\n if (this.$config.bind === undefined) {\n this.$config.bind = this.$getConfig().resource_store;\n }\n\n _super.prototype.init.apply(this, arguments);\n },\n _initEvents: function _initEvents() {\n var gantt = this.$gantt;\n\n _super.prototype._initEvents.apply(this, arguments);\n\n this._mouseDelegates.delegate(\"click\", \"gantt_row\", 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.select(target.getAttribute(this.$config.item_attribute));\n }\n\n return false;\n }, this), this.$grid);\n }\n }, true);\n utils.mixin(ResourceGrid.prototype, resourceStoreMixin(ResourceGrid), true);\n return ResourceGrid;\n}(Grid);\n\nmodule.exports = ResourceGrid;","var utils = require(\"../../../utils/utils\"),\n env = require(\"../../../utils/env\");\n\nvar createStaticBgHelper = function createStaticBgHelper(utils, env) {\n var canvasBgCache = {};\n var staticBgStyleId = \"gantt-static-bg-styles-\" + utils.uid();\n\n function renderBgCanvas(targetNode, config, scale, totalHeight, itemHeight) {\n if (!config.static_background && !config.timeline_placeholder) return;\n var canvas = document.createElement(\"canvas\");\n if (!canvas.getContext) return; // if canvas is not supported (for IE8)\n // clear previous bg data\n\n targetNode.innerHTML = \"\";\n var styleParams = getCellStyles(targetNode);\n var png = createBackgroundTiles(styleParams, config, scale, itemHeight);\n var bgDivs = createBgDivs(png, config, scale, totalHeight);\n var fragment = document.createDocumentFragment();\n bgDivs.forEach(function (div) {\n fragment.appendChild(div);\n });\n targetNode.appendChild(fragment);\n }\n\n function getColumnWidths(scale) {\n var widths = scale.width;\n var differentWidths = {};\n\n for (var i = 0; i < widths.length; i++) {\n if (widths[i] * 1) differentWidths[widths[i]] = true;\n }\n\n return differentWidths;\n }\n\n function parseRgb(rgbCss) {\n var result = /^rgba?\\(([\\d]{1,3}), *([\\d]{1,3}), *([\\d]{1,3}) *(,( *[\\d.]+ *))?\\)$/i.exec(rgbCss);\n return result ? {\n r: result[1] * 1,\n g: result[2] * 1,\n b: result[3] * 1,\n a: result[5] * 255 || 255\n } : null;\n }\n\n function getUrlFromCache(key) {\n return canvasBgCache[key] || null;\n }\n\n function getHashKey(width, height, cellStyles) {\n return (width + '' + height + cellStyles.bottomBorderColor + cellStyles.rightBorderColor).replace(/[^\\w\\d]/g, '');\n }\n\n function getStyleElement() {\n var style = document.getElementById(staticBgStyleId);\n\n if (!style) {\n style = document.createElement(\"style\");\n style.id = staticBgStyleId;\n document.body.appendChild(style);\n }\n\n return style;\n }\n\n function cleanup() {\n var style = document.getElementById(staticBgStyleId);\n\n if (style && style.parentNode) {\n style.parentNode.removeChild(style);\n }\n }\n\n function cacheUrl(key, url) {\n canvasBgCache[key] = url;\n }\n\n function generateBgUrl(width, height, cellStyles) {\n // use relatively big bg image about 500*500px in order to reduce misalignments due browser zoom\n var cols = Math.floor(500 / width) || 1;\n var rows = Math.floor(500 / height) || 1;\n var canvas = document.createElement(\"canvas\");\n canvas.height = height * rows;\n canvas.width = width * cols;\n var context = canvas.getContext(\"2d\");\n drawGrid(height, width, rows, cols, context, cellStyles);\n return canvas.toDataURL();\n\n function drawGrid(rowHeight, colWidth, rows, cols, context, styles) {\n // paint pixels manually instead of using lineTo in order to prevent canvas aliasing\n var image = context.createImageData(colWidth * cols, rowHeight * rows);\n image.imageSmoothingEnabled = false;\n var verticalLineWidth = styles.rightBorderWidth * 1;\n var verticalLineColor = parseRgb(styles.rightBorderColor);\n var x = 0,\n y = 0,\n w = 0;\n\n for (var col = 1; col <= cols; col++) {\n x = col * colWidth - 1;\n\n for (w = 0; w < verticalLineWidth; w++) {\n for (y = 0; y < rowHeight * rows; y++) {\n drawDot(x - w, y, verticalLineColor, image);\n }\n }\n }\n\n var horizontalLineWidth = styles.bottomBorderWidth * 1;\n var horizontalLineColor = parseRgb(styles.bottomBorderColor);\n y = 0;\n\n for (var row = 1; row <= rows; row++) {\n y = row * rowHeight - 1;\n\n for (w = 0; w < horizontalLineWidth; w++) {\n for (x = 0; x < colWidth * cols; x++) {\n drawDot(x, y - w, horizontalLineColor, image);\n }\n }\n }\n\n context.putImageData(image, 0, 0);\n }\n\n function drawDot(x, y, color, matrix) {\n var rowLength = width * cols;\n var index = (y * rowLength + x) * 4;\n matrix.data[index] = color.r;\n matrix.data[index + 1] = color.g;\n matrix.data[index + 2] = color.b;\n matrix.data[index + 3] = color.a;\n }\n }\n\n function getCssClass(key) {\n return \"gantt-static-bg-\" + key;\n }\n\n function createBackgroundTiles(cellStyles, config, scale, itemHeight) {\n var data = {};\n var widths = getColumnWidths(scale),\n height = itemHeight;\n var styleHTML = \"\";\n\n for (var i in widths) {\n var width = i * 1;\n var key = getHashKey(width, height, cellStyles);\n var cachedUrl = getUrlFromCache(key);\n\n if (!cachedUrl) {\n var bgImage = generateBgUrl(width, height, cellStyles);\n cacheUrl(key, bgImage);\n styleHTML += \".\" + getCssClass(key) + \"{ background-image: url('\" + bgImage + \"');}\";\n }\n\n data[i] = getCssClass(key);\n }\n\n if (styleHTML) {\n var style = getStyleElement();\n style.innerHTML += styleHTML;\n }\n\n return data;\n }\n\n function createBgDivs(bgTiles, config, scale, dataHeight) {\n var divs = [];\n var tile,\n prevWidth = 0,\n prevCell;\n var widths = scale.width.filter(function (i) {\n return !!i;\n });\n var leftPos = 0; //TODO: fixme\n // bg image misalignments on horizontal scroll on very large time scales, especially in IE/Edge browsers\n // limiting max tile width seems to solve the issue, but can increase rendering time\n\n var maxTileSize = 100000;\n\n if (env.isIE) {\n // special case for IE11 on win7x and probably 8x\n var appVersion = navigator.appVersion || \"\";\n\n if (appVersion.indexOf(\"Windows NT 6.2\") != -1 || appVersion.indexOf(\"Windows NT 6.1\") != -1 || appVersion.indexOf(\"Windows NT 6.0\") != -1) {\n maxTileSize = 20000;\n }\n }\n\n for (var i = 0; i < widths.length; i++) {\n //var currentWidth = cells[i].clientWidth;\n var cell = widths[i];\n\n if (cell != prevCell && prevCell !== undefined || i == widths.length - 1 || prevWidth > maxTileSize) {\n var totalHeight = dataHeight,\n currentTop = 0,\n rowHeight = Math.floor(maxTileSize / config.row_height) * config.row_height;\n var tileWidth = prevWidth;\n\n while (totalHeight > 0) {\n var currentHeight = Math.min(totalHeight, rowHeight);\n totalHeight -= rowHeight;\n tile = document.createElement(\"div\");\n tile.style.height = currentHeight + \"px\";\n tile.style.position = \"absolute\";\n tile.style.top = currentTop + \"px\";\n tile.style.left = leftPos + \"px\";\n tile.style.pointerEvents = \"none\";\n tile.style.whiteSpace = \"no-wrap\";\n tile.className = bgTiles[prevCell || cell]; // if last - short by 1 px (bug fix)\n\n if (i == widths.length - 1) {\n tileWidth = cell + tileWidth - 1;\n }\n\n tile.style.width = tileWidth + \"px\";\n divs.push(tile);\n currentTop += currentHeight;\n }\n\n prevWidth = 0;\n leftPos += tileWidth; //cell = 0;\n }\n\n if (cell) {\n prevWidth += cell;\n prevCell = cell;\n }\n }\n\n return divs;\n }\n\n function createProbeElement() {\n var cell = document.createElement(\"div\");\n cell.className = \"gantt_task_cell\";\n var row = document.createElement(\"div\");\n row.className = \"gantt_task_row\";\n row.appendChild(cell);\n return row;\n }\n\n function getCellStyles(targetNode) {\n // creating temp DOM structure for resolving style parameters. Will be removed after calculating.\n // Add two rows and read styles from the first one. \n // Some skins (e.g. material) define special styles for the last row, so we add a couple and read styles from one which is not the :last-child;\n var firstRow = createProbeElement();\n var secondRow = createProbeElement();\n targetNode.appendChild(firstRow);\n targetNode.appendChild(secondRow);\n var firstRowCell = firstRow.firstChild;\n var rowStyles = getComputedStyle(firstRow),\n cellStyles = getComputedStyle(firstRowCell);\n var params = {\n bottomBorderWidth: rowStyles.getPropertyValue(\"border-bottom-width\").replace(\"px\", \"\"),\n rightBorderWidth: cellStyles.getPropertyValue(\"border-right-width\").replace(\"px\", \"\"),\n bottomBorderColor: rowStyles.getPropertyValue(\"border-bottom-color\"),\n rightBorderColor: cellStyles.getPropertyValue(\"border-right-color\")\n };\n targetNode.removeChild(firstRow);\n targetNode.removeChild(secondRow);\n return params;\n }\n\n return {\n render: renderBgCanvas,\n destroy: cleanup\n };\n};\n\nmodule.exports = {\n create: function create() {\n return createStaticBgHelper(utils, env);\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 \"
\";\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;","var __extends = require(\"../../../utils/extends\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n utils = require(\"../../../utils/utils\"),\n Cell = require(\"./cell\");\n\nvar ResizerCell = function (_super) {\n \"use strict\";\n\n __extends(ResizerCell, _super);\n\n function ResizerCell(parent, config, factory) {\n var _this = _super.apply(this, arguments) || this;\n\n var startBackSize, startFrontSize;\n\n function getPageCoordinates(e) {\n var x = e.pageX;\n var y = e.pageY;\n\n if (e.touches) {\n x = e.touches[0].pageX;\n y = e.touches[0].pageY;\n }\n\n return {\n x: x,\n y: y\n };\n }\n\n _this._moveHandler = function (e) {\n _this._moveResizer(_this._resizer, getPageCoordinates(e).x, getPageCoordinates(e).y);\n };\n\n _this._upHandler = function (e) {\n var newSizes = _this._getNewSizes();\n\n if (_this.callEvent(\"onResizeEnd\", [startBackSize, startFrontSize, newSizes ? newSizes.back : 0, newSizes ? newSizes.front : 0]) !== false) {\n _this._setSizes();\n }\n\n _this._setBackground(false);\n\n _this._clearResizer();\n\n _this._clearListeneres();\n\n if (e.touches) _this.$gantt._prevent_touch_scroll = false;\n };\n\n _this._clearListeneres = function () {\n this.$domEvents.detach(document, \"mouseup\", _this._upHandler);\n this.$domEvents.detach(document, \"mousemove\", _this._moveHandler);\n this.$domEvents.detach(document, \"mousemove\", _this._startOnMove);\n this.$domEvents.detach(document, \"mouseup\", _this._cancelDND);\n this.$domEvents.detach(document, \"touchend\", _this._upHandler);\n this.$domEvents.detach(document, \"touchmove\", _this._startOnMove);\n this.$domEvents.detach(document, \"touchstart\", _this._downHandler);\n };\n\n _this._callStartDNDEvent = function () {\n if (this._xMode) {\n startBackSize = this._behind.$config.width || this._behind.$view.offsetWidth;\n startFrontSize = this._front.$config.width || this._front.$view.offsetWidth;\n } else {\n startBackSize = this._behind.$config.height || this._behind.$view.offsetHeight;\n startFrontSize = this._front.$config.height || this._front.$view.offsetHeight;\n }\n\n if (_this.callEvent(\"onResizeStart\", [startBackSize, startFrontSize]) === false) {\n return false;\n }\n };\n\n _this._startDND = function (e) {\n var res = this._callStartDNDEvent();\n\n if (res === false) {\n return;\n }\n\n var stop = false;\n\n this._eachGroupItem(function (resizer) {\n resizer._getSiblings();\n\n if (resizer._callStartDNDEvent() === false) {\n stop = true;\n }\n });\n\n if (stop) {\n return;\n }\n\n _this._moveHandler(e);\n\n _this.$domEvents.attach(document, \"mousemove\", _this._moveHandler);\n\n _this.$domEvents.attach(document, \"mouseup\", _this._upHandler);\n };\n\n _this._cancelDND = function () {\n _this._setBackground(false);\n\n _this._clearResizer();\n\n _this._clearListeneres();\n };\n\n _this._startOnMove = function (e) {\n // don't scroll the timeline on touch devices\n if (e.touches) _this.$gantt._prevent_touch_scroll = true;\n\n if (_this._isPosChanged(e)) {\n _this._clearListeneres();\n\n _this._startDND(e);\n }\n };\n\n _this._downHandler = function (e) {\n _this._getSiblings();\n\n if (_this._behind.$config.collapsed || _this._front.$config.collapsed) {\n return;\n }\n\n _this._setBackground(true);\n\n _this._resizer = _this._setResizer();\n _this._positions = {\n x: getPageCoordinates(e).x,\n y: getPageCoordinates(e).y,\n timestamp: Date.now()\n };\n\n _this.$domEvents.attach(document, \"mousemove\", _this._startOnMove);\n\n _this.$domEvents.attach(document, \"mouseup\", _this._cancelDND);\n };\n\n _this.$name = \"resizer\";\n return _this;\n }\n\n ResizerCell.prototype.init = function () {\n var _this = this;\n\n _super.prototype.init.call(this);\n\n this._xMode = this.$config.mode === \"x\";\n\n if (this._xMode && !this.$config.width) {\n this.$config.width = this.$config.minWidth = 1;\n } else if (!this._xMode && !this.$config.height) {\n this.$config.height = this.$config.minHeight = 1;\n }\n\n this.$config.margin = -1;\n this.$domEvents.attach(this.$view, \"mousedown\", _this._downHandler);\n this.$domEvents.attach(this.$view, \"touchstart\", _this._downHandler);\n this.$domEvents.attach(this.$view, \"touchmove\", _this._startOnMove);\n this.$domEvents.attach(this.$view, \"touchend\", _this._upHandler);\n };\n\n ResizerCell.prototype.$toHTML = function () {\n var mode = this.$config.mode;\n var css = this.$config.css || \"\";\n return \"
\";\n };\n\n ResizerCell.prototype._clearResizer = function () {\n if (this._resizer) {\n if (this._resizer.parentNode) {\n this._resizer.parentNode.removeChild(this._resizer);\n }\n\n this._resizer = null;\n }\n };\n\n ResizerCell.prototype._isPosChanged = function (e) {\n if (!this._positions) {\n return false;\n }\n\n if (Math.abs(this._positions.x - e.pageX) > 3 || Math.abs(this._positions.y - e.pageY) > 3) {\n return true;\n }\n\n if (Date.now() - this._positions.timestamp > 300) {\n return true;\n }\n\n return false;\n };\n\n ResizerCell.prototype._getSiblings = function () {\n var cells = this.$parent.getCells();\n\n if (this.$config.prev) {\n this._behind = this.$factory.getView(this.$config.prev);\n\n if (!(this._behind instanceof Cell)) {\n this._behind = this._behind.$parent;\n }\n }\n\n if (this.$config.next) {\n this._front = this.$factory.getView(this.$config.next);\n\n if (!(this._front instanceof Cell)) {\n this._front = this._behind.$parent;\n }\n }\n\n for (var i = 0; i < cells.length; i++) {\n if (this === cells[i]) {\n if (!this._behind) this._behind = cells[i - 1];\n if (!this._front) this._front = cells[i + 1];\n }\n }\n };\n\n ResizerCell.prototype._setBackground = function (state) {\n var classes = \"gantt_resizing\";\n\n if (!state) {\n domHelpers.removeClassName(this._behind.$view, classes);\n domHelpers.removeClassName(this._front.$view, classes);\n domHelpers.removeClassName(document.body, 'gantt_noselect');\n return;\n }\n\n domHelpers.addClassName(this._behind.$view, classes, true);\n domHelpers.addClassName(this._front.$view, classes, true);\n domHelpers.addClassName(document.body, 'gantt_noselect', true);\n };\n\n ResizerCell.prototype._setResizer = function () {\n var resizer = document.createElement(\"div\");\n resizer.className = \"gantt_resizer_stick\";\n this.$view.appendChild(resizer);\n this.$view.style.overflow = \"visible\";\n resizer.style.height = this.$view.style.height;\n return resizer;\n };\n\n ResizerCell.prototype._getDirection = function (x, y) {\n var shift;\n\n if (this._xMode) {\n shift = x - this._positions.x;\n } else {\n shift = y - this._positions.y;\n }\n\n return shift ? shift < 0 ? -1 : 1 : 0;\n };\n\n ResizerCell.prototype._getResizePosition = function (x, y) {\n var size;\n var behindSide;\n var behindMin;\n var frontSide;\n var frontMin;\n\n if (this._xMode) {\n size = x - this._positions.x;\n behindSide = this._behind.$config.width || this._behind.$view.offsetWidth;\n frontSide = this._front.$config.width || this._front.$view.offsetWidth;\n behindMin = this._behind.$config.minWidth;\n frontMin = this._front.$config.minWidth;\n } else {\n size = y - this._positions.y;\n behindSide = this._behind.$config.height || this._behind.$view.offsetHeight;\n frontSide = this._front.$config.height || this._front.$view.offsetHeight;\n behindMin = this._front.$config.minHeight;\n frontMin = this._front.$config.minHeight;\n }\n\n var direction = this._getDirection(x, y);\n\n var newBehindSide, newFrontSide;\n\n if (direction === -1) {\n newFrontSide = frontSide - size;\n newBehindSide = behindSide - Math.abs(size);\n\n if (frontSide - size > this._front.$config.maxWidth) {\n return;\n }\n\n if (Math.abs(size) >= behindSide) {\n size = -Math.abs(behindSide - 2);\n } // if min width\n\n\n if (behindSide - Math.abs(size) <= behindMin) {\n //this._resizer.style.background = \"red\";\n size = -Math.abs(behindSide - behindMin);\n }\n } else {\n newFrontSide = frontSide - Math.abs(size);\n newBehindSide = behindSide + size;\n\n if (behindSide + size > this._behind.$config.maxWidth) {\n size = this._behind.$config.maxWidth - behindSide; // return;\n }\n\n if (Math.abs(size) >= frontSide) {\n size = frontSide - 2;\n } // if min width\n\n\n if (frontSide - Math.abs(size) <= frontMin) {\n size = Math.abs(frontSide - frontMin);\n }\n }\n\n if (direction === -1) {\n newFrontSide = frontSide - size;\n newBehindSide = behindSide - Math.abs(size);\n } else {\n newFrontSide = frontSide - Math.abs(size);\n newBehindSide = behindSide + size;\n }\n\n return {\n size: size,\n newFrontSide: newFrontSide,\n newBehindSide: newBehindSide\n };\n };\n\n ResizerCell.prototype._getGroupName = function () {\n this._getSiblings();\n\n return this._front.$config.group || this._behind.$config.group;\n };\n\n ResizerCell.prototype._eachGroupItem = function (callback, master) {\n var layout = this.$factory.getView(\"main\");\n\n var group = this._getGroupName();\n\n var resizers = layout.getCellsByType(\"resizer\");\n\n for (var i = 0; i < resizers.length; i++) {\n if (resizers[i]._getGroupName() == group && resizers[i] != this) {\n callback.call(master || this, resizers[i]);\n }\n }\n };\n\n ResizerCell.prototype._getGroupResizePosition = function (x, y) {\n var sizes = this._getResizePosition(x, y);\n\n if (!this._getGroupName()) {\n return sizes;\n }\n\n var positions = [sizes];\n\n this._eachGroupItem(function (resizer) {\n resizer._getSiblings();\n\n var pos = utils.copy(this._positions);\n\n if (this._xMode) {\n pos.x += resizer._behind.$config.width - this._behind.$config.width;\n } else {\n pos.y += resizer._behind.$config.height - this._behind.$config.height;\n }\n\n resizer._positions = pos;\n positions.push(resizer._getResizePosition(x, y));\n });\n\n var minMax;\n\n for (var i = 0; i < positions.length; i++) {\n if (!positions[i]) return;\n\n if (minMax === undefined) {\n minMax = positions[i];\n } else if (positions[i].newBehindSide > minMax.newBehindSide) {\n minMax = positions[i];\n }\n }\n /*\tif(minMax != sizes){\n \t\tminMax.size = minMax.size;\n \t}*/\n\n\n return minMax;\n };\n\n ResizerCell.prototype._moveResizer = function (av, x, y) {\n if (x === 0) {\n return;\n }\n\n var sizes = this._getGroupResizePosition(x, y);\n\n if (!sizes) return;\n\n if (Math.abs(sizes.size) === 1) {\n return;\n }\n\n if (this._xMode) {\n av.style.left = sizes.size + 'px';\n this._positions.nextX = sizes.size || 0;\n } else {\n av.style.top = sizes.size + 'px';\n this._positions.nextY = sizes.size || 0;\n }\n\n this.callEvent(\"onResize\", [sizes.newBehindSide, sizes.newFrontSide]);\n };\n\n ResizerCell.prototype._setGravity = function (cell) {\n var size = this._xMode ? \"offsetWidth\" : \"offsetHeight\";\n var position = this._xMode ? this._positions.nextX : this._positions.nextY;\n var frontSize = this._front.$view[size];\n var behindSize = this._behind.$view[size];\n\n var frontG = this._front.getSize().gravity;\n\n var behindG = this._behind.getSize().gravity;\n\n var newFrontG = (frontSize - position) / frontSize * frontG;\n var newBehindG = (behindSize + position) / behindSize * behindG;\n\n if (cell !== \"front\") {\n this._front.$config.gravity = newFrontG;\n }\n\n if (cell !== \"behind\") {\n this._behind.$config.gravity = newBehindG;\n }\n };\n /*\tResizerCell.prototype.setSize = function(){\n \t\t_super.apply(this, arguments)\n \t};*/\n\n\n ResizerCell.prototype._getNewSizes = function () {\n var behindSize, frontSize, position;\n\n if (this._xMode) {\n behindSize = this._behind.$config.width;\n frontSize = this._front.$config.width;\n position = this._positions.nextX;\n } else {\n behindSize = this._behind.$config.height;\n frontSize = this._front.$config.height;\n position = this._positions.nextY;\n }\n\n if (!frontSize && !behindSize) {\n return null;\n }\n\n return {\n front: frontSize ? frontSize - position || 1 : 0,\n back: behindSize ? behindSize + position || 1 : 0\n };\n };\n\n ResizerCell.prototype._assignNewSizes = function (newSizes) {\n this._getSiblings();\n\n var side = this._xMode ? 'width' : 'height'; // if only gravity cells\n\n if (!newSizes) {\n this._setGravity();\n } else {\n if (!newSizes.front) {\n this._setGravity(\"behind\");\n } else {\n this._front.$config[side] = newSizes.front;\n }\n\n if (!newSizes.back) {\n this._setGravity(\"front\");\n } else {\n this._behind.$config[side] = newSizes.back;\n }\n }\n };\n\n ResizerCell.prototype._setSizes = function () {\n if (this._resizer) {\n this.$view.removeChild(this._resizer);\n }\n\n var newSizes = this._getNewSizes();\n\n if (this._positions.nextX || this._positions.nextY) {\n this._assignNewSizes(newSizes);\n\n var side = this._xMode ? 'width' : 'height';\n var resizeValue;\n\n if (!newSizes || !newSizes.front) {\n if (this._front.$config.group) {\n resizeValue = {\n value: this._front.$config.gravity,\n isGravity: true\n };\n\n this.$gantt.$layout._syncCellSizes(this._front.$config.group, resizeValue);\n }\n }\n\n if (!newSizes || !newSizes.back) {\n if (this._behind.$config.group) {\n resizeValue = {\n value: this._behind.$config.gravity,\n isGravity: true\n };\n\n this.$gantt.$layout._syncCellSizes(this._behind.$config.group, resizeValue);\n }\n }\n\n if (newSizes) {\n if (newSizes.front) {\n if (this._front.$config.group) {\n resizeValue = {\n value: this._front.$config[side],\n isGravity: false\n };\n\n this.$gantt.$layout._syncCellSizes(this._front.$config.group, resizeValue);\n }\n } else if (newSizes.back) {\n if (this._behind.$config.group) {\n resizeValue = {\n value: this._behind.$config[side],\n isGravity: false\n };\n\n this.$gantt.$layout._syncCellSizes(this._behind.$config.group, resizeValue);\n }\n }\n }\n\n if (this._getGroupName()) {\n this.$factory.getView(\"main\").resize();\n } else {\n this.$parent.resize();\n }\n }\n };\n\n return ResizerCell;\n}(Cell);\n\nmodule.exports = ResizerCell;","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 (item, view, config) {\n if (!item.start_date || !item.end_date) {\n return null;\n }\n\n var padding = 200;\n var startCoord = view.posFromDate(item.start_date);\n var endCoord = view.posFromDate(item.end_date);\n var left = Math.min(startCoord, endCoord) - padding;\n var right = Math.max(startCoord, endCoord) + padding;\n return {\n top: view.getItemTop(item.id),\n height: view.getItemHeight(item.id),\n left: left,\n width: right - left\n };\n};","var barRectangle = require(\"./get_bar_rectangle\");\n\nmodule.exports = function getLinkBox(item, view, config, gantt) {\n if (!gantt.isTaskExists(item.source)) {\n return null;\n }\n\n if (!gantt.isTaskExists(item.target)) {\n return null;\n }\n\n var sourceBox = barRectangle(gantt.getTask(item.source), view, gantt);\n var targetBox = barRectangle(gantt.getTask(item.target), view, gantt);\n\n if (!sourceBox || !targetBox) {\n return null;\n }\n\n var padding = 100;\n var left = Math.min(sourceBox.left, targetBox.left) - padding;\n var right = Math.max(sourceBox.left + sourceBox.width, targetBox.left + targetBox.width) + padding;\n var top = Math.min(sourceBox.top, targetBox.top) - padding;\n var bottom = Math.max(sourceBox.top + sourceBox.height, targetBox.top + targetBox.height) + padding;\n return {\n top: top,\n height: bottom - top,\n bottom: bottom,\n left: left,\n width: right - left,\n right: right\n };\n};","module.exports = function (viewport, box) {\n if (!box) {\n return false;\n }\n\n if (box.left > viewport.x_end || box.left + box.width < viewport.x) {\n return false;\n }\n\n if (box.top > viewport.y_end || box.top + box.height < viewport.y) {\n return false;\n }\n\n return true;\n};","var genericViewPortChecker = require(\"./viewport/is_in_viewport\");\n\nvar isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar basicGetRectangle = require(\"./viewport/get_grid_row_rectangle\");\n\nvar basicGetRange = require(\"./viewport/get_visible_bars_range\");\n\nvar rendererFactory = function rendererFactory(gantt) {\n //hash of dom elements is needed to redraw single bar/link\n var task_area_pulls = {},\n task_area_renderers = {};\n\n function getView(layer) {\n var view = null;\n\n if (typeof layer.view === \"string\") {\n view = gantt.$ui.getView(layer.view);\n } else if (layer.view) {\n view = layer.view;\n }\n\n return view;\n }\n\n function getRenderer(id, layer, node) {\n if (task_area_renderers[id]) return task_area_renderers[id];\n if (!layer.renderer) gantt.assert(false, \"Invalid renderer call\");\n var renderMethod = null;\n var updateMethod = null;\n var getRectangle = null;\n var renderCallbackMethod = null;\n var specializedViewPortChecker = null;\n\n if (typeof layer.renderer === \"function\") {\n renderMethod = layer.renderer;\n getRectangle = basicGetRectangle;\n } else {\n renderMethod = layer.renderer.render;\n updateMethod = layer.renderer.update;\n renderCallbackMethod = layer.renderer.onrender;\n\n if (layer.renderer.isInViewPort) {\n specializedViewPortChecker = layer.renderer.isInViewPort;\n } else {\n getRectangle = layer.renderer.getRectangle;\n }\n\n if (!getRectangle && getRectangle !== null) {\n getRectangle = basicGetRectangle;\n }\n }\n\n var filter = layer.filter;\n if (node) node.setAttribute(gantt.config.layer_attribute, true);\n task_area_renderers[id] = {\n render_item: function render_item(item, container, viewPort, layerView, viewConfig) {\n container = container || node;\n\n if (filter) {\n if (!filter(item)) {\n this.remove_item(item.id);\n return;\n }\n }\n\n var view = layerView || getView(layer);\n var config = viewConfig || (view ? view.$getConfig() : null);\n var rendererViewPort = viewPort;\n\n if (!rendererViewPort && config && config.smart_rendering) {\n rendererViewPort = view.getViewPort();\n }\n\n var dom = null;\n\n if (!isLegacyRender(gantt) && (getRectangle || specializedViewPortChecker) && rendererViewPort) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, rendererViewPort, view, config, gantt);\n } else {\n isVisible = genericViewPortChecker(rendererViewPort, getRectangle(item, view, config, gantt));\n }\n\n if (isVisible) {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n } else {\n dom = renderMethod.call(gantt, item, view, config, rendererViewPort);\n }\n\n this.append(item, dom, container);\n var useBuffer = container.nodeType == 11; //DocumentFragment\n\n if (renderCallbackMethod && !useBuffer && dom) {\n renderCallbackMethod.call(gantt, item, dom, view);\n }\n },\n clear: function clear(container) {\n this.rendered = task_area_pulls[id] = {};\n if (!layer.append) this.clear_container(container);\n },\n clear_container: function clear_container(container) {\n container = container || node;\n\n if (container) {\n container.innerHTML = \"\";\n }\n },\n get_visible_range: function get_visible_range(datastore) {\n var view = getView(layer);\n var viewport;\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewport = view.getViewPort();\n }\n\n var range;\n\n if (view && viewport) {\n if (typeof layer.renderer === \"function\") {\n range = basicGetRange(gantt, view, viewConfig, datastore, viewport);\n } else if (layer.renderer && layer.renderer.getVisibleRange) {\n range = layer.renderer.getVisibleRange(gantt, view, viewConfig, datastore, viewport);\n }\n }\n\n if (!range) {\n range = {\n start: 0,\n end: datastore.count()\n };\n }\n\n return range;\n },\n prepare_data: function prepare_data(items) {\n if (layer.renderer && layer.renderer.prepareData) {\n return layer.renderer.prepareData(items, gantt, layer);\n }\n },\n render_items: function render_items(items, container) {\n container = container || node;\n var buffer = document.createDocumentFragment();\n this.clear(container);\n var viewPort = null;\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (viewConfig && viewConfig.smart_rendering) {\n viewPort = view.getViewPort();\n }\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n\n container.appendChild(buffer, container);\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n update_items: function update_items(items, container) {\n var view = getView(layer);\n var viewConfig = view ? view.$getConfig() : null;\n\n if (!view || !view.$getConfig().smart_rendering || isLegacyRender(gantt)) {\n return;\n }\n\n if (!this.rendered) {\n return;\n }\n\n if (!(getRectangle || specializedViewPortChecker)) {\n return;\n }\n\n container = container || node;\n var buffer = document.createDocumentFragment();\n var viewPort = null;\n\n if (view) {\n viewPort = view.getViewPort();\n }\n\n var itemsSearch = {};\n items.forEach(function (item) {\n itemsSearch[item.id] = item;\n });\n var renderedItems = {};\n var nodesToRemove = {};\n\n for (var i in this.rendered) {\n nodesToRemove[i] = true;\n renderedItems[i] = true;\n }\n\n var renderCalledFor = {};\n\n for (var i = 0, vis = items.length; i < vis; i++) {\n var item = items[i];\n var itemNode = this.rendered[item.id];\n nodesToRemove[item.id] = false;\n\n if (itemNode && itemNode.parentNode) {\n var isVisible = false;\n\n if (specializedViewPortChecker) {\n isVisible = specializedViewPortChecker(item, viewPort, view, viewConfig, gantt);\n } else {\n isVisible = genericViewPortChecker(viewPort, getRectangle(item, view, viewConfig, gantt));\n }\n\n if (!isVisible) {\n nodesToRemove[item.id] = true;\n } else {\n if (updateMethod) {\n updateMethod.call(gantt, item, itemNode, view, viewConfig, viewPort);\n }\n\n this.restore(item, buffer);\n }\n } else {\n renderCalledFor[items[i].id] = true;\n this.render_item(items[i], buffer, viewPort, view, viewConfig);\n }\n }\n\n for (var i in nodesToRemove) {\n if (nodesToRemove[i]) {\n this.hide(i);\n }\n }\n\n if (buffer.childNodes.length) {\n container.appendChild(buffer, container);\n }\n\n if (renderCallbackMethod) {\n var newElements = {};\n\n for (var i in this.rendered) {\n if (!renderedItems[i] || renderCalledFor[i]) {\n newElements[i] = this.rendered[i];\n renderCallbackMethod.call(gantt, itemsSearch[i], this.rendered[i], view);\n }\n }\n }\n },\n append: function append(item, node, container) {\n if (!this.rendered) {\n return;\n }\n\n if (!node) {\n if (this.rendered[item.id]) {\n this.remove_item(item.id);\n }\n\n return;\n }\n\n if (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n this.replace_item(item.id, node);\n } else {\n container.appendChild(node);\n }\n\n this.rendered[item.id] = node;\n },\n replace_item: function replace_item(item_id, newNode) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.replaceChild(newNode, item);\n }\n\n this.rendered[item_id] = newNode;\n },\n remove_item: function remove_item(item_id) {\n this.hide(item_id);\n delete this.rendered[item_id];\n },\n hide: function hide(item_id) {\n var item = this.rendered[item_id];\n\n if (item && item.parentNode) {\n item.parentNode.removeChild(item);\n }\n },\n restore: function restore(item, container) {\n var dom = this.rendered[item.id];\n\n if (dom) {\n if (!dom.parentNode) {\n this.append(item, dom, container || node);\n }\n } else {\n this.render_item(item, container || node);\n }\n },\n change_id: function change_id(oldid, newid) {\n this.rendered[newid] = this.rendered[oldid];\n delete this.rendered[oldid];\n },\n rendered: task_area_pulls[id],\n node: node,\n destructor: function destructor() {\n this.clear();\n delete task_area_renderers[id];\n delete task_area_pulls[id];\n }\n };\n return task_area_renderers[id];\n }\n\n function clearRenderers() {\n for (var i in task_area_renderers) {\n getRenderer(i).destructor();\n }\n }\n\n return {\n getRenderer: getRenderer,\n clearRenderers: clearRenderers\n };\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\n\nvar utils = require(\"../../../utils/utils\"),\n domHelpers = require(\"../utils/dom_helpers\"),\n isLegacyRender = require(\"./is_legacy_smart_render\");\n\nvar layerFactory = function layerFactory(gantt) {\n var renderFactory = renderFactoryProvider(gantt);\n return {\n createGroup: function createGroup(getContainer, relativeRoot, defaultFilters, initLayer) {\n var renderGroup = {\n tempCollection: [],\n renderers: {},\n container: getContainer,\n filters: [],\n getLayers: function getLayers() {\n this._add(); // add pending layers\n\n\n var res = [];\n\n for (var i in this.renderers) {\n res.push(this.renderers[i]);\n }\n\n return res;\n },\n getLayer: function getLayer(id) {\n return this.renderers[id];\n },\n _add: function _add(layer) {\n if (layer) {\n layer.id = layer.id || utils.uid();\n this.tempCollection.push(layer);\n }\n\n var container = this.container();\n var pending = this.tempCollection;\n\n for (var i = 0; i < pending.length; i++) {\n layer = pending[i];\n if (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n var node = layer.container,\n id = layer.id,\n topmost = layer.topmost;\n\n if (!node.parentNode) {\n //insert on top or below the tasks\n if (topmost) {\n container.appendChild(node);\n } else {\n var rel = relativeRoot ? relativeRoot() : container.firstChild; // GS-1274: if we don't add the second check, Gantt stops working if\n // we add the task layer without the timeline and switch to a layout with the timeline\n\n if (rel && rel.parentNode == container) container.insertBefore(node, rel);else container.appendChild(node);\n }\n }\n\n this.renderers[id] = renderFactory.getRenderer(id, layer, node);\n\n if (initLayer) {\n initLayer(layer, gantt);\n }\n\n this.tempCollection.splice(i, 1);\n i--;\n }\n },\n addLayer: function addLayer(config) {\n if (config) {\n if (typeof config == \"function\") {\n config = {\n renderer: config\n };\n }\n\n if (config.filter === undefined) {\n config.filter = mergeFilters(defaultFilters || []);\n } else if (config.filter instanceof Array) {\n config.filter.push(defaultFilters);\n config.filter = mergeFilters(config.filter);\n }\n\n if (!config.container) {\n config.container = document.createElement(\"div\");\n }\n\n var self = this;\n\n config.requestUpdate = function () {\n if (gantt.config.smart_rendering && !isLegacyRender(gantt)) {\n if (self.renderers[config.id]) {\n self.onUpdateRequest(self.renderers[config.id]);\n }\n }\n };\n }\n\n this._add(config);\n\n return config ? config.id : undefined;\n },\n onUpdateRequest: function onUpdateRequest(layer) {},\n eachLayer: function eachLayer(code) {\n for (var i in this.renderers) {\n code(this.renderers[i]);\n }\n },\n removeLayer: function removeLayer(id) {\n if (!this.renderers[id]) return;\n this.renderers[id].destructor();\n delete this.renderers[id];\n },\n clear: function clear() {\n for (var i in this.renderers) {\n this.renderers[i].destructor();\n }\n\n this.renderers = {};\n } //,\n //prepareConfig: prepareConfig\n\n };\n gantt.attachEvent(\"onDestroy\", function () {\n renderGroup.clear();\n renderGroup = null;\n });\n return renderGroup;\n }\n };\n};\n\nfunction mergeFilters(filter_methods) {\n if (!(filter_methods instanceof Array)) {\n filter_methods = Array.prototype.slice.call(arguments, 0);\n }\n\n return function (obj) {\n var res = true;\n\n for (var i = 0, len = filter_methods.length; i < len; i++) {\n var filter_method = filter_methods[i];\n\n if (filter_method) {\n res = res && filter_method(obj.id, obj) !== false;\n }\n }\n\n return res;\n };\n}\n\nmodule.exports = layerFactory;","var createLayerFactory = require(\"./render/layer_engine\");\n\nvar getVisibleTaskRange = require(\"./render/viewport/get_visible_bars_range\");\n\nvar getVisibleLinksRangeFactory = require(\"./render/viewport/factory/get_visible_link_range\");\n\nvar isLinkInViewport = require(\"./render/viewport/is_link_in_viewport\");\n\nfunction initLayer(layer, gantt) {\n if (!layer.view) {\n return;\n }\n\n var view = layer.view;\n\n if (typeof view === \"string\") {\n view = gantt.$ui.getView(view);\n }\n\n if (view && view.attachEvent) {\n view.attachEvent(\"onScroll\", function () {\n var state = gantt.$services.getService(\"state\"); // don't repaint if we're inside batchUpdate, a complete repaint will be called afterwards\n\n if (!state.getState(\"batchUpdate\").batch_update && !view.$config.$skipSmartRenderOnScroll) {\n if (layer.requestUpdate) {\n layer.requestUpdate();\n }\n }\n });\n }\n}\n\nvar createLayerEngine = function createLayerEngine(gantt) {\n var factory = createLayerFactory(gantt);\n return {\n getDataRender: function getDataRender(name) {\n return gantt.$services.getService(\"layer:\" + name) || null;\n },\n createDataRender: function createDataRender(config) {\n var name = config.name,\n defaultContainer = config.defaultContainer,\n previusSiblingContainer = config.defaultContainerSibling;\n var layers = factory.createGroup(defaultContainer, previusSiblingContainer, function (itemId, item) {\n if (layers.filters) {\n for (var i = 0; i < layers.filters.length; i++) {\n if (layers.filters[i](itemId, item) === false) {\n return false;\n }\n }\n } else {\n return true;\n }\n }, initLayer);\n gantt.$services.setService(\"layer:\" + name, function () {\n return layers;\n });\n gantt.attachEvent(\"onGanttReady\", function () {\n layers.addLayer(); // init layers on start\n });\n return layers;\n },\n init: function init() {\n var taskLayers = this.createDataRender({\n name: \"task\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n },\n defaultContainerSibling: function defaultContainerSibling() {\n if (gantt.$task_links) {\n return gantt.$task_links;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_links;\n }\n },\n filter: function filter(item) {}\n }, gantt);\n var linkLayers = this.createDataRender({\n name: \"link\",\n defaultContainer: function defaultContainer() {\n if (gantt.$task_data) {\n return gantt.$task_data;\n } else if (gantt.$ui.getView(\"timeline\")) {\n return gantt.$ui.getView(\"timeline\").$task_data;\n }\n }\n }, gantt);\n return {\n addTaskLayer: function addTaskLayer(config) {\n var rangeFunction = getVisibleTaskRange;\n\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: rangeFunction\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = rangeFunction;\n }\n }\n\n config.view = \"timeline\";\n return taskLayers.addLayer(config);\n },\n _getTaskLayers: function _getTaskLayers() {\n return taskLayers.getLayers();\n },\n removeTaskLayer: function removeTaskLayer(id) {\n taskLayers.removeLayer(id);\n },\n _clearTaskLayers: function _clearTaskLayers() {\n taskLayers.clear();\n },\n addLinkLayer: function addLinkLayer(config) {\n var rangeFunction = getVisibleLinksRangeFactory();\n\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: rangeFunction\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = rangeFunction;\n }\n }\n\n config.view = \"timeline\";\n\n if (config && config.renderer) {\n if (!config.renderer.getRectangle && !config.renderer.isInViewPort) {\n config.renderer.isInViewPort = isLinkInViewport;\n }\n }\n\n return linkLayers.addLayer(config);\n },\n _getLinkLayers: function _getLinkLayers() {\n return linkLayers.getLayers();\n },\n removeLinkLayer: function removeLinkLayer(id) {\n linkLayers.removeLayer(id);\n },\n _clearLinkLayers: function _clearLinkLayers() {\n linkLayers.clear();\n }\n };\n }\n };\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"./utils/dom_helpers\");\n\nvar createMouseHandler = function (domHelpers) {\n return function (gantt) {\n var eventHandlers = {\n \"click\": {},\n \"doubleclick\": {},\n \"contextMenu\": {}\n };\n\n function addEventTarget(event, className, handler, root) {\n if (!eventHandlers[event][className]) {\n eventHandlers[event][className] = [];\n }\n\n eventHandlers[event][className].push({\n handler: handler,\n root: root\n });\n }\n\n function callHandler(eventName, className, root, args) {\n var handlers = eventHandlers[eventName][className];\n\n if (handlers) {\n for (var i = 0; i < handlers.length; i++) {\n if (!(root || handlers[i].root) || handlers[i].root === root) {\n handlers[i].handler.apply(this, args);\n }\n }\n }\n }\n\n function onClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.click);\n var res = true;\n\n if (id !== null) {\n res = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n } else {\n gantt.callEvent(\"onEmptyClick\", [e]);\n }\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return; // GS-1025: if we don't do that, the dropdown or date select will be closed for unselected tasks\n // GS-1078: or for the built-in select inline editor\n\n switch (e.target.nodeName) {\n case \"SELECT\":\n case 'INPUT':\n return;\n } //allow task selection when the multiselect plugin is not enabled\n\n\n if (id && gantt.getTask(id) && !gantt._multiselect && gantt.config.select_task) {\n gantt.selectTask(id);\n }\n }\n }\n\n function onContextMenu(e) {\n e = e || window.event;\n var src = e.target || e.srcElement,\n taskId = gantt.locate(src),\n linkId = gantt.locate(src, gantt.config.link_attribute);\n var res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\n if (!res) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n return res;\n }\n\n function findEventHandlers(e, hash) {\n var trg = e.target || e.srcElement;\n var handlers = [];\n\n while (trg) {\n var css = domHelpers.getClassName(trg);\n\n if (css) {\n css = css.split(\" \");\n\n for (var i = 0; i < css.length; i++) {\n if (!css[i]) continue;\n\n if (hash[css[i]]) {\n var delegateHandlers = hash[css[i]];\n\n for (var h = 0; h < delegateHandlers.length; h++) {\n if (delegateHandlers[h].root) {\n if (!domHelpers.isChildOf(trg, delegateHandlers[h].root)) {\n continue;\n }\n }\n\n handlers.push(delegateHandlers[h].handler);\n }\n }\n }\n }\n\n trg = trg.parentNode;\n }\n\n return handlers;\n }\n\n function callEventHandlers(handlers, e, id) {\n var res = true;\n\n for (var i = 0; i < handlers.length; i++) {\n var handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n res = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n }\n\n return res;\n }\n\n function onDoubleClick(e) {\n e = e || window.event;\n var id = gantt.locate(e);\n var handlers = findEventHandlers(e, eventHandlers.doubleclick); // when doubleclick fired not on task, id === null\n\n var res = !gantt.checkEvent(\"onTaskDblClick\") || id === null || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\n if (res) {\n var default_action = callEventHandlers(handlers, e, id);\n if (!default_action) return;\n\n if (id !== null && gantt.getTask(id)) {\n if (res && gantt.config.details_on_dblclick && !gantt.isReadonly(id)) {\n gantt.showLightbox(id);\n }\n }\n }\n }\n\n function onMouseMove(e) {\n if (gantt.checkEvent(\"onMouseMove\")) {\n var id = gantt.locate(e);\n gantt._last_move_event = e;\n gantt.callEvent(\"onMouseMove\", [id, e]);\n }\n }\n\n function detach(eventName, className, handler, root) {\n if (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n var handlers = eventHandlers[eventName];\n var elementHandlers = handlers[className];\n\n for (var i = 0; i < elementHandlers.length; i++) {\n if (elementHandlers[i].root == root) {\n elementHandlers.splice(i, 1);\n i--;\n }\n }\n\n if (!elementHandlers.length) {\n delete handlers[className];\n }\n }\n }\n\n var domEvents = gantt._createDomEventScope();\n\n function reset(node) {\n domEvents.detachAll();\n\n if (node) {\n domEvents.attach(node, \"click\", onClick);\n domEvents.attach(node, \"dblclick\", onDoubleClick);\n domEvents.attach(node, \"mousemove\", onMouseMove);\n domEvents.attach(node, \"contextmenu\", onContextMenu);\n }\n }\n\n return {\n reset: reset,\n global: function global(event, classname, handler) {\n addEventTarget(event, classname, handler, null);\n },\n delegate: addEventTarget,\n detach: detach,\n callHandler: callHandler,\n onDoubleClick: onDoubleClick,\n onMouseMove: onMouseMove,\n onContextMenu: onContextMenu,\n onClick: onClick,\n destructor: function destructor() {\n reset();\n eventHandlers = null;\n domEvents = null;\n }\n };\n };\n}(domHelpers);\n\nmodule.exports = {\n init: createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction extendSettings(store, parentSettings) {\n var own = this.$config[store];\n\n if (own) {\n if (!own.$extendedConfig) {\n own.$extendedConfig = true;\n Object.setPrototypeOf(own, parentSettings);\n }\n\n return own;\n } else {\n return parentSettings;\n }\n}\n\nvar configurable = function configurable(parentView) {\n var parentConfig, parentTemplates;\n return {\n $getConfig: function $getConfig() {\n if (!parentConfig) {\n parentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n }\n\n if (!this.$config.config) {\n return parentConfig;\n } else {\n return extendSettings.call(this, \"config\", parentConfig);\n }\n },\n $getTemplates: function $getTemplates() {\n if (!parentTemplates) {\n parentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n }\n\n if (!this.$config.templates) {\n return parentTemplates;\n } else {\n return extendSettings.call(this, \"templates\", parentTemplates);\n }\n }\n };\n};\n\nmodule.exports = function (obj, parent) {\n utils.mixin(obj, configurable(parent));\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\"),\n configurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt) {\n var views = {};\n\n function ui(cell, parentView) {\n var content;\n var view = \"cell\";\n\n if (cell.view) {\n view = \"viewcell\";\n } else if (cell.resizer) {\n view = \"resizer\";\n } else if (cell.rows || cell.cols) {\n view = \"layout\";\n } else if (cell.views) {\n view = \"multiview\";\n }\n\n content = createView.call(this, view, null, cell, parentView);\n return content;\n }\n\n var createdViews = {};\n\n function createView(name, parent, config, parentView) {\n var creator = views[name];\n if (!creator || !creator.create) return false;\n\n if (name == \"resizer\" && !config.mode) {\n if (parentView.$config.cols) {\n config.mode = \"x\";\n } else {\n config.mode = \"y\";\n }\n }\n\n if (name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll) {\n if (parentView.$config.cols) {\n config.scroll = \"y\";\n } else {\n config.scroll = \"x\";\n }\n }\n\n var config = utils.copy(config);\n\n if (!config.id && !createdViews[config.view]) {\n config.id = config.view;\n }\n\n if (config.id && !config.css) {\n config.css = config.id + \"_cell\";\n }\n\n var view = new creator.create(parent, config, this, gantt);\n\n if (creator.configure) {\n creator.configure(view);\n }\n\n configurable(view, parentView);\n\n if (!view.$id) {\n view.$id = config.id || gantt.uid();\n }\n\n if (!view.$parent && _typeof(parent) == \"object\") {\n view.$parent = parent;\n }\n\n if (!view.$config) {\n view.$config = config;\n }\n\n if (createdViews[view.$id]) {\n view.$id = gantt.uid();\n }\n\n createdViews[view.$id] = view;\n return view;\n }\n\n function reset() {\n createdViews = {};\n }\n\n function register(name, viewConstructor, configure) {\n views[name] = {\n create: viewConstructor,\n configure: configure\n };\n }\n\n function getView(id) {\n return createdViews[id];\n }\n\n var factory = {\n initUI: ui,\n reset: reset,\n registerView: register,\n createView: createView,\n getView: getView\n };\n return factory;\n};\n\nmodule.exports = {\n createFactory: uiFactory\n};","var uiFactory = require(\"./ui_factory\"),\n mouseEvents = require(\"./mouse\"),\n createLayers = require(\"./gantt_layers\"),\n Cell = require(\"./layout/cell\"),\n Layout = require(\"./layout/layout\"),\n ViewLayout = require(\"./layout/view_layout\"),\n ViewCell = require(\"./layout/view_cell\"),\n Resizer = require(\"./layout/resizer_cell\"),\n Scrollbar = require(\"./layout/scrollbar_cell\"),\n Timeline = require(\"./timeline/timeline\"),\n Grid = require(\"./grid/grid\"),\n ResourceGrid = require(\"./grid/resource_grid\"),\n ResourceTimeline = require(\"./timeline/resource_timeline\"),\n ResourceHistogram = require(\"./timeline/resource_histogram\");\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\nvar renderTaskBar = require(\"./render/task_bar_smart_render\"),\n renderSplitTaskBar = require(\"./render/task_split_render\"),\n renderRollupTaskBar = require(\"./render/task_rollup_render\"),\n renderTaskBg = require(\"./render/task_bg_render\"),\n renderLink = require(\"./render/link_render\"),\n gridRenderer = require(\"./render/task_grid_line_render\"),\n resourceMatrixRenderer = require(\"./render/resource_matrix_render\"),\n resourceHistogramRenderer = require(\"./render/resource_histogram_render\"),\n gridTaskRowResizerRenderer = require(\"./render/task_grid_row_resize_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\n\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\n\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt) {\n function attachInitializer(view, initializer) {\n var ext = initializer(gantt);\n if (ext.onCreated) ext.onCreated(view);\n view.attachEvent(\"onReady\", function () {\n if (ext.onInitialized) ext.onInitialized(view);\n });\n view.attachEvent(\"onDestroy\", function () {\n if (ext.onDestroyed) ext.onDestroyed(view);\n });\n }\n\n var factory = uiFactory.createFactory(gantt);\n factory.registerView(\"cell\", Cell);\n factory.registerView(\"resizer\", Resizer);\n factory.registerView(\"scrollbar\", Scrollbar);\n factory.registerView(\"layout\", Layout, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"main\") {\n attachInitializer(view, mainLayoutInitializer);\n }\n });\n factory.registerView(\"viewcell\", ViewCell);\n factory.registerView(\"multiview\", ViewLayout);\n factory.registerView(\"timeline\", Timeline, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"timeline\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainTimelineInitializer);\n }\n });\n factory.registerView(\"grid\", Grid, function (view) {\n var id = view.$config ? view.$config.id : null;\n\n if (id === \"grid\" || view.$config.bind == \"task\") {\n attachInitializer(view, mainGridInitializer);\n }\n });\n factory.registerView(\"resourceGrid\", ResourceGrid);\n factory.registerView(\"resourceTimeline\", ResourceTimeline);\n factory.registerView(\"resourceHistogram\", ResourceHistogram);\n var layersEngine = createLayers(gantt);\n var inlineEditors = gridEditorsFactory(gantt);\n gantt.ext.inlineEditors = inlineEditors;\n gantt.ext._inlineEditors = inlineEditors;\n inlineEditors.init(gantt);\n return {\n factory: factory,\n mouseEvents: mouseEvents.init(gantt),\n layersApi: layersEngine.init(),\n render: {\n gridLine: function gridLine() {\n return gridRenderer(gantt);\n },\n taskBg: function taskBg() {\n return renderTaskBg(gantt);\n },\n taskBar: function taskBar() {\n return renderTaskBar(gantt);\n },\n taskRollupBar: function taskRollupBar() {\n return renderRollupTaskBar(gantt);\n },\n taskSplitBar: function taskSplitBar() {\n return renderSplitTaskBar(gantt);\n },\n link: function link() {\n return renderLink(gantt);\n },\n resourceRow: function resourceRow() {\n return resourceMatrixRenderer(gantt);\n },\n resourceHistogram: function resourceHistogram() {\n return resourceHistogramRenderer(gantt);\n },\n gridTaskRowResizer: function gridTaskRowResizer() {\n return gridTaskRowResizerRenderer(gantt);\n }\n },\n layersService: {\n getDataRender: function getDataRender(name) {\n return layersEngine.getDataRender(name, gantt);\n },\n createDataRender: function createDataRender(config) {\n return layersEngine.createDataRender(config, gantt);\n }\n }\n };\n}\n\nmodule.exports = {\n init: initUI\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar utils = require(\"../../utils/utils\");\n\nvar domHelpers = require(\"./utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n var boxAttribute = \"data-dhxbox\";\n var _dhx_msg_cfg = null;\n\n function callback(config, result) {\n var usercall = config.callback;\n modalBox.hide(config.box);\n _dhx_msg_cfg = config.box = null;\n if (usercall) usercall(result);\n }\n\n function modal_key(event) {\n if (_dhx_msg_cfg) {\n var code = event.which || event.keyCode;\n var preventDefault = false;\n\n if (messageBox.keyboard) {\n if (code == 13 || code == 32) {\n // default behavior is to confirm/submit popup on space/enter\n // if browser focus is set on button element - do button click instead of default behavior\n var target = event.target || event.srcElement;\n\n if (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n target.click();\n } else {\n callback(_dhx_msg_cfg, true);\n preventDefault = true;\n }\n }\n\n if (code == 27) {\n callback(_dhx_msg_cfg, false);\n preventDefault = true;\n }\n }\n\n if (preventDefault) {\n if (event.preventDefault) {\n event.preventDefault();\n }\n\n return !(event.cancelBubble = true);\n }\n\n return;\n }\n }\n\n var eventElement = domHelpers.getRootNode(gantt.$root) || document;\n gantt.event(eventElement, \"keydown\", modal_key, true);\n\n function modality(mode) {\n if (!modality.cover) {\n modality.cover = document.createElement(\"div\"); //necessary for IE only\n\n modality.cover.onkeydown = modal_key;\n modality.cover.className = \"dhx_modal_cover\";\n document.body.appendChild(modality.cover);\n }\n\n modality.cover.style.display = mode ? \"inline-block\" : \"none\";\n }\n\n function button(text, className, result) {\n var buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\n var name = className.toLowerCase().replace(/ /g, \"_\");\n var button_css = \"gantt_\" + name + \"_button\";\n return \"
\" + text + \"
\";\n }\n\n function info(text) {\n if (!messageBox.area) {\n messageBox.area = document.createElement(\"div\");\n messageBox.area.className = \"gantt_message_area\";\n messageBox.area.style[messageBox.position] = \"5px\";\n document.body.appendChild(messageBox.area);\n }\n\n messageBox.hide(text.id);\n var message = document.createElement(\"div\");\n message.innerHTML = \"
\" + text.text + \"
\";\n message.className = \"gantt-info gantt-\" + text.type;\n\n message.onclick = function () {\n messageBox.hide(text.id);\n text = null;\n };\n\n gantt._waiAria.messageInfoAttr(message);\n\n if (messageBox.position == \"bottom\" && messageBox.area.firstChild) messageBox.area.insertBefore(message, messageBox.area.firstChild);else messageBox.area.appendChild(message);\n if (text.expire > 0) messageBox.timers[text.id] = window.setTimeout(function () {\n // GS-1213: We need that when Gantt is destroyed\n if (messageBox) messageBox.hide(text.id);\n }, text.expire);\n messageBox.pull[text.id] = message;\n message = null;\n return text.id;\n }\n\n function getFirstDefined() {\n var values = [].slice.apply(arguments, [0]);\n\n for (var i = 0; i < values.length; i++) {\n if (values[i]) {\n return values[i];\n }\n }\n }\n\n function _boxStructure(config, ok, cancel) {\n var box = document.createElement(\"div\");\n var contentId = utils.uid();\n\n gantt._waiAria.messageModalAttr(box, contentId);\n\n box.className = \" gantt_modal_box gantt-\" + config.type;\n box.setAttribute(boxAttribute, 1);\n var inner = '';\n if (config.width) box.style.width = config.width;\n if (config.height) box.style.height = config.height;\n if (config.title) inner += '
' + config.title + '
';\n inner += '
' + (config.content ? '' : config.text) + '
';\n if (ok) inner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n if (cancel) inner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n if (config.buttons) {\n for (var i = 0; i < config.buttons.length; i++) {\n var btn = config.buttons[i];\n\n if (_typeof(btn) == \"object\") {\n // Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n var label = btn.label;\n var css = btn.css || \"gantt_\" + btn.label.toLowerCase() + \"_button\";\n var value = btn.value || i;\n inner += button(label, css, value);\n } else {\n inner += button(btn, btn, i);\n }\n }\n }\n\n inner += '
';\n box.innerHTML = inner;\n\n if (config.content) {\n var node = config.content;\n if (typeof node == \"string\") node = document.getElementById(node);\n if (node.style.display == 'none') node.style.display = \"\";\n box.childNodes[config.title ? 1 : 0].appendChild(node);\n }\n\n box.onclick = function (event) {\n var source = event.target || event.srcElement;\n if (!source.className) source = source.parentNode;\n\n if (domHelpers.closest(source, \".gantt_popup_button\")) {\n var result = source.getAttribute(\"data-result\");\n result = result == \"true\" || (result == \"false\" ? false : result);\n callback(config, result);\n }\n };\n\n config.box = box;\n if (ok || cancel) _dhx_msg_cfg = config;\n return box;\n }\n\n function _createBox(config, ok, cancel) {\n var box = config.tagName ? config : _boxStructure(config, ok, cancel);\n if (!config.hidden) modality(true);\n document.body.appendChild(box);\n var x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n var y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n if (config.position == \"top\") box.style.top = \"-3px\";else box.style.top = y + 'px';\n box.style.left = x + 'px'; //necessary for IE only\n\n box.onkeydown = modal_key;\n modalBox.focus(box);\n if (config.hidden) modalBox.hide(box);\n gantt.callEvent(\"onMessagePopup\", [box]);\n return box;\n }\n\n function alertPopup(config) {\n return _createBox(config, true, false);\n }\n\n function confirmPopup(config) {\n return _createBox(config, true, true);\n }\n\n function boxPopup(config) {\n return _createBox(config);\n }\n\n function box_params(text, type, callback) {\n if (_typeof(text) != \"object\") {\n if (typeof type == \"function\") {\n callback = type;\n type = \"\";\n }\n\n text = {\n text: text,\n type: type,\n callback: callback\n };\n }\n\n return text;\n }\n\n function params(text, type, expire, id) {\n if (_typeof(text) != \"object\") text = {\n text: text,\n type: type,\n expire: expire,\n id: id\n };\n text.id = text.id || utils.uid();\n text.expire = text.expire || messageBox.expire;\n return text;\n }\n\n var alertBox = function alertBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"confirm\";\n return alertPopup(text);\n };\n\n var confirmBox = function confirmBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return confirmPopup(text);\n };\n\n var modalBox = function modalBox() {\n var text = box_params.apply(this, arguments);\n text.type = text.type || \"alert\";\n return boxPopup(text);\n };\n\n modalBox.hide = function (node) {\n while (node && node.getAttribute && !node.getAttribute(boxAttribute)) {\n node = node.parentNode;\n }\n\n if (node) {\n node.parentNode.removeChild(node);\n modality(false);\n gantt.callEvent(\"onAfterMessagePopup\", [node]);\n }\n };\n\n modalBox.focus = function (node) {\n setTimeout(function () {\n var focusable = domHelpers.getFocusableNodes(node);\n\n if (focusable.length) {\n if (focusable[0].focus) focusable[0].focus();\n }\n }, 1);\n };\n\n var messageBox = function messageBox(text, type, expire, id) {\n text = params.apply(this, arguments);\n text.type = text.type || \"info\";\n var subtype = text.type.split(\"-\")[0];\n\n switch (subtype) {\n case \"alert\":\n return alertPopup(text);\n\n case \"confirm\":\n return confirmPopup(text);\n\n case \"modalbox\":\n return boxPopup(text);\n\n default:\n return info(text);\n }\n };\n\n messageBox.seed = new Date().valueOf();\n messageBox.uid = utils.uid;\n messageBox.expire = 4000;\n messageBox.keyboard = true;\n messageBox.position = \"top\";\n messageBox.pull = {};\n messageBox.timers = {};\n\n messageBox.hideAll = function () {\n for (var key in messageBox.pull) {\n messageBox.hide(key);\n }\n };\n\n messageBox.hide = function (id) {\n var obj = messageBox.pull[id];\n\n if (obj && obj.parentNode) {\n window.setTimeout(function () {\n obj.parentNode.removeChild(obj);\n obj = null;\n }, 2000);\n obj.className += \" hidden\";\n if (messageBox.timers[id]) window.clearTimeout(messageBox.timers[id]);\n delete messageBox.pull[id];\n }\n };\n\n var popups = [];\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n popups.push(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function (box) {\n for (var i = 0; i < popups.length; i++) {\n if (popups[i] === box) {\n popups.splice(i, 1);\n i--;\n }\n }\n });\n gantt.attachEvent(\"onDestroy\", function () {\n if (modality.cover && modality.cover.parentNode) {\n modality.cover.parentNode.removeChild(modality.cover);\n }\n\n for (var i = 0; i < popups.length; i++) {\n if (popups[i].parentNode) {\n popups[i].parentNode.removeChild(popups[i]);\n }\n }\n\n popups = null;\n\n if (messageBox.area && messageBox.area.parentNode) {\n messageBox.area.parentNode.removeChild(messageBox.area);\n }\n\n messageBox = null;\n });\n return {\n alert: alertBox,\n confirm: confirmBox,\n message: messageBox,\n modalbox: modalBox\n };\n};","module.exports = function (gantt) {\n var utils = require(\"../utils/utils\");\n\n var env = require(\"../utils/env\");\n\n var isHeadless = require(\"../utils/is_headless\");\n\n if (!env.isNode) {\n var domHelpers = require(\"./ui/utils/dom_helpers\");\n\n var codeHelpers = require(\"../utils/helpers\");\n\n gantt.utils = {\n arrayFind: codeHelpers.arrayFind,\n dom: domHelpers\n };\n\n var domEvents = require(\"./ui/utils/dom_event_scope\")();\n\n gantt.event = domEvents.attach;\n gantt.eventRemove = domEvents.detach;\n gantt._eventRemoveAll = domEvents.detachAll;\n gantt._createDomEventScope = domEvents.extend;\n utils.mixin(gantt, require(\"./ui/message\")(gantt));\n\n var uiApi = require(\"./ui/index\").init(gantt);\n\n gantt.$ui = uiApi.factory;\n gantt.$ui.layers = uiApi.render;\n gantt.$mouseEvents = uiApi.mouseEvents;\n gantt.$services.setService(\"mouseEvents\", function () {\n return gantt.$mouseEvents;\n });\n gantt.mixin(gantt, uiApi.layersApi);\n\n require(\"./data_task_layers\")(gantt);\n\n gantt.$services.setService(\"layers\", function () {\n return uiApi.layersService;\n });\n\n var createLayoutFacade = require(\"./facades/layout\");\n\n gantt.mixin(gantt, createLayoutFacade());\n\n require(\"./ui/skin\")(gantt);\n\n require(\"../css/skins/skyblue\")(gantt);\n\n require(\"../css/skins/meadow\")(gantt);\n\n require(\"../css/skins/terrace\")(gantt);\n\n require(\"../css/skins/broadway\")(gantt);\n\n require(\"../css/skins/material\")(gantt);\n\n require(\"../css/skins/contrast_black\")(gantt);\n\n require(\"../css/skins/contrast_white\")(gantt);\n\n require(\"./ui/plugins\")(gantt);\n\n require(\"./ui/touch\")(gantt);\n\n require(\"./ui/lightbox\")(gantt);\n\n require(\"./ui/lightbox/lightbox_optional_time\")(gantt);\n\n require(\"./ui/wai_aria\")(gantt);\n\n gantt.locate = function (e) {\n var trg = domHelpers.getTargetNode(e); // ignore empty rows/cells of the timeline\n\n if (domHelpers.closest(trg, \".gantt_task_row\")) {\n return null;\n }\n\n var targetAttribute = arguments[1] || this.config.task_attribute;\n var node = domHelpers.locateAttribute(trg, targetAttribute);\n\n if (node) {\n return node.getAttribute(targetAttribute);\n } else {\n return null;\n }\n };\n\n gantt._locate_css = function (e, classname, strict) {\n return domHelpers.locateClassName(e, classname, strict);\n };\n\n gantt._locateHTML = function (e, attribute) {\n return domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n };\n }\n\n gantt.attachEvent(\"onParse\", function () {\n if (!isHeadless(gantt)) {\n gantt.attachEvent(\"onGanttRender\", function () {\n if (gantt.config.initial_scroll) {\n var firstTask = gantt.getTaskByIndex(0);\n var id = firstTask ? firstTask.id : gantt.config.root_id; // GS-1450. Don't scroll to the task if there is no timeline\n\n if (gantt.isTaskExists(id) && gantt.$task && gantt.utils.dom.isChildOf(gantt.$task, gantt.$container)) {\n gantt.showTask(id);\n }\n }\n }, {\n once: true\n });\n }\n });\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (!this.config.scroll_size) this.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n if (!isHeadless(gantt)) {\n // detach listeners before clearing old DOM, possible IE errors when accessing detached nodes\n this._eventRemoveAll();\n\n this.$mouseEvents.reset();\n this.resetLightbox();\n }\n }); // GS-1261: scroll the views to the right side when RTL is enabled\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt) && gantt.config.rtl) {\n gantt.$layout.getCellsByType(\"viewCell\").forEach(function (cell) {\n var attachedScrollbar = cell.$config.scrollX;\n if (!attachedScrollbar) return;\n var scrollbar = gantt.$ui.getView(attachedScrollbar);\n if (scrollbar) scrollbar.scrollTo(scrollbar.$config.scrollSize, 0);\n });\n }\n }); // GS-1649: check if extensions are connected via files\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (!isHeadless(gantt)) {\n var activePlugins = gantt.plugins();\n var availablePlugins = {\n auto_scheduling: gantt.autoSchedule,\n click_drag: gantt.ext.clickDrag,\n critical_path: gantt.isCriticalTask,\n drag_timeline: gantt.ext.dragTimeline,\n export_api: gantt.exportToPDF,\n fullscreen: gantt.ext.fullscreen,\n grouping: gantt.groupBy,\n keyboard_navigation: gantt.ext.keyboardNavigation,\n marker: gantt.addMarker,\n multiselect: gantt.eachSelectedTask,\n overlay: gantt.ext.overlay,\n quick_info: gantt.templates.quick_info_content,\n tooltip: gantt.ext.tooltips,\n undo: gantt.undo\n };\n\n for (var plugin in availablePlugins) {\n if (availablePlugins[plugin] && !activePlugins[plugin]) {\n // eslint-disable-next-line no-console\n console.warn(\"You connected the '\".concat(plugin, \"' extension via an obsolete file. \\nTo fix it, you need to remove the obsolete file and connect the extension via the plugins method: https://docs.dhtmlx.com/gantt/api__gantt_plugins.html\"));\n }\n }\n }\n });\n};","const locale: IGanttLocale = {\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\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: \"\", // 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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","const locale: IGanttLocale = {\n\tdate: {\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\n\t},\n\tlabels: {\n\t\tnew_task: \"Uusi tehtävä\",\n\t\ticon_save: \"Tallenna\",\n\t\ticon_cancel: \"Peru\",\n\t\ticon_details: \"Tiedot\",\n\t\ticon_edit: \"Muokkaa\",\n\t\ticon_delete: \"Poista\",\n\t\tconfirm_closing: \"\", // Your changes will be lost, are your sure ?\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\n\t\tsection_description: \"Kuvaus\",\n\t\tsection_time: \"Aikajakso\",\n\t\tsection_type: \"Type\",\n\t\t/* grid columns */\n\n\t\tcolumn_wbs: \"WBS\",\n\t\tcolumn_text: \"Task name\",\n\t\tcolumn_start_date: \"Start time\",\n\t\tcolumn_duration: \"Duration\",\n\t\tcolumn_add: \"\",\n\n\t\t/* link confirmation */\n\t\tlink: \"Link\",\n\t\tconfirm_link_deleting: \"will be deleted\",\n\t\tlink_start: \" (start)\",\n\t\tlink_end: \" (end)\",\n\n\t\ttype_task: \"Task\",\n\t\ttype_project: \"Project\",\n\t\ttype_milestone: \"Milestone\",\n\n\n\t\tminutes: \"Minutes\",\n\t\thours: \"Hours\",\n\t\tdays: \"Days\",\n\t\tweeks: \"Week\",\n\t\tmonths: \"Months\",\n\t\tyears: \"Years\",\n\n\t\t/* message popup */\n\t\tmessage_ok: \"OK\",\n\t\tmessage_cancel: \"Peru\",\n\n\t\t/* constraints */\n\t\tsection_constraint: \"Constraint\",\n\t\tconstraint_type: \"Constraint type\",\n\t\tconstraint_date: \"Constraint date\",\n\t\tasap: \"As Soon As Possible\",\n\t\talap: \"As Late As Possible\",\n\t\tsnet: \"Start No Earlier Than\",\n\t\tsnlt: \"Start No Later Than\",\n\t\tfnet: \"Finish No Earlier Than\",\n\t\tfnlt: \"Finish No Later Than\",\n\t\tmso: \"Must Start On\",\n\t\tmfo: \"Must Finish On\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\",\n\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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: \"Regel\",\n\t\tconstraint_type: \"Regel\",\n\t\tconstraint_date: \"Regel - Datum\",\n\t\tasap: \"So bald wie möglich\",\n\t\talap: \"So spät wie möglich\",\n\t\tsnet: \"Beginn nicht vor\",\n\t\tsnlt: \"Beginn nicht später als\",\n\t\tfnet: \"Fertigstellung nicht vor\",\n\t\tfnlt: \"Fertigstellung nicht später als\",\n\t\tmso: \"Muss beginnen am\",\n\t\tmfo: \"Muss fertig sein am\",\n\n\t\t/* resource control */\n\t\tresources_filter_placeholder: \"type to filter\",\n\t\tresources_filter_label: \"hide empty\",\n\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","/*\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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\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: \"التغييرات سوف تضيع, هل انت متأكد؟\", // 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\n\t\t/* empty state screen */\n\t\tempty_state_text_link: \"Click here\",\n\t\tempty_state_text_description: \"to create your first task\"\n\t}\n};\n\nexport default locale;\n","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\n if (gantt.$data.tasksStore._skipTaskRecalculation) {\n // do not repaint items, they will be repainted later in the onStoreUpdate event\n if (gantt.$data.tasksStore._skipTaskRecalculation != \"lightbox\") {\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n }\n } else {\n gantt.getDatastore(storeNames[i]).callEvent(\"onBeforeRefreshAll\", []);\n }\n }\n });\n this.$layout.attachEvent(\"onResize\", function () {\n gantt._quickRefresh(function () {\n gantt.refreshData();\n });\n });\n this.callEvent(\"onGanttLayoutReady\", []);\n this.$layout.render();\n this.$container = this.$layout.$container.firstChild;\n addResizeListener(this);\n }.bind(gantt);\n\n gantt.resetLayout = function () {\n dropLayout();\n rebuildLayout();\n this.render();\n };\n\n gantt._reinit = function (node) {\n this.callEvent(\"onBeforeGanttReady\", []);\n\n this._update_flags();\n\n var config = this.$services.getService(\"templateLoader\");\n config.initTemplates(this);\n dropLayout();\n this.$root = null;\n\n if (node) {\n this.$root = domHelpers.toNode(node);\n rebuildLayout();\n this.$mouseEvents.reset(this.$root);\n }\n\n this.callEvent(\"onTemplatesReady\", []);\n this.callEvent(\"onGanttReady\", []);\n this.render();\n };\n\n gantt.$click = {\n buttons: {\n \"edit\": function edit(id) {\n if (gantt.isReadonly(gantt.getTask(id))) {\n return;\n }\n\n gantt.showLightbox(id);\n },\n \"delete\": function _delete(id) {\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n return;\n }\n\n var question = gantt.locale.labels.confirm_deleting;\n var title = gantt.locale.labels.confirm_deleting_title;\n\n gantt._simple_confirm(question, title, function () {\n if (!gantt.isTaskExists(id)) {\n gantt.hideLightbox();\n return;\n }\n\n if (task.$new) {\n // GS-2170. Do not recalculate the indexes and dates of other tasks\n // as they will be recalculated in the `refreshData`\n gantt.$data.tasksStore._skipTaskRecalculation = \"lightbox\";\n gantt.silent(function () {\n gantt.deleteTask(id, true);\n });\n gantt.$data.tasksStore._skipTaskRecalculation = false;\n gantt.refreshData();\n } else {\n gantt.$data.tasksStore._skipTaskRecalculation = true;\n gantt.deleteTask(id);\n }\n\n gantt.hideLightbox();\n });\n }\n }\n }; //renders self\n\n gantt.render = function () {\n this.callEvent(\"onBeforeGanttRender\", []);\n var visibleDate;\n\n if (!isHeadless(gantt)) {\n if (!this.config.sort && this._sort) {\n this._sort = undefined;\n }\n\n if (this.$root) {\n if (this.config.rtl) {\n this.$root.classList.add(\"gantt_rtl\");\n this.$root.firstChild.classList.add(\"gantt_rtl\"); // GS-1499\n } else {\n this.$root.classList.remove(\"gantt_rtl\");\n this.$root.firstChild.classList.remove(\"gantt_rtl\"); // GS-1499\n }\n }\n\n var pos = this.getScrollState();\n var posX = pos ? pos.x : 0;\n\n if (this._getHorizontalScrollbar()) {\n var scrollbar = this._getHorizontalScrollbar();\n\n posX = scrollbar.$config.codeScrollLeft || posX || 0;\n }\n\n visibleDate = null;\n\n if (posX) {\n visibleDate = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n }\n }\n\n calculateScaleRange(this);\n\n if (!isHeadless(gantt)) {\n this.$layout.$config.autosize = this.config.autosize;\n var preserveScroll = this.config.preserve_scroll;\n this.config.preserve_scroll = false; // prevent scrolling from layout resize, scroll will be called here later on\n\n this.$layout.resize();\n this.config.preserve_scroll = preserveScroll;\n\n if (this.config.preserve_scroll && pos) {\n // GS-1640: We need pos.y, otherwise part of the timeline won't be rendered if the scrollbar disappeared\n if (posX || pos.y) {\n var new_pos = gantt.getScrollState();\n var new_date = gantt.dateFromPos(new_pos.x);\n\n if (!(+visibleDate == +new_date && new_pos.y == pos.y)) {\n var posX = null;\n var posY = null;\n\n if (visibleDate) {\n var posX = Math.max(gantt.posFromDate(visibleDate) - gantt.config.task_scroll_offset, 0);\n }\n\n if (pos.y) {\n posY = pos.y;\n }\n\n gantt.scrollTo(posX, posY);\n }\n } // GS-1640: We need to reset the scroll position for the grid if the scrollbar disappeared and\n // the grid and timeline have different scrollbars\n\n\n var gridCell = gantt.$ui.getView(\"grid\");\n\n if (gridCell) {\n var attachedScrollbar = gridCell.$config.scrollY;\n var verticalScrollbar = gantt.$ui.getView(attachedScrollbar);\n\n if (verticalScrollbar) {\n var scrollbarNodeVisible = gantt.utils.dom.isChildOf(verticalScrollbar.$view, gantt.$container);\n\n if (!scrollbarNodeVisible) {\n gridCell.scrollTo(undefined, 0);\n }\n }\n }\n }\n } else {\n gantt.refreshData();\n }\n\n this.callEvent(\"onGanttRender\", []);\n }; //TODO: add layout.resize method that wouldn't trigger data repaint\n\n\n gantt.setSizes = gantt.render;\n\n gantt.getTaskRowNode = function (id) {\n var els = this.$grid_data.childNodes;\n var attribute = this.config.task_attribute;\n\n for (var i = 0; i < els.length; i++) {\n if (els[i].getAttribute) {\n var value = els[i].getAttribute(attribute);\n if (value == id) return els[i];\n }\n }\n\n return null;\n };\n\n gantt.changeLightboxType = function (type) {\n if (this.getLightboxType() == type) return true;\n\n gantt._silent_redraw_lightbox(type);\n };\n\n gantt._get_link_type = function (from_start, to_start) {\n var type = null;\n\n if (from_start && to_start) {\n type = gantt.config.links.start_to_start;\n } else if (!from_start && to_start) {\n type = gantt.config.links.finish_to_start;\n } else if (!from_start && !to_start) {\n type = gantt.config.links.finish_to_finish;\n } else if (from_start && !to_start) {\n type = gantt.config.links.start_to_finish;\n }\n\n return type;\n };\n\n gantt.isLinkAllowed = function (from, to, from_start, to_start) {\n var link = null;\n\n if (_typeof(from) == \"object\") {\n link = from;\n } else {\n link = {\n source: from,\n target: to,\n type: this._get_link_type(from_start, to_start)\n };\n }\n\n if (!link) return false;\n if (!(link.source && link.target && link.type)) return false;\n if (link.source == link.target) return false;\n var res = true; //any custom rules\n\n if (this.checkEvent(\"onLinkValidation\")) res = this.callEvent(\"onLinkValidation\", [link]);\n return res;\n };\n\n gantt._correct_dst_change = function (date, prevOffset, step, unit) {\n var time_unit = helpers.getSecondsInUnit(unit) * step;\n\n if (time_unit > 60 * 60 && time_unit < 60 * 60 * 24) {\n //correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n var offsetChanged = date.getTimezoneOffset() - prevOffset;\n\n if (offsetChanged) {\n date = gantt.date.add(date, offsetChanged, \"minute\");\n }\n }\n\n return date;\n };\n\n gantt.isSplitTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument task=\" + 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 task=\" + task + \" of gantt.isUnscheduledTask. Task object was expected\");\n return !!task.unscheduled || !task.start_date;\n };\n\n gantt._isAllowedUnscheduledTask = function (task) {\n return !!(task.unscheduled && gantt.config.show_unscheduled);\n };\n\n gantt._isTaskInTimelineLimits = function (task) {\n var taskStart = task.start_date ? task.start_date.valueOf() : null;\n var taskEnd = task.end_date ? task.end_date.valueOf() : null;\n return !!(taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf());\n };\n\n gantt.isTaskVisible = function (id) {\n if (!this.isTaskExists(id)) {\n return false;\n }\n\n var task = this.getTask(id);\n\n if (!(this._isAllowedUnscheduledTask(task) || this._isTaskInTimelineLimits(task))) {\n return false;\n }\n\n return !!(this.getGlobalTaskIndex(id) >= 0);\n };\n\n gantt._getProjectEnd = function () {\n if (gantt.config.project_end) {\n return gantt.config.project_end;\n } else {\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.end_date > +b.end_date ? 1 : -1;\n });\n return tasks.length ? tasks[tasks.length - 1].end_date : null;\n }\n };\n\n gantt._getProjectStart = function () {\n if (gantt.config.project_start) {\n return gantt.config.project_start;\n } // use timeline start if project start is not specified\n\n\n if (gantt.config.start_date) {\n return gantt.config.start_date;\n }\n\n if (gantt.getState().min_date) {\n return gantt.getState().min_date;\n } // earliest task start if neither project start nor timeline are specified\n\n\n var tasks = gantt.getTaskByTime();\n tasks = tasks.sort(function (a, b) {\n return +a.start_date > +b.start_date ? 1 : -1;\n });\n return tasks.length ? tasks[0].start_date : null;\n };\n\n var getDefaultTaskDate = function getDefaultTaskDate(item, parent_id) {\n var parentExists = parent_id && parent_id != gantt.config.root_id && gantt.isTaskExists(parent_id);\n var parent = parentExists ? gantt.getTask(parent_id) : false,\n startDate = null;\n\n if (parent) {\n if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: parent.end_date,\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n startDate = parent.start_date;\n }\n } else if (gantt.config.schedule_from_end) {\n startDate = gantt.calculateEndDate({\n start_date: gantt._getProjectEnd(),\n duration: -gantt.config.duration_step,\n task: item\n });\n } else {\n var first = gantt.getTaskByIndex(0);\n startDate = first ? first.start_date ? first.start_date : first.end_date ? gantt.calculateEndDate({\n start_date: first.end_date,\n duration: -gantt.config.duration_step,\n task: item\n }) : null : gantt.config.start_date || gantt.getState().min_date;\n }\n\n gantt.assert(startDate, \"Invalid dates\");\n return new Date(startDate);\n };\n\n gantt._set_default_task_timing = function (task) {\n task.start_date = task.start_date || getDefaultTaskDate(task, gantt.getParent(task));\n task.duration = task.duration || gantt.config.duration_step;\n task.end_date = task.end_date || gantt.calculateEndDate(task);\n };\n\n gantt.createTask = function (item, parent, index) {\n item = item || {};\n if (!gantt.defined(item.id)) item.id = gantt.uid();\n\n if (!item.start_date) {\n item.start_date = getDefaultTaskDate(item, parent);\n }\n\n if (item.text === undefined) {\n item.text = gantt.locale.labels.new_task;\n }\n\n if (item.duration === undefined) {\n item.duration = 1;\n }\n\n if (this.isTaskExists(parent)) {\n this.setParent(item, parent, true);\n var parentObj = this.getTask(parent);\n parentObj.$open = true;\n }\n\n if (!this.callEvent(\"onTaskCreated\", [item])) {\n return null;\n }\n\n if (this.config.details_on_create) {\n //GS-761: assert unique ID\n if (gantt.isTaskExists(item.id)) {\n var task = gantt.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n this.$data.tasksStore.updateItem(item.id, item);\n }\n } else {\n item.$new = true;\n this.silent(function () {\n gantt.$data.tasksStore.addItem(item, index);\n });\n }\n\n this.selectTask(item.id);\n this.refreshData();\n this.showLightbox(item.id);\n } else {\n if (this.addTask(item, parent, index)) {\n this.showTask(item.id);\n this.selectTask(item.id);\n }\n }\n\n return item.id;\n };\n\n gantt._update_flags = function (oldid, newid) {\n // TODO: need a proper way to update all possible flags\n var store = gantt.$data.tasksStore;\n\n if (oldid === undefined) {\n this._lightbox_id = null;\n store.silent(function () {\n store.unselect();\n }); // GS-1522. If we have multiselect, unselect all previously selected tasks\n\n if (this.getSelectedTasks) {\n this._multiselect.reset();\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag) {\n this._tasks_dnd.drag.id = null;\n }\n } else {\n if (this._lightbox_id == oldid) this._lightbox_id = newid; // TODO: probably can be removed\n\n if (store.getSelectedId() == oldid) {\n store.silent(function () {\n store.unselect(oldid);\n store.select(newid);\n });\n }\n\n if (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n this._tasks_dnd.drag.id = newid;\n }\n }\n };\n\n var getTaskTimingMode = function getTaskTimingMode(task, force) {\n var task_type = gantt.getTaskType(task.type);\n var state = {\n type: task_type,\n $no_start: false,\n $no_end: false\n };\n\n if (!force && task_type == task.$rendered_type) {\n state.$no_start = task.$no_start;\n state.$no_end = task.$no_end;\n return state;\n }\n\n if (task_type == gantt.config.types.project) {\n //project duration is always defined by children duration\n state.$no_end = state.$no_start = true;\n } else if (task_type != gantt.config.types.milestone) {\n //tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n state.$no_end = !(task.end_date || task.duration);\n state.$no_start = !task.start_date;\n\n if (gantt._isAllowedUnscheduledTask(task)) {\n state.$no_end = state.$no_start = false;\n }\n }\n\n return state;\n };\n\n gantt._init_task_timing = function (task) {\n var task_mode = getTaskTimingMode(task, true);\n var dirty = task.$rendered_type != task_mode.type;\n var task_type = task_mode.type;\n\n if (dirty) {\n task.$no_start = task_mode.$no_start;\n task.$no_end = task_mode.$no_end;\n task.$rendered_type = task_mode.type;\n }\n\n if (dirty && task_type != this.config.types.milestone) {\n if (task_type == this.config.types.project) {\n //project duration is always defined by children duration\n this._set_default_task_timing(task);\n\n task.$calculate_duration = false; // do not recalculate duration below\n }\n }\n\n if (task_type == this.config.types.milestone) {\n task.end_date = task.start_date;\n }\n\n if (task.start_date && task.end_date && task.$calculate_duration !== false) {\n task.duration = this.calculateDuration(task);\n }\n\n if (!task.$calculate_duration) {\n task.$calculate_duration = true;\n }\n\n if (!task.end_date) {\n task.end_date = task.start_date;\n }\n\n task.duration = task.duration || 0; // GS-1145. We should let tasks to have 0 duration if user wants it\n\n if (this.config.min_duration === 0 && task.duration === 0) {\n task.$no_end = false;\n } // work calendar of task has changed\n\n\n var effectiveCalendar = this.getTaskCalendar(task);\n\n if (task.$effective_calendar && task.$effective_calendar !== effectiveCalendar.id) {\n updateTaskTiming(task);\n\n if (this.config.inherit_calendar && this.isSummaryTask(task)) {\n this.eachTask(function (child) {\n updateTaskTiming(child);\n }, task.id);\n }\n }\n\n task.$effective_calendar = effectiveCalendar.id;\n };\n\n function updateTaskTiming(task) {\n task.$effective_calendar = gantt.getTaskCalendar(task).id;\n task.start_date = gantt.getClosestWorkTime({\n dir: \"future\",\n date: task.start_date,\n unit: gantt.config.duration_unit,\n task: task\n });\n task.end_date = gantt.calculateEndDate(task);\n }\n\n gantt.isSummaryTask = function (task) {\n gantt.assert(task && task instanceof Object, \"Invalid argument task=\" + 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;\n\tprivate _monthCache: Map;\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();\n\t\tthis._monthCache = new Map();\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>>;\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();\n\t\t}\n\n\n\t\tyearCache.set(timestamp, value);\n\t}\n\tclear(): void{\n\t\tthis._cache = new Map>>();\n\t}\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar createCacheObject = require(\"./work_unit_cache\").createCacheObject;\n\nvar LargerUnitsCache = require(\"./work_unit_cache\").LargerUnitsCache;\n\nvar utils = require(\"../../../utils/utils\");\n\nvar DateDurationCache = require(\"./work_unit_cache/date_duration_cache\").DateDurationCache;\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper) {\n this.argumentsHelper = argumentsHelper;\n this.$gantt = gantt;\n this._workingUnitsCache = createCacheObject();\n this._largeUnitsCache = new LargerUnitsCache(this);\n this._dateDurationCache = new DateDurationCache();\n this._worktime = null;\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n}\n\nCalendarWorkTimeStrategy.prototype = {\n units: [\"year\", \"month\", \"week\", \"day\", \"hour\", \"minute\"],\n _clearCaches: function _clearCaches() {\n this._workingUnitsCache.clear();\n\n this._largeUnitsCache.clear();\n\n this._dateDurationCache.clear();\n },\n // cache previously calculated worktime\n _getUnitOrder: function _getUnitOrder(unit) {\n for (var i = 0, len = this.units.length; i < len; i++) {\n if (this.units[i] == unit) return i;\n }\n },\n _resetTimestampCache: function _resetTimestampCache() {\n this._cached_timestamps = {};\n this._cached_timestamps_count = 0;\n },\n _timestamp: function _timestamp(settings) {\n // minor optimization, store calculated timestamps to reduce computations\n // reset cache when number of keys exceeds large number where key lookup may became more expensive than the recalculation\n if (this._cached_timestamps_count > 1000000) {\n this._resetTimestampCache();\n }\n\n var timestamp = null;\n\n if (settings.day || settings.day === 0) {\n timestamp = settings.day;\n } else if (settings.date) {\n var value = String(settings.date.valueOf());\n\n if (this._cached_timestamps[value]) {\n timestamp = this._cached_timestamps[value];\n } else {\n // store worktime datestamp in utc so it could be recognized in different timezones (e.g. opened locally and sent to the export service in different timezone)\n timestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n this._cached_timestamps[value] = timestamp;\n this._cached_timestamps_count++;\n }\n }\n\n return timestamp;\n },\n _checkIfWorkingUnit: function _checkIfWorkingUnit(date, unit) {\n // GS-596: If unit is larger than day or has a custom logic\n if (!this[\"_is_work_\" + unit]) {\n var from = this.$gantt.date[\"\".concat(unit, \"_start\")](new Date(date));\n var to = this.$gantt.date.add(from, 1, unit);\n return this.hasDuration(from, to);\n }\n\n return this[\"_is_work_\" + unit](date);\n },\n //checkings for particular time units\n //methods for month-year-week can be defined, otherwise always return 'true'\n _is_work_day: function _is_work_day(date) {\n var val = this._getWorkHours(date);\n\n if (Array.isArray(val)) {\n return val.length > 0;\n }\n\n return false;\n },\n _is_work_hour: function _is_work_hour(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var value = date.getHours();\n\n for (var i = 0; i < hours.length; i++) {\n if (value >= hours[i].startHour && value < hours[i].endHour) {\n return true;\n }\n }\n\n return false;\n },\n _getTimeOfDayStamp: function _getTimeOfDayStamp(date, dayEnd) {\n var hours = date.getHours();\n\n if (!date.getHours() && !date.getMinutes() && dayEnd) {\n hours = 24;\n }\n\n return hours * 60 * 60 + date.getMinutes() * 60;\n },\n _is_work_minute: function _is_work_minute(date) {\n var hours = this._getWorkHours(date); // [{start: 8*60*60, end: 12*60*60}, {start: 13*60*60, end: 17*60*60}]\n\n\n var checkTime = this._getTimeOfDayStamp(date);\n\n for (var i = 0; i < hours.length; i++) {\n if (checkTime >= hours[i].start && checkTime < hours[i].end) {\n return true;\n }\n }\n\n return false;\n },\n _nextDate: function _nextDate(start, unit, step) {\n return this.$gantt.date.add(start, step, unit);\n },\n _getWorkUnitsBetweenGeneric: function _getWorkUnitsBetweenGeneric(from, to, unit, step) {\n var dateHelper = this.$gantt.date;\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var units = 0;\n var next = null;\n var stepStart, stepEnd; // calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n // and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n // durations must be rounded later\n\n var checkFirst = false;\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n\n if (stepStart.valueOf() != start.valueOf()) {\n checkFirst = true;\n }\n\n var checkLast = false;\n stepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\n if (stepEnd.valueOf() != to.valueOf()) {\n checkLast = true;\n }\n\n var isLastStep = false;\n\n while (start.valueOf() < end.valueOf()) {\n next = this._nextDate(start, unit, step);\n isLastStep = next.valueOf() > end.valueOf();\n\n if (this._isWorkTime(start, unit)) {\n if (checkFirst || checkLast && isLastStep) {\n stepStart = dateHelper[unit + \"_start\"](new Date(start));\n stepEnd = dateHelper.add(stepStart, step, unit);\n }\n\n if (checkFirst) {\n checkFirst = false;\n next = this._nextDate(stepStart, unit, step);\n units += (stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else if (checkLast && isLastStep) {\n checkLast = false;\n units += (end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf());\n } else {\n units++;\n }\n } else {\n var unitOrder = this._getUnitOrder(unit);\n\n var biggerTimeUnit = this.units[unitOrder - 1];\n\n if (biggerTimeUnit && !this._isWorkTime(start, biggerTimeUnit)) {\n next = this._getClosestWorkTimeFuture(start, biggerTimeUnit);\n }\n }\n\n start = next;\n }\n\n return units;\n },\n _getMinutesPerHour: function _getMinutesPerHour(date) {\n var hourStart = this._getTimeOfDayStamp(date);\n\n var hourEnd = this._getTimeOfDayStamp(this._nextDate(date, \"hour\", 1));\n\n if (hourEnd === 0) {\n hourEnd = 24 * 60 * 60;\n }\n\n var worktimes = this._getWorkHours(date);\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (hourStart >= interval.start && hourEnd <= interval.end) {\n return 60; // hour inside a working interval, all hour is a work hour\n } else if (hourStart < interval.end && hourEnd > interval.start) {\n // hour is partially work time\n var duration = Math.min(hourEnd, interval.end) - Math.max(hourStart, interval.start);\n return duration / 60;\n }\n }\n\n return 0;\n },\n _getMinutesPerDay: function _getMinutesPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationMinutes;\n });\n return res;\n },\n getHoursPerDay: function getHoursPerDay(date) {\n var hours = this._getWorkHours(date);\n\n var res = 0;\n hours.forEach(function (interval) {\n res += interval.durationHours;\n });\n return res;\n },\n _getWorkUnitsForRange: function _getWorkUnitsForRange(from, to, unit, step) {\n var total = 0;\n var start = new Date(from),\n end = new Date(to);\n var getUnitsPerDay;\n\n if (unit == \"minute\") {\n getUnitsPerDay = utils.bind(this._getMinutesPerDay, this);\n } else {\n getUnitsPerDay = utils.bind(this.getHoursPerDay, this);\n }\n\n while (start.valueOf() < end.valueOf()) {\n if (end - start > 1000 * 60 * 60 * 24 * 32 && start.getDate() === 0) {\n var units = this._largeUnitsCache.getMinutesPerMonth(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 1, \"month\");\n continue;\n } else if (end - start > 1000 * 60 * 60 * 24 * 16) {\n var weekStart = this.$gantt.date.week_start(new Date(start));\n\n if (start.valueOf() === weekStart.valueOf()) {\n var units = this._largeUnitsCache.getMinutesPerWeek(start);\n\n if (unit == \"hour\") {\n units = units / 60;\n }\n\n total += units;\n start = this.$gantt.date.add(start, 7, \"day\");\n continue;\n }\n } //\tif (this._isWorkTime(start, \"day\")) {\n\n\n total += getUnitsPerDay(start); //\t}\n\n start = this._nextDate(start, \"day\", 1);\n }\n\n return total / step;\n },\n _getMinutesBetweenSingleDay: function _getMinutesBetweenSingleDay(from, to) {\n var range = this._getIntervalTimestamp(from, to);\n\n var worktimes = this._getWorkHours(from);\n\n var result = 0;\n\n for (var i = 0; i < worktimes.length; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n result += (minuteTo - minuteFrom) / 60;\n range.start = minuteTo;\n }\n }\n\n return Math.floor(result);\n },\n _getMinutesBetween: function _getMinutesBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return this._getMinutesBetweenSingleDay(from, to);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd);\n\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd);\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return total;\n }\n },\n // optimized method for calculating work units duration of large time spans\n // implemented for hours and minutes units, bigger time units don't benefit from the optimization so much\n _getHoursBetween: function _getHoursBetween(from, to, unit, step) {\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n var firstDayStart = new Date(start);\n var firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n if (end.valueOf() <= firstDayEnd.valueOf()) {\n return Math.round(this._getMinutesBetweenSingleDay(from, to) / 60);\n } else {\n var lastDayStart = this.$gantt.date.day_start(new Date(end));\n var lastDayEnd = end;\n var startPart = this._getMinutesBetweenSingleDay(firstDayStart, firstDayEnd, unit, step) / 60;\n var endPart = this._getMinutesBetweenSingleDay(lastDayStart, lastDayEnd, unit, step) / 60;\n\n var rangePart = this._getWorkUnitsForRange(firstDayEnd, lastDayStart, unit, step);\n\n var total = startPart + rangePart + endPart;\n return Math.round(total);\n }\n },\n getConfig: function getConfig() {\n return this._worktime;\n },\n _setConfig: function _setConfig(settings) {\n this._worktime = settings;\n\n this._parseSettings();\n\n this._clearCaches();\n },\n _parseSettings: function _parseSettings() {\n var settings = this.getConfig();\n settings.parsed = {\n dates: {},\n hours: null,\n haveCustomWeeks: false,\n customWeeks: {},\n customWeeksRangeStart: null,\n customWeeksRangeEnd: null,\n customWeeksBoundaries: []\n };\n settings.parsed.hours = this._parseHours(settings.hours);\n\n for (var i in settings.dates) {\n settings.parsed.dates[i] = this._parseHours(settings.dates[i]);\n }\n\n if (settings.customWeeks) {\n var minCustomRangeStart = null;\n var maxCustomRangeEnd = null;\n\n for (var i in settings.customWeeks) {\n var customTime = settings.customWeeks[i];\n\n if (customTime.from && customTime.to) {\n var rangeStart = customTime.from;\n var rangeEnd = customTime.to;\n\n if (!minCustomRangeStart || minCustomRangeStart > rangeStart.valueOf()) {\n minCustomRangeStart = rangeStart.valueOf();\n }\n\n if (!maxCustomRangeEnd || maxCustomRangeEnd < rangeEnd.valueOf()) {\n maxCustomRangeEnd = rangeEnd.valueOf();\n }\n\n settings.parsed.customWeeksBoundaries.push({\n from: rangeStart.valueOf(),\n fromReadable: new Date(rangeStart),\n to: rangeEnd.valueOf(),\n toReadable: new Date(rangeEnd),\n name: i\n });\n settings.parsed.haveCustomWeeks = true;\n var currentWeek = settings.parsed.customWeeks[i] = {\n from: customTime.from,\n to: customTime.to,\n hours: this._parseHours(customTime.hours),\n dates: {}\n };\n\n for (var d in customTime.dates) {\n currentWeek.dates[d] = this._parseHours(customTime.dates[d]);\n }\n }\n }\n\n settings.parsed.customWeeksRangeStart = minCustomRangeStart;\n settings.parsed.customWeeksRangeEnd = maxCustomRangeEnd;\n }\n },\n _tryChangeCalendarSettings: function _tryChangeCalendarSettings(payload) {\n var backup = JSON.stringify(this.getConfig());\n payload();\n\n if (!this.hasWorkTime()) {\n //\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n this._setConfig(JSON.parse(backup));\n\n this._clearCaches();\n\n return false;\n }\n\n return true;\n },\n _arraysEqual: function _arraysEqual(a, b) {\n if (a === b) return true;\n if (!a || !b) return false;\n if (a.length != b.length) return false;\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n },\n _compareSettings: function _compareSettings(mySettings, thatSettings) {\n if (!this._arraysEqual(mySettings.hours, thatSettings.hours)) {\n return false;\n }\n\n var myDays = Object.keys(mySettings.dates);\n var otherDates = Object.keys(thatSettings.dates);\n myDays.sort();\n otherDates.sort();\n\n if (!this._arraysEqual(myDays, otherDates)) {\n return false;\n }\n\n for (var i = 0; i < myDays.length; i++) {\n var timestamp = myDays[i];\n var myHours = mySettings.dates[timestamp];\n var otherHours = mySettings.dates[timestamp]; // day settings not equal\n\n if (myHours !== otherHours && // but still can be two arrays with the equivalent hour settings\n !(Array.isArray(myHours) && Array.isArray(otherHours) && this._arraysEqual(myHours, otherHours))) {\n return false;\n }\n }\n\n return true;\n },\n equals: function equals(calendar) {\n if (!(calendar instanceof CalendarWorkTimeStrategy)) {\n return false;\n }\n\n var mySettings = this.getConfig();\n var thatSettings = calendar.getConfig();\n\n if (!this._compareSettings(mySettings, thatSettings)) {\n return false;\n }\n\n if (mySettings.parsed.haveCustomWeeks && thatSettings.parsed.haveCustomWeeks) {\n if (mySettings.parsed.customWeeksBoundaries.length != thatSettings.parsed.customWeeksBoundaries.length) {\n return false;\n }\n\n for (var i in mySettings.parsed.customWeeks) {\n var myWeek = mySettings.parsed.customWeeks[i];\n var thatWeek = thatSettings.parsed.customWeeks[i];\n\n if (!thatWeek) {\n return false;\n }\n\n if (!this._compareSettings(myWeek, thatWeek)) {\n return false;\n }\n }\n } else if (mySettings.parse.haveCustomWeeks !== thatSettings.parsed.haveCustomWeeks) {\n return false;\n }\n\n return true;\n },\n getWorkHours: function getWorkHours() {\n var config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n return this._getWorkHours(config.date, false);\n },\n _getWorkHours: function _getWorkHours(date, parsed) {\n var calendar = this.getConfig();\n\n if (parsed !== false) {\n calendar = calendar.parsed;\n }\n\n if (!date) {\n return calendar.hours;\n }\n\n var dateValue = this._timestamp({\n date: date\n });\n\n if (calendar.haveCustomWeeks) {\n if (calendar.customWeeksRangeStart <= dateValue && calendar.customWeeksRangeEnd > dateValue) {\n for (var i = 0; i < calendar.customWeeksBoundaries.length; i++) {\n if (calendar.customWeeksBoundaries[i].from <= dateValue && calendar.customWeeksBoundaries[i].to > dateValue) {\n calendar = calendar.customWeeks[calendar.customWeeksBoundaries[i].name];\n break;\n }\n }\n }\n }\n\n var hours = true;\n\n if (calendar.dates[dateValue] !== undefined) {\n hours = calendar.dates[dateValue]; //custom day\n } else if (calendar.dates[date.getDay()] !== undefined) {\n hours = calendar.dates[date.getDay()]; //week day\n }\n\n if (hours === true) {\n return calendar.hours;\n } else if (hours) {\n return hours;\n }\n\n return [];\n },\n _getIntervalTimestamp: function _getIntervalTimestamp(from, to) {\n var res = {\n start: 0,\n end: 0\n };\n res.start = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n var endHours = to.getHours();\n\n if (!endHours && !to.getMinutes() && !to.getSeconds() && from.valueOf() < to.valueOf()) {\n endHours = 24;\n }\n\n res.end = endHours * 60 * 60 + to.getMinutes() * 60 + to.getSeconds();\n return res;\n },\n _parseHours: function _parseHours(hours) {\n if (Array.isArray(hours)) {\n var timestampRanges = []; // worktime as seconds range\n\n hours.forEach(function (hour) {\n if (typeof hour === \"number\") {\n timestampRanges.push(hour * 60 * 60);\n } else if (typeof hour === \"string\") {\n // \"12-13\", or \"12:00-13:00\", or \"12:00:00-13:00:00\"\n hour.split(\"-\").map(function (time) {\n return time.trim();\n }).forEach(function (part) {\n var parsed = part.split(\":\").map(function (time) {\n return time.trim();\n });\n var value = parseInt(parsed[0] * 60 * 60);\n\n if (parsed[1]) {\n value += parseInt(parsed[1] * 60);\n }\n\n if (parsed[2]) {\n value += parseInt(parsed[2]);\n }\n\n timestampRanges.push(value);\n });\n }\n });\n var timerangeConfig = [];\n\n for (var i = 0; i < timestampRanges.length; i += 2) {\n var start = timestampRanges[i];\n var end = timestampRanges[i + 1];\n var duration = end - start;\n timerangeConfig.push({\n start: start,\n end: end,\n startHour: Math.floor(start / (60 * 60)),\n startMinute: Math.floor(start / 60),\n endHour: Math.ceil(end / (60 * 60)),\n endMinute: Math.ceil(end / 60),\n durationSeconds: duration,\n durationMinutes: duration / 60,\n durationHours: duration / (60 * 60)\n });\n }\n\n return timerangeConfig;\n } else {\n return hours;\n }\n },\n setWorkTime: function setWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n var hours = settings.hours !== undefined ? settings.hours : true;\n\n var timestamp = this._timestamp(settings);\n\n var calendarConfig = this.getConfig();\n\n if (timestamp !== null) {\n calendarConfig.dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.hours = hours;\n }\n\n if (settings.customWeeks) {\n if (!calendarConfig.customWeeks) {\n calendarConfig.customWeeks = {};\n } // GS-1867. allow setWorkTime to exclude dates in the customWeeks range\n\n\n if (typeof settings.customWeeks == \"string\") {\n if (timestamp !== null) {\n calendarConfig.customWeeks[settings.customWeeks].dates[timestamp] = hours;\n } else if (!settings.customWeeks) {\n calendarConfig.customWeeks[settings.customWeeks].hours = hours;\n }\n } else if (_typeof(settings.customWeeks) === \"object\" && Function.prototype.toString.call(settings.customWeeks.constructor) === \"function Object() { [native code] }\") {\n for (var i in settings.customWeeks) {\n calendarConfig.customWeeks[i] = settings.customWeeks[i];\n }\n }\n }\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n unsetWorkTime: function unsetWorkTime(settings) {\n return this._tryChangeCalendarSettings(utils.bind(function () {\n if (!settings) {\n this.reset_calendar();\n } else {\n var timestamp = this._timestamp(settings);\n\n if (timestamp !== null) {\n delete this.getConfig().dates[timestamp];\n }\n } // Load updated settings and clear work units cache\n\n\n this._parseSettings();\n\n this._clearCaches();\n }, this));\n },\n _isWorkTime: function _isWorkTime(date, unit) {\n // Check if this item has in the cache\n var useCache = true; //unit === \"day\"; // use cache only for days. In case of hours/minutes cache size grows too large and the overhead exceeds the gains\n\n var isWorkUnit = -1;\n var dateKey = null;\n\n if (useCache) {\n // use string keys\n dateKey = String(date.valueOf());\n isWorkUnit = this._workingUnitsCache.getItem(unit, dateKey, date);\n }\n\n if (isWorkUnit == -1) {\n // calculate if not cached\n isWorkUnit = this._checkIfWorkingUnit(date, unit);\n\n if (useCache) {\n this._workingUnitsCache.setItem(unit, dateKey, isWorkUnit, date);\n }\n }\n\n return isWorkUnit;\n },\n isWorkTime: function isWorkTime() {\n var config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._isWorkTime(config.date, config.unit);\n },\n calculateDuration: function calculateDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n if (!config.unit) {\n return false;\n } //return this._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n\n\n var self = this;\n return this._dateDurationCache.getDuration(config.start_date, config.end_date, config.unit, config.step, function () {\n return self._calculateDuration(config.start_date, config.end_date, config.unit, config.step);\n });\n },\n _calculateDuration: function _calculateDuration(from, to, unit, step) {\n var res = 0;\n var sign = 1;\n\n if (from.valueOf() > to.valueOf()) {\n var tmp = to;\n to = from;\n from = tmp;\n sign = -1;\n }\n\n if (unit == \"hour\" && step == 1) {\n res = this._getHoursBetween(from, to, unit, step);\n } else if (unit == \"minute\" && step == 1) {\n // quick calculation for minutes with 1 minute step\n res = this._getMinutesBetween(from, to, unit, step);\n } else {\n res = this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n } // getWorkUnits.. returns decimal durations\n\n\n return sign * Math.round(res);\n },\n hasDuration: function hasDuration() {\n var config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n to = config.end_date,\n unit = config.unit,\n step = config.step;\n\n if (!unit) {\n return false;\n }\n\n var start = new Date(from),\n end = new Date(to);\n step = step || 1;\n\n while (start.valueOf() < end.valueOf()) {\n if (this._isWorkTime(start, unit)) return true;\n start = this._nextDate(start, unit, step);\n }\n\n return false;\n },\n calculateEndDate: function calculateEndDate() {\n var config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n var from = config.start_date,\n duration = config.duration,\n unit = config.unit,\n step = config.step;\n if (!unit) return false;\n var mult = config.duration >= 0 ? 1 : -1;\n duration = Math.abs(duration * 1); //\tvar endDate = this._calculateEndDate(from, duration, unit, step * mult);\n //\treturn endDate;\n\n var self = this;\n return this._dateDurationCache.getEndDate(from, duration, unit, step * mult, function () {\n return self._calculateEndDate(from, duration, unit, step * mult);\n });\n },\n _calculateEndDate: function _calculateEndDate(from, duration, unit, step) {\n if (!unit) return false;\n\n if (step == 1 && unit == \"minute\") {\n return this._calculateMinuteEndDate(from, duration, step);\n } else if (step == -1 && unit == \"minute\") {\n return this._subtractMinuteDate(from, duration, step);\n } else if (step == 1 && unit == \"hour\") {\n return this._calculateHourEndDate(from, duration, step);\n } else {\n var interval = this._addInterval(from, duration, unit, step, null);\n\n return interval.end;\n }\n },\n _addInterval: function _addInterval(start, duration, unit, step, stopAction) {\n var added = 0;\n var current = start;\n var dstShift = false;\n\n while (added < duration && !(stopAction && stopAction(current))) {\n var next = this._nextDate(current, unit, step); // GS-1501. Correct hours after DST change\n\n\n if (unit == \"day\") {\n dstShift = dstShift || !current.getHours() && next.getHours();\n\n if (dstShift) {\n next.setHours(0);\n\n if (next.getHours()) {// the day when the timezone is changed, try to correct hours next time\n } else {\n dstShift = false;\n }\n }\n }\n\n var dateValue = new Date(next.valueOf() + 1);\n\n if (step > 0) {\n dateValue = new Date(next.valueOf() - 1);\n }\n\n var workTimeCheck = this._isWorkTime(dateValue, unit);\n\n if (workTimeCheck && !dstShift) {\n added++;\n }\n\n current = next;\n }\n\n return {\n end: current,\n start: start,\n added: added\n };\n },\n _addHoursUntilDayEnd: function _addHoursUntilDayEnd(from, duration) {\n var dayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(from)), 1, \"day\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, dayEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeHours = (minuteTo - minuteFrom) / (60 * 60);\n\n if (rangeHours > left) {\n rangeHours = left;\n minuteTo = minuteFrom + left * 60 * 60;\n }\n\n var addHours = Math.round((minuteTo - minuteFrom) / (60 * 60));\n added += addHours;\n left -= addHours;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = dayEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _calculateHourEndDate: function _calculateHourEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n\n var interval = this._addHoursUntilDayEnd(start, duration);\n\n added = interval.added;\n start = interval.end;\n var durationLeft = duration - added;\n\n if (durationLeft) {\n var current = start;\n\n while (added < duration) {\n var next = this._nextDate(current, \"day\", step); // reset to day start in case DST switch happens in the process\n\n\n next.setHours(0);\n next.setMinutes(0);\n next.setSeconds(0);\n var hoursPerDay = 0;\n\n if (step > 0) {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() - 1));\n } else {\n hoursPerDay = this.getHoursPerDay(new Date(next.valueOf() + 1));\n }\n\n if (added + hoursPerDay >= duration) {\n break;\n } else {\n added += hoursPerDay;\n }\n\n current = next;\n }\n\n start = current;\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n interval = this._addHoursUntilDayEnd(start, durationLeft);\n start = interval.end;\n }\n\n return start;\n },\n _addMinutesUntilHourEnd: function _addMinutesUntilHourEnd(from, duration) {\n if (from.getMinutes() === 0) {\n // already at hour end\n return {\n added: 0,\n end: new Date(from)\n };\n }\n\n var hourEnd = this.$gantt.date.add(this.$gantt.date.hour_start(new Date(from)), 1, \"hour\");\n var added = 0;\n var left = duration;\n\n var range = this._getIntervalTimestamp(from, hourEnd);\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = 0; i < worktimes.length && added < duration; i++) {\n var interval = worktimes[i];\n\n if (range.end >= interval.start && range.start <= interval.end) {\n var minuteFrom = Math.max(interval.start, range.start);\n var minuteTo = Math.min(interval.end, range.end);\n var rangeMinutes = (minuteTo - minuteFrom) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom + left * 60;\n } // TODO: verify testcase https://dhtmlxsupport.teamwork.com/desk/tickets/9625700/messages\n\n /*if (rangeMinutes === 0) {\n \trangeMinutes = left;\n \tminuteTo = minuteFrom + (left * 60);\n }*/\n\n\n var addMinutes = Math.round((minuteTo - minuteFrom) / 60);\n left -= addMinutes;\n added += addMinutes;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = hourEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinutesUntilHourStart: function _subtractMinutesUntilHourStart(from, duration) {\n var hourStart = this.$gantt.date.hour_start(new Date(from));\n var added = 0;\n var left = duration;\n var hourStartTimestamp = hourStart.getHours() * 60 * 60 + hourStart.getMinutes() * 60 + hourStart.getSeconds();\n var initialDateTimestamp = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = worktimes.length - 1; i >= 0 && added < duration; i--) {\n var interval = worktimes[i];\n\n if (initialDateTimestamp > interval.start && hourStartTimestamp <= interval.end) {\n var minuteFrom = Math.min(initialDateTimestamp, interval.end);\n var minuteTo = Math.max(hourStartTimestamp, interval.start); //\tvar minuteFrom = Math.max(interval.start, currentHour.start);\n //\tvar minuteTo = Math.min(interval.end, currentHour.end);\n\n var rangeMinutes = (minuteFrom - minuteTo) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom - left * 60;\n } // TODO: verify testcase https://dhtmlxsupport.teamwork.com/desk/tickets/9625700/messages\n\n /*if (rangeMinutes === 0) {\n \trangeMinutes = left;\n \tminuteTo = minuteFrom - (left * 60);\n }*/\n\n\n var addMinutes = Math.abs(Math.round((minuteFrom - minuteTo) / 60));\n left -= addMinutes;\n added += addMinutes;\n initialDateTimestamp = minuteTo;\n }\n }\n\n var intervalEnd = hourStart;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, initialDateTimestamp);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinuteDate: function _subtractMinuteDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || -1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var minutePrecision = this._isMinutePrecision(start);\n\n var addedInterval = this._subtractMinutesUntilHourStart(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start));\n var iterateFromDayEnd = false;\n\n if (start.valueOf() === dayStart.valueOf()) {\n dayStart = this.$gantt.date.add(dayStart, -1, \"day\");\n iterateFromDayEnd = true;\n } //var dayStartTimestamp = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n\n var dayEnd = new Date(dayStart.getFullYear(), dayStart.getMonth(), dayStart.getDate(), 23, 59, 59, 999).valueOf();\n\n if (dayEnd !== calculatedDay) {\n daySchedule = this._getWorkHours(dayStart);\n minutesInDay = this._getMinutesPerDay(dayStart);\n calculatedDay = dayEnd;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start, iterateFromDayEnd);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n\n if (daySchedule[daySchedule.length - 1].end <= timestamp) {\n if (left > minutesInDay) {\n added += minutesInDay;\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n var prevInterval = null;\n\n for (var i = daySchedule.length - 1; i >= 0; i--) {\n if (daySchedule[i].start < timestamp - 1 && daySchedule[i].end >= timestamp - 1) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n prevInterval = daySchedule[i - 1];\n break;\n }\n }\n\n if (isWorkHour) {\n // we're at the end of worktime interval and subtracting more than the duration of the interval\n // -> subtract the duration of the interval and move to the start of the interval (we're moving from end)\n if (timestamp === workInterval.end && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, -workInterval.durationMinutes, \"minute\");\n } // worktime is set in whole hours (no intervals like 9:15-10:00)\n // the amount we need to subtract lies inside the interval\n else if (!minutePrecision && left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else if (minutePrecision) {\n // GS-2129. If the working time is set in minutes, we accumulate the working time in minutes from right to left\n // duration we need to subtract lies completely inside the work interval\n if (left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else {\n // we need to go trough multiple work intervals to subtract needed time\n added += timestamp / 60 - workInterval.startMinute;\n\n if (prevInterval) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, prevInterval.end);\n } else {\n start = this.$gantt.date.day_start(start);\n }\n }\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n start = this._nextDate(start, \"hour\", step);\n } else {\n addedInterval = this._subtractMinutesUntilHourStart(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n if (start.getHours() === 0 && start.getMinutes() === 0 && start.getSeconds() === 0) {\n var prev = this._getClosestWorkTimePast(start, \"hour\");\n\n if (prev.valueOf() === start.valueOf()) {\n var prev = this.$gantt.date.add(start, -1, \"day\");\n\n var times = this._getWorkHours(prev);\n\n if (times.length) {\n var lastInterval = times[times.length - 1];\n prev.setSeconds(lastInterval.durationSeconds);\n }\n }\n\n start = prev;\n } else {\n start = this._getClosestWorkTimePast(new Date(start - 1), \"hour\");\n }\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._subtractMinutesUntilHourStart(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n _calculateMinuteEndDate: function _calculateMinuteEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._addMinutesUntilHourEnd(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n var minutePrecision = this._isMinutePrecision(start);\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n if (dayStart !== calculatedDay) {\n daySchedule = this._getWorkHours(start);\n minutesInDay = this._getMinutesPerDay(start);\n calculatedDay = dayStart;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(this.$gantt.date.day_start(start), 1, \"day\");\n continue;\n }\n\n if (daySchedule[0].start >= timestamp) {\n if (left >= minutesInDay) {\n added += minutesInDay;\n\n if (left == minutesInDay) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, daySchedule[daySchedule.length - 1].end);\n break;\n } else {\n start = this.$gantt.date.add(start, 1, \"day\");\n start = this.$gantt.date.day_start(start);\n }\n\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = 0; i < daySchedule.length; i++) {\n if (daySchedule[i].start <= timestamp && daySchedule[i].end > timestamp) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.start && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, workInterval.durationMinutes, \"minute\");\n } else if (left <= workInterval.endMinute - timestamp / 60) {\n added += left;\n start = this.$gantt.date.add(start, left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour; // when the working time settings are set in minutes move to the next minutes\n\n if (minutePrecision) {\n start = this.$gantt.date.add(start, minutesInHour, \"minute\");\n } else {\n start = this._nextDate(start, \"hour\", step);\n }\n } else {\n addedInterval = this._addMinutesUntilHourEnd(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n start = this._getClosestWorkTimeFuture(start, \"hour\");\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._addMinutesUntilHourEnd(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n getClosestWorkTime: function getClosestWorkTime() {\n var settings = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n return this._getClosestWorkTime(settings.date, settings.unit, settings.dir);\n },\n _getClosestWorkTime: function _getClosestWorkTime(inputDate, unit, direction) {\n var result = new Date(inputDate);\n\n if (this._isWorkTime(result, unit)) {\n return result;\n }\n\n result = this.$gantt.date[unit + '_start'](result);\n\n if (direction == 'any' || !direction) {\n var closestFuture = this._getClosestWorkTimeFuture(result, unit);\n\n var closestPast = this._getClosestWorkTimePast(result, unit);\n\n if (Math.abs(closestFuture - inputDate) <= Math.abs(inputDate - closestPast)) {\n result = closestFuture;\n } else {\n result = closestPast;\n }\n } else if (direction == \"past\") {\n result = this._getClosestWorkTimePast(result, unit);\n } else {\n result = this._getClosestWorkTimeFuture(result, unit);\n }\n\n return result;\n },\n _getClosestWorkTimeFuture: function _getClosestWorkTimeFuture(date, unit) {\n return this._getClosestWorkTimeGeneric(date, unit, 1);\n },\n _getClosestWorkTimePast: function _getClosestWorkTimePast(date, unit) {\n var result = this._getClosestWorkTimeGeneric(date, unit, -1); // should return the end of the closest work interval\n\n\n return this.$gantt.date.add(result, 1, unit);\n },\n _findClosestTimeInDay: function _findClosestTimeInDay(date, direction, worktimes) {\n var start = new Date(date);\n var resultDate = null;\n var fromDayEnd = false;\n\n if (!this._getWorkHours(start).length) {\n start = this._getClosestWorkTime(start, \"day\", direction < 0 ? \"past\" : \"future\");\n\n if (direction < 0) {\n start = new Date(start.valueOf() - 1);\n fromDayEnd = true;\n }\n\n worktimes = this._getWorkHours(start);\n }\n\n var value = this._getTimeOfDayStamp(start);\n\n if (fromDayEnd) {\n value = this._getTimeOfDayStamp(new Date(start.valueOf() + 1), fromDayEnd);\n }\n\n if (direction > 0) {\n for (var i = 0; i < worktimes.length; i++) {\n if (worktimes[i].start >= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].start);\n break;\n }\n }\n } else {\n for (var i = worktimes.length - 1; i >= 0; i--) {\n if (worktimes[i].end <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, worktimes[i].end);\n break;\n } else if (worktimes[i].end > value && worktimes[i].start <= value) {\n resultDate = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, value);\n break;\n }\n }\n }\n\n return resultDate;\n },\n _getClosestWorkMinute: function _getClosestWorkMinute(date, unit, direction) {\n var start = new Date(date);\n\n var worktimes = this._getWorkHours(start);\n\n var resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n\n if (!resultDate) {\n start = this.calculateEndDate(start, direction, \"day\");\n\n if (direction > 0) {\n start = this.$gantt.date.day_start(start);\n } else {\n start = this.$gantt.date.day_start(start);\n start = this.$gantt.date.add(start, 1, \"day\");\n start = new Date(start.valueOf() - 1);\n }\n\n worktimes = this._getWorkHours(start);\n resultDate = this._findClosestTimeInDay(start, direction, worktimes);\n }\n\n if (direction < 0) {\n // getClosestWorkTimePast adds one time unit to the result date after this\n resultDate = this.$gantt.date.add(resultDate, -1, unit);\n }\n\n return resultDate;\n },\n _getClosestWorkTimeGeneric: function _getClosestWorkTimeGeneric(date, unit, increment) {\n if (unit === \"hour\" || unit === \"minute\") {\n return this._getClosestWorkMinute(date, unit, increment);\n }\n\n var unitOrder = this._getUnitOrder(unit),\n biggerTimeUnit = this.units[unitOrder - 1];\n\n var result = date; // be extra sure we won't fall into infinite loop, 3k seems big enough\n\n var maximumLoop = 3000,\n count = 0;\n\n while (!this._isWorkTime(result, unit)) {\n if (biggerTimeUnit && !this._isWorkTime(result, biggerTimeUnit)) {\n // if we look for closest work hour and detect a week-end - first find the closest work day,\n // and continue iterations after that\n if (increment > 0) {\n result = this._getClosestWorkTimeFuture(result, biggerTimeUnit);\n } else {\n result = this._getClosestWorkTimePast(result, biggerTimeUnit);\n }\n\n if (this._isWorkTime(result, unit)) {\n break;\n }\n }\n\n count++;\n\n if (count > maximumLoop) {\n this.$gantt.assert(false, \"Invalid working time check\");\n return false;\n }\n\n var tzOffset = result.getTimezoneOffset();\n result = this.$gantt.date.add(result, increment, unit);\n result = this.$gantt._correct_dst_change(result, tzOffset, increment, unit);\n\n if (this.$gantt.date[unit + '_start']) {\n result = this.$gantt.date[unit + '_start'](result);\n }\n }\n\n return result;\n },\n\n /**\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 _isMinutePrecision: function _isMinutePrecision(date) {\n var minutePrecision = false;\n\n this._getWorkHours(date).forEach(function (interval) {\n if (interval.startMinute % 60 || interval.endMinute % 60) {\n minutePrecision = true;\n }\n });\n\n return minutePrecision;\n }\n};\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../../utils/utils\");\n\nfunction WorkTimeCalendarMerger() {}\n\nWorkTimeCalendarMerger.prototype = {\n /**\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 \" + resp.xmlDoc.responseURL + \", server returns 404\");\n return;\n }\n\n if (gantt.$destroyed) {\n return;\n }\n\n this.callEvent(\"onBeforeParse\", []);\n if (!type) type = \"json\";\n this.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n var raw = resp.xmlDoc.responseText;\n var data = this[type].parse(raw, resp);\n\n this._process_loading(data);\n };\n\n function attachAssignmentsToTasks(tasks, assignments) {\n var assignmentsByTasks = {};\n assignments.forEach(function (a) {\n if (!assignmentsByTasks[a.task_id]) {\n assignmentsByTasks[a.task_id] = [];\n }\n\n assignmentsByTasks[a.task_id].push(a);\n });\n tasks.forEach(function (t) {\n t[gantt.config.resource_property] = assignmentsByTasks[t.id] || [];\n });\n }\n\n gantt._process_loading = function (data) {\n if (data.collections) this._load_collections(data.collections);\n\n if (data.resources && this.$data.resourcesStore) {\n this.$data.resourcesStore.parse(data.resources);\n }\n\n var tasks = data.data || data.tasks;\n\n if (data.assignments) {\n attachAssignmentsToTasks(tasks, data.assignments);\n }\n\n this.$data.tasksStore.parse(tasks);\n var links = data.links || (data.collections ? data.collections.links : []);\n this.$data.linksStore.parse(links); //this._sync_links();\n\n this.callEvent(\"onParse\", []);\n this.render();\n };\n\n gantt._load_collections = function (collections) {\n var collections_loaded = false;\n\n for (var key in collections) {\n if (collections.hasOwnProperty(key)) {\n collections_loaded = true;\n var collection = collections[key]; // GS-1728. Create an empty serverList if it doesn't exist\n\n this.serverList[key] = this.serverList[key] || [];\n var arr = this.serverList[key];\n if (!arr) continue;\n arr.splice(0, arr.length); //clear old options\n\n for (var j = 0; j < collection.length; j++) {\n var option = collection[j];\n var obj = this.copy(option);\n obj.key = obj.value; // resulting option object\n\n for (var option_key in option) {\n if (option.hasOwnProperty(option_key)) {\n if (option_key == \"value\" || option_key == \"label\") continue;\n obj[option_key] = option[option_key]; // obj['value'] = option['value']\n }\n }\n\n arr.push(obj);\n }\n }\n }\n\n if (collections_loaded) this.callEvent(\"onOptionsLoad\", []);\n };\n\n gantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n return !task.$ignore;\n });\n\n function jsonParseError(data) {\n gantt.assert(false, \"Can't parse data: incorrect value of gantt.parse or gantt.load method. \" + \"Actual argument value: \" + JSON.stringify(data));\n throw new Error(\"Invalid argument for gantt.parse or gantt.load. An object or a JSON string of format https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json is expected. Actual argument value: \" + JSON.stringify(data));\n }\n\n gantt.json = {\n parse: function parse(data) {\n if (!data) {\n jsonParseError(data);\n }\n\n if (typeof data == \"string\") {\n if ((typeof JSON === \"undefined\" ? \"undefined\" : _typeof(JSON)) != undefined) {\n try {\n data = JSON.parse(data);\n } catch (e) {\n jsonParseError(data);\n }\n } else {\n gantt.assert(false, \"JSON is not supported\");\n }\n }\n\n if (!data.data && !data.tasks) {\n jsonParseError(data);\n }\n\n if (data.dhx_security) gantt.security_key = data.dhx_security;\n return data;\n },\n serializeTask: function serializeTask(task) {\n return this._copyObject(task);\n },\n serializeLink: function serializeLink(link) {\n return this._copyLink(link);\n },\n _copyLink: function _copyLink(obj) {\n var copy = {};\n\n for (var key in obj) {\n copy[key] = obj[key];\n }\n\n return copy;\n },\n _copyObject: function _copyObject(obj) {\n var copy = {};\n\n for (var key in obj) {\n if (key.charAt(0) == \"$\") continue;\n copy[key] = obj[key];\n\n if (helpers.isDate(copy[key])) {\n copy[key] = gantt.defined(gantt.templates.xml_format) ? gantt.templates.xml_format(copy[key]) : gantt.templates.format_date(copy[key]);\n }\n }\n\n return copy;\n },\n serialize: function serialize() {\n var tasks = [];\n var links = [];\n gantt.eachTask(function (obj) {\n gantt.resetProjectDates(obj);\n tasks.push(this.serializeTask(obj));\n }, gantt.config.root_id, this);\n var rawLinks = gantt.getLinks();\n\n for (var i = 0; i < rawLinks.length; i++) {\n links.push(this.serializeLink(rawLinks[i]));\n }\n\n return {\n data: tasks,\n links: links\n };\n }\n };\n /*\n \n \t\n \t\tMy task 1\n \t\t16.08.2013\n \t\t22.08.2013\n \t\n \t\n \t\t\n \t\t\t\n \t\t\n \t\n \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 \"\";\n },\n _copyObject: function _copyObject(obj) {\n return \"\";\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 \"\" + tasks.join(\"\") + \"\" + links.join(\"\") + \"\";\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 = dd.drag_id,\n itemHeight = grid.getItemHeight(id),\n itemTop = grid.getItemTop(id);\n var pos = domHelpers.getNodePosition(grid.$grid_data),\n pointerPosition = parseInt(dd.marker.style.top, 10),\n markerStartPosition = itemTop + pos.y,\n marker_height = 0,\n minPointerPosition = config.min_task_grid_row_height;\n marker_height = pointerPosition - markerStartPosition;\n\n if (marker_height < minPointerPosition) {\n marker_height = minPointerPosition;\n }\n\n dd.marker.style.left = pos.x + \"px\";\n dd.marker.style.top = markerStartPosition - 1 + \"px\";\n dd.marker.style.height = Math.abs(marker_height) + 1 + \"px\";\n dd.marker_height = marker_height;\n grid.callEvent(\"onRowResize\", [id, store.getItem(id), marker_height + itemHeight]);\n return true;\n }, gantt),\n row_drag_end: gantt.bind(function (dnd, obj, e) {\n var store = grid.$config.rowStore;\n var dd = dnd.config;\n var id = dd.drag_id,\n item = store.getItem(id),\n oldItemHeight = grid.getItemHeight(id);\n var finalHeight = dd.marker_height;\n if (grid.callEvent(\"onBeforeRowResizeEnd\", [id, item, finalHeight]) === false) return;\n if (item.row_height == finalHeight) return;\n item.row_height = finalHeight;\n gantt.updateTask(id);\n grid.callEvent(\"onAfterRowResize\", [id, item, oldItemHeight, finalHeight]);\n this.render();\n }, gantt)\n }; // calls the initialization of the D'n'D events for resize elements\n\n var _init_resize = function _init_resize() {\n var DnD = gantt.$services.getService(\"dnd\");\n var config = grid.$getConfig();\n var dnd = new DnD(grid.$grid_data, {\n updates_per_second: 60\n });\n if (gantt.defined(config.dnd_sensitivity)) dnd.config.sensitivity = config.dnd_sensitivity;\n dnd.attachEvent(\"onBeforeDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_before_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onAfterDragStart\", function (obj, e) {\n return _task_grid_row_resize.row_after_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragMove\", function (obj, e) {\n return _task_grid_row_resize.row_drag_move(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragEnd\", function (obj, e) {\n return _task_grid_row_resize.row_drag_end(dnd, obj, e);\n });\n };\n\n return {\n init: _init_resize\n };\n}\n\nmodule.exports = createRowResizer;","function createHelper(view) {\n var cachedRowHeight = -1;\n var canUseSimpleCalc = -1;\n return {\n resetCache: function resetCache() {\n cachedRowHeight = -1;\n canUseSimpleCalc = -1;\n },\n _getRowHeight: function _getRowHeight() {\n if (cachedRowHeight === -1) {\n cachedRowHeight = view.$getConfig().row_height;\n }\n\n return cachedRowHeight;\n },\n _refreshState: function _refreshState() {\n this.resetCache();\n canUseSimpleCalc = true;\n var store = view.$config.rowStore;\n\n if (!store) {\n return;\n }\n\n var globalRowHeight = this._getRowHeight();\n\n for (var i = 0; i < store.fullOrder.length; i++) {\n var item = store.getItem(store.fullOrder[i]); // GS-1491: ignore the task when it is filtered:\n\n if (!item) {\n continue;\n }\n\n if (item.row_height && item.row_height !== globalRowHeight) {\n canUseSimpleCalc = false;\n break;\n }\n }\n },\n canUseSimpleCalculation: function canUseSimpleCalculation() {\n if (canUseSimpleCalc === -1) {\n this._refreshState();\n }\n\n return canUseSimpleCalc;\n },\n\n /**\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;","var domHelpers = require(\"../utils/dom_helpers\");\n\nfunction createResizer(gantt, grid) {\n // renders resize elements in the grid header\n var _render_grid_header_resize = function _render_grid_header_resize() {\n var columns = grid.getGridColumns(),\n config = grid.$getConfig(),\n width = 0,\n totalWidth = grid.$config.width,\n lineHeigth = config.scale_height;\n\n for (var i = 0; i < columns.length; i++) {\n var col = columns[i];\n var pos;\n width += col.width;\n\n if (config.rtl) {\n pos = totalWidth - width;\n } else {\n pos = width;\n }\n\n if (col.resize) {\n var resize_el = document.createElement(\"div\");\n resize_el.className = \"gantt_grid_column_resize_wrap\";\n resize_el.style.top = \"0px\";\n resize_el.style.height = lineHeigth + \"px\";\n resize_el.innerHTML = \"
\";\n resize_el.setAttribute(config.grid_resizer_column_attribute, i);\n resize_el.setAttribute(\"column_index\", i); // hardcoded for backward compatibility\n\n gantt._waiAria.gridSeparatorAttr(resize_el);\n\n grid.$grid_scale.appendChild(resize_el);\n resize_el.style.left = Math.max(0, pos) + \"px\";\n }\n }\n };\n\n var _grid_resize = {\n column_before_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var el = domHelpers.locateAttribute(e, config.grid_resizer_column_attribute);\n if (!el) return false;\n\n if (!domHelpers.closest(el, \".gantt_grid_column_resize_wrap\")) {\n // column resize should work only when we use the resizer\n return false;\n }\n\n var column_index = this.locate(e, config.grid_resizer_column_attribute),\n column = grid.getGridColumns()[column_index];\n if (grid.callEvent(\"onColumnResizeStart\", [column_index, column]) === false) return false;\n }, gantt),\n column_after_start: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var column_index = this.locate(e, config.grid_resizer_column_attribute);\n dnd.config.marker.innerHTML = \"\";\n dnd.config.marker.className += \" gantt_grid_resize_area\";\n dnd.config.marker.style.height = grid.$grid.offsetHeight + \"px\";\n dnd.config.marker.style.top = \"0px\";\n dnd.config.drag_index = column_index;\n }, gantt),\n column_drag_move: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var dd = dnd.config,\n columns = grid.getGridColumns();\n var index = parseInt(dd.drag_index, 10);\n var target_column = columns[index];\n var pos = domHelpers.getNodePosition(grid.$grid_scale),\n pointerPosition = parseInt(dd.marker.style.left, 10),\n minPointerPosition = target_column.min_width ? target_column.min_width : config.min_grid_column_width,\n maxPointerPosition = grid.$grid_data.offsetWidth,\n // - config.min_grid_column_width * (columns.length - dd.drag_index - 2),// 1 for current column + 1 for last column\n markerStartPosition = 0,\n marker_width = 0;\n /*\tif(config.rtl){\n \t\tindex = columns.length - 1 - index;\n \t\tcolumns = columns.reverse();\n \t}*/\n\n if (!config.rtl) {\n pointerPosition -= pos.x - 1;\n } else {\n pointerPosition = pos.x + pos.width - 1 - pointerPosition;\n } //pointerPosition -= pos.x - 1;\n\n\n for (var i = 0; i < index; i++) {\n minPointerPosition += columns[i].width;\n markerStartPosition += columns[i].width;\n }\n\n if (pointerPosition < minPointerPosition) {\n pointerPosition = minPointerPosition;\n }\n\n if (config.keep_grid_width) {\n var limit_max = 0;\n\n for (var i = index + 1; i < columns.length; i++) {\n if (columns[i].min_width) maxPointerPosition -= columns[i].min_width;else if (config.min_grid_column_width) maxPointerPosition -= config.min_grid_column_width;\n if (columns[i].max_width && limit_max !== false) limit_max += columns[i].max_width;else limit_max = false;\n } // we have to restrict min value if only ALL right-side columns have 'max_width' field\n\n\n if (limit_max) {\n minPointerPosition = grid.$grid_data.offsetWidth - limit_max;\n }\n\n if (pointerPosition < minPointerPosition) {\n pointerPosition = minPointerPosition;\n }\n\n if (pointerPosition > maxPointerPosition) {\n pointerPosition = maxPointerPosition;\n }\n } else if (!grid.$config.scrollable) {\n var targetWidth = pointerPosition;\n var maxWidth = gantt.$container.offsetWidth;\n var rightColumnsWidth = 0; // 25 is a scrollbar width. due to GS-1314 fix, the grid should always be visible\n // because of that, the internal grid width can be larger than the visible grid width\n\n if (grid.$grid_data.offsetWidth <= maxWidth - 25) {\n for (var i = index + 1; i < columns.length; i++) {\n rightColumnsWidth += columns[i].width;\n }\n } else {\n // GS-627. When the grid is not scrollable and occupies almost all Gantt container's width\n for (var i = index + 1; i >= 0; i--) {\n rightColumnsWidth += columns[i].width;\n }\n\n rightColumnsWidth = maxWidth - rightColumnsWidth;\n } // in case if something went wrong in the previous part\n\n\n if (rightColumnsWidth > maxWidth) {\n rightColumnsWidth -= maxWidth;\n } // prevent grid from occupying the whole layout cell, which would disable the timeline\n\n\n var parentLayout = grid.$parent.$parent;\n\n if (parentLayout && parentLayout.$config.mode == \"y\") {\n var parentWidth = parentLayout.$lastSize.x;\n maxWidth = Math.min(maxWidth, parentWidth - (parentLayout.$cells.length - 1));\n }\n\n if (targetWidth + rightColumnsWidth > maxWidth) {\n pointerPosition = maxWidth - rightColumnsWidth;\n }\n }\n\n dd.left = pointerPosition - 1; // -1 for border\n\n marker_width = Math.abs(pointerPosition - markerStartPosition); // column.max_width - maximum width of the column, user defined\n\n if (target_column.max_width && marker_width > target_column.max_width) marker_width = target_column.max_width;\n\n if (config.rtl) {\n markerStartPosition = pos.width - markerStartPosition + 2 - marker_width;\n }\n\n dd.marker.style.top = pos.y + \"px\";\n dd.marker.style.left = pos.x - 1 + markerStartPosition + \"px\";\n dd.marker.style.width = marker_width + \"px\";\n grid.callEvent(\"onColumnResize\", [index, columns[index], marker_width - 1]);\n return true;\n }, gantt),\n column_drag_end: gantt.bind(function (dnd, obj, e) {\n var config = grid.$getConfig();\n var columns = grid.getGridColumns(),\n columns_width = 0,\n index = parseInt(dnd.config.drag_index, 10),\n target_column = columns[index]; // var colIndex = index;\n\n /*if(config.rtl){\n \tcolIndex = columns.length - 1 - target_index;\n \tcolumns = columns.reverse();\n }*/\n\n for (var i = 0; i < index; i++) {\n columns_width += columns[i].width;\n }\n\n var final_width = target_column.min_width && dnd.config.left - columns_width < target_column.min_width ? target_column.min_width : dnd.config.left - columns_width;\n if (target_column.max_width && target_column.max_width < final_width) // TODO: probably can be omitted\n final_width = target_column.max_width;\n if (grid.callEvent(\"onColumnResizeEnd\", [index, target_column, final_width]) === false) return;\n if (target_column.width == final_width) return;\n target_column.width = final_width;\n\n if (config.keep_grid_width) {\n columns_width = config.grid_width;\n } else {\n // in other case we set a new grid width and call gantt render\n for (var i = index, l = columns.length; i < l; i++) {\n columns_width += columns[i].width;\n }\n }\n\n grid.callEvent(\"onColumnResizeComplete\", [columns, grid._setColumnsWidth(columns_width, index)]);\n\n if (!grid.$config.scrollable) {\n gantt.$layout._syncCellSizes(grid.$config.group, {\n value: config.grid_width,\n isGravity: false\n });\n } //grid.callEvent(\"onColumnResizeComplete\", [columns, columns_width]);\n\n\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_scale, {\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 _grid_resize.column_before_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onAfterDragStart\", function (obj, e) {\n return _grid_resize.column_after_start(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragMove\", function (obj, e) {\n return _grid_resize.column_drag_move(dnd, obj, e);\n });\n dnd.attachEvent(\"onDragEnd\", function (obj, e) {\n return _grid_resize.column_drag_end(dnd, obj, e);\n });\n };\n\n return {\n init: _init_resize,\n doOnRender: _render_grid_header_resize\n };\n}\n\nmodule.exports = createResizer;","var Grid = require(\"./ui/grid/grid\");\n\nmodule.exports = function (gantt) {\n require(\"./grid_column_api.gpl\")(gantt);\n\n Grid.prototype.getGridColumns = function () {\n var config = this.$getConfig();\n var columns = config.columns,\n visibleColumns = [];\n\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].hide) visibleColumns.push(columns[i]);\n }\n\n return visibleColumns;\n };\n};","module.exports = function (gantt) {\n var TreeDataStore = require(\"./datastore/treedatastore\");\n\n var loadedBranches = {};\n gantt.attachEvent(\"onClearAll\", function () {\n loadedBranches = {};\n });\n var oldHasChildren = TreeDataStore.prototype.hasChild;\n\n gantt.$data.tasksStore.hasChild = function (id) {\n if (!gantt.config.branch_loading) {\n return oldHasChildren.call(this, id);\n } else {\n if (oldHasChildren.call(this, id)) return true;\n\n if (this.exists(id)) {\n return this.getItem(id)[gantt.config.branch_loading_property];\n }\n }\n\n return false;\n };\n\n function needLoading(id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n var alreadyLoaded = !!loadedBranches[id]; // call ajax only if branch has children\n\n if (!alreadyLoaded && !gantt.getChildren(id).length && gantt.hasChild(id)) {\n return true;\n }\n }\n\n return false;\n }\n\n gantt.attachEvent(\"onTaskOpened\", function (id) {\n if (gantt.config.branch_loading && gantt._load_url) {\n // call ajax only if branch has children\n if (needLoading(id)) {\n var url = gantt._load_url;\n url = url.replace(/(\\?|&)?parent_id=.+&?/, \"\");\n var param = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n var y = gantt.getScrollState().y || 0;\n var requestData = {\n taskId: id,\n url: url + param + \"parent_id=\" + encodeURIComponent(id)\n };\n\n if (gantt.callEvent(\"onBeforeBranchLoading\", [requestData]) === false) {\n return;\n }\n\n gantt.load(requestData.url, this._load_type, function () {\n if (y) {\n gantt.scrollTo(null, y);\n }\n\n gantt.callEvent(\"onAfterBranchLoading\", [requestData]);\n });\n loadedBranches[id] = true;\n }\n }\n });\n};","export default function(gantt: any){\n\n\tgantt.ext = gantt.ext || {};\n\tgantt.config.show_empty_state = false;\n\n\tgantt.ext.emptyStateElement = gantt.ext.emptyStateElement || {\n\t\tisEnabled() {\n\t\t\treturn gantt.config.show_empty_state === true;\n\t\t},\n\t\tisGanttEmpty(){\n\t\t\treturn !gantt.getTaskByTime().length;\n\t\t},\n\t\trenderContent(container){\n\t\t\tconst placeholderTextElement = `
\n \n
${gantt.locale.labels.empty_state_text_description}
\n
`;\n\t\t\tconst placeholderImageElement = \"
\";\n\n\t\t\tconst placeholderContainer = `
${placeholderImageElement}${placeholderTextElement}
`;\n\t\t\tcontainer.innerHTML = placeholderContainer;\n\t\t},\n\n\t\tclickEvents: [],\n\t\tattachAddTaskEvent(){\n\t\t\tconst id = gantt.attachEvent(\"onEmptyClick\", function(e){\n\t\t\t\tconst domHelpers = gantt.utils.dom;\n\t\t\t\tconst gridPlaceholder = domHelpers.closest(e.target, \"[data-empty-state-create-task]\");\n\t\t\t\tif (gridPlaceholder){\n\t\t\t\t\tgantt.createTask({\n\t\t\t\t\t\tid: gantt.uid(),\n\t\t\t\t\t\ttext: \"New Task\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.clickEvents.push(id);\n\t\t},\n\t\tdetachAddTaskEvents(){\n\t\t\tthis.clickEvents.forEach(function(event){\n\t\t\t\tgantt.detachEvent(event);\n\t\t\t});\n\t\t\tthis.clickEvents = [];\n\t\t},\n\n\t\tgetContainer(){\n\t\t\tif (gantt.$container) {\n\t\t\t\tconst domHelpers = gantt.utils.dom;\n\t\t\t\tif (gantt.$container.contains(gantt.$grid_data)) {\n\t\t\t\t\treturn domHelpers.closest(gantt.$grid_data, \".gantt_layout_content\");\n\t\t\t\t}\n\t\t\t\tif (gantt.$container.contains(gantt.$task_data)){\n\t\t\t\t\treturn domHelpers.closest(gantt.$task_data, \".gantt_layout_content\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\tgetNode(){\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container){\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst emptyStateElementNode = container.querySelector(\".gantt_empty_state_wrapper\");\n\t\t\treturn emptyStateElementNode;\n\t\t},\n\n\t\tshow(){\n\t\t\tconst container = this.getContainer();\n\t\t\tif (!container && this.isGanttEmpty()){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\twrapper.className = \"gantt_empty_state_wrapper\";\n\t\t\twrapper.style.marginTop = (gantt.config.scale_height - container.offsetHeight) + \"px\";\n\t\t\tconst oldNodes = gantt.$container.querySelectorAll(\".gantt_empty_state_wrapper\");\n\t\t\t// for IE11\n\t\t\tArray.prototype.forEach.call(oldNodes, function(node){\n\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t});\n\n\t\t\tthis.detachAddTaskEvents();\n\t\t\tthis.attachAddTaskEvent();\n\n\t\t\tcontainer.appendChild(wrapper);\n\t\t\tthis.renderContent(wrapper);\n\t\t},\n\t\thide(){\n\t\t\tconst emptyStateElementNode = this.getNode();\n\t\t\tif (emptyStateElementNode){\n\t\t\t\temptyStateElementNode.parentNode.removeChild(emptyStateElementNode);\n\t\t\t} else{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t},\n\t\tinit(){ }\n\t};\n\n\tgantt.attachEvent(\"onDataRender\", function() {\n\t\tconst emptyStateElement = gantt.ext.emptyStateElement;\n\t\tif (emptyStateElement.isEnabled() && emptyStateElement.isGanttEmpty()) {\n\t\t\temptyStateElement.show();\n\t\t} else {\n\t\t\temptyStateElement.hide();\n\t\t}\n\t});\n\n\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}","import LinkFormatterSimple from \"./link_formatter_simple\";\n\nexport default class LinkFormatter extends LinkFormatterSimple implements ILinkFormatter {\n\tstatic create = (settings: ILinkFormatterConfig = null, gantt: any): LinkFormatter => {\n\t\treturn new LinkFormatter(settings, gantt);\n\t}\n\tprotected _config: ILinkFormatterConfig;\n\n\tconstructor(settings: ILinkFormatterConfig, gantt: any) {\n\t\tsuper(gantt);\n\t\tthis._config = this._defaultSettings(settings);\n\t\tthis._linkReg = /^[0-9\\.]+[a-zA-Z]*/;\n\t}\n\n\tformat = (link: ILink) : string => {\n\t\tconst formattedType = this._getFormattedLinkType(this._getLinkTypeName(link.type));\n\t\tconst wbs = this._getWBSCode(link.source);\n\t\tconst lag = this._getLagString(link.lag);\n\n\t\tif(link.type === this._gantt.config.links.finish_to_start && !link.lag){\n\t\t\treturn wbs;\n\t\t}else{\n\t\t\treturn `${wbs}${formattedType}${lag}`;\n\t\t}\n\t}\n\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\t\tconst lagPart = value.replace(linkPart, \"\").trim();\n\n\t\tconst typeFormat = this._findTypeFormat(linkPart);\n\t\tconst typeNumber = this._getLinkTypeNumber(typeFormat);\n\t\tconst source = this._findSource(linkPart) || null;\n\t\tconst lag = this._parseLag(lagPart);\n\n\t\treturn {\n\t\t\tid: undefined,\n\t\t\tsource,\n\t\t\ttarget: null,\n\t\t\ttype: typeNumber,\n\t\t\tlag\n\t\t};\n\t}\n\n\tprotected _defaultSettings(settings: ILinkFormatterConfig = null) : ILinkFormatterConfig{\n\t\tconst preparedSettings: ILinkFormatterConfig = {\n\t\t\tdurationFormatter: this._gantt.ext.formatters.durationFormatter(),\n\t\t\tlabels: {\n\t\t\t\tfinish_to_finish: \"FF\",\n\t\t\t\tfinish_to_start: \"FS\",\n\t\t\t\tstart_to_start: \"SS\",\n\t\t\t\tstart_to_finish: \"SF\"\n\t\t\t}\n\t\t};\n\n\t\tif(settings && settings.durationFormatter){\n\t\t\tpreparedSettings.durationFormatter = settings.durationFormatter;\n\t\t}\n\n\t\tif(settings && settings.labels){\n\t\t\tfor(const i in settings.labels){\n\t\t\t\tpreparedSettings.labels[i] = settings.labels[i];\n\t\t\t}\n\t\t}\n\t\treturn preparedSettings;\n\t}\n\n\tprotected _getLinkTypeName = (value: string) => {\n\t\tlet linkName = \"\";\n\t\tfor(linkName in this._config.labels){\n\t\t\tif(this._gantt.config.links[linkName].toLowerCase() === value.toLowerCase()){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn linkName;\n\t}\n\n\tprotected _getLinkTypeNumber = (value: string) => {\n\t\tlet linkName = \"\";\n\t\tfor(linkName in this._gantt.config.links){\n\t\t\tif(linkName.toLowerCase() === value.toLowerCase()){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn this._gantt.config.links[linkName];\n\t}\n\n\tprotected _getFormattedLinkType = (name: string) => {\n\t\treturn this._config.labels[name] || \"\";\n\t}\n\n\tprotected _getLagString = (lag: number) => {\n\t\tif(!lag){\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst formatted = this._config.durationFormatter.format(lag);\n\t\tif(lag < 0) {\n\t\t\treturn formatted;// -3 days\n\t\t}else{\n\t\t\treturn `+${formatted}`;// + 3 days\n\t\t}\n\t}\n\n\tprotected _findTypeFormat = (value: string) => {\n\t\tconst format = value.replace(/[^a-zA-Z]/gi, \"\"); // leave only letters\n\t\tlet name = \"finish_to_start\";\n\t\tfor(const i in this._config.labels){\n\t\t\tif(this._config.labels[i].toLowerCase() === format.toLowerCase()){\n\t\t\t\tname = i;\n\t\t\t}\n\t\t}\n\t\treturn name;\n\t}\n\n\tprotected _parseLag = (value: string) => {\n\t\tif(!value){\n\t\t\treturn 0;\n\t\t}\n\t\treturn this._config.durationFormatter.parse(value);\n\t}\n}","interface IFormatterTransfer {\n\ttoMinutes: (value: number) => number;\n\tfromMinutes: (value: number) => number;\n}\n\nexport default class DurationFormatter implements IDurationFormatter {\n\tstatic create = (settings: IDurationFormatterConfig = null): IDurationFormatter => {\n\t\treturn new DurationFormatter(settings);\n\t}\n\tprotected transferUnits: { [unit: string]: IFormatterTransfer };\n\tprotected _config: IDurationFormatterConfig;\n\tconstructor(settings: IDurationFormatterConfig = null) {\n\n\t\tthis._config = this._defaultSettings(settings);\n\t\tthis.transferUnits = {\n\t\t\tminute: {\n\t\t\t\ttoMinutes: (value: number) => {\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\tfromMinutes: (value: number) => {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t},\n\t\t\thour: {\n\t\t\t\ttoMinutes: (value: number) => {\n\t\t\t\t\treturn value * this._config.minutesPerHour;\n\t\t\t\t},\n\t\t\t\tfromMinutes: (value: number) => {\n\t\t\t\t\treturn value / this._config.minutesPerHour;\n\t\t\t\t}\n\t\t\t},\n\t\t\tday: {\n\t\t\t\ttoMinutes: (value: number) => {\n\t\t\t\t\treturn value * this._config.minutesPerHour * this._config.hoursPerDay;\n\t\t\t\t},\n\t\t\t\tfromMinutes: (value: number) => {\n\t\t\t\t\treturn value / (this._config.minutesPerHour * this._config.hoursPerDay);\n\t\t\t\t}\n\t\t\t},\n\t\t\tweek: {\n\t\t\t\ttoMinutes: (value: number) => {\n\t\t\t\t\treturn value * this._config.minutesPerHour * this._config.hoursPerWeek;\n\t\t\t\t},\n\t\t\t\tfromMinutes: (value: number) => {\n\t\t\t\t\treturn value / (this._config.minutesPerHour * this._config.hoursPerWeek);\n\t\t\t\t}\n\t\t\t},\n\t\t\tmonth: {\n\t\t\t\ttoMinutes: (value: number) => {\n\t\t\t\t\treturn value * this._config.minutesPerHour * this._config.hoursPerDay * this._config.daysPerMonth;\n\t\t\t\t},\n\t\t\t\tfromMinutes: (value: number) => {\n\t\t\t\t\treturn value / (this._config.minutesPerHour * this._config.hoursPerDay * this._config.daysPerMonth);\n\t\t\t\t}\n\t\t\t},\n\t\t\tyear: {\n\t\t\t\ttoMinutes: (value: number) => {\n\t\t\t\t\treturn value * this._config.minutesPerHour * this._config.hoursPerDay * this._config.daysPerYear;\n\t\t\t\t},\n\t\t\t\tfromMinutes: (value: number) => {\n\t\t\t\t\treturn value / (this._config.minutesPerHour * this._config.hoursPerDay * this._config.daysPerYear);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tcanParse = (value: string) : boolean => {\n\t\tlet units = \"\";\n\t\t// create all possible unit names\n\t\tconst labels = this._config.labels;\n\t\tfor(const labelName in labels){\n\t\t\tconst label = labels[labelName];\n\t\t\tunits += `${label.full}|${label.plural}|${label.short}|`;\n\t\t}\n\t\tconst reg = new RegExp(`^([+\\-]? *[0-9\\.]{1,}\\\\s*(${units})\\\\s*)*$`); // model looks like: 4h 20 minute\n\t\treturn reg.test((value||\"\").trim());\n\t}\n\n\tformat = (value:number) : string => {\n\n\t\tconst durationUnit = this._config.store;\n\t\tconst formatUnits = this._config.format;\n\t\tconst useShortLabels = this._config.short;\n\n\t\tlet totalMinutes = this.transferUnits[durationUnit]\n\t\t\t.toMinutes(value);\n\n\t\tlet units = formatUnits;\n\t\tif(units && units === \"auto\") {\n\t\t\tunits = this._selectFormatForValue(totalMinutes);\n\t\t}\n\t\tif(!units) {\n\t\t\tunits = \"day\";\n\t\t}\n\n\t\tif(formatUnits === \"auto\" && !value){\n\t\t\treturn \"\";\n\t\t}\n\t\tunits = Array.isArray(units) ? units : [units];\n\t\tlet result = \"\";\n\t\tconst last = units.length - 1;\n\t\tfor(let i = 0; i < units.length; i++){\n\t\t\tconst unit = units[i];\n\t\t\tconst countedValue = this._getValueFromMinutes(totalMinutes, unit, i === last);\n\t\t\ttotalMinutes -= this._getValueInMinutes(countedValue, unit);\n\n\t\t\tresult += `${this._getLabelForConvert(countedValue, unit, useShortLabels)}${i === last ? \"\" : \" \"}`;\n\t\t}\n\t\treturn result;\n\t}\n\n\tparse = (value: string) : number => {\n\t\tif(this.canParse(value)){\n\t\t\tvalue = (value||\"\").trim();\n\t\t\tlet part = \"\";\n\t\t\tlet isPartReady = false;\n\t\t\tlet needToParse = false;\n\t\t\tlet result = 0;\n\t\t\tconst last = value.length - 1;\n\t\t\tconst isNumber = /^[+\\-0-9\\. ]$/; // numbers and .;\n\n\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\tconst symbol = value[i];\n\t\t\t\tif(isNumber.test(symbol)){\n\t\t\t\t\t// found the next number. can parse the part of value\n\t\t\t\t\tneedToParse = isPartReady;\n\t\t\t\t} else {\n\t\t\t\t\t// the number is over. letters in turn. find the next number to get whole unit name\n\t\t\t\t\tisPartReady = true;\n\t\t\t\t}\n\n\t\t\t\t// parse the part of number or the resulting part, if the last element\n\t\t\t\tif(needToParse || last === i){\n\t\t\t\t\t// add the last symbol to the part if the last element\n\t\t\t\t\tif(!needToParse) {\n\t\t\t\t\t\tpart += symbol;\n\t\t\t\t\t}\n\n\t\t\t\t\t// parse the part to minutes\n\t\t\t\t\tresult += this._getNumericValue(part);\n\t\t\t\t\tisPartReady = needToParse = false;\n\t\t\t\t\tpart = \"\";\n\t\t\t\t}\n\t\t\t\tpart += symbol;\n\t\t\t}\n\t\t\tif(result){\n\t\t\t\tconst durationUnit = this._config.store;\n\t\t\t\treturn Math.round(this.transferUnits[durationUnit]\n\t\t\t\t\t.fromMinutes(Math.ceil(result)));\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected _defaultSettings(settings: IDurationFormatterConfig = null){\n\t\tconst preparedSettings: IDurationFormatterConfig = {\n\t\t\tenter: \"day\",\n\t\t\tstore: \"hour\",\n\t\t\tformat: \"auto\",\n\t\t\tshort: false,\n\t\t\tminutesPerHour: 60,\n\t\t\thoursPerDay: 8,\n\t\t\thoursPerWeek: 40,\n\t\t\tdaysPerMonth: 30,\n\t\t\tdaysPerYear: 365,\n\t\t\tlabels: {\n\t\t\t\tminute: {\n\t\t\t\t\tfull: \"minute\",\n\t\t\t\t\tplural: \"minutes\",\n\t\t\t\t\tshort: \"min\"\n\t\t\t\t},\n\t\t\t\thour: {\n\t\t\t\t\tfull: \"hour\",\n\t\t\t\t\tplural: \"hours\",\n\t\t\t\t\tshort: \"h\"\n\t\t\t\t},\n\t\t\t\tday: {\n\t\t\t\t\tfull: \"day\",\n\t\t\t\t\tplural: \"days\",\n\t\t\t\t\tshort: \"d\"\n\t\t\t\t},\n\t\t\t\tweek: {\n\t\t\t\t\tfull: \"week\",\n\t\t\t\t\tplural: \"weeks\",\n\t\t\t\t\tshort: \"wk\"\n\t\t\t\t},\n\t\t\t\tmonth: {\n\t\t\t\t\tfull: \"month\",\n\t\t\t\t\tplural: \"months\",\n\t\t\t\t\tshort: \"mon\"\n\t\t\t\t},\n\t\t\t\tyear: {\n\t\t\t\t\tfull: \"year\",\n\t\t\t\t\tplural: \"years\",\n\t\t\t\t\tshort: \"y\"\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tif(settings){\n\t\t\tfor(const i in settings){\n\t\t\t\tif(settings[i] !== undefined && i !== \"labels\") {\n\t\t\t\t\tpreparedSettings[i] = settings[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(settings.labels){\n\t\t\t\tfor(const i in settings.labels) {\n\t\t\t\t\tpreparedSettings.labels[i] = settings.labels[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn preparedSettings;\n\n\t}\n\n\tprotected _selectFormatForValue(value: number): string {\n\t\tconst units = [\"year\",\"month\",\"day\",\"hour\",\"minute\"];\n\t\tconst values = [];\n\t\tfor(let i = 0; i < units.length; i++) {\n\t\t\tvalues[i] = Math.abs(this.transferUnits[units[i]].fromMinutes(value));\n\t\t}\n\n\t\tfor(let i = 0; i < values.length; i++) {\n\t\t\tconst valueInUnit = values[i];\n\t\t\tif(valueInUnit < 1 && i < values.length - 1){\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn units[i];\n\t\t\t}\n\t\t}\n\n\t\treturn \"day\";\n\t}\n\n\tprotected _getNumericValue(value: string) : number {\n\t\tconst numericValue = parseFloat(value.replace(/ /g, \"\")) || 0;\n\t\tconst unitName = this._getUnitName(value.replace(/[^a-zA-Z]/gi, \"\")); // leave only letters\n\n\t\tif(!numericValue || !unitName){\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn this._getValueInMinutes(numericValue, unitName);\n\t}\n\n\tprotected _getValueInMinutes = (value: number, unit: string) => {\n\t\tif(this.transferUnits[unit] && this.transferUnits[unit].toMinutes){\n\t\t\treturn this.transferUnits[unit].toMinutes(value);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprotected _getLabelForConvert = (value: number, unit: string, short: boolean) : string => {\n\t\tconst labels = this._config.labels;\n\t\tconst label = labels[unit];\n\t\tif(short){\n\t\t\treturn `${value}${label.short}`;\n\t\t}\n\n\t\treturn `${value} ${value !== 1 ? label.plural : label.full}`;\n\t}\n\n\tprotected _getValueFromMinutes = (value: number, unit: string, last: boolean) : number => {\n\t\tif(this.transferUnits[unit] && this.transferUnits[unit].fromMinutes){\n\t\t\tconst result = this.transferUnits[unit].fromMinutes(value);\n\n\t\t\tif(last){\n\t\t\t\treturn parseFloat(result.toFixed(2));\n\t\t\t}\n\t\t\treturn parseInt(result.toString(), 10);\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected _isUnitName = (unit: any, value: string) : boolean => {\n\t\tvalue = value.toLowerCase();\n\t\treturn unit.full.toLowerCase() === value\n\t\t\t|| unit.plural.toLowerCase() === value\n\t\t\t|| unit.short.toLowerCase() === value;\n\t}\n\n\tprotected _getUnitName = (value: string) : string => {\n\t\tconst labels = this._config.labels;\n\t\tlet labelName: string;\n\t\tlet isUnit = false;\n\t\tfor(labelName in labels){\n\t\t\tif(this._isUnitName(labels[labelName], value)){\n\t\t\t\tisUnit = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(isUnit){\n\t\t\treturn labelName;\n\t\t}\n\t\treturn this._config.enter;\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 gantt.$data.assignmentsStore = resourceAssignmentsStore;\n\n function _assignmentTimeFromTask(assignment, task) {\n if (assignment.mode === assignmentModes.fixedDates) {\n return {\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n duration: assignment.duration\n };\n } else {\n var start = assignment.delay ? gantt.calculateEndDate({\n start_date: task.start_date,\n duration: assignment.delay,\n task: task\n }) : new Date(task.start_date);\n var end;\n var duration;\n\n if (assignment.mode === assignmentModes.fixedDuration) {\n end = gantt.calculateEndDate({\n start_date: start,\n duration: assignment.duration,\n task: task\n });\n duration = assignment.duration;\n } else {\n end = new Date(task.end_date);\n duration = task.duration - assignment.delay;\n }\n }\n\n return {\n start_date: start,\n end_date: end,\n duration: duration\n };\n } // data loading\n\n\n function _makeAssignmentsFromTask(task) {\n var property = gantt.config.resource_property;\n var assignments = task[property];\n var resourceAssignments = [];\n var detectFormat = resourceAssignmentFormat === resourceAssignmentFormats.auto;\n\n if (gantt.defined(assignments) && assignments) {\n if (!Array.isArray(assignments)) {\n assignments = [assignments];\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.singleValue;\n detectFormat = false;\n }\n }\n\n var usedIds = {};\n assignments.forEach(function (res) {\n if (!res.resource_id) {\n // when resource is a string/number\n res = {\n resource_id: res\n };\n\n if (detectFormat) {\n resourceAssignmentFormat = resourceAssignmentFormats.valueArray;\n detectFormat = false;\n } //\tisSimpleArray = true;\n\n }\n\n if (detectFormat) {\n if (res.id && res.resource_id) {\n resourceAssignmentFormat = resourceAssignmentFormats.assignmentsArray;\n detectFormat = false;\n } else {\n resourceAssignmentFormat = resourceAssignmentFormats.resourceValueArray;\n detectFormat = false;\n }\n }\n\n var defaultMode = assignmentModes[\"default\"];\n\n if (!res.mode) {\n if (res.start_date && res.end_date || res.start_date && res.duration) {\n defaultMode = assignmentModes.fixedDuration;\n }\n }\n\n var id;\n\n if (!res.id && res.$id && !usedIds[res.$id]) {\n id = res.$id;\n } else if (res.id && !usedIds[res.id]) {\n id = res.id;\n } else {\n id = gantt.uid();\n }\n\n usedIds[id] = true;\n var assignment = {\n id: id,\n start_date: res.start_date,\n duration: res.duration,\n end_date: res.end_date,\n delay: res.delay,\n task_id: task.id,\n resource_id: res.resource_id,\n value: res.value,\n mode: res.mode || defaultMode\n };\n\n if (!(assignment.start_date && assignment.start_date.getMonth && assignment.end_date && assignment.end_date.getMonth && typeof assignment.duration === \"number\")) {\n initAssignmentFields(assignment, task);\n }\n\n resourceAssignments.push(assignment);\n });\n }\n\n return resourceAssignments;\n }\n\n function _updateTaskBack(taskId) {\n // GS-1493. In some cases, the resource assignment store has the tasks that no longer exist\n if (!gantt.isTaskExists(taskId)) {\n return;\n }\n\n var task = gantt.getTask(taskId);\n var assignments = gantt.getTaskAssignments(task.id);\n\n _assignAssignments(task, assignments);\n }\n\n function _assignAssignments(task, assignments) {\n assignments.sort(function (a, b) {\n if (a.start_date && b.start_date && a.start_date.valueOf() != b.start_date.valueOf()) {\n return a.start_date - b.start_date;\n } else {\n return 0;\n }\n });\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray) {\n task[gantt.config.resource_property] = assignments;\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n task[gantt.config.resource_property] = assignments.map(function (a) {\n return {\n $id: a.id,\n start_date: a.start_date,\n duration: a.duration,\n end_date: a.end_date,\n delay: a.delay,\n resource_id: a.resource_id,\n value: a.value,\n mode: a.mode\n };\n });\n }\n\n task[resourceAssignmentsProperty] = assignments;\n }\n\n function _loadAssignmentsFromTask(task) {\n var assignments = _makeAssignmentsFromTask(task);\n\n var taskAssignments = [];\n assignments.forEach(function (a) {\n a.id = a.id || gantt.uid(); //var newId = resourceAssignmentsStore.addItem(a);\n\n taskAssignments.push(a);\n });\n return assignments;\n }\n\n function diffAssignments(taskValues, assignmentsStoreValues) {\n var result = {\n inBoth: [],\n inTaskNotInStore: [],\n inStoreNotInTask: []\n };\n\n if (resourceAssignmentFormat == resourceAssignmentFormats.singleValue) {\n var taskOwner = taskValues[0];\n var ownerId = taskOwner ? taskOwner.resource_id : null;\n var foundOwnerAssignment = false;\n assignmentsStoreValues.forEach(function (a) {\n if (a.resource_id != ownerId) {\n result.inStoreNotInTask.push(a);\n } else if (a.resource_id == ownerId) {\n result.inBoth.push({\n store: a,\n task: taskOwner\n });\n foundOwnerAssignment = true;\n }\n });\n\n if (!foundOwnerAssignment && taskOwner) {\n result.inTaskNotInStore.push(taskOwner);\n }\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.valueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.resource_id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.resource_id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n if (processedIds[a.resource_id]) {\n return;\n }\n\n processedIds[a.resource_id] = true;\n var inTask = taskSearch[a.resource_id];\n var inStore = storeSearch[a.resource_id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n } else if (resourceAssignmentFormat == resourceAssignmentFormats.assignmentsArray || resourceAssignmentFormat == resourceAssignmentFormats.resourceValueArray) {\n var taskSearch = {};\n var storeSearch = {};\n var processedIds = {};\n taskValues.forEach(function (a) {\n taskSearch[a.id || a.$id] = a;\n });\n assignmentsStoreValues.forEach(function (a) {\n storeSearch[a.id] = a;\n });\n taskValues.concat(assignmentsStoreValues).forEach(function (a) {\n var id = a.id || a.$id;\n\n if (processedIds[id]) {\n return;\n }\n\n processedIds[id] = true;\n var inTask = taskSearch[id];\n var inStore = storeSearch[id];\n\n if (inTask && inStore) {\n result.inBoth.push({\n store: inStore,\n task: inTask\n });\n } else if (inTask && !inStore) {\n result.inTaskNotInStore.push(inTask);\n } else if (!inTask && inStore) {\n result.inStoreNotInTask.push(inStore);\n }\n });\n }\n\n return result;\n }\n\n function assignmentHasChanged(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n if (String(source[i]) !== String(target[i])) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function updateAssignment(source, target) {\n var ignoreFields = {\n id: true\n };\n\n for (var i in source) {\n if (!ignoreFields[i]) {\n target[i] = source[i];\n }\n }\n }\n\n function _syncAssignments(task, storeAssignments) {\n var tasksAssignments = _makeAssignmentsFromTask(task);\n\n var diff = diffAssignments(tasksAssignments, storeAssignments);\n diff.inStoreNotInTask.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n diff.inTaskNotInStore.forEach(function (a) {\n resourceAssignmentsStore.addItem(a);\n });\n diff.inBoth.forEach(function (a) {\n if (assignmentHasChanged(a.task, a.store)) {\n updateAssignment(a.task, a.store);\n resourceAssignmentsStore.updateItem(a.store.id);\n } else {\n if (a.task.start_date && a.task.end_date && a.task.mode !== assignmentModes.fixedDates) {\n var timing = _assignmentTimeFromTask(a.store, task);\n\n if (a.store.start_date.valueOf() != timing.start_date.valueOf() || a.store.end_date.valueOf() != timing.end_date.valueOf()) {\n a.store.start_date = timing.start_date;\n a.store.end_date = timing.end_date;\n a.store.duration = timing.duration;\n resourceAssignmentsStore.updateItem(a.store.id);\n }\n }\n }\n });\n\n _updateTaskBack(task.id);\n }\n\n function _syncOnTaskUpdate(task) {\n var storeAssignments = task[resourceAssignmentsProperty] || resourceAssignmentsStore.find(function (a) {\n return a.task_id == task.id;\n });\n\n _syncAssignments(task, storeAssignments);\n }\n\n function _syncOnTaskDelete(ids) {\n var idsSearch = {};\n ids.forEach(function (id) {\n idsSearch[id] = true;\n });\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return idsSearch[a.task_id];\n });\n taskResources.forEach(function (a) {\n resourceAssignmentsStore.removeItem(a.id);\n });\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n if (gantt.config.process_resource_assignments) {\n gantt.attachEvent(\"onParse\", function () {\n gantt.silent(function () {\n resourceAssignmentsStore.clearAll();\n var totalAssignments = [];\n gantt.eachTask(function (task) {\n if (task.type === gantt.config.types.project) {\n return;\n }\n\n var assignments = _loadAssignmentsFromTask(task);\n\n _assignAssignments(task, assignments);\n\n assignments.forEach(function (a) {\n totalAssignments.push(a);\n });\n });\n resourceAssignmentsStore.parse(totalAssignments);\n });\n });\n var batchUpdate = false;\n var needUpdate = false;\n var needUpdateFor = {};\n var undoBatchCancel = false;\n gantt.attachEvent(\"onBeforeBatchUpdate\", function () {\n batchUpdate = true;\n });\n gantt.attachEvent(\"onAfterBatchUpdate\", function () {\n if (needUpdate) {\n var assignmentsHash = {};\n\n for (var i in needUpdateFor) {\n assignmentsHash[i] = gantt.getTaskAssignments(needUpdateFor[i].id);\n }\n\n for (var i in needUpdateFor) {\n _syncAssignments(needUpdateFor[i], assignmentsHash[i]);\n }\n }\n\n needUpdate = false;\n batchUpdate = false;\n needUpdateFor = {};\n });\n gantt.attachEvent(\"onTaskCreated\", function (item) {\n var assignments = _loadAssignmentsFromTask(item);\n\n resourceAssignmentsStore.parse(assignments);\n\n _assignAssignments(item, assignments);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskUpdate\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n /*\tgantt.attachEvent(\"onRowDragMove\", function (id) {\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 }); // GS-2144. When we Undo something, the cache should be reset\n // during the `onStoreUpdated` event to properly update the assignments\n\n gantt.attachEvent(\"onBeforeUndo\", function (action) {\n undoBatchCancel = true;\n return true;\n });\n gantt.attachEvent(\"onAfterUndo\", function (action) {\n undoBatchCancel = true;\n });\n var resourceAssignmentsCache = null;\n var resourceTaskAssignmentsCache = null;\n var taskAssignmentsCache = null;\n resourceAssignmentsStore.attachEvent(\"onStoreUpdated\", function resetCache() {\n if (batchUpdate && !undoBatchCancel) {\n return true;\n }\n\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n return true;\n });\n\n gantt.getResourceAssignments = function (resourceId, taskId) {\n var searchTaskId = gantt.defined(taskId) && taskId !== null;\n\n if (resourceAssignmentsCache === null) {\n resourceAssignmentsCache = {};\n resourceTaskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!resourceAssignmentsCache[a.resource_id]) {\n resourceAssignmentsCache[a.resource_id] = [];\n }\n\n resourceAssignmentsCache[a.resource_id].push(a);\n var resourceTaskCacheKey = a.resource_id + \"-\" + a.task_id;\n\n if (!resourceTaskAssignmentsCache[resourceTaskCacheKey]) {\n resourceTaskAssignmentsCache[resourceTaskCacheKey] = [];\n }\n\n resourceTaskAssignmentsCache[resourceTaskCacheKey].push(a);\n });\n }\n\n if (searchTaskId) {\n return (resourceTaskAssignmentsCache[resourceId + \"-\" + taskId] || []).slice();\n } else {\n return (resourceAssignmentsCache[resourceId] || []).slice();\n }\n };\n\n gantt.getTaskAssignments = function (taskId) {\n if (taskAssignmentsCache === null) {\n var result = [];\n taskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!taskAssignmentsCache[a.task_id]) {\n taskAssignmentsCache[a.task_id] = [];\n }\n\n taskAssignmentsCache[a.task_id].push(a);\n\n if (a.task_id == taskId) {\n result.push(a);\n }\n });\n }\n\n return (taskAssignmentsCache[taskId] || []).slice();\n };\n\n gantt.getTaskResources = function (taskId) {\n var store = gantt.getDatastore(\"resource\");\n var assignments = gantt.getTaskAssignments(taskId);\n var uniqueResources = {};\n assignments.forEach(function (a) {\n if (!uniqueResources[a.resource_id]) {\n uniqueResources[a.resource_id] = a.resource_id;\n }\n });\n var resources = [];\n\n for (var i in uniqueResources) {\n var res = store.getItem(uniqueResources[i]);\n\n if (res) {\n resources.push(res);\n }\n }\n\n return resources;\n };\n\n gantt.updateTaskAssignments = _updateTaskBack;\n }\n }, {\n once: true\n });\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt) {\n var resourceTaskCache = {};\n var singleResourceCacheBuilt = false;\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function () {\n resourceTaskCache = {};\n singleResourceCacheBuilt = false;\n });\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n resourceTaskCache = {};\n });\n\n function getTaskBy(propertyName, propertyValue, typeFilter) {\n if (typeof propertyName == \"function\") {\n return filterResourceTasks(propertyName);\n } else {\n if (helpers.isArray(propertyValue)) {\n return getResourceTasks(propertyName, propertyValue, typeFilter);\n } else {\n return getResourceTasks(propertyName, [propertyValue], typeFilter);\n }\n }\n }\n\n function filterResourceTasks(filter) {\n var res = [];\n gantt.eachTask(function (task) {\n if (filter(task)) {\n res.push(task);\n }\n });\n return res;\n }\n\n var falsyValuePrefix = String(Math.random());\n\n function resourceHashFunction(value) {\n if (value === null) {\n return falsyValuePrefix + String(value);\n }\n\n return String(value);\n }\n\n function getCacheKey(resourceIds, property, typeFilter) {\n if (Array.isArray(resourceIds)) {\n return resourceIds.map(function (value) {\n return resourceHashFunction(value);\n }).join(\"_\") + \"_\".concat(property, \"_\").concat(typeFilter);\n } else {\n return resourceHashFunction(resourceIds) + \"_\".concat(property, \"_\").concat(typeFilter);\n }\n }\n\n function getResourceTasks(property, resourceIds, typeFilter) {\n var res;\n var cacheKey = getCacheKey(resourceIds, property, JSON.stringify(typeFilter));\n var matchingResources = {};\n helpers.forEach(resourceIds, function (resourceId) {\n matchingResources[resourceHashFunction(resourceId)] = true;\n });\n\n if (!resourceTaskCache[cacheKey]) {\n res = resourceTaskCache[cacheKey] = [];\n gantt.eachTask(function (task) {\n if (typeFilter) {\n if (!typeFilter[gantt.getTaskType(task)]) {\n return;\n }\n } else if (task.type == gantt.config.types.project) {\n return;\n }\n\n if (property in task) {\n var resourceValue;\n\n if (!helpers.isArray(task[property])) {\n resourceValue = [task[property]];\n } else {\n resourceValue = task[property];\n }\n\n helpers.forEach(resourceValue, function (value) {\n var resourceValue = value && value.resource_id ? value.resource_id : value;\n\n if (matchingResources[resourceHashFunction(resourceValue)]) {\n res.push(task);\n } else if (!singleResourceCacheBuilt) {\n var key = getCacheKey(value, property);\n\n if (!resourceTaskCache[key]) {\n resourceTaskCache[key] = [];\n }\n\n resourceTaskCache[key].push(task);\n }\n });\n }\n });\n singleResourceCacheBuilt = true;\n } else {\n res = resourceTaskCache[cacheKey];\n }\n\n return res;\n }\n\n function selectAssignments(resourceId, taskId, result) {\n var property = gantt.config.resource_property;\n var owners = [];\n\n if (gantt.getDatastore(\"task\").exists(taskId)) {\n var task = gantt.getTask(taskId);\n owners = task[property] || [];\n }\n\n if (!Array.isArray(owners)) {\n owners = [owners];\n }\n\n for (var i = 0; i < owners.length; i++) {\n if (owners[i].resource_id == resourceId) {\n result.push({\n task_id: task.id,\n resource_id: owners[i].resource_id,\n value: owners[i].value\n });\n }\n }\n }\n\n function getResourceAssignments(resourceId, taskId) {\n // resource assignment as an independent module:\n // {taskId:, resourceId, value}\n // TODO: probably should add a separate datastore for these\n var assignments = [];\n var property = gantt.config.resource_property;\n\n if (taskId !== undefined) {\n selectAssignments(resourceId, taskId, assignments);\n } else {\n var tasks = gantt.getTaskBy(property, resourceId);\n tasks.forEach(function (task) {\n selectAssignments(resourceId, task.id, assignments);\n });\n }\n\n return assignments;\n }\n\n return {\n getTaskBy: getTaskBy,\n getResourceAssignments: getResourceAssignments\n };\n}\n\nfunction createHelper(gantt) {\n var resourcePlugin = {\n renderEditableLabel: function renderEditableLabel(start_date, end_date, resource, tasks, assignments) {\n var editable = gantt.config.readonly ? \"\" : \"contenteditable\";\n\n if (start_date < resource.end_date && end_date > resource.start_date) {\n for (var i = 0; i < assignments.length; i++) {\n var a = assignments[i];\n return \"
\" + a.value + \"
\";\n }\n\n return \"
-
\";\n }\n\n return \"\";\n },\n renderSummaryLabel: function renderSummaryLabel(start_date, end_date, resource, tasks, assignments) {\n var sum = assignments.reduce(function (total, assignment) {\n return total + Number(assignment.value);\n }, 0);\n\n if (sum % 1) {\n sum = Math.round(sum * 10) / 10;\n }\n\n if (sum) {\n return \"
\" + sum + \"
\";\n }\n\n return \"\";\n },\n editableResourceCellTemplate: function editableResourceCellTemplate(start_date, end_date, resource, tasks, assignments) {\n if (resource.$role === \"task\") {\n return resourcePlugin.renderEditableLabel(start_date, end_date, resource, tasks, assignments);\n } else {\n return resourcePlugin.renderSummaryLabel(start_date, end_date, resource, tasks, assignments);\n }\n },\n editableResourceCellClass: function editableResourceCellClass(start_date, end_date, resource, tasks, assignments) {\n var css = [];\n css.push(\"resource_marker\");\n\n if (resource.$role === \"task\") {\n css.push(\"task_cell\");\n } else {\n css.push(\"resource_cell\");\n }\n\n var sum = assignments.reduce(function (total, assignment) {\n return total + Number(assignment.value);\n }, 0);\n var capacity = Number(resource.capacity);\n\n if (isNaN(capacity)) {\n capacity = 8;\n }\n\n if (sum <= capacity) {\n css.push(\"workday_ok\");\n } else {\n css.push(\"workday_over\");\n }\n\n return css.join(\" \");\n },\n getSummaryResourceAssignments: function getResourceAssignments(resourceId) {\n var assignments;\n var store = gantt.getDatastore(gantt.config.resource_store);\n var resource = store.getItem(resourceId);\n\n if (resource.$role === \"task\") {\n assignments = gantt.getResourceAssignments(resource.$resource_id, resource.$task_id);\n } else {\n assignments = gantt.getResourceAssignments(resourceId);\n\n if (store.eachItem) {\n store.eachItem(function (childResource) {\n if (childResource.$role !== \"task\") {\n assignments = assignments.concat(gantt.getResourceAssignments(childResource.id));\n }\n }, resourceId);\n }\n }\n\n return assignments;\n },\n initEditableDiagram: function initEditableDiagram() {\n gantt.config.resource_render_empty_cells = true;\n\n (function () {\n /// salesforce locker workaround\n // SF removes 'contenteditable' attribute from cells\n // restore it on render\n var timeoutId = null;\n\n function makeEditable() {\n if (timeoutId) {\n cancelAnimationFrame(timeoutId);\n }\n\n timeoutId = requestAnimationFrame(function () {\n var cells = Array.prototype.slice.call(gantt.$container.querySelectorAll(\".resourceTimeline_cell [data-assignment-cell]\"));\n cells.forEach(function (cell) {\n cell.contentEditable = true;\n });\n });\n return true;\n }\n\n gantt.attachEvent(\"onGanttReady\", function () {\n gantt.getDatastore(gantt.config.resource_assignment_store).attachEvent(\"onStoreUpdated\", makeEditable);\n gantt.getDatastore(gantt.config.resource_store).attachEvent(\"onStoreUpdated\", makeEditable);\n }, {\n once: true\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n var ganttViews = gantt.$layout.getCellsByType(\"viewCell\");\n ganttViews.forEach(function (view) {\n if (view.$config && view.$config.view === \"resourceTimeline\" && view.$content) {\n view.$content.attachEvent(\"onScroll\", makeEditable);\n }\n });\n });\n })();\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var assignmentEditInProcess = false;\n gantt.event(gantt.$container, \"keypress\", function (e) {\n var target = e.target.closest(\".resourceTimeline_cell [data-assignment-cell]\");\n\n if (target) {\n if (e.keyCode === 13 || e.keyCode === 27) {\n target.blur();\n }\n }\n });\n gantt.event(gantt.$container, \"focusout\", function (e) {\n if (assignmentEditInProcess) {\n return;\n }\n\n assignmentEditInProcess = true;\n setTimeout(function () {\n assignmentEditInProcess = false;\n }, 300);\n var target = e.target.closest(\".resourceTimeline_cell [data-assignment-cell]\");\n\n if (target) {\n var strValue = (target.innerText || \"\").trim();\n\n if (strValue == \"-\") {\n strValue = \"0\";\n }\n\n var value = Number(strValue);\n var rowId = target.getAttribute(\"data-row-id\");\n var assignmentId = target.getAttribute(\"data-assignment-id\");\n var taskId = target.getAttribute(\"data-task\");\n var resourceId = target.getAttribute(\"data-resource-id\");\n var startDate = gantt.templates.parse_date(target.getAttribute(\"data-start-date\"));\n var endDate = gantt.templates.parse_date(target.getAttribute(\"data-end-date\"));\n var assignmentStore = gantt.getDatastore(gantt.config.resource_assignment_store);\n\n if (isNaN(value)) {\n gantt.getDatastore(gantt.config.resource_store).refresh(rowId);\n } else {\n var task = gantt.getTask(taskId); // GS-2141. Track the changes by the Undo extension\n\n if (gantt.plugins().undo) {\n gantt.ext.undo.saveState(taskId, \"task\");\n }\n\n if (assignmentId) {\n var assignment = assignmentStore.getItem(assignmentId);\n\n if (value === assignment.value) {\n return;\n }\n\n if (assignment.start_date.valueOf() === startDate.valueOf() && assignment.end_date.valueOf() === endDate.valueOf()) {\n assignment.value = value;\n\n if (!value) {\n assignmentStore.removeItem(assignment.id);\n } else {\n assignmentStore.updateItem(assignment.id);\n }\n } else {\n if (assignment.end_date.valueOf() > endDate.valueOf()) {\n var nextChunk = gantt.copy(assignment);\n nextChunk.id = gantt.uid();\n nextChunk.start_date = endDate;\n nextChunk.duration = gantt.calculateDuration({\n start_date: nextChunk.start_date,\n end_date: nextChunk.end_date,\n task: task\n });\n nextChunk.delay = gantt.calculateDuration({\n start_date: task.start_date,\n end_date: nextChunk.start_date,\n task: task\n });\n nextChunk.mode = assignment.mode || \"default\";\n\n if (nextChunk.duration !== 0) {\n assignmentStore.addItem(nextChunk);\n }\n }\n\n if (assignment.start_date.valueOf() < startDate.valueOf()) {\n assignment.end_date = startDate;\n assignment.duration = gantt.calculateDuration({\n start_date: assignment.start_date,\n end_date: assignment.end_date,\n task: task\n });\n assignment.mode = \"fixedDuration\";\n\n if (assignment.duration === 0) {\n assignmentStore.removeItem(assignment.id);\n } else {\n assignmentStore.updateItem(assignment.id);\n }\n } else {\n assignmentStore.removeItem(assignment.id);\n }\n\n if (value) {\n assignmentStore.addItem({\n task_id: assignment.task_id,\n resource_id: assignment.resource_id,\n value: value,\n start_date: startDate,\n end_date: endDate,\n duration: gantt.calculateDuration({\n start_date: startDate,\n end_date: endDate,\n task: task\n }),\n delay: gantt.calculateDuration({\n start_date: task.start_date,\n end_date: startDate,\n task: task\n }),\n mode: \"fixedDuration\"\n });\n }\n }\n\n gantt.updateTaskAssignments(task.id);\n gantt.updateTask(task.id);\n } else if (value) {\n var assignment = {\n task_id: taskId,\n resource_id: resourceId,\n value: value,\n start_date: startDate,\n end_date: endDate,\n duration: gantt.calculateDuration({\n start_date: startDate,\n end_date: endDate,\n task: task\n }),\n delay: gantt.calculateDuration({\n start_date: task.start_date,\n end_date: startDate,\n task: task\n }),\n mode: \"fixedDuration\"\n };\n assignmentStore.addItem(assignment);\n gantt.updateTaskAssignments(task.id);\n gantt.updateTask(task.id);\n }\n }\n }\n });\n }, {\n once: true\n });\n }\n };\n return resourcePlugin;\n}\n\nmodule.exports = function (gantt) {\n var methods = createResourceMethods(gantt);\n gantt.ext.resources = createHelper(gantt);\n gantt.config.resources = {\n dataprocessor_assignments: false,\n dataprocessor_resources: false,\n editable_resource_diagram: false,\n resource_store: {\n type: \"treeDataStore\",\n fetchTasks: false,\n initItem: function initItem(item) {\n item.parent = item.parent || gantt.config.root_id;\n item[gantt.config.resource_property] = item.parent;\n item.open = true;\n return item;\n }\n },\n lightbox_resources: function selectResourceControlOptions(resources) {\n var lightboxOptions = [];\n var store = gantt.getDatastore(gantt.config.resource_store);\n resources.forEach(function (res) {\n if (!store.hasChild(res.id)) {\n var copy = gantt.copy(res);\n copy.key = res.id;\n copy.label = res.text;\n lightboxOptions.push(copy);\n }\n });\n return lightboxOptions;\n }\n };\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (gantt.getDatastore(gantt.config.resource_store)) {\n return;\n }\n\n var resourceStoreConfig = gantt.config.resources ? gantt.config.resources.resource_store : undefined;\n var fetchTasks = resourceStoreConfig ? resourceStoreConfig.fetchTasks : undefined;\n\n if (gantt.config.resources && gantt.config.resources.editable_resource_diagram) {\n fetchTasks = true;\n }\n\n var initItems = function initItems(item) {\n item.parent = item.parent || gantt.config.root_id;\n item[gantt.config.resource_property] = item.parent;\n item.open = true;\n return item;\n };\n\n if (resourceStoreConfig && resourceStoreConfig.initItem) {\n initItems = resourceStoreConfig.initItem;\n }\n\n var storeType = resourceStoreConfig && resourceStoreConfig.type ? resourceStoreConfig.type : \"treeDatastore\";\n gantt.$resourcesStore = gantt.createDatastore({\n name: gantt.config.resource_store,\n type: storeType,\n fetchTasks: fetchTasks !== undefined ? fetchTasks : false,\n initItem: initItems\n });\n gantt.$data.resourcesStore = gantt.$resourcesStore;\n gantt.$resourcesStore.attachEvent(\"onParse\", function () {\n function selectResourceControlOptions(resources) {\n var lightboxOptions = [];\n resources.forEach(function (res) {\n if (!gantt.$resourcesStore.hasChild(res.id)) {\n var copy = gantt.copy(res);\n copy.key = res.id;\n copy.label = res.text;\n lightboxOptions.push(copy);\n }\n });\n return lightboxOptions;\n }\n\n var lightboxOptionsFnc = selectResourceControlOptions;\n\n if (gantt.config.resources && gantt.config.resources.lightbox_resources) {\n lightboxOptionsFnc = gantt.config.resources.lightbox_resources;\n }\n\n var options = lightboxOptionsFnc(gantt.$resourcesStore.getItems());\n gantt.updateCollection(\"resourceOptions\", options);\n });\n });\n gantt.getTaskBy = methods.getTaskBy;\n gantt.getResourceAssignments = methods.getResourceAssignments;\n gantt.config.resource_property = \"owner_id\";\n gantt.config.resource_store = \"resource\";\n gantt.config.resource_render_empty_cells = false;\n /**\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 var defaultResourceCellClass = function defaultResourceCellClass(start, end, resource, tasks, assignments) {\n var css = \"\";\n\n if (tasks.length <= 1) {\n css = \"gantt_resource_marker_ok\";\n } else {\n css = \"gantt_resource_marker_overtime\";\n }\n\n return css;\n };\n\n var defaultResourceCellTemplate = function defaultResourceCellTemplate(start, end, resource, tasks, assignments) {\n return tasks.length * 8;\n };\n\n gantt.templates.resource_cell_value = defaultResourceCellTemplate;\n gantt.templates.resource_cell_class = defaultResourceCellClass; //editable_resource_diagram\n\n gantt.attachEvent(\"onBeforeGanttReady\", function () {\n if (gantt.config.resources && gantt.config.resources.editable_resource_diagram) {\n gantt.config.resource_render_empty_cells = true;\n\n if (gantt.templates.resource_cell_value === defaultResourceCellTemplate) {\n gantt.templates.resource_cell_value = gantt.ext.resources.editableResourceCellTemplate;\n }\n\n if (gantt.templates.resource_cell_class === defaultResourceCellClass) {\n gantt.templates.resource_cell_class = gantt.ext.resources.editableResourceCellClass;\n }\n\n gantt.ext.resources.initEditableDiagram(gantt);\n }\n });\n};","var createWbs = function createWbs(gantt) {\n return {\n _needRecalc: true,\n reset: function reset() {\n this._needRecalc = true;\n },\n _isRecalcNeeded: function _isRecalcNeeded() {\n return !this._isGroupSort() && this._needRecalc;\n },\n _isGroupSort: function _isGroupSort() {\n return !!gantt.getState().group_mode;\n },\n _getWBSCode: function _getWBSCode(task) {\n if (!task) return \"\";\n\n if (this._isRecalcNeeded()) {\n this._calcWBS();\n }\n\n if (task.$virtual) return \"\";\n if (this._isGroupSort()) return task.$wbs || \"\";\n\n if (!task.$wbs) {\n this.reset();\n\n this._calcWBS();\n }\n\n return task.$wbs;\n },\n _setWBSCode: function _setWBSCode(task, value) {\n task.$wbs = value;\n },\n getWBSCode: function getWBSCode(task) {\n return this._getWBSCode(task);\n },\n getByWBSCode: function getByWBSCode(code) {\n var parts = code.split(\".\");\n var currentNode = gantt.config.root_id;\n\n for (var i = 0; i < parts.length; i++) {\n var children = gantt.getChildren(currentNode);\n var index = parts[i] * 1 - 1;\n\n if (gantt.isTaskExists(children[index])) {\n currentNode = children[index];\n } else {\n return null;\n }\n }\n\n if (gantt.isTaskExists(currentNode)) {\n return gantt.getTask(currentNode);\n } else {\n return null;\n }\n },\n _calcWBS: function _calcWBS() {\n if (!this._isRecalcNeeded()) return;\n var _isFirst = true;\n gantt.eachTask(function (ch) {\n if (_isFirst) {\n _isFirst = false;\n\n this._setWBSCode(ch, \"1\");\n\n return;\n }\n\n var _prevSibling = gantt.getPrevSibling(ch.id);\n\n if (_prevSibling !== null) {\n var _wbs = gantt.getTask(_prevSibling).$wbs;\n\n if (_wbs) {\n _wbs = _wbs.split(\".\");\n _wbs[_wbs.length - 1]++;\n\n this._setWBSCode(ch, _wbs.join(\".\"));\n }\n } else {\n var _parent = gantt.getParent(ch.id);\n\n this._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n }\n }, gantt.config.root_id, this);\n this._needRecalc = false;\n }\n };\n};\n\nmodule.exports = function (gantt) {\n var wbs = createWbs(gantt);\n\n gantt.getWBSCode = function getWBSCode(task) {\n return wbs.getWBSCode(task);\n };\n\n gantt.getTaskByWBSCode = function (code) {\n return wbs.getByWBSCode(code);\n };\n\n function resetCache() {\n wbs.reset();\n return true;\n }\n\n gantt.attachEvent(\"onAfterTaskMove\", resetCache);\n gantt.attachEvent(\"onBeforeParse\", resetCache);\n gantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n gantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n gantt.attachEvent(\"onAfterSort\", resetCache);\n};","var global = require(\"../../utils/global\");\n\nfunction createMethod(gantt) {\n var methods = {};\n var isActive = false;\n\n function disableMethod(methodName, dummyMethod) {\n dummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function () {};\n\n if (!methods[methodName]) {\n methods[methodName] = this[methodName];\n this[methodName] = dummyMethod;\n }\n }\n\n function restoreMethod(methodName) {\n if (methods[methodName]) {\n this[methodName] = methods[methodName];\n methods[methodName] = null;\n }\n }\n\n function disableMethods(methodsHash) {\n for (var i in methodsHash) {\n disableMethod.call(this, i, methodsHash[i]);\n }\n }\n\n function restoreMethods() {\n for (var i in methods) {\n restoreMethod.call(this, i);\n }\n }\n\n function batchUpdatePayload(callback) {\n try {\n callback();\n } catch (e) {\n global.console.error(e);\n }\n }\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"batchUpdate\", function () {\n return {\n batch_update: isActive\n };\n }, false);\n return function batchUpdate(callback, noRedraw) {\n if (isActive) {\n // batch mode is already active\n batchUpdatePayload(callback);\n return;\n }\n\n var call_dp = this._dp && this._dp.updateMode != \"off\";\n var dp_mode;\n\n if (call_dp) {\n dp_mode = this._dp.updateMode;\n\n this._dp.setUpdateMode(\"off\");\n } // temporary disable some methods while updating multiple tasks\n\n\n var resetProjects = {};\n var methods = {\n \"render\": true,\n \"refreshData\": true,\n \"refreshTask\": true,\n \"refreshLink\": true,\n \"resetProjectDates\": function resetProjectDates(task) {\n resetProjects[task.id] = task;\n }\n };\n disableMethods.call(this, methods);\n isActive = true;\n this.callEvent(\"onBeforeBatchUpdate\", []);\n batchUpdatePayload(callback);\n this.callEvent(\"onAfterBatchUpdate\", []);\n restoreMethods.call(this); // do required updates after changes applied\n\n for (var i in resetProjects) {\n this.resetProjectDates(resetProjects[i]);\n }\n\n isActive = false;\n\n if (!noRedraw) {\n this.render();\n }\n\n if (call_dp) {\n this._dp.setUpdateMode(dp_mode);\n\n this._dp.setGanttMode(\"task\");\n\n this._dp.sendData();\n\n this._dp.setGanttMode(\"link\");\n\n this._dp.sendData();\n }\n };\n}\n\nmodule.exports = function (gantt) {\n gantt.batchUpdate = createMethod(gantt);\n};","module.exports = function (gantt) {\n if (!gantt.ext) {\n gantt.ext = {};\n }\n\n var modules = [require(\"./batch_update\"), require(\"./wbs\"), require(\"./resources\"), require(\"./resource_assignments\"), require(\"./new_task_placeholder\"), require(\"./auto_task_types\"), require(\"./formatters\"), require(\"./empty_state_screen\")[\"default\"]];\n\n for (var i = 0; i < modules.length; i++) {\n if (modules[i]) modules[i](gantt);\n }\n};","import * as utils from \"../../utils/utils\";\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, store) {\n\t\tif (!this.userdata) {\n\t\t\tthis.userdata = {};\n\t\t}\n\t\tthis.userdata[store] = this.userdata[store] || {};\n\t\tif (this.userdata[store][id] && this.userdata[store][id][name]) {\n\t\t\treturn this.userdata[store][id][name];\n\t\t}\n\t\treturn \"\";\n\t};\n\tgantt.setUserData = function(id, name, value, store) {\n\t\tif (!this.userdata) {\n\t\t\tthis.userdata = {};\n\t\t}\n\t\tthis.userdata[store] = this.userdata[store] || {};\n\t\tthis.userdata[store][id] = this.userdata[store][id] || {};\n\t\tthis.userdata[store][id][name] = value;\n\t};\n\n\tgantt._change_id = function(oldId, newId) {\n\t\tswitch (this._dp._ganttMode) {\n\t\t\tcase \"task\":\n\t\t\t\tthis.changeTaskId(oldId, newId);\n\t\t\t\tbreak;\n\t\t\tcase \"link\":\n\t\t\t\tthis.changeLinkId(oldId, newId);\n\t\t\t\tbreak;\n\t\t\tcase \"assignment\":\n\t\t\t\tthis.$data.assignmentsStore.changeId(oldId, newId);\n\t\t\t\tbreak;\n\t\t\tcase \"resource\":\n\t\t\t\tthis.$data.resourcesStore.changeId(oldId, newId);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Invalid mode of the dataProcessor after database id is received: ${this._dp._ganttMode}, new id: ${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\tconst clientSideDelete = (id) => {\n\t\t\treturn this.clientSideDelete(id, dp, gantt);\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\tcascadeDelete[id] = {\n\t\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\n\t\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\n\t\t\t\t};\n\t\t\t}\n\t\t\t// GS-631. Keep the deleted item in Gantt until we receive the successful response from the server\n\t\t\tif (dp.deleteAfterConfirmation) {\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id, true, \"deleted\");\n\t\t\t\treturn false;\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\tconst needCascadeDelete = gantt.config.cascade_delete && cascadeDelete[id];\n\t\t\tif (!needDbDelete && !needCascadeDelete) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (needCascadeDelete) {\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\tif (needDbDelete){\n\t\t\t\tdp.storeItem(item);\n\t\t\t\tif (!dp.deleteAfterConfirmation){\n\t\t\t\t\tdp.setUpdated(id, true, \"deleted\");\n\t\t\t\t}\n\t\t\t}\n\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} else if(mode === \"assignment\") {\n\t\t\t\tmethods.delete = function(val) {\n\t\t\t\t\tgantt.$data.assignmentsStore.remove(val);\n\t\t\t\t};\n\t\t\t\tmethods.isExist = function(val){\n\t\t\t\t\treturn gantt.$data.assignmentsStore.exists(val);\n\t\t\t\t};\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\n\t\tthis.handleResourceCRUD(dp, gantt);\n\t\tthis.handleResourceAssignmentCRUD(dp, gantt);\n\t}\n\n\tclientSideDelete(id, dp, gantt){\n\t\tconst updated = dp.updatedRows.slice();\n\t\tlet clientOnly = false;\n\n\t\tif(gantt.getUserData(id, \"!nativeeditor_status\", dp._ganttMode) === \"true_deleted\"){\n\t\t\tclientOnly = true;\n\t\t\tdp.setUpdated(id,false);\n\t\t}\n\n\t\tfor (let i = 0; i < updated.length && !dp._in_progress[id]; i++) {\n\t\t\tif (updated[i] === id) {\n\t\t\t\tif (gantt.getUserData(id, \"!nativeeditor_status\", dp._ganttMode) === \"inserted\") {\n\t\t\t\t\tclientOnly = true;\n\t\t\t\t}\n\t\t\t\tdp.setUpdated(id,false);\n\t\t\t}\n\t\t}\n\t\treturn clientOnly;\n\t}\n\n\thandleResourceAssignmentCRUD(dp, gantt){\n\t\tif(!gantt.config.resources || gantt.config.resources.dataprocessor_assignments !== true){\n\t\t\treturn;\n\t\t}\n\n\t\tconst assignmentsStore = gantt.getDatastore(gantt.config.resource_assignment_store);\n\t\tconst insertedTasks = {};\n\t\tconst pendingAssignments = {};\n\n\t\tgantt.attachEvent(\"onBeforeTaskAdd\", function(id, task){\n\t\t\tinsertedTasks[id] = true;\n\t\t\treturn true;\n\t\t});\n\n\t\tfunction putAssignmentToQueue(item){\n\t\t\tpendingAssignments[item.id] = item;\n\t\t\tinsertedTasks[item.task_id] = true;\n\t\t}\n\n\t\tfunction insertResourceAssignment(assignment){\n\t\t\tconst id = assignment.id;\n\t\t\tif (assignmentsStore.exists(id)) {\n\t\t\t\tdp.setGanttMode(\"assignment\");\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\n\t\t\t}\n\t\t\tdelete pendingAssignments[id];\n\t\t}\n\n\t\tgantt.attachEvent(\"onTaskIdChange\", function(id, newId){\n\t\t\tdelete insertedTasks[id];\n\t\t});\n\n\t\tassignmentsStore.attachEvent(\"onAfterAdd\", (id, item) => {\n\t\t\tif(insertedTasks[item.task_id]){\n\t\t\t\t// inserting assignment of new task\n\t\t\t\t// task is not saved yet, need to wait till it gets permanent id and save assigmnents after that\n\t\t\t\tputAssignmentToQueue(item);\n\t\t\t}else{\n\t\t\t\tinsertResourceAssignment(item);\n\t\t\t}\n\t\t});\n\n\t\tassignmentsStore.attachEvent(\"onAfterUpdate\", (id, item) => {\n\t\t\tif (assignmentsStore.exists(id)) {\n\t\t\t\tif(pendingAssignments[id]){\n\t\t\t\t\tinsertResourceAssignment(item);\n\t\t\t\t}else{\n\t\t\t\t\tdp.setGanttMode(\"assignment\");\n\t\t\t\t\tdp.setUpdated(id, true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tassignmentsStore.attachEvent(\"onAfterDelete\", (id, item) => {\n\t\t\tdp.setGanttMode(\"assignment\");\n\n\t\t\tconst needDbDelete = !this.clientSideDelete(id, dp, gantt);\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}\n\n\thandleResourceCRUD(dp, gantt){\n\t\tif(!gantt.config.resources || gantt.config.resources.dataprocessor_resources !== true){\n\t\t\treturn;\n\t\t}\n\n\t\tconst resourcesStore = gantt.getDatastore(gantt.config.resource_store);\n\n\t\tfunction insertResource(resource){\n\t\t\tconst id = resource.id;\n\t\t\tif (resourcesStore.exists(id)) {\n\t\t\t\tdp.setGanttMode(\"resource\");\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\n\t\t\t}\n\t\t}\n\n\t\tresourcesStore.attachEvent(\"onAfterAdd\", (id, item) => {\n\t\t\tinsertResource(item);\n\t\t});\n\n\t\tresourcesStore.attachEvent(\"onAfterUpdate\", (id, item) => {\n\t\t\tif (resourcesStore.exists(id)) {\n\t\t\t\tdp.setGanttMode(\"resource\");\n\t\t\t\tdp.setUpdated(id, true);\n\t\t\t}\n\t\t});\n\n\t\tresourcesStore.attachEvent(\"onAfterDelete\", (id, item) => {\n\t\t\tdp.setGanttMode(\"resource\");\n\n\t\t\tconst needDbDelete = !this.clientSideDelete(id, dp, gantt);\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}\n\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\tdeleteAfterConfirmation?: 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(\"assignment\") || 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\n\n\tdp.init(gantt);\n\tdp.setTransactionMode({\n\t\tmode: tMode,\n\t\trouter\n\t}, config.batchUpdate);\n\tif(config.deleteAfterConfirmation){\n\t\tdp.deleteAfterConfirmation = config.deleteAfterConfirmation;\n\t}\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, this._ganttMode);\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, this._ganttMode);\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, \"\", this._ganttMode);\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, this._ganttMode);\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\t\tif (typeof rowId === \"undefined\" || this._tSend) {\n\n\t\t\tconst pendingUpdateModes = [];\n\t\t\tif(this.modes){\n\t\t\t\tconst knownModes = [\"task\", \"link\", \"assignment\"];\n\t\t\t\tknownModes.forEach((mode) => {\n\t\t\t\t\tif(this.modes[mode] && this.modes[mode].updatedRows.length){\n\t\t\t\t\t\tpendingUpdateModes.push(mode);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (pendingUpdateModes.length){\n\t\t\t\tfor(let i = 0; i < pendingUpdateModes.length; i++){\n\t\t\t\t\tthis.setGanttMode(pendingUpdateModes[i]);\n\t\t\t\t\tthis.sendAllData();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\treturn this.sendAllData();\n\t\t\t}\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\tif(!this.deleteAfterConfirmation || this._ganttMode !== \"task\"){\n\t\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\", this._ganttMode);\n\t\t\t\t\tthis.$gantt[this._methods[3]](sid);\n\t\t\t\t\tdelete this._in_progress[marker];\n\t\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\n\t\t\t\t}else{\n\t\t\t\t\tif (this._ganttMode === \"task\" && this.$gantt.isTaskExists(sid)) {\n\t\t\t\t\t\tthis.$gantt.setUserData(sid, this.action_param, \"true_deleted\", this._ganttMode);\n\t\t\t\t\t\tconst task = this.$gantt.getTask(sid);\n\t\t\t\t\t\tthis.$gantt.silent(() => {\n\t\t\t\t\t\t\tthis.$gantt.deleteTask(sid);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.$gantt.callEvent(\"onAfterTaskDelete\", [sid, task]);\n\t\t\t\t\t\tthis.$gantt.render();\n\t\t\t\t\t\tdelete this._in_progress[marker];\n\t\t\t\t\t}\n\t\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\n\t\t\t\t}\n\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, \"\", this._ganttMode);\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, this._ganttMode));\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 if (reqUrl.indexOf(\"gantt_mode=assignments\") !== -1) {\n\t\t\t\tmode = \"assignment\";\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\") >= 0) {\n\t\t\t\tmode = \"link\";\n\t\t\t} else if(reqUrl.indexOf(\"/assignment\") >= 0){\n\t\t\t\tmode = \"assignment\";\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\tconst processCallback = (itemId: any) => {\n\t\t\tconst action = tag.action || this.getState(itemId) || \"updated\";\n\t\t\tconst sid = tag.sid || itemId[0];\n\t\t\tconst tid = tag.tid || itemId[0];\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag, mode);\n\t\t};\n\t\tif (tag) {\n\t\t\t// GS-753. When multiple tasks are updated, unhighlight all of them\n\t\t\tif (Array.isArray(id) && id.length > 1) {\n\t\t\t\tid.forEach((taskId) => processCallback(taskId));\n\t\t\t} else {\n\t\t\t\tprocessCallback(id);\n\t\t\t}\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\tdelete_confirmation:\"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\", this._ganttMode);\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]), this._ganttMode);\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\n\t\t\t\tconst errorMsgStart = \"Incorrect configuration of gantt.createDataProcessor\";\n\t\t\t\tconst errorMsgEnd = `\nYou need to either add missing properties to the dataProcessor router object or to use a router function.\nSee https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrouting and https://docs.dhtmlx.com/gantt/api__gantt_createdataprocessor.html for details.`;\n\n\t\t\t\tif(!this._router[ganttMode]){\n\t\t\t\t\tthrow new Error(`${errorMsgStart}: router for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\n\t\t\t\t}\n\t\t\t\tswitch (taskState) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tif(!this._router[ganttMode].create){\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **create** action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\n\t\t\t\t\t\t}\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\tif(!this._router[ganttMode].delete){\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **delete** action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\n\t\t\t\t\t\t}\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\tif(!this._router[ganttMode].update){\n\t\t\t\t\t\t\tthrow new Error(`${errorMsgStart}: **update**\" action for the **${ganttMode}** entity is not defined. ${errorMsgEnd}`);\n\t\t\t\t\t\t}\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 dhxVersion = \"dhx_version=\" + this.$gantt.getUserData(0, \"version\", this._ganttMode);\n\t\tconst urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, dhxVersion].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, this._ganttMode)) {\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, this._ganttMode);\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 if (this.getGanttMode() === \"assignment\") {\n\t\t\tif(this.$gantt.$data.assignmentsStore.exists(id)){\n\t\t\t\tdataItem =this.$gantt.$data.assignmentsStore.getItem(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 = void 0;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n\n if (range.start !== undefined && range.end !== undefined) {\n var key = range.start + \" - \" + range.end;\n\n if (loadedRanges[key]) {\n layerData = loadedRanges[key];\n } else {\n layerData = store.getIndexRange(range.start, range.end);\n loadedRanges[key] = layerData;\n }\n } else if (range.ids !== undefined) {\n layerData = range.ids.map(function (id) {\n return store.getItem(id);\n });\n } else {\n throw new Error(\"Invalid range returned from 'getVisibleRange' of the layer\");\n }\n } else {\n if (!allData) {\n allData = store.getVisibleItems();\n }\n\n layerData = allData;\n }\n\n if (layer.prepare_data) {\n // GS-1605. Highlight timeline cells below tasks and in an empty chart\n layer.prepare_data(layerData);\n }\n\n renderers[_i].render_items(layerData);\n }\n },\n updateItems: function updateItems(layer) {\n if (layer.update_items) {\n var data;\n\n if (layer.get_visible_range) {\n var range = layer.get_visible_range(store);\n\n if (range.start !== undefined && range.end !== undefined) {\n data = store.getIndexRange(range.start, range.end);\n } else if (range.ids !== undefined) {\n data = range.ids.map(function (id) {\n return store.getItem(id);\n });\n } else {\n throw new Error(\"Invalid range returned from 'getVisibleRange' of the layer\");\n }\n } else {\n data = store.getVisibleItems();\n }\n\n if (layer.prepare_data) {\n // GS-1605. Highlight timeline cells below tasks and in an empty chart\n layer.prepare_data(data, layer);\n }\n\n layer.update_items(data);\n }\n }\n };\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n renderer.onUpdateRequest = function (layer) {\n itemRepainter.updateItems(layer);\n };\n }\n });\n\n function skipRepaint(gantt) {\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return true;\n } else {\n return false;\n }\n }\n\n store.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!id || action == \"move\" || action == \"delete\") {\n store.callEvent(\"onBeforeRefreshAll\", []);\n store.callEvent(\"onAfterRefreshAll\", []);\n } else {\n store.callEvent(\"onBeforeRefreshItem\", [item.id]);\n store.callEvent(\"onAfterRefreshItem\", [item.id]);\n }\n });\n store.attachEvent(\"onAfterRefreshAll\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer && !skipRepaint(gantt)) {\n itemRepainter.renderItems(renderer);\n }\n });\n store.attachEvent(\"onAfterRefreshItem\", function (id) {\n if (isHeadless(gantt)) {\n return true;\n }\n\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n itemRepainter.renderItem(id, renderer);\n }\n }); // TODO: probably can be done more in a more efficient way\n\n store.attachEvent(\"onItemOpen\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n store.attachEvent(\"onItemClose\", function () {\n if (isHeadless(gantt)) {\n return true;\n }\n\n gantt.render();\n });\n\n function refreshId(renders, oldId, newId, item) {\n for (var i = 0; i < renders.length; i++) {\n renders[i].change_id(oldId, newId);\n }\n }\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (isHeadless(gantt)) {\n return true;\n } // in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n // use onBeforeIdChange for this hook.\n // TODO: use something more reasonable instead\n\n\n store.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n if (skipRepaint(gantt)) {\n return;\n }\n\n if (!store.isSilent()) {\n var renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n if (renderer) {\n // missing check for renderer GS-1814\n refreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n itemRepainter.renderItem(newId, renderer);\n } else {\n // GS-1814 repaint ui to apply new id when the datastore don't have own renderer\n gantt.render();\n }\n }\n });\n};\n\nmodule.exports = {\n bindDataStore: storeRenderCreator\n};","function createDataStoreSelectMixin(store) {\n var selectedId = null;\n var deleteItem = store._removeItemInner;\n\n function _unselect(id) {\n selectedId = null;\n this.callEvent(\"onAfterUnselect\", [id]);\n }\n\n store._removeItemInner = function (id) {\n if (selectedId == id) {\n _unselect.call(this, id);\n }\n\n if (selectedId && this.eachItem) {\n this.eachItem(function (subItem) {\n if (subItem.id == selectedId) {\n _unselect.call(this, subItem.id);\n }\n }, id);\n }\n\n return deleteItem.apply(this, arguments);\n };\n\n store.attachEvent(\"onIdChange\", function (oldId, newId) {\n if (store.getSelectedId() == oldId) {\n store.silent(function () {\n store.unselect(oldId);\n store.select(newId);\n });\n }\n });\n return {\n select: function select(id) {\n if (id) {\n if (selectedId == id) return selectedId;\n\n if (!this._skip_refresh) {\n if (!this.callEvent(\"onBeforeSelect\", [id])) {\n return false;\n }\n }\n\n this.unselect();\n selectedId = id;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n this.callEvent(\"onAfterSelect\", [id]);\n }\n }\n\n return selectedId;\n },\n getSelectedId: function getSelectedId() {\n return selectedId;\n },\n isSelected: function isSelected(id) {\n return id == selectedId;\n },\n unselect: function unselect(id) {\n var id = id || selectedId;\n if (!id) return;\n selectedId = null;\n\n if (!this._skip_refresh) {\n this.refresh(id);\n\n _unselect.call(this, id);\n }\n }\n };\n}\n\nmodule.exports = createDataStoreSelectMixin;","var utils = require(\"../../utils/utils\");\n\nvar createLinksStoreFacade = function createLinksStoreFacade() {\n return {\n getLinkCount: function getLinkCount() {\n return this.$data.linksStore.count();\n },\n getLink: function getLink(id) {\n return this.$data.linksStore.getItem(id);\n },\n getLinks: function getLinks() {\n return this.$data.linksStore.getItems();\n },\n isLinkExists: function isLinkExists(id) {\n return this.$data.linksStore.exists(id);\n },\n addLink: function addLink(link) {\n var newLink = this.$data.linksStore.addItem(link); // GS-1222. Update fullOrder otherwise the link won't appear after render\n\n if (this.$data.linksStore.isSilent()) {\n this.$data.linksStore.fullOrder.push(newLink);\n }\n\n return newLink;\n },\n updateLink: function updateLink(id, data) {\n if (!utils.defined(data)) data = this.getLink(id);\n this.$data.linksStore.updateItem(id, data);\n },\n deleteLink: function deleteLink(id) {\n return this.$data.linksStore.removeItem(id);\n },\n changeLinkId: function changeLinkId(oldid, newid) {\n return this.$data.linksStore.changeId(oldid, newid);\n }\n };\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\nvar createTasksDatastoreFacade = function createTasksDatastoreFacade() {\n return {\n getTask: function getTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument for gantt.getTask\");\n var task = this.$data.tasksStore.getItem(id);\n this.assert(task, \"Task not found id=\" + id);\n return task;\n },\n getTaskByTime: function getTaskByTime(from, to) {\n var p = this.$data.tasksStore.getItems();\n var res = [];\n\n if (!(from || to)) {\n res = p;\n } else {\n from = +from || -Infinity;\n to = +to || Infinity;\n\n for (var t = 0; t < p.length; t++) {\n var task = p[t];\n if (+task.start_date < to && +task.end_date > from) res.push(task);\n }\n }\n\n return res;\n },\n isTaskExists: function isTaskExists(id) {\n if (!this.$data || !this.$data.tasksStore) {\n return false;\n }\n\n return this.$data.tasksStore.exists(id);\n },\n updateTask: function updateTask(id, item) {\n if (!utils.defined(item)) item = this.getTask(id);\n this.$data.tasksStore.updateItem(id, item);\n if (this.isTaskExists(id)) this.refreshTask(id);\n },\n addTask: function addTask(item, parent, index) {\n if (!utils.defined(item.id)) item.id = utils.uid(); //GS-761: assert unique ID\n\n if (this.isTaskExists(item.id)) {\n var task = this.getTask(item.id);\n\n if (task.$index != item.$index) {\n // Someone may try to mistakenly add a task with the same ID, and most likely\n // use the string format for the dates. Gantt shouldn't break in this scenario\n if (item.start_date && typeof item.start_date === \"string\") {\n item.start_date = this.date.parseDate(item.start_date, \"parse_date\");\n }\n\n if (item.end_date && typeof item.end_date === \"string\") {\n item.end_date = this.date.parseDate(item.end_date, \"parse_date\");\n }\n\n return this.$data.tasksStore.updateItem(item.id, item);\n }\n }\n\n if (!utils.defined(parent)) parent = this.getParent(item) || 0;\n if (!this.isTaskExists(parent)) parent = this.config.root_id;\n this.setParent(item, parent);\n return this.$data.tasksStore.addItem(item, index, parent);\n },\n deleteTask: function deleteTask(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n return this.$data.tasksStore.removeItem(id);\n },\n getTaskCount: function getTaskCount() {\n return this.$data.tasksStore.count();\n },\n getVisibleTaskCount: function getVisibleTaskCount() {\n return this.$data.tasksStore.countVisible();\n },\n getTaskIndex: function getTaskIndex(id) {\n return this.$data.tasksStore.getBranchIndex(id);\n },\n getGlobalTaskIndex: function getGlobalTaskIndex(id) {\n id = replaceValidZeroId(id, this.config.root_id);\n this.assert(id, \"Invalid argument\");\n return this.$data.tasksStore.getIndexById(id);\n },\n eachTask: function eachTask(code, parent, master) {\n return this.$data.tasksStore.eachItem(utils.bind(code, master || this), parent);\n },\n eachParent: function eachParent(callback, startTask, master) {\n return this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n },\n changeTaskId: function changeTaskId(oldid, newid) {\n this.$data.tasksStore.changeId(oldid, newid);\n var task = this.$data.tasksStore.getItem(newid);\n var links = [];\n\n if (task.$source) {\n links = links.concat(task.$source);\n }\n\n if (task.$target) {\n links = links.concat(task.$target);\n }\n\n for (var i = 0; i < links.length; i++) {\n var link = this.getLink(links[i]);\n\n if (link.source == oldid) {\n link.source = newid;\n }\n\n if (link.target == oldid) {\n link.target = newid;\n }\n }\n },\n calculateTaskLevel: function calculateTaskLevel(item) {\n return this.$data.tasksStore.calculateItemLevel(item);\n },\n getNext: function getNext(id) {\n return this.$data.tasksStore.getNext(id);\n },\n getPrev: function getPrev(id) {\n return this.$data.tasksStore.getPrev(id);\n },\n getParent: function getParent(id) {\n return this.$data.tasksStore.getParent(id);\n },\n setParent: function setParent(task, new_pid, silent) {\n return this.$data.tasksStore.setParent(task, new_pid, silent);\n },\n getSiblings: function getSiblings(id) {\n return this.$data.tasksStore.getSiblings(id).slice();\n },\n getNextSibling: function getNextSibling(id) {\n return this.$data.tasksStore.getNextSibling(id);\n },\n getPrevSibling: function getPrevSibling(id) {\n return this.$data.tasksStore.getPrevSibling(id);\n },\n getTaskByIndex: function getTaskByIndex(index) {\n var id = this.$data.tasksStore.getIdByIndex(index);\n\n if (this.isTaskExists(id)) {\n return this.getTask(id);\n } else {\n return null;\n }\n },\n getChildren: function getChildren(id) {\n if (!this.hasChild(id)) {\n return [];\n } else {\n return this.$data.tasksStore.getChildren(id).slice();\n }\n },\n hasChild: function hasChild(id) {\n return this.$data.tasksStore.hasChild(id);\n },\n open: function open(id) {\n this.$data.tasksStore.open(id);\n },\n close: function close(id) {\n this.$data.tasksStore.close(id);\n },\n moveTask: function moveTask(sid, tindex, parent) {\n parent = replaceValidZeroId(parent, this.config.root_id);\n return this.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n },\n sort: function sort(field, desc, parent, silent) {\n var render = !silent; //4th argument to cancel redraw after sorting\n\n this.$data.tasksStore.sort(field, desc, parent);\n this.callEvent(\"onAfterSort\", [field, desc, parent]);\n\n if (render) {\n this.render();\n }\n }\n };\n};\n\nmodule.exports = createTasksDatastoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksFacade = require(\"./datastore_tasks\"),\n createLinksFacade = require(\"./datastore_links\"),\n DataStore = require(\"../datastore/datastore\"),\n TreeDataStore = require(\"../datastore/treedatastore\"),\n createDatastoreSelect = require(\"../datastore/select\");\n\nvar datastoreRender = require(\"../datastore/datastore_render\");\n\nvar isHeadless = require(\"../../utils/is_headless\");\n\nvar _require = require(\"../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId; // TODO: remove workaround for mixup with es5 and ts imports\n\n\nif (DataStore[\"default\"]) {\n DataStore = DataStore[\"default\"];\n}\n\nfunction getDatastores() {\n var storeNames = this.$services.getService(\"datastores\");\n var res = [];\n\n for (var i = 0; i < storeNames.length; i++) {\n var store = this.getDatastore(storeNames[i]);\n\n if (!store.$destroyed) {\n res.push(store);\n }\n }\n\n return res;\n}\n\nvar createDatastoreFacade = function createDatastoreFacade() {\n return {\n createDatastore: function createDatastore(config) {\n var $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n if (config) {\n var self = this;\n\n config.openInitially = function () {\n return self.config.open_tree_initially;\n };\n\n config.copyOnParse = function () {\n return self.config.deepcopy_on_parse;\n };\n }\n\n var store = new $StoreType(config);\n this.mixin(store, createDatastoreSelect(store));\n\n if (config.name) {\n var servicePrefix = \"datastore:\";\n var storeAccessName = servicePrefix + config.name;\n store.attachEvent(\"onDestroy\", function () {\n this.$services.dropService(storeAccessName);\n var storeList = this.$services.getService(\"datastores\");\n\n for (var i = 0; i < storeList.length; i++) {\n if (storeList[i] === config.name) {\n storeList.splice(i, 1);\n break;\n }\n }\n }.bind(this));\n this.$services.dropService(storeAccessName);\n this.$services.setService(storeAccessName, function () {\n return store;\n });\n var storeList = this.$services.getService(\"datastores\");\n\n if (!storeList) {\n storeList = [];\n this.$services.setService(\"datastores\", function () {\n return storeList;\n });\n storeList.push(config.name);\n } else if (storeList.indexOf(config.name) < 0) {\n storeList.push(config.name);\n }\n\n datastoreRender.bindDataStore(config.name, this);\n }\n\n return store;\n },\n getDatastore: function getDatastore(name) {\n return this.$services.getService(\"datastore:\" + name);\n },\n _getDatastores: getDatastores,\n refreshData: function refreshData() {\n var scrollState;\n\n if (!isHeadless(this)) {\n scrollState = this.getScrollState();\n }\n\n this.callEvent(\"onBeforeDataRender\", []);\n var stores = getDatastores.call(this);\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].refresh();\n }\n\n if (this.config.preserve_scroll && !isHeadless(this) && (scrollState.x || scrollState.y)) {\n this.scrollTo(scrollState.x, scrollState.y);\n }\n\n this.callEvent(\"onDataRender\", []);\n },\n isChildOf: function isChildOf(childId, parentId) {\n return this.$data.tasksStore.isChildOf(childId, parentId);\n },\n refreshTask: function refreshTask(taskId, refresh_links) {\n var task = this.getTask(taskId);\n var self = this;\n\n function refreshLinks() {\n if (refresh_links !== undefined && !refresh_links) return;\n\n for (var i = 0; i < task.$source.length; i++) {\n self.refreshLink(task.$source[i]);\n }\n\n for (var i = 0; i < task.$target.length; i++) {\n self.refreshLink(task.$target[i]);\n }\n }\n\n if (task && this.isTaskVisible(taskId)) {\n this.$data.tasksStore.refresh(taskId, !!this.getState(\"tasksDnd\").drag_id || refresh_links === false); // do quick refresh during drag and drop\n\n refreshLinks();\n } else if (this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId)) && !this._bulk_dnd) {\n this.refreshTask(this.getParent(taskId));\n var hasSplitParent = false;\n this.eachParent(function (parent) {\n if (hasSplitParent || this.isSplitTask(parent)) {\n hasSplitParent = true;\n }\n }, taskId);\n\n if (hasSplitParent) {\n refreshLinks();\n }\n }\n },\n refreshLink: function refreshLink(linkId) {\n this.$data.linksStore.refresh(linkId, !!this.getState(\"tasksDnd\").drag_id); // do quick refresh during drag and drop\n },\n silent: function silent(code) {\n var gantt = this;\n gantt.$data.tasksStore.silent(function () {\n gantt.$data.linksStore.silent(function () {\n code();\n });\n });\n },\n clearAll: function clearAll() {\n var stores = getDatastores.call(this); // clear all stores without invoking clearAll event\n // in order to prevent calling handlers when only some stores are cleared\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].silent(function () {\n stores[i].clearAll();\n });\n } // run clearAll again to invoke events\n\n\n for (var i = 0; i < stores.length; i++) {\n stores[i].clearAll();\n }\n\n this._update_flags();\n\n this.userdata = {};\n this.callEvent(\"onClear\", []);\n this.render();\n },\n _clear_data: function _clear_data() {\n this.$data.tasksStore.clearAll();\n this.$data.linksStore.clearAll();\n\n this._update_flags();\n\n this.userdata = {};\n },\n selectTask: function selectTask(id) {\n var store = this.$data.tasksStore;\n if (!this.config.select_task) return false;\n id = replaceValidZeroId(id, this.config.root_id);\n\n if (id) {\n var oldSelectId = this.getSelectedId(); // Don't repaint the resource panel as the data didn't change\n\n store._skipResourceRepaint = true;\n store.select(id);\n store._skipResourceRepaint = false; // GS-730. Split task is not included in the tree, \n // so the datastore renderer will think that the task is not visible\n\n if (oldSelectId && store.pull[oldSelectId].$split_subtask && oldSelectId != id) {\n this.refreshTask(oldSelectId);\n }\n\n if (store.pull[id].$split_subtask && oldSelectId != id) {\n // GS-1850. Do not repaint split task after double click\n this.refreshTask(id);\n }\n }\n\n return store.getSelectedId();\n },\n unselectTask: function unselectTask(id) {\n var store = this.$data.tasksStore;\n store.unselect(id); // GS-730. Split task is not included in the tree, \n // so the datastore renderer will think that the task is not visible\n\n if (id && store.pull[id].$split_subtask) {\n this.refreshTask(id);\n }\n },\n isSelectedTask: function isSelectedTask(id) {\n return this.$data.tasksStore.isSelected(id);\n },\n getSelectedId: function getSelectedId() {\n return this.$data.tasksStore.getSelectedId();\n }\n };\n};\n\nfunction createFacade() {\n var res = utils.mixin({}, createDatastoreFacade());\n utils.mixin(res, createTasksFacade());\n utils.mixin(res, createLinksFacade());\n return res;\n}\n\nmodule.exports = {\n create: createFacade\n};","var utils = require(\"../../utils/utils\");\n\nvar facadeFactory = require(\"./../facades/datastore\");\n\nvar calculateScaleRange = require(\"../gantt_data_range\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nfunction initDataStores(gantt) {\n var facade = facadeFactory.create();\n utils.mixin(gantt, facade);\n var tasksStore = gantt.createDatastore({\n name: \"task\",\n type: \"treeDatastore\",\n rootId: function rootId() {\n return gantt.config.root_id;\n },\n initItem: utils.bind(_init_task, gantt),\n getConfig: function getConfig() {\n return gantt.config;\n }\n });\n var linksStore = gantt.createDatastore({\n name: \"link\",\n initItem: utils.bind(_init_link, gantt)\n });\n gantt.attachEvent(\"onDestroy\", function () {\n tasksStore.destructor();\n linksStore.destructor();\n });\n gantt.attachEvent(\"onLinkValidation\", function (link) {\n if (gantt.isLinkExists(link.id) || link.id === \"predecessor_generated\") {\n // link was already added into gantt\n return true;\n }\n\n var source = gantt.getTask(link.source);\n var taskLinks = source.$source;\n\n for (var i = 0; i < taskLinks.length; i++) {\n var existingLink = gantt.getLink(taskLinks[i]);\n var sourceMatch = link.source == existingLink.source;\n var targetMatch = link.target == existingLink.target;\n var typeMatch = link.type == existingLink.type; // prevent creating duplicated links from the UI\n\n if (sourceMatch && targetMatch && typeMatch) {\n return false;\n }\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onBeforeRefreshAll\", function () {\n // GS-2170 do not recalculate indexes and dates as the event will be called later in the onStoreUpdate event\n if (tasksStore._skipTaskRecalculation) {\n return;\n }\n\n var order = tasksStore.getVisibleItems();\n\n for (var i = 0; i < order.length; i++) {\n var item = order[i];\n item.$index = i;\n item.$local_index = gantt.getTaskIndex(item.id);\n gantt.resetProjectDates(item);\n }\n });\n tasksStore.attachEvent(\"onFilterItem\", function (id, task) {\n if (gantt.config.show_tasks_outside_timescale) {\n return true;\n }\n\n var min = null,\n max = null;\n\n if (gantt.config.start_date && gantt.config.end_date) {\n if (gantt._isAllowedUnscheduledTask(task)) return true;\n min = gantt.config.start_date.valueOf();\n max = gantt.config.end_date.valueOf();\n if (+task.start_date > max || +task.end_date < +min) return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onIdChange\", function (oldId, newId) {\n gantt._update_flags(oldId, newId);\n\n var changedTask = gantt.getTask(newId);\n\n if (!tasksStore.isSilent()) {\n if (changedTask.$split_subtask || changedTask.rollup) {\n gantt.eachParent(function (parent) {\n gantt.refreshTask(parent.id);\n }, newId);\n }\n }\n });\n tasksStore.attachEvent(\"onAfterUpdate\", function (id) {\n gantt._update_parents(id);\n\n if (gantt.getState(\"batchUpdate\").batch_update) {\n return true;\n }\n\n var task = tasksStore.getItem(id);\n if (!task.$source) task.$source = [];\n\n for (var i = 0; i < task.$source.length; i++) {\n linksStore.refresh(task.$source[i]);\n }\n\n if (!task.$target) task.$target = [];\n\n for (var i = 0; i < task.$target.length; i++) {\n linksStore.refresh(task.$target[i]);\n }\n });\n tasksStore.attachEvent(\"onBeforeItemMove\", function (sid, parent, tindex) {\n // GS-125. Don't allow users to move the placeholder task\n if (isPlaceholderTask(sid, gantt, tasksStore)) {\n //eslint-disable-next-line\n console.log(\"The placeholder task cannot be moved to another position.\");\n return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onAfterItemMove\", function (sid, parent, tindex) {\n var source = gantt.getTask(sid);\n\n if (this.getNextSibling(sid) !== null) {\n source.$drop_target = this.getNextSibling(sid);\n } else if (this.getPrevSibling(sid) !== null) {\n source.$drop_target = \"next:\" + this.getPrevSibling(sid);\n } else {\n source.$drop_target = \"next:null\";\n }\n });\n tasksStore.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (action == \"delete\") {\n gantt._update_flags(id, null);\n }\n\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (gantt.config.fit_tasks && action !== \"paint\") {\n var oldState = gantt.getState();\n calculateScaleRange(gantt);\n var newState = gantt.getState(); //this._init_tasks_range();\n\n if (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n if (action == \"add\" || action == \"move\" || action == \"delete\") {\n if (gantt.$layout) {\n // GS-2170. Do not recalculate the indexes and dates of other tasks in the\n // onBeforeResize layout event, but do it later. If lightbox is opened, it will\n // trigger the refreshData, so the indexes and dates will be recalculated there\n if (this.$config.name == \"task\" && (action == \"add\" || action == \"delete\")) {\n if (this._skipTaskRecalculation != \"lightbox\") {\n this._skipTaskRecalculation = true;\n }\n }\n\n gantt.$layout.resize();\n }\n } else if (!id) {\n linksStore.refresh();\n }\n });\n linksStore.attachEvent(\"onAfterAdd\", function (id, link) {\n sync_link(link);\n });\n linksStore.attachEvent(\"onAfterUpdate\", function (id, link) {\n sync_links();\n });\n linksStore.attachEvent(\"onAfterDelete\", function (id, link) {\n sync_link_delete(link);\n });\n linksStore.attachEvent(\"onBeforeIdChange\", function (oldId, newId) {\n sync_link_delete(gantt.mixin({\n id: oldId\n }, gantt.$data.linksStore.getItem(newId)));\n sync_link(gantt.$data.linksStore.getItem(newId));\n });\n\n function checkLinkedTaskVisibility(taskId) {\n var isVisible = gantt.isTaskVisible(taskId);\n\n if (!isVisible && gantt.isTaskExists(taskId)) {\n var parent = gantt.getParent(taskId);\n\n if (gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)) {\n parent = gantt.getTask(parent);\n\n if (gantt.isSplitTask(parent)) {\n isVisible = true;\n }\n }\n }\n\n return isVisible;\n }\n\n linksStore.attachEvent(\"onFilterItem\", function (id, link) {\n if (!gantt.config.show_links) {\n return false;\n }\n\n var sourceVisible = checkLinkedTaskVisibility(link.source);\n var targetVisible = checkLinkedTaskVisibility(link.target);\n if (!(sourceVisible && targetVisible) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target))) return false;\n return gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n });\n\n (function () {\n // delete all connected links after task is deleted\n var treeHelper = require(\"../../utils/task_tree_helpers\");\n\n var deletedLinks = {};\n gantt.attachEvent(\"onBeforeTaskDelete\", function (id, item) {\n deletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n return true;\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n if (deletedLinks[id]) {\n gantt.$data.linksStore.silent(function () {\n for (var i in deletedLinks[id]) {\n if (gantt.isLinkExists(i)) {\n gantt.$data.linksStore.removeItem(i);\n }\n\n sync_link_delete(deletedLinks[id][i]);\n }\n\n deletedLinks[id] = null;\n });\n }\n });\n })();\n\n gantt.attachEvent(\"onAfterLinkDelete\", function (id, link) {\n gantt.refreshTask(link.source);\n gantt.refreshTask(link.target);\n });\n gantt.attachEvent(\"onParse\", sync_links);\n mapEvents({\n source: linksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onLinkLoading\",\n \"onBeforeAdd\": \"onBeforeLinkAdd\",\n \"onAfterAdd\": \"onAfterLinkAdd\",\n \"onBeforeUpdate\": \"onBeforeLinkUpdate\",\n \"onAfterUpdate\": \"onAfterLinkUpdate\",\n \"onBeforeDelete\": \"onBeforeLinkDelete\",\n \"onAfterDelete\": \"onAfterLinkDelete\",\n \"onIdChange\": \"onLinkIdChange\"\n }\n });\n mapEvents({\n source: tasksStore,\n target: gantt,\n events: {\n \"onItemLoading\": \"onTaskLoading\",\n \"onBeforeAdd\": \"onBeforeTaskAdd\",\n \"onAfterAdd\": \"onAfterTaskAdd\",\n \"onBeforeUpdate\": \"onBeforeTaskUpdate\",\n \"onAfterUpdate\": \"onAfterTaskUpdate\",\n \"onBeforeDelete\": \"onBeforeTaskDelete\",\n \"onAfterDelete\": \"onAfterTaskDelete\",\n \"onIdChange\": \"onTaskIdChange\",\n \"onBeforeItemMove\": \"onBeforeTaskMove\",\n \"onAfterItemMove\": \"onAfterTaskMove\",\n \"onFilterItem\": \"onBeforeTaskDisplay\",\n \"onItemOpen\": \"onTaskOpened\",\n \"onItemClose\": \"onTaskClosed\",\n \"onBeforeSelect\": \"onBeforeTaskSelected\",\n \"onAfterSelect\": \"onTaskSelected\",\n \"onAfterUnselect\": \"onTaskUnselected\"\n }\n });\n gantt.$data = {\n tasksStore: tasksStore,\n linksStore: linksStore\n };\n\n function sync_link(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n sourceTask.$source = sourceTask.$source || [];\n sourceTask.$source.push(link.id);\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n targetTask.$target = targetTask.$target || [];\n targetTask.$target.push(link.id);\n }\n }\n\n function sync_link_delete(link) {\n if (gantt.isTaskExists(link.source)) {\n var sourceTask = gantt.getTask(link.source);\n\n for (var i = 0; i < sourceTask.$source.length; i++) {\n if (sourceTask.$source[i] == link.id) {\n sourceTask.$source.splice(i, 1);\n break;\n }\n }\n }\n\n if (gantt.isTaskExists(link.target)) {\n var targetTask = gantt.getTask(link.target);\n\n for (var i = 0; i < targetTask.$target.length; i++) {\n if (targetTask.$target[i] == link.id) {\n targetTask.$target.splice(i, 1);\n break;\n }\n }\n }\n }\n\n function sync_links() {\n var task = null;\n var tasks = gantt.$data.tasksStore.getItems();\n\n for (var i = 0, len = tasks.length; i < len; i++) {\n task = tasks[i];\n task.$source = [];\n task.$target = [];\n }\n\n var links = gantt.$data.linksStore.getItems();\n\n for (var i = 0, len = links.length; i < len; i++) {\n var link = links[i];\n sync_link(link);\n }\n }\n\n function mapEvents(conf) {\n var mapFrom = conf.source;\n var mapTo = conf.target;\n\n for (var i in conf.events) {\n (function (sourceEvent, targetEvent) {\n mapFrom.attachEvent(sourceEvent, function () {\n return mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n }, targetEvent);\n })(i, conf.events[i]);\n }\n }\n\n function _init_task(task) {\n if (!this.defined(task.id)) task.id = this.uid();\n if (task.start_date) task.start_date = gantt.date.parseDate(task.start_date, \"parse_date\");\n if (task.end_date) task.end_date = gantt.date.parseDate(task.end_date, \"parse_date\");\n var duration = null;\n\n if (task.duration || task.duration === 0) {\n task.duration = duration = task.duration * 1;\n }\n\n if (duration) {\n if (task.start_date && !task.end_date) {\n task.end_date = this.calculateEndDate(task);\n } else if (!task.start_date && task.end_date) {\n task.start_date = this.calculateEndDate({\n start_date: task.end_date,\n duration: -task.duration,\n task: task\n });\n } //task.$calculate_duration = false;\n\n }\n\n task.progress = Number(task.progress) || 0;\n\n if (this._isAllowedUnscheduledTask(task)) {\n this._set_default_task_timing(task);\n }\n\n this._init_task_timing(task);\n\n if (task.start_date && task.end_date) this.correctTaskWorkTime(task);\n task.$source = [];\n task.$target = [];\n var originalTask = this.$data.tasksStore.getItem(task.id);\n\n if (originalTask && !utils.defined(task.open)) {\n // if a task with the same id is already in the gantt and the new object doesn't specify the `open` state -\n // restore the `open` state we already have in the chart\n task.$open = originalTask.$open;\n }\n\n if (task.parent === undefined) {\n task.parent = this.config.root_id;\n }\n\n return task;\n }\n\n function _init_link(link) {\n if (!this.defined(link.id)) link.id = this.uid();\n return link;\n }\n}\n\nmodule.exports = initDataStores;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n\n/**\n * bluebird build version 3.5.4\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function (e) {\n if (\"object\" == (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module) module.exports = e();else if (\"function\" == typeof define && define.amd) define([], e);else {\n var f;\n \"undefined\" != typeof window ? f = window : \"undefined\" != typeof global ? f = global : \"undefined\" != typeof self && (f = self), f.Promise = e();\n }\n}(function () {\n var define, module, exports;\n return function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof _dereq_ == \"function\" && _dereq_;\n if (!u && a) return a(o, !0);\n if (i) return i(o, !0);\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n throw f.code = \"MODULE_NOT_FOUND\", f;\n }\n\n var l = n[o] = {\n exports: {}\n };\n t[o][0].call(l.exports, function (e) {\n var n = t[o][1][e];\n return s(n ? n : e);\n }, l, l.exports, e, t, n, r);\n }\n\n return n[o].exports;\n }\n\n var i = typeof _dereq_ == \"function\" && _dereq_;\n\n for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }\n\n return s;\n }({\n 1: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var SomePromiseArray = Promise._SomePromiseArray;\n\n function any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n }\n\n Promise.any = function (promises) {\n return any(promises);\n };\n\n Promise.prototype.any = function () {\n return any(this);\n };\n };\n }, {}],\n 2: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var firstLineError;\n\n try {\n throw new Error();\n } catch (e) {\n firstLineError = e;\n }\n\n var schedule = _dereq_(\"./schedule\");\n\n var Queue = _dereq_(\"./queue\");\n\n var util = _dereq_(\"./util\");\n\n function Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n\n this.drainQueues = function () {\n self._drainQueues();\n };\n\n this._schedule = schedule;\n }\n\n Async.prototype.setScheduler = function (fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n };\n\n Async.prototype.hasCustomScheduler = function () {\n return this._customScheduler;\n };\n\n Async.prototype.enableTrampoline = function () {\n this._trampolineEnabled = true;\n };\n\n Async.prototype.disableTrampolineIfNecessary = function () {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n };\n\n Async.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n };\n\n Async.prototype.fatalError = function (e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) + \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n };\n\n Async.prototype.throwLater = function (fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n\n fn = function fn() {\n throw arg;\n };\n }\n\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function () {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function () {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n };\n\n function AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n\n this._queueTick();\n }\n\n function AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n\n this._queueTick();\n }\n\n if (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n } else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n setTimeout(function () {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function () {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function (promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function () {\n promise._settlePromises();\n });\n }\n };\n }\n\n function _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n }\n\n function _drainQueueStep(queue) {\n var fn = queue.shift();\n\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n }\n\n Async.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n\n this._reset();\n\n this._haveDrainedQueues = true;\n\n _drainQueue(this._lateQueue);\n };\n\n Async.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n\n this._schedule(this.drainQueues);\n }\n };\n\n Async.prototype._reset = function () {\n this._isTickUsed = false;\n };\n\n module.exports = Async;\n module.exports.firstLineError = firstLineError;\n }, {\n \"./queue\": 26,\n \"./schedule\": 29,\n \"./util\": 36\n }],\n 3: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, debug) {\n var calledBind = false;\n\n var rejectThis = function rejectThis(_, e) {\n this._reject(e);\n };\n\n var targetRejected = function targetRejected(e, context) {\n context.promiseRejectionQueued = true;\n\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n };\n\n var bindingResolved = function bindingResolved(thisArg, context) {\n if ((this._bitField & 50397184) === 0) {\n this._resolveCallback(context.target);\n }\n };\n\n var bindingRejected = function bindingRejected(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n };\n\n Promise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n\n ret._propagateFrom(this, 1);\n\n var target = this._target();\n\n ret._setBoundTo(maybePromise);\n\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n\n maybePromise._then(bindingResolved, bindingRejected, undefined, ret, context);\n\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n\n return ret;\n };\n\n Promise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & ~2097152;\n }\n };\n\n Promise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n };\n\n Promise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n };\n };\n }, {}],\n 4: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var old;\n if (typeof Promise !== \"undefined\") old = Promise;\n\n function noConflict() {\n try {\n if (Promise === bluebird) Promise = old;\n } catch (e) {}\n\n return bluebird;\n }\n\n var bluebird = _dereq_(\"./promise\")();\n\n bluebird.noConflict = noConflict;\n module.exports = bluebird;\n }, {\n \"./promise\": 22\n }],\n 5: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var cr = Object.create;\n\n if (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n }\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var isIdentifier = util.isIdentifier;\n var getMethodCaller;\n var getGetter;\n\n if (!true) {\n var makeMethodCaller = function makeMethodCaller(methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n };\n\n var makeGetter = function makeGetter(propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n };\n\n var getCompiled = function getCompiled(name, compiler, cache) {\n var ret = cache[name];\n\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n\n for (var i = 0; i < 256; ++i) {\n delete cache[keys[i]];\n }\n\n cache[\" size\"] = keys.length - 256;\n }\n }\n\n return ret;\n };\n\n getMethodCaller = function getMethodCaller(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n };\n\n getGetter = function getGetter(name) {\n return getCompiled(name, makeGetter, getterCache);\n };\n }\n\n function ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" + util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n\n return fn;\n }\n\n function caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n }\n\n Promise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);\n ;\n\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n\n if (maybeCaller !== null) {\n return this._then(maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n };\n\n function namedGetter(obj) {\n return obj[this];\n }\n\n function indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n }\n\n Promise.prototype.get = function (propertyName) {\n var isIndex = typeof propertyName === \"number\";\n var getter;\n\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n\n return this._then(getter, undefined, undefined, propertyName, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 6: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n Promise.prototype[\"break\"] = Promise.prototype.cancel = function () {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n var promise = this;\n var child = promise;\n\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n\n break;\n }\n\n var parent = promise._cancellationParent;\n\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n\n promise._setWillBeCancelled();\n\n child = promise;\n promise = parent;\n }\n }\n };\n\n Promise.prototype._branchHasCancelled = function () {\n this._branchesRemainingToCancel--;\n };\n\n Promise.prototype._enoughBranchesHaveCancelled = function () {\n return this._branchesRemainingToCancel === undefined || this._branchesRemainingToCancel <= 0;\n };\n\n Promise.prototype._cancelBy = function (canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n\n this._invokeOnCancel();\n\n return true;\n } else {\n this._branchHasCancelled();\n\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n\n return true;\n }\n }\n\n return false;\n };\n\n Promise.prototype._cancelBranched = function () {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n };\n\n Promise.prototype._cancel = function () {\n if (!this._isCancellable()) return;\n\n this._setCancelled();\n\n async.invoke(this._cancelPromises, this, undefined);\n };\n\n Promise.prototype._cancelPromises = function () {\n if (this._length() > 0) this._settlePromises();\n };\n\n Promise.prototype._unsetOnCancel = function () {\n this._onCancelField = undefined;\n };\n\n Promise.prototype._isCancellable = function () {\n return this.isPending() && !this._isCancelled();\n };\n\n Promise.prototype.isCancellable = function () {\n return this.isPending() && !this.isCancelled();\n };\n\n Promise.prototype._doInvokeOnCancel = function (onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n };\n\n Promise.prototype._invokeOnCancel = function () {\n var onCancelCallback = this._onCancel();\n\n this._unsetOnCancel();\n\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n };\n\n Promise.prototype._invokeInternalOnCancel = function () {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n\n this._unsetOnCancel();\n }\n };\n\n Promise.prototype._resultCancelled = function () {\n this.cancel();\n };\n };\n }, {\n \"./util\": 36\n }],\n 7: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var getKeys = _dereq_(\"./es5\").keys;\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function catchFilter(instances, cb, promise) {\n return function (e) {\n var boundTo = promise._boundValue();\n\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error || item != null && item.prototype instanceof Error) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n\n return tryCatch(cb).call(boundTo, e);\n }\n }\n\n return NEXT_FILTER;\n };\n }\n\n return catchFilter;\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 8: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var longStackTraces = false;\n var contextStack = [];\n\n Promise.prototype._promiseCreated = function () {};\n\n Promise.prototype._pushContext = function () {};\n\n Promise.prototype._popContext = function () {\n return null;\n };\n\n Promise._peekContext = Promise.prototype._peekContext = function () {};\n\n function Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n }\n\n Context.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n };\n\n Context.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n\n return null;\n };\n\n function createContext() {\n if (longStackTraces) return new Context();\n }\n\n function peekContext() {\n var lastIndex = contextStack.length - 1;\n\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n\n return undefined;\n }\n\n Context.CapturedTrace = null;\n Context.create = createContext;\n\n Context.deactivateLongStackTraces = function () {};\n\n Context.activateLongStackTraces = function () {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n\n Context.deactivateLongStackTraces = function () {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n\n Promise.prototype._promiseCreated = function () {\n var ctx = this._peekContext();\n\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n };\n\n return Context;\n };\n }, {}],\n 9: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, Context) {\n var getDomain = Promise._getDomain;\n var async = Promise._async;\n\n var Warning = _dereq_(\"./errors\").Warning;\n\n var util = _dereq_(\"./util\");\n\n var es5 = _dereq_(\"./es5\");\n\n var canAttachTrace = util.canAttachTrace;\n var unhandledRejectionHandled;\n var possiblyUnhandledRejection;\n var bluebirdFramePattern = /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\n var nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\n var parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\n var stackFramePattern = null;\n var formatStack = null;\n var indentStackFrames = false;\n var printWarning;\n var debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 && (true || util.env(\"BLUEBIRD_DEBUG\") || util.env(\"NODE_ENV\") === \"development\"));\n var warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 && (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n var longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 && (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n var wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 && (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\n Promise.prototype.suppressUnhandledRejections = function () {\n var target = this._target();\n\n target._bitField = target._bitField & ~1048576 | 524288;\n };\n\n Promise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n\n this._setRejectionIsUnhandled();\n\n var self = this;\n setTimeout(function () {\n self._notifyUnhandledRejection();\n }, 1);\n };\n\n Promise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\", unhandledRejectionHandled, undefined, this);\n };\n\n Promise.prototype._setReturnedNonUndefined = function () {\n this._bitField = this._bitField | 268435456;\n };\n\n Promise.prototype._returnedNonUndefined = function () {\n return (this._bitField & 268435456) !== 0;\n };\n\n Promise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n\n this._setUnhandledRejectionIsNotified();\n\n fireRejectionEvent(\"unhandledRejection\", possiblyUnhandledRejection, reason, this);\n }\n };\n\n Promise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n };\n\n Promise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & ~262144;\n };\n\n Promise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n };\n\n Promise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n };\n\n Promise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & ~1048576;\n\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n\n this._notifyUnhandledRejectionIsHandled();\n }\n };\n\n Promise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n };\n\n Promise.prototype._warn = function (message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n };\n\n Promise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n Promise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled = typeof fn === \"function\" ? domain === null ? fn : util.domainBind(domain, fn) : undefined;\n };\n\n var disableLongStackTraces = function disableLongStackTraces() {};\n\n Promise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n\n disableLongStackTraces = function disableLongStackTraces() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n };\n\n Promise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n };\n\n var fireDomEvent = function () {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(eventData, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(eventData, \"reason\", {\n value: event.reason\n });\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {\n value: event.promise\n });\n es5.defineProperty(domEvent, \"reason\", {\n value: event.reason\n });\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function (name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true, event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n\n return function () {\n return false;\n };\n }();\n\n var fireGlobalEvent = function () {\n if (util.isNode) {\n return function () {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function () {\n return false;\n };\n }\n\n return function (name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n }();\n\n function generatePromiseLifecycleEventObject(name, promise) {\n return {\n promise: promise\n };\n }\n\n var eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function promiseChained(name, promise, child) {\n return {\n promise: promise,\n child: child\n };\n },\n warning: function warning(name, _warning) {\n return {\n warning: _warning\n };\n },\n unhandledRejection: function unhandledRejection(name, reason, promise) {\n return {\n reason: reason,\n promise: promise\n };\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n };\n\n var activeFireEvent = function activeFireEvent(name) {\n var globalEventFired = false;\n\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n\n try {\n domEventFired = fireDomEvent(name, eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n };\n\n Promise.config = function (opts) {\n opts = Object(opts);\n\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\"cannot enable cancellation after promises are in use\");\n }\n\n Promise.prototype._clearCancellationData = cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback = cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n _propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n\n return Promise;\n };\n\n function defaultFireEvent() {\n return false;\n }\n\n Promise.prototype._fireEvent = defaultFireEvent;\n\n Promise.prototype._execute = function (executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n };\n\n Promise.prototype._onCancel = function () {};\n\n Promise.prototype._setOnCancel = function (handler) {\n ;\n };\n\n Promise.prototype._attachCancellationCallback = function (onCancel) {\n ;\n };\n\n Promise.prototype._captureStackTrace = function () {};\n\n Promise.prototype._attachExtraTrace = function () {};\n\n Promise.prototype._dereferenceTrace = function () {};\n\n Promise.prototype._clearCancellationData = function () {};\n\n Promise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n };\n\n function cancellationExecute(executor, resolve, reject) {\n var promise = this;\n\n try {\n executor(resolve, reject, function (onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" + util.toString(onCancel));\n }\n\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n }\n\n function cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n }\n\n function cancellationOnCancel() {\n return this._onCancelField;\n }\n\n function cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n }\n\n function cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n }\n\n function cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n function bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n }\n\n var _propagateFromFunction = bindingPropagateFrom;\n\n function _boundValueFunction() {\n var ret = this._boundTo;\n\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n\n return ret;\n }\n\n function longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n }\n\n function longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\", parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n }\n\n function longStackTracesDereferenceTrace() {\n this._trace = undefined;\n }\n\n function checkForgottenReturns(returnValue, promiseCreated, name, promise, parent) {\n if (returnValue === undefined && promiseCreated !== null && wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n\n var stack = cleanStack(traceLines);\n\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] + \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n\n for (var i = 0; i < traceLines.length; ++i) {\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n\n break;\n }\n }\n }\n }\n\n var msg = \"a promise was created in a \" + name + \"handler \" + handlerLine + \"but was not returned from it, \" + \"see http://goo.gl/rRqMUw\" + creatorLine;\n\n promise._warn(msg, true, promiseCreated);\n }\n }\n\n function deprecated(name, replacement) {\n var message = name + \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n }\n\n function warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n }\n\n function reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n\n return message + \"\\n\" + stacks.join(\"\\n\");\n }\n\n function removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 || i + 1 < stacks.length && stacks[i][0] === stacks[i + 1][0]) {\n stacks.splice(i, 1);\n i--;\n }\n }\n }\n\n function removeCommonRoots(stacks) {\n var current = stacks[0];\n\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n\n current = prev;\n }\n }\n\n function cleanStack(stack) {\n var ret = [];\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line || stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n\n ret.push(line);\n }\n }\n\n return ret;\n }\n\n function stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n\n return stack;\n }\n\n function parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0 ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n }\n\n function formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" || _typeof(console.log) === \"object\") {\n console.log(message);\n }\n }\n }\n\n function fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n }\n\n function formatNonError(obj) {\n var str;\n\n if (typeof obj === \"function\") {\n str = \"[function \" + (obj.name || \"anonymous\") + \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\" ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n } catch (e) {}\n }\n\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n\n return \"(<\" + snip(str) + \">, no stack trace)\";\n }\n\n function snip(str) {\n var maxChars = 41;\n\n if (str.length < maxChars) {\n return str;\n }\n\n return str.substr(0, maxChars - 3) + \"...\";\n }\n\n function longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n }\n\n var shouldIgnore = function shouldIgnore() {\n return false;\n };\n\n var parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\n\n function parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n }\n\n function setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function shouldIgnore(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n\n if (info) {\n if (info.fileName === firstFileName && firstIndex <= info.line && info.line <= lastIndex) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n }\n\n util.inherits(CapturedTrace, Error);\n Context.CapturedTrace = CapturedTrace;\n\n CapturedTrace.prototype.uncycle = function () {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n\n length = this._length = i;\n\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n\n cycleEdgeNode._parent.uncycle();\n\n cycleEdgeNode._length = cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n\n var currentChildLength = cycleEdgeNode._length + 1;\n\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n\n return;\n }\n }\n };\n\n CapturedTrace.prototype.attachExtraTrace = function (error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n var trace = this;\n\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n };\n\n var captureStackTrace = function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n\n var v8stackFormatter = function v8stackFormatter(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" && typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function shouldIgnore(line) {\n return bluebirdFramePattern.test(line);\n };\n\n return function (receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n\n var err = new Error();\n\n if (typeof err.stack === \"string\" && err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n\n try {\n throw new Error();\n } catch (e) {\n hasStackAfterThrow = \"stack\" in e;\n }\n\n if (!(\"stack\" in err) && hasStackAfterThrow && typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n\n try {\n throw new Error();\n } catch (e) {\n o.stack = e.stack;\n }\n\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function formatStack(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((_typeof(error) === \"object\" || typeof error === \"function\") && error.name !== undefined && error.message !== undefined) {\n return error.toString();\n }\n\n return formatNonError(error);\n };\n\n return null;\n }([]);\n\n if (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function printWarning(message) {\n console.warn(message);\n };\n\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function printWarning(message, isSoft) {\n var color = isSoft ? \"\\x1B[33m\" : \"\\x1B[31m\";\n console.warn(color + message + \"\\x1B[0m\\n\");\n };\n } else if (!util.isNode && typeof new Error().stack === \"string\") {\n printWarning = function printWarning(message, isSoft) {\n console.warn(\"%c\" + message, isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n }\n\n var config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n };\n if (longStackTraces) Promise.longStackTraces();\n return {\n longStackTraces: function longStackTraces() {\n return config.longStackTraces;\n },\n warnings: function warnings() {\n return config.warnings;\n },\n cancellation: function cancellation() {\n return config.cancellation;\n },\n monitoring: function monitoring() {\n return config.monitoring;\n },\n propagateFromFunction: function propagateFromFunction() {\n return _propagateFromFunction;\n },\n boundValueFunction: function boundValueFunction() {\n return _boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n };\n };\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 10: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function returner() {\n return this.value;\n }\n\n function thrower() {\n throw this.reason;\n }\n\n Promise.prototype[\"return\"] = Promise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(returner, undefined, undefined, {\n value: value\n }, undefined);\n };\n\n Promise.prototype[\"throw\"] = Promise.prototype.thenThrow = function (reason) {\n return this._then(thrower, undefined, undefined, {\n reason: reason\n }, undefined);\n };\n\n Promise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(undefined, thrower, undefined, {\n reason: reason\n }, undefined);\n } else {\n var _reason = arguments[1];\n\n var handler = function handler() {\n throw _reason;\n };\n\n return this.caught(reason, handler);\n }\n };\n\n Promise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(undefined, returner, undefined, {\n value: value\n }, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n\n var handler = function handler() {\n return _value;\n };\n\n return this.caught(value, handler);\n }\n };\n };\n }, {}],\n 11: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseReduce = Promise.reduce;\n var PromiseAll = Promise.all;\n\n function promiseAllThis() {\n return PromiseAll(this);\n }\n\n function PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n }\n\n Promise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, this, undefined);\n };\n\n Promise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n };\n\n Promise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)._then(promiseAllThis, undefined, undefined, promises, undefined);\n };\n\n Promise.mapSeries = PromiseMapSeries;\n };\n }, {}],\n 12: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var Objectfreeze = es5.freeze;\n\n var util = _dereq_(\"./util\");\n\n var inherits = util.inherits;\n var notEnumerableProp = util.notEnumerableProp;\n\n function subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\", typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n\n inherits(SubError, Error);\n return SubError;\n }\n\n var _TypeError, _RangeError;\n\n var Warning = subError(\"Warning\", \"warning\");\n var CancellationError = subError(\"CancellationError\", \"cancellation error\");\n var TimeoutError = subError(\"TimeoutError\", \"timeout error\");\n var AggregateError = subError(\"AggregateError\", \"aggregate error\");\n\n try {\n _TypeError = TypeError;\n _RangeError = RangeError;\n } catch (e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n }\n\n var methods = (\"join pop push shift unshift slice filter forEach some \" + \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\n for (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n }\n\n es5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n });\n AggregateError.prototype[\"isOperational\"] = true;\n var level = 0;\n\n AggregateError.prototype.toString = function () {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n\n level--;\n return ret;\n };\n\n function OperationalError(message) {\n if (!(this instanceof OperationalError)) return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n inherits(OperationalError, Error);\n var errorTypes = Error[\"__BluebirdErrorTypes__\"];\n\n if (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n }\n\n module.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 13: [function (_dereq_, module, exports) {\n var isES5 = function () {\n \"use strict\";\n\n return this === undefined;\n }();\n\n if (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n } else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function ObjectKeys(o) {\n var ret = [];\n\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n\n return ret;\n };\n\n var ObjectGetDescriptor = function ObjectGetDescriptor(o, key) {\n return {\n value: o[key]\n };\n };\n\n var ObjectDefineProperty = function ObjectDefineProperty(o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function ObjectFreeze(obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function ObjectGetPrototypeOf(obj) {\n try {\n return Object(obj).constructor.prototype;\n } catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function ArrayIsArray(obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n } catch (e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function propertyIsWritable() {\n return true;\n }\n };\n }\n }, {}],\n 14: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var PromiseMap = Promise.map;\n\n Promise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n };\n\n Promise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n };\n };\n }, {}],\n 15: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, tryConvertToPromise, NEXT_FILTER) {\n var util = _dereq_(\"./util\");\n\n var CancellationError = Promise.CancellationError;\n var errorObj = util.errorObj;\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n function PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n }\n\n PassThroughHandlerContext.prototype.isFinallyHandler = function () {\n return this.type === 0;\n };\n\n function FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n }\n\n FinallyHandlerCancelReaction.prototype._resultCancelled = function () {\n checkCancel(this.finallyHandler);\n };\n\n function checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n\n ctx.cancelPromise = null;\n return true;\n }\n\n return false;\n }\n\n function succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n }\n\n function fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n }\n\n function finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler() ? handler.call(promise._boundValue()) : handler.call(promise._boundValue(), reasonOrValue);\n\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n\n var maybePromise = tryConvertToPromise(ret, promise);\n\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(new FinallyHandlerCancelReaction(this));\n }\n }\n\n return maybePromise._then(succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n }\n\n Promise.prototype._passThrough = function (handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success, fail, undefined, new PassThroughHandlerContext(this, type, handler), undefined);\n };\n\n Promise.prototype.lastly = Promise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler, 0, finallyHandler, finallyHandler);\n };\n\n Promise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n };\n\n Promise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n\n if (len === 1) {\n return this._passThrough(handlerOrPredicate, 1, undefined, finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\"tapCatch statement predicate: \" + \"expecting an object but got \" + util.classString(item)));\n }\n }\n\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this), 1, undefined, finallyHandler);\n }\n };\n\n return PassThroughHandlerContext;\n };\n }, {\n \"./catch_filter\": 7,\n \"./util\": 36\n }],\n 16: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug) {\n var errors = _dereq_(\"./errors\");\n\n var TypeError = errors.TypeError;\n\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var yieldHandlers = [];\n\n function promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n\n var result = tryCatch(yieldHandlers[i])(value);\n\n traceParent._popContext();\n\n if (result === errorObj) {\n traceParent._pushContext();\n\n var ret = Promise.reject(errorObj.e);\n\n traceParent._popContext();\n\n return ret;\n }\n\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n\n return null;\n }\n\n function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n\n this._promise = internal.lastly(function () {\n return _finallyPromise;\n });\n\n internal._captureStackTrace();\n\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n }\n\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\" ? [yieldHandler].concat(yieldHandlers) : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n }\n\n util.inherits(PromiseSpawn, Proxyable);\n\n PromiseSpawn.prototype._isResolved = function () {\n return this._promise === null;\n };\n\n PromiseSpawn.prototype._cleanup = function () {\n this._promise = this._generator = null;\n\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n\n this._finallyPromise = null;\n }\n };\n\n PromiseSpawn.prototype._promiseCancelled = function () {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n var result;\n\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n\n result = tryCatch(this._generator[\"return\"]).call(this._generator, undefined);\n\n this._promise._popContext();\n }\n\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseFulfilled = function (value) {\n this._yieldedPromise = null;\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator.next).call(this._generator, value);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._promiseRejected = function (reason) {\n this._yieldedPromise = null;\n\n this._promise._attachExtraTrace(reason);\n\n this._promise._pushContext();\n\n var result = tryCatch(this._generator[\"throw\"]).call(this._generator, reason);\n\n this._promise._popContext();\n\n this._continue(result);\n };\n\n PromiseSpawn.prototype._resultCancelled = function () {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n };\n\n PromiseSpawn.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver = this._generatorFunction = undefined;\n\n this._promiseFulfilled(undefined);\n };\n\n PromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n\n if (result === errorObj) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n\n if (result.done === true) {\n this._cleanup();\n\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n\n if (!(maybePromise instanceof Promise)) {\n maybePromise = promiseFromYieldHandler(maybePromise, this._yieldHandlers, this._promise);\n\n if (maybePromise === null) {\n this._promiseRejected(new TypeError(\"A value %s was yielded that could not be treated as a promise\\n\\n See http://goo.gl/MqrFmX\\n\\n\".replace(\"%s\", String(value)) + \"From coroutine:\\n\" + this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")));\n\n return;\n }\n }\n\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n this._yieldedPromise = maybePromise;\n\n maybePromise._proxy(this, null);\n } else if ((bitField & 33554432) !== 0) {\n Promise._async.invoke(this._promiseFulfilled, this, maybePromise._value());\n } else if ((bitField & 16777216) !== 0) {\n Promise._async.invoke(this._promiseRejected, this, maybePromise._reason());\n } else {\n this._promiseCancelled();\n }\n }\n };\n\n Promise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n\n spawn._promiseFulfilled(undefined);\n\n return ret;\n };\n };\n\n Promise.coroutine.addYieldHandler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n yieldHandlers.push(fn);\n };\n\n Promise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n\n spawn._run(Promise.spawn);\n\n return ret;\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 17: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain) {\n var util = _dereq_(\"./util\");\n\n var canEvaluate = util.canEvaluate;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var reject;\n\n if (!true) {\n if (canEvaluate) {\n var thenCallback = function thenCallback(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function promiseSetter(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function generateHolderClass(total) {\n var props = new Array(total);\n\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i + 1);\n }\n\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode = \"var promise;\\n\" + props.map(function (prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n code = code.replace(/\\[TheName\\]/g, name).replace(/\\[TheTotal\\]/g, total).replace(/\\[ThePassedArguments\\]/g, passedArguments).replace(/\\[TheProperties\\]/g, assignment).replace(/\\[CancellationCode\\]/g, cancellationCode);\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)(tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function reject(reason) {\n this._reject(reason);\n };\n }\n }\n\n Promise.join = function () {\n var last = arguments.length - 1;\n var fn;\n\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n maybePromise._then(callbacks[i], reject, undefined, ret, holder);\n\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if ((bitField & 33554432) !== 0) {\n callbacks[i].call(ret, maybePromise._value(), holder);\n } else if ((bitField & 16777216) !== 0) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n\n ret._setAsyncGuaranteed();\n\n ret._setOnCancel(holder);\n }\n\n return ret;\n }\n }\n }\n\n var args = [].slice.call(arguments);\n ;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 18: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n var async = Promise._async;\n\n function MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n\n this._promise._captureStackTrace();\n\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL ? new Array(this.length()) : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n }\n\n util.inherits(MappingPromiseArray, PromiseArray);\n\n MappingPromiseArray.prototype._asyncInit = function () {\n this._init$(undefined, -2);\n };\n\n MappingPromiseArray.prototype._init = function () {};\n\n MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = index * -1 - 1;\n values[index] = value;\n\n if (limit >= 1) {\n this._inFlight--;\n\n this._drainQueue();\n\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n\n this._queue.push(index);\n\n return false;\n }\n\n if (preservedValues !== null) preservedValues[index] = value;\n var promise = this._promise;\n var callback = this._callback;\n\n var receiver = promise._boundValue();\n\n promise._pushContext();\n\n var ret = tryCatch(callback).call(receiver, value, index, length);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, preservedValues !== null ? \"Promise.filter\" : \"Promise.map\", promise);\n\n if (ret === errorObj) {\n this._reject(ret.e);\n\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n\n if ((bitField & 50397184) === 0) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n\n maybePromise._proxy(this, (index + 1) * -1);\n\n return false;\n } else if ((bitField & 33554432) !== 0) {\n ret = maybePromise._value();\n } else if ((bitField & 16777216) !== 0) {\n this._reject(maybePromise._reason());\n\n return true;\n } else {\n this._cancel();\n\n return true;\n }\n }\n\n values[index] = ret;\n }\n\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n\n return true;\n }\n\n return false;\n };\n\n MappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n\n this._promiseFulfilled(values[index], index);\n }\n };\n\n MappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n\n ret.length = j;\n\n this._resolve(ret);\n };\n\n MappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n };\n\n function map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n\n if (options !== undefined) {\n if (_typeof(options) === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(new TypeError(\"'concurrency' must be a number but it is \" + util.classString(options.concurrency)));\n }\n\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\"options argument must be an object but it is \" + util.classString(options)));\n }\n }\n\n limit = typeof limit === \"number\" && isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n }\n\n Promise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n };\n\n Promise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n };\n };\n }, {\n \"./util\": 36\n }],\n 19: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n Promise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return function () {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value = tryCatch(fn).apply(this, arguments);\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.method\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n };\n\n Promise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._pushContext();\n\n var value;\n\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n\n var promiseCreated = ret._popContext();\n\n debug.checkForgottenReturns(value, promiseCreated, \"Promise.try\", ret);\n\n ret._resolveFromSyncValue(value);\n\n return ret;\n };\n\n Promise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n };\n };\n }, {\n \"./util\": 36\n }],\n 20: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var maybeWrapAsError = util.maybeWrapAsError;\n\n var errors = _dereq_(\"./errors\");\n\n var OperationalError = errors.OperationalError;\n\n var es5 = _dereq_(\"./es5\");\n\n function isUntypedError(obj) {\n return obj instanceof Error && es5.getPrototypeOf(obj) === Error.prototype;\n }\n\n var rErrorKey = /^(?:name|message|stack|cause)$/;\n\n function wrapAsOperationalError(obj) {\n var ret;\n\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n\n return ret;\n }\n\n util.markAsOriginatingFromRejection(obj);\n return obj;\n }\n\n function nodebackForPromise(promise, multiArgs) {\n return function (err, value) {\n if (promise === null) return;\n\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n\n promise._attachExtraTrace(wrapped);\n\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);\n ;\n\n promise._fulfill(args);\n }\n\n promise = null;\n };\n }\n\n module.exports = nodebackForPromise;\n }, {\n \"./errors\": 12,\n \"./es5\": 13,\n \"./util\": 36\n }],\n 21: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n var util = _dereq_(\"./util\");\n\n var async = Promise._async;\n var tryCatch = util.tryCatch;\n var errorObj = util.errorObj;\n\n function spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret = tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function successAdapter(val, nodeback) {\n var promise = this;\n\n var receiver = promise._boundValue();\n\n var ret = val === undefined ? tryCatch(nodeback).call(receiver, null) : tryCatch(nodeback).call(receiver, null, val);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n function errorAdapter(reason, nodeback) {\n var promise = this;\n\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n }\n\n Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n\n this._then(adapter, errorAdapter, undefined, this, nodeback);\n }\n\n return this;\n };\n };\n }, {\n \"./util\": 36\n }],\n 22: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function () {\n var makeSelfResolutionError = function makeSelfResolutionError() {\n return new TypeError(\"circular promise resolution chain\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var reflectHandler = function reflectHandler() {\n return new Promise.PromiseInspection(this._target());\n };\n\n var apiRejection = function apiRejection(msg) {\n return Promise.reject(new TypeError(msg));\n };\n\n function Proxyable() {}\n\n var UNDEFINED_BINDING = {};\n\n var util = _dereq_(\"./util\");\n\n var getDomain;\n\n if (util.isNode) {\n getDomain = function getDomain() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n } else {\n getDomain = function getDomain() {\n return null;\n };\n }\n\n util.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\n var es5 = _dereq_(\"./es5\");\n\n var Async = _dereq_(\"./async\");\n\n var async = new Async();\n es5.defineProperty(Promise, \"_async\", {\n value: async\n });\n\n var errors = _dereq_(\"./errors\");\n\n var TypeError = Promise.TypeError = errors.TypeError;\n Promise.RangeError = errors.RangeError;\n var CancellationError = Promise.CancellationError = errors.CancellationError;\n Promise.TimeoutError = errors.TimeoutError;\n Promise.OperationalError = errors.OperationalError;\n Promise.RejectionError = errors.OperationalError;\n Promise.AggregateError = errors.AggregateError;\n\n var INTERNAL = function INTERNAL() {};\n\n var APPLY = {};\n var NEXT_FILTER = {};\n\n var tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\n\n var PromiseArray = _dereq_(\"./promise_array\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable);\n\n var Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\n\n\n var createContext = Context.create;\n\n var debug = _dereq_(\"./debuggability\")(Promise, Context);\n\n var CapturedTrace = debug.CapturedTrace;\n\n var PassThroughHandlerContext = _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\n\n var catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n\n function check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n }\n\n function Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._resolveFromExecutor(executor);\n\n this._promiseCreated();\n\n this._fireEvent(\"promiseCreated\", this);\n }\n\n Promise.prototype.toString = function () {\n return \"[object Promise]\";\n };\n\n Promise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0,\n i;\n\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" + \"expecting an object but got \" + util.classString(item));\n }\n }\n\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n\n return this.then(undefined, fn);\n };\n\n Promise.prototype.reflect = function () {\n return this._then(reflectHandler, reflectHandler, undefined, this, undefined);\n };\n\n Promise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 && typeof didFulfill !== \"function\" && typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" + util.classString(didFulfill);\n\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n\n this._warn(msg);\n }\n\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n };\n\n Promise.prototype.done = function (didFulfill, didReject) {\n var promise = this._then(didFulfill, didReject, undefined, undefined, undefined);\n\n promise._setIsFinal();\n };\n\n Promise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n };\n\n Promise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n\n return ret;\n };\n\n Promise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n\n return new PromiseArray(this).promise();\n };\n\n Promise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n };\n\n Promise.getNewLibraryCopy = module.exports;\n\n Promise.is = function (val) {\n return val instanceof Promise;\n };\n\n Promise.fromNode = Promise.fromCallback = function (fn) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n };\n\n Promise.all = function (promises) {\n return new PromiseArray(promises).promise();\n };\n\n Promise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._setFulfilled();\n\n ret._rejectionHandler0 = obj;\n }\n\n return ret;\n };\n\n Promise.resolve = Promise.fulfilled = Promise.cast;\n\n Promise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n\n ret._captureStackTrace();\n\n ret._rejectCallback(reason, true);\n\n return ret;\n };\n\n Promise.setScheduler = function (fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n return async.setScheduler(fn);\n };\n\n Promise.prototype._then = function (didFulfill, didReject, _, receiver, internalData) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n\n var target = this._target();\n\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n\n promise._captureStackTrace();\n\n if (receiver === undefined && (this._bitField & 2097152) !== 0) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n\n if (!((bitField & 50397184) === 0)) {\n var handler,\n value,\n settler = target._settlePromiseCtx;\n\n if ((bitField & 33554432) !== 0) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if ((bitField & 16777216) !== 0) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n\n target._attachExtraTrace(value);\n\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler : typeof handler === \"function\" && util.domainBind(domain, handler),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n };\n\n Promise.prototype._length = function () {\n return this._bitField & 65535;\n };\n\n Promise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n };\n\n Promise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n };\n\n Promise.prototype._setLength = function (len) {\n this._bitField = this._bitField & -65536 | len & 65535;\n };\n\n Promise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n\n this._fireEvent(\"promiseFulfilled\", this);\n };\n\n Promise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n\n this._fireEvent(\"promiseRejected\", this);\n };\n\n Promise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n\n this._fireEvent(\"promiseResolved\", this);\n };\n\n Promise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n };\n\n Promise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n };\n\n Promise.prototype._unsetCancelled = function () {\n this._bitField = this._bitField & ~65536;\n };\n\n Promise.prototype._setCancelled = function () {\n this._bitField = this._bitField | 65536;\n\n this._fireEvent(\"promiseCancelled\", this);\n };\n\n Promise.prototype._setWillBeCancelled = function () {\n this._bitField = this._bitField | 8388608;\n };\n\n Promise.prototype._setAsyncGuaranteed = function () {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n };\n\n Promise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[index * 4 - 4 + 3];\n\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n\n return ret;\n };\n\n Promise.prototype._promiseAt = function (index) {\n return this[index * 4 - 4 + 2];\n };\n\n Promise.prototype._fulfillmentHandlerAt = function (index) {\n return this[index * 4 - 4 + 0];\n };\n\n Promise.prototype._rejectionHandlerAt = function (index) {\n return this[index * 4 - 4 + 1];\n };\n\n Promise.prototype._boundValue = function () {};\n\n Promise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n\n var receiver = follower._receiverAt(0);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n\n var reject = follower._rejectionHandlerAt(index);\n\n var promise = follower._promiseAt(index);\n\n var receiver = follower._receiverAt(index);\n\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n };\n\n Promise.prototype._addCallbacks = function (fulfill, reject, promise, receiver, domain) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this._rejectionHandler0 = domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n\n if (typeof fulfill === \"function\") {\n this[base + 0] = domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n\n if (typeof reject === \"function\") {\n this[base + 1] = domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n\n this._setLength(index + 1);\n\n return index;\n };\n\n Promise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n };\n\n Promise.prototype._resolveCallback = function (value, shouldBind) {\n if ((this._bitField & 117506048) !== 0) return;\n if (value === this) return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n\n return;\n }\n\n var bitField = promise._bitField;\n\n if ((bitField & 50397184) === 0) {\n var len = this._length();\n\n if (len > 0) promise._migrateCallback0(this);\n\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n\n this._setFollowing();\n\n this._setLength(0);\n\n this._setFollowee(promise);\n } else if ((bitField & 33554432) !== 0) {\n this._fulfill(promise._value());\n } else if ((bitField & 16777216) !== 0) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n\n promise._attachExtraTrace(reason);\n\n this._reject(reason);\n }\n };\n\n Promise.prototype._rejectCallback = function (reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" + util.classString(reason);\n\n this._warn(message, true);\n }\n\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n\n this._reject(reason);\n };\n\n Promise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n\n this._captureStackTrace();\n\n this._pushContext();\n\n var synchronous = true;\n\n var r = this._execute(executor, function (value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n\n synchronous = false;\n\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n };\n\n Promise.prototype._settlePromiseFromHandler = function (handler, receiver, value, promise) {\n var bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n promise._pushContext();\n\n var x;\n\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" + util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n\n var promiseCreated = promise._popContext();\n\n bitField = promise._bitField;\n if ((bitField & 65536) !== 0) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n\n promise._resolveCallback(x);\n }\n };\n\n Promise.prototype._target = function () {\n var ret = this;\n\n while (ret._isFollowing()) {\n ret = ret._followee();\n }\n\n return ret;\n };\n\n Promise.prototype._followee = function () {\n return this._rejectionHandler0;\n };\n\n Promise.prototype._setFollowee = function (promise) {\n this._rejectionHandler0 = promise;\n };\n\n Promise.prototype._settlePromise = function (promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = (bitField & 134217728) !== 0;\n\n if ((bitField & 65536) !== 0) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext && receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if ((bitField & 33554432) !== 0) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n\n if ((bitField & 33554432) !== 0) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n };\n\n Promise.prototype._settlePromiseLateCancellationObserver = function (ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n };\n\n Promise.prototype._settlePromiseCtx = function (ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n };\n\n Promise.prototype._settlePromise0 = function (handler, value, bitField) {\n var promise = this._promise0;\n\n var receiver = this._receiverAt(0);\n\n this._promise0 = undefined;\n this._receiver0 = undefined;\n\n this._settlePromise(promise, handler, receiver, value);\n };\n\n Promise.prototype._clearCallbackDataAtIndex = function (index) {\n var base = index * 4 - 4;\n this[base + 2] = this[base + 3] = this[base + 0] = this[base + 1] = undefined;\n };\n\n Promise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n if (value === this) {\n var err = makeSelfResolutionError();\n\n this._attachExtraTrace(err);\n\n return this._reject(err);\n }\n\n this._setFulfilled();\n\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if ((bitField & 134217728) !== 0) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n\n this._dereferenceTrace();\n }\n };\n\n Promise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if ((bitField & 117506048) >>> 16) return;\n\n this._setRejected();\n\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n };\n\n Promise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, value);\n }\n };\n\n Promise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n\n var promise = this._promiseAt(i);\n\n var receiver = this._receiverAt(i);\n\n this._clearCallbackDataAtIndex(i);\n\n this._settlePromise(promise, handler, receiver, reason);\n }\n };\n\n Promise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = bitField & 65535;\n\n if (len > 0) {\n if ((bitField & 16842752) !== 0) {\n var reason = this._fulfillmentHandler0;\n\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n\n this._fulfillPromises(len, value);\n }\n\n this._setLength(0);\n }\n\n this._clearCancellationData();\n };\n\n Promise.prototype._settledValue = function () {\n var bitField = this._bitField;\n\n if ((bitField & 33554432) !== 0) {\n return this._rejectionHandler0;\n } else if ((bitField & 16777216) !== 0) {\n return this._fulfillmentHandler0;\n }\n };\n\n function deferResolve(v) {\n this.promise._resolveCallback(v);\n }\n\n function deferReject(v) {\n this.promise._rejectCallback(v, false);\n }\n\n Promise.defer = Promise.pending = function () {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n };\n\n util.notEnumerableProp(Promise, \"_makeSelfResolutionError\", makeSelfResolutionError);\n\n _dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug);\n\n _dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n\n _dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n\n _dereq_(\"./direct_resolve\")(Promise);\n\n _dereq_(\"./synchronous_inspection\")(Promise);\n\n _dereq_(\"./join\")(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\n\n Promise.Promise = Promise;\n Promise.version = \"3.5.4\";\n\n _dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./call_get.js')(Promise);\n\n _dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n\n _dereq_('./timers.js')(Promise, INTERNAL, debug);\n\n _dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n\n _dereq_('./nodeify.js')(Promise);\n\n _dereq_('./promisify.js')(Promise, INTERNAL);\n\n _dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n\n _dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n\n _dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n\n _dereq_('./settle.js')(Promise, PromiseArray, debug);\n\n _dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n\n _dereq_('./filter.js')(Promise, INTERNAL);\n\n _dereq_('./each.js')(Promise, INTERNAL);\n\n _dereq_('./any.js')(Promise);\n\n util.toFastProperties(Promise);\n util.toFastProperties(Promise.prototype);\n\n function fillTypes(value) {\n var p = new Promise(INTERNAL);\n p._fulfillmentHandler0 = value;\n p._rejectionHandler0 = value;\n p._promise0 = value;\n p._receiver0 = value;\n } // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n\n\n fillTypes({\n a: 1\n });\n fillTypes({\n b: 2\n });\n fillTypes({\n c: 3\n });\n fillTypes(1);\n fillTypes(function () {});\n fillTypes(undefined);\n fillTypes(false);\n fillTypes(new Promise(INTERNAL));\n debug.setBounds(Async.firstLineError, util.lastLineError);\n return Promise;\n };\n }, {\n \"./any.js\": 1,\n \"./async\": 2,\n \"./bind\": 3,\n \"./call_get.js\": 5,\n \"./cancel\": 6,\n \"./catch_filter\": 7,\n \"./context\": 8,\n \"./debuggability\": 9,\n \"./direct_resolve\": 10,\n \"./each.js\": 11,\n \"./errors\": 12,\n \"./es5\": 13,\n \"./filter.js\": 14,\n \"./finally\": 15,\n \"./generators.js\": 16,\n \"./join\": 17,\n \"./map.js\": 18,\n \"./method\": 19,\n \"./nodeback\": 20,\n \"./nodeify.js\": 21,\n \"./promise_array\": 23,\n \"./promisify.js\": 24,\n \"./props.js\": 25,\n \"./race.js\": 27,\n \"./reduce.js\": 28,\n \"./settle.js\": 30,\n \"./some.js\": 31,\n \"./synchronous_inspection\": 32,\n \"./thenables\": 33,\n \"./timers.js\": 34,\n \"./using.js\": 35,\n \"./util\": 36\n }],\n 23: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection, Proxyable) {\n var util = _dereq_(\"./util\");\n\n var isArray = util.isArray;\n\n function toResolutionValue(val) {\n switch (val) {\n case -2:\n return [];\n\n case -3:\n return {};\n\n case -6:\n return new Map();\n }\n }\n\n function PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n\n promise._setOnCancel(this);\n\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n\n this._init(undefined, -2);\n }\n\n util.inherits(PromiseArray, Proxyable);\n\n PromiseArray.prototype.length = function () {\n return this._length;\n };\n\n PromiseArray.prototype.promise = function () {\n return this._promise;\n };\n\n PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if ((bitField & 50397184) === 0) {\n this._promise._setAsyncGuaranteed();\n\n return values._then(init, this._reject, undefined, this, resolveValueIfEmpty);\n } else if ((bitField & 33554432) !== 0) {\n values = values._value();\n } else if ((bitField & 16777216) !== 0) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n\n values = util.asArray(values);\n\n if (values === null) {\n var err = apiRejection(\"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n\n this._promise._rejectCallback(err, false);\n\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n } else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n\n return;\n }\n\n this._iterate(values);\n };\n\n PromiseArray.prototype._iterate = function (values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if ((bitField & 50397184) === 0) {\n maybePromise._proxy(this, i);\n\n this._values[i] = maybePromise;\n } else if ((bitField & 33554432) !== 0) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if ((bitField & 16777216) !== 0) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n\n if (!isResolved) result._setAsyncGuaranteed();\n };\n\n PromiseArray.prototype._isResolved = function () {\n return this._values === null;\n };\n\n PromiseArray.prototype._resolve = function (value) {\n this._values = null;\n\n this._promise._fulfill(value);\n };\n\n PromiseArray.prototype._cancel = function () {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n\n this._promise._cancel();\n };\n\n PromiseArray.prototype._reject = function (reason) {\n this._values = null;\n\n this._promise._rejectCallback(reason, false);\n };\n\n PromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n PromiseArray.prototype._promiseCancelled = function () {\n this._cancel();\n\n return true;\n };\n\n PromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n\n this._reject(reason);\n\n return true;\n };\n\n PromiseArray.prototype._resultCancelled = function () {\n if (this._isResolved()) return;\n var values = this._values;\n\n this._cancel();\n\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n };\n\n PromiseArray.prototype.shouldCopyValues = function () {\n return true;\n };\n\n PromiseArray.prototype.getActualLength = function (len) {\n return len;\n };\n\n return PromiseArray;\n };\n }, {\n \"./util\": 36\n }],\n 24: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var THIS = {};\n\n var util = _dereq_(\"./util\");\n\n var nodebackForPromise = _dereq_(\"./nodeback\");\n\n var withAppended = util.withAppended;\n var maybeWrapAsError = util.maybeWrapAsError;\n var canEvaluate = util.canEvaluate;\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var defaultSuffix = \"Async\";\n var defaultPromisified = {\n __isPromisified__: true\n };\n var noCopyProps = [\"arity\", \"length\", \"name\", \"arguments\", \"caller\", \"callee\", \"prototype\", \"__isPromisified__\"];\n var noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\n var defaultFilter = function defaultFilter(name) {\n return util.isIdentifier(name) && name.charAt(0) !== \"_\" && name !== \"constructor\";\n };\n\n function propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n }\n\n function isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n } catch (e) {\n return false;\n }\n }\n\n function hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix, defaultPromisified);\n return val ? isPromisified(val) : false;\n }\n\n function checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\n\\n See http://goo.gl/MqrFmX\\n\".replace(\"%s\", suffix));\n }\n }\n }\n }\n }\n\n function promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter ? true : defaultFilter(key, value, obj);\n\n if (typeof value === \"function\" && !isPromisified(value) && !hasPromisified(obj, key, suffix) && filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n }\n\n var escapeIdentRegex = function escapeIdentRegex(str) {\n return str.replace(/([$])/, \"\\\\$\");\n };\n\n var makeNodePromisifiedEval;\n\n if (!true) {\n var switchCaseArgumentOrder = function switchCaseArgumentOrder(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n\n for (var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n\n for (var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n\n return ret;\n };\n\n var argumentSequence = function argumentSequence(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n };\n\n var parameterDeclaration = function parameterDeclaration(parameterCount) {\n return util.filledRange(Math.max(parameterCount, 3), \"_arg\", \"\");\n };\n\n var parameterCount = function parameterCount(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n\n return 0;\n };\n\n makeNodePromisifiedEval = function makeNodePromisifiedEval(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined ? \"ret = callback({{args}}, nodeback); break;\\n\" : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] + \":\" + generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", shouldProxyThis ? \"ret = callback.apply(this, args);\\n\" : \"ret = callback.apply(receiver, args);\\n\");\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\" ? \"this != null ? this['\" + callback + \"'] : fn\" : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase()).replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\", \"fn\", \"receiver\", \"withAppended\", \"maybeWrapAsError\", \"nodebackForPromise\", \"tryCatch\", \"errorObj\", \"notEnumerableProp\", \"INTERNAL\", body)(Promise, fn, receiver, withAppended, maybeWrapAsError, nodebackForPromise, util.tryCatch, util.errorObj, util.notEnumerableProp, INTERNAL);\n };\n }\n\n function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = function () {\n return this;\n }();\n\n var method = callback;\n\n if (typeof method === \"string\") {\n callback = fn;\n }\n\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n\n promise._captureStackTrace();\n\n var cb = typeof method === \"string\" && this !== defaultThis ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch (e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n }\n\n var makeNodePromisified = canEvaluate ? makeNodePromisifiedEval : makeNodePromisifiedClosure;\n\n function promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods = promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i += 2) {\n var key = methods[i];\n var fn = methods[i + 1];\n var promisifiedKey = key + suffix;\n\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] = makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function () {\n return makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n\n util.toFastProperties(obj);\n return obj;\n }\n\n function promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined, callback, null, multiArgs);\n }\n\n Promise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n\n if (isPromisified(fn)) {\n return fn;\n }\n\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n };\n\n Promise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && _typeof(target) !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var keys = util.inheritedDataKeys(target);\n\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n\n if (keys[i] !== \"constructor\" && util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier, multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n };\n };\n }, {\n \"./errors\": 12,\n \"./nodeback\": 20,\n \"./util\": 36\n }],\n 25: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var isObject = util.isObject;\n\n var es5 = _dereq_(\"./es5\");\n\n var Es6Map;\n if (typeof Map === \"function\") Es6Map = Map;\n\n var mapToEntries = function () {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n }();\n\n var entriesToMap = function entriesToMap(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n\n return ret;\n };\n\n function PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n\n this.constructor$(entries);\n this._isMap = isMap;\n\n this._init$(undefined, isMap ? -6 : -3);\n }\n\n util.inherits(PropertiesPromiseArray, PromiseArray);\n\n PropertiesPromiseArray.prototype._init = function () {};\n\n PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n var val;\n\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n\n this._resolve(val);\n\n return true;\n }\n\n return false;\n };\n\n PropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n PropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n };\n\n function props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\n\\n See http://goo.gl/MqrFmX\\n\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n\n return ret;\n }\n\n Promise.prototype.props = function () {\n return props(this);\n };\n\n Promise.props = function (promises) {\n return props(promises);\n };\n };\n }, {\n \"./es5\": 13,\n \"./util\": 36\n }],\n 26: [function (_dereq_, module, exports) {\n \"use strict\";\n\n function arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n }\n\n function Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n }\n\n Queue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n };\n\n Queue.prototype._pushOne = function (arg) {\n var length = this.length();\n\n this._checkCapacity(length + 1);\n\n var i = this._front + length & this._capacity - 1;\n this[i] = arg;\n this._length = length + 1;\n };\n\n Queue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n\n this._pushOne(receiver);\n\n this._pushOne(arg);\n\n return;\n }\n\n var j = this._front + length - 3;\n\n this._checkCapacity(length);\n\n var wrapMask = this._capacity - 1;\n this[j + 0 & wrapMask] = fn;\n this[j + 1 & wrapMask] = receiver;\n this[j + 2 & wrapMask] = arg;\n this._length = length;\n };\n\n Queue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n this[front] = undefined;\n this._front = front + 1 & this._capacity - 1;\n this._length--;\n return ret;\n };\n\n Queue.prototype.length = function () {\n return this._length;\n };\n\n Queue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n };\n\n Queue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = front + length & oldCapacity - 1;\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n };\n\n module.exports = Queue;\n }, {}],\n 27: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, tryConvertToPromise, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var raceLater = function raceLater(promise) {\n return promise.then(function (array) {\n return race(array, promise);\n });\n };\n\n function race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null) return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n\n return ret;\n }\n\n Promise.race = function (promises) {\n return race(promises, undefined);\n };\n\n Promise.prototype.race = function () {\n return race(this, undefined);\n };\n };\n }, {\n \"./util\": 36\n }],\n 28: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug) {\n var getDomain = Promise._getDomain;\n\n var util = _dereq_(\"./util\");\n\n var tryCatch = util.tryCatch;\n\n function ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n\n initialValue._attachCancellationCallback(this);\n }\n\n this._initialValue = initialValue;\n this._currentCancellable = null;\n\n if (_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n\n this._promise._captureStackTrace();\n\n this._init$(undefined, -5);\n }\n\n util.inherits(ReductionPromiseArray, PromiseArray);\n\n ReductionPromiseArray.prototype._gotAccum = function (accum) {\n if (this._eachValues !== undefined && this._eachValues !== null && accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n };\n\n ReductionPromiseArray.prototype._eachComplete = function (value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n\n return this._eachValues;\n };\n\n ReductionPromiseArray.prototype._init = function () {};\n\n ReductionPromiseArray.prototype._resolveEmptyArray = function () {\n this._resolve(this._eachValues !== undefined ? this._eachValues : this._initialValue);\n };\n\n ReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n };\n\n ReductionPromiseArray.prototype._resolve = function (value) {\n this._promise._resolveCallback(value);\n\n this._values = null;\n };\n\n ReductionPromiseArray.prototype._resultCancelled = function (sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n\n this._resultCancelled$();\n\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n };\n\n ReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n\n value._then(completed, completed, undefined, value, this);\n };\n\n Promise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n };\n\n Promise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n };\n\n function completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n }\n\n function reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n }\n\n function gotAccum(accum) {\n this.accum = accum;\n\n this.array._gotAccum(accum);\n\n var value = tryConvertToPromise(this.value, this.array._promise);\n\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n }\n\n function gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n\n promise._pushContext();\n\n var ret;\n\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(), this.accum, value, this.index, this.length);\n }\n\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\", promise);\n return ret;\n }\n };\n }, {\n \"./util\": 36\n }],\n 29: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var util = _dereq_(\"./util\");\n\n var schedule;\n\n var noAsyncScheduler = function noAsyncScheduler() {\n throw new Error(\"No async scheduler available\\n\\n See http://goo.gl/MqrFmX\\n\");\n };\n\n var NativePromise = util.getNativePromise();\n\n if (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode ? function (fn) {\n GlobalSetImmediate.call(global, fn);\n } : function (fn) {\n ProcessNextTick.call(process, fn);\n };\n } else if (typeof NativePromise === \"function\" && typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n\n schedule = function schedule(fn) {\n nativePromise.then(fn);\n };\n } else if (typeof MutationObserver !== \"undefined\" && !(typeof window !== \"undefined\" && window.navigator && (window.navigator.standalone || window.cordova))) {\n schedule = function () {\n var div = document.createElement(\"div\");\n var opts = {\n attributes: true\n };\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function () {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function scheduleToggle() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function () {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n }();\n } else if (typeof setImmediate !== \"undefined\") {\n schedule = function schedule(fn) {\n setImmediate(fn);\n };\n } else if (typeof setTimeout !== \"undefined\") {\n schedule = function schedule(fn) {\n setTimeout(fn, 0);\n };\n } else {\n schedule = noAsyncScheduler;\n }\n\n module.exports = schedule;\n }, {\n \"./util\": 36\n }],\n 30: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, debug) {\n var PromiseInspection = Promise.PromiseInspection;\n\n var util = _dereq_(\"./util\");\n\n function SettledPromiseArray(values) {\n this.constructor$(values);\n }\n\n util.inherits(SettledPromiseArray, PromiseArray);\n\n SettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n\n return true;\n }\n\n return false;\n };\n\n SettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n };\n\n SettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n };\n\n Promise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n };\n\n Promise.prototype.settle = function () {\n return Promise.settle(this);\n };\n };\n }, {\n \"./util\": 36\n }],\n 31: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, PromiseArray, apiRejection) {\n var util = _dereq_(\"./util\");\n\n var RangeError = _dereq_(\"./errors\").RangeError;\n\n var AggregateError = _dereq_(\"./errors\").AggregateError;\n\n var isArray = util.isArray;\n var CANCELLATION = {};\n\n function SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n }\n\n util.inherits(SomePromiseArray, PromiseArray);\n\n SomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n\n if (this._howMany === 0) {\n this._resolve([]);\n\n return;\n }\n\n this._init$(undefined, -5);\n\n var isArrayResolved = isArray(this._values);\n\n if (!this._isResolved() && isArrayResolved && this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n };\n\n SomePromiseArray.prototype.init = function () {\n this._initialized = true;\n\n this._init();\n };\n\n SomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n };\n\n SomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n };\n\n SomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n };\n\n SomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n\n this._addRejected(CANCELLATION);\n\n return this._checkOutcome();\n };\n\n SomePromiseArray.prototype._checkOutcome = function () {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n\n return true;\n }\n\n return false;\n };\n\n SomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n };\n\n SomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n };\n\n SomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n };\n\n SomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n };\n\n SomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n };\n\n SomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" + this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n };\n\n SomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n };\n\n function some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n }\n\n Promise.some = function (promises, howMany) {\n return some(promises, howMany);\n };\n\n Promise.prototype.some = function (howMany) {\n return some(this, howMany);\n };\n\n Promise._SomePromiseArray = SomePromiseArray;\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 32: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise) {\n function PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed() ? promise._settledValue() : undefined;\n } else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n }\n\n PromiseInspection.prototype._settledValue = function () {\n return this._settledValueField;\n };\n\n var value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var reason = PromiseInspection.prototype.error = PromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\n\\n See http://goo.gl/MqrFmX\\n\");\n }\n\n return this._settledValue();\n };\n\n var isFulfilled = PromiseInspection.prototype.isFulfilled = function () {\n return (this._bitField & 33554432) !== 0;\n };\n\n var isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n };\n\n var isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n };\n\n var isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n };\n\n PromiseInspection.prototype.isCancelled = function () {\n return (this._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.__isCancelled = function () {\n return (this._bitField & 65536) === 65536;\n };\n\n Promise.prototype._isCancelled = function () {\n return this._target().__isCancelled();\n };\n\n Promise.prototype.isCancelled = function () {\n return (this._target()._bitField & 8454144) !== 0;\n };\n\n Promise.prototype.isPending = function () {\n return isPending.call(this._target());\n };\n\n Promise.prototype.isRejected = function () {\n return isRejected.call(this._target());\n };\n\n Promise.prototype.isFulfilled = function () {\n return isFulfilled.call(this._target());\n };\n\n Promise.prototype.isResolved = function () {\n return isResolved.call(this._target());\n };\n\n Promise.prototype.value = function () {\n return value.call(this._target());\n };\n\n Promise.prototype.reason = function () {\n var target = this._target();\n\n target._unsetRejectionIsUnhandled();\n\n return reason.call(target);\n };\n\n Promise.prototype._value = function () {\n return this._settledValue();\n };\n\n Promise.prototype._reason = function () {\n this._unsetRejectionIsUnhandled();\n\n return this._settledValue();\n };\n\n Promise.PromiseInspection = PromiseInspection;\n };\n }, {}],\n 33: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL) {\n var util = _dereq_(\"./util\");\n\n var errorObj = util.errorObj;\n var isObject = util.isObject;\n\n function tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n\n obj._then(ret._fulfill, ret._reject, undefined, ret, null);\n\n return ret;\n }\n\n return doThenable(obj, then, context);\n }\n }\n\n return obj;\n }\n\n function doGetThen(obj) {\n return obj.then;\n }\n\n function getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n var hasProp = {}.hasOwnProperty;\n\n function isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n }\n\n function doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n\n promise._captureStackTrace();\n\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n\n promise._resolveCallback(value);\n\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n\n promise._rejectCallback(reason, synchronous, true);\n\n promise = null;\n }\n\n return ret;\n }\n\n return tryConvertToPromise;\n };\n }, {\n \"./util\": 36\n }],\n 34: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TimeoutError = Promise.TimeoutError;\n\n function HandleWrapper(handle) {\n this.handle = handle;\n }\n\n HandleWrapper.prototype._resultCancelled = function () {\n clearTimeout(this.handle);\n };\n\n var afterValue = function afterValue(value) {\n return delay(+this).thenReturn(value);\n };\n\n var delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n\n if (value !== undefined) {\n ret = Promise.resolve(value)._then(afterValue, null, null, ms, undefined);\n\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function () {\n ret._fulfill();\n }, +ms);\n\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n\n ret._captureStackTrace();\n }\n\n ret._setAsyncGuaranteed();\n\n return ret;\n };\n\n Promise.prototype.delay = function (ms) {\n return delay(ms, this);\n };\n\n var afterTimeout = function afterTimeout(promise, message, parent) {\n var err;\n\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n\n util.markAsOriginatingFromRejection(err);\n\n promise._attachExtraTrace(err);\n\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n };\n\n function successClear(value) {\n clearTimeout(this.handle);\n return value;\n }\n\n function failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n }\n\n Promise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear, undefined, handleWrapper, undefined);\n\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear, undefined, handleWrapper, undefined);\n }\n\n return ret;\n };\n };\n }, {\n \"./util\": 36\n }],\n 35: [function (_dereq_, module, exports) {\n \"use strict\";\n\n module.exports = function (Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n\n var TypeError = _dereq_(\"./errors\").TypeError;\n\n var inherits = _dereq_(\"./util\").inherits;\n\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n\n if (maybePromise !== thenable && typeof thenable._isDisposable === \"function\" && typeof thenable._getDisposer === \"function\" && thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n\n return maybePromise;\n }\n\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n\n if (maybePromise instanceof Promise && maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(maybePromise._getDisposer().tryDispose(inspection), resources.promise);\n } catch (e) {\n return thrower(e);\n }\n\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower, null, null, null);\n }\n }\n\n iterator();\n }\n\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function (inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n\n this._promise._unsetDisposable();\n\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return d != null && typeof d.resource === \"function\" && typeof d.tryDispose === \"function\";\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n\n return value.promise();\n }\n\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length - 1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function () {\n var len = this.length;\n\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var input;\n var spreadArgs = true;\n\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n\n var resources = new ResourceList(len);\n\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n\n if (maybePromise instanceof Promise) {\n resource = maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources).then(function (inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n\n inspections[i] = inspection.value();\n }\n\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs ? fn.apply(undefined, inspections) : fn(inspections);\n\n var promiseCreated = promise._popContext();\n\n debug.checkForgottenReturns(ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n var promise = resultPromise.lastly(function () {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n\n promise._setOnCancel(resources);\n\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & ~131072;\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n\n throw new TypeError();\n };\n };\n }, {\n \"./errors\": 12,\n \"./util\": 36\n }],\n 36: [function (_dereq_, module, exports) {\n \"use strict\";\n\n var es5 = _dereq_(\"./es5\");\n\n var canEvaluate = typeof navigator == \"undefined\";\n var errorObj = {\n e: {}\n };\n var tryCatchTarget;\n var globalObject = typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : this !== undefined ? this : null;\n\n function tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n }\n\n function tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n }\n\n var inherits = function inherits(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) && propertyName.charAt(propertyName.length - 1) !== \"$\") {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n };\n\n function isPrimitive(val) {\n return val == null || val === true || val === false || typeof val === \"string\" || typeof val === \"number\";\n }\n\n function isObject(value) {\n return typeof value === \"function\" || _typeof(value) === \"object\" && value !== null;\n }\n\n function maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n return new Error(safeToString(maybeError));\n }\n\n function withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n\n ret[i] = appendee;\n return ret;\n }\n\n function getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null ? desc.value : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n }\n\n function notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n }\n\n function thrower(r) {\n throw r;\n }\n\n var inheritedDataKeys = function () {\n var excludedPrototypes = [Array.prototype, Object.prototype, Function.prototype];\n\n var isExcludedProto = function isExcludedProto(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function (obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n\n obj = es5.getPrototypeOf(obj);\n }\n\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function (obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n /*jshint forin:false */\n\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n\n ret.push(key);\n }\n }\n\n return ret;\n };\n }\n }();\n\n var thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\n\n function isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 && !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods = thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor || hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n\n return false;\n } catch (e) {\n return false;\n }\n }\n\n function toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n\n function ic() {\n return _typeof(receiver.foo);\n }\n\n ic();\n ic();\n return obj;\n eval(obj);\n }\n\n var rident = /^[a-z$_][a-z$_0-9]*$/i;\n\n function isIdentifier(str) {\n return rident.test(str);\n }\n\n function filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n\n for (var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n\n return ret;\n }\n\n function safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n }\n\n function isError(obj) {\n return obj instanceof Error || obj !== null && _typeof(obj) === \"object\" && typeof obj.message === \"string\" && typeof obj.name === \"string\";\n }\n\n function markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n } catch (ignore) {}\n }\n\n function originatesFromRejection(e) {\n if (e == null) return false;\n return e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError || e[\"isOperational\"] === true;\n }\n\n function canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n }\n\n var ensureErrorObject = function () {\n if (!(\"stack\" in new Error())) {\n return function (value) {\n if (canAttachTrace(value)) return value;\n\n try {\n throw new Error(safeToString(value));\n } catch (err) {\n return err;\n }\n };\n } else {\n return function (value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n }();\n\n function classString(obj) {\n return {}.toString.call(obj);\n }\n\n function copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n }\n\n var asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n }\n\n return null;\n };\n\n if (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function (v) {\n return Array.from(v);\n } : function (v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n\n while (!(itResult = it.next()).done) {\n ret.push(itResult.value);\n }\n\n return ret;\n };\n\n asArray = function asArray(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n\n return null;\n };\n }\n\n var isNode = typeof process !== \"undefined\" && classString(process).toLowerCase() === \"[object process]\";\n var hasEnvVariables = typeof process !== \"undefined\" && typeof process.env !== \"undefined\";\n\n function env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n }\n\n function getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function () {});\n\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n }\n\n function domainBind(self, cb) {\n return self.bind(cb);\n }\n\n var ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome && typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n };\n\n ret.isRecentNode = ret.isNode && function () {\n var version;\n\n if (process.versions && process.versions.node) {\n version = process.versions.node.split(\".\").map(Number);\n } else if (process.version) {\n version = process.version.split(\".\").map(Number);\n }\n\n return version[0] === 0 && version[1] > 10 || version[0] > 0;\n }();\n\n if (ret.isNode) ret.toFastProperties(process);\n\n try {\n throw new Error();\n } catch (e) {\n ret.lastLineError = e;\n }\n\n module.exports = ret;\n }, {\n \"./es5\": 13\n }]\n }, {}, [4])(4);\n});\n;\n\nif (typeof window !== 'undefined' && window !== null) {\n window.P = window.Promise;\n} else if (typeof self !== 'undefined' && self !== null) {\n self.P = self.Promise;\n}","module.exports = require(\"bluebird\");","var utils = require(\"../../utils/utils\");\n\nvar StateService = function StateService() {\n var stateProviders = {};\n\n function getState(name) {\n var provider = stateProviders[name];\n\n if (provider) {\n return stateProviders[name].method();\n } else {\n var res = {};\n\n for (var i in stateProviders) {\n if (!stateProviders[i].internal) utils.mixin(res, stateProviders[i].method(), true);\n }\n\n return res;\n }\n }\n\n function registerProvider(name, provider, internal) {\n stateProviders[name] = {\n method: provider,\n internal: internal\n };\n }\n\n function unregisterProvider(name) {\n delete stateProviders[name];\n }\n\n return {\n getState: getState,\n registerProvider: registerProvider,\n unregisterProvider: unregisterProvider\n };\n};\n\nmodule.exports = StateService;","module.exports = function (gantt) {\n var regTemplates = {};\n\n function initTemplate(name, initial, template_name) {\n template_name = template_name || name;\n var config = gantt.config,\n templates = gantt.templates;\n\n if (gantt.config[name] && regTemplates[template_name] != config[name]) {\n if (!(initial && templates[template_name])) {\n templates[template_name] = gantt.date.date_to_str(config[name]);\n regTemplates[template_name] = config[name];\n }\n }\n }\n\n function initTemplates() {\n var labels = gantt.locale.labels;\n labels.gantt_save_btn = labels.icon_save;\n labels.gantt_cancel_btn = labels.icon_cancel;\n labels.gantt_delete_btn = labels.icon_delete;\n var date = gantt.date; //build configuration based templates\n\n var d = date.date_to_str;\n var c = gantt.config;\n var format_date = d(c.xml_date || c.date_format, c.server_utc);\n var parse_date = date.str_to_date(c.xml_date || c.date_format, c.server_utc);\n initTemplate(\"date_scale\", true, undefined, gantt.config, gantt.templates);\n initTemplate(\"date_grid\", true, \"grid_date_format\", gantt.config, gantt.templates);\n initTemplate(\"task_date\", true, undefined, gantt.config, gantt.templates);\n gantt.mixin(gantt.templates, {\n xml_format: undefined,\n // deprecated\n format_date: format_date,\n xml_date: undefined,\n // deprecated\n parse_date: parse_date,\n progress_text: function progress_text(start, end, task) {\n return \"\";\n },\n grid_header_class: function grid_header_class(column, config) {\n return \"\";\n },\n task_text: function task_text(start, end, task) {\n return task.text;\n },\n task_class: function task_class(start, end, task) {\n return \"\";\n },\n task_end_date: function task_end_date(date) {\n return gantt.templates.task_date(date);\n },\n grid_row_class: function grid_row_class(start, end, task) {\n return \"\";\n },\n task_row_class: function task_row_class(start, end, task) {\n return \"\";\n },\n timeline_cell_class: function timeline_cell_class(item, date) {\n return \"\";\n },\n timeline_cell_content: function timeline_cell_content(item, date) {\n return \"\";\n },\n scale_cell_class: function scale_cell_class(date) {\n return \"\";\n },\n scale_row_class: function scale_row_class(date) {\n return \"\";\n },\n grid_indent: function grid_indent(item) {\n return \"
\";\n },\n grid_folder: function grid_folder(item) {\n return \"
\";\n },\n grid_file: function grid_file(item) {\n return \"
\";\n },\n grid_open: function grid_open(item) {\n return \"
\";\n },\n grid_blank: function grid_blank(item) {\n return \"
\";\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 \"\" + from.text + \"\" + to.text + \"\";\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 = \"\" + from.text + \" \" + (from_start ? labels.link_start : labels.link_end) + \"
\";\n\n if (to) {\n to = gantt.getTask(to);\n text += \" \" + to.text + \" \" + (to_start ? labels.link_start : labels.link_end) + \"
\";\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 \"Task: \" + event.text + \"
Start date: \" + gantt.templates.tooltip_date_format(start) + \"
End date: \" + gantt.templates.tooltip_date_format(end);\n }\n });\n }\n\n return {\n initTemplates: initTemplates,\n initTemplate: initTemplate\n };\n};","var eventable = require(\"../../utils/eventable\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar timeout = require(\"../../utils/timeout\");\n\nvar global = require(\"../../utils/global\");\n\nvar domHelpers = require(\"../ui/utils/dom_helpers\");\n\nmodule.exports = function (gantt) {\n function copyDomEvent(e) {\n return {\n target: e.target || e.srcElement,\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n altKey: e.altKey\n };\n }\n\n function DnD(obj, config) {\n this._obj = obj;\n this._settings = config || {};\n eventable(this);\n var inputMethods = this.getInputMethods();\n this._drag_start_timer = null;\n gantt.attachEvent(\"onGanttScroll\", utils.bind(function (left, top) {\n this.clearDragTimer();\n }, this));\n var lastDown = 0;\n var eventParams = {\n passive: false\n };\n\n for (var i = 0; i < inputMethods.length; i++) {\n utils.bind(function (input) {\n gantt.event(obj, input.down, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n if (config.preventDefault && config.selector && domHelpers.closest(e.target, config.selector)) {\n e.preventDefault();\n }\n\n if (gantt.config.touch && e.timeStamp && e.timeStamp - lastDown < 300) {\n return;\n }\n\n this._settings.original_target = copyDomEvent(e);\n\n if (gantt.config.touch) {\n this.clearDragTimer();\n this._drag_start_timer = setTimeout(utils.bind(function () {\n if (gantt.getState().lightbox) {\n return;\n }\n\n this.dragStart(obj, e, input);\n }, this), gantt.config.touch_drag);\n } else {\n this.dragStart(obj, e, input);\n }\n }, this), eventParams);\n var eventElement = document.body;\n gantt.event(eventElement, input.up, utils.bind(function (e) {\n if (!input.accessor(e)) {\n return;\n }\n\n this.clearDragTimer();\n }, this), eventParams);\n }, this)(inputMethods[i]);\n }\n }\n\n DnD.prototype = {\n traceDragEvents: function traceDragEvents(domElement, inputMethod) {\n var mousemove = utils.bind(function (e) {\n return this.dragMove(domElement, e, inputMethod.accessor);\n }, this);\n utils.bind(function (e) {\n return this.dragScroll(domElement, e);\n }, this);\n var limited_mousemove = utils.bind(function (e) {\n if (this.config.started && utils.defined(this.config.updates_per_second)) {\n if (!timeout(this, this.config.updates_per_second)) return;\n }\n\n var dndActive = mousemove(e);\n\n if (dndActive) {\n try {\n if (e && e.preventDefault && e.cancelable) {\n //e.cancelable condition - because navigator.vibrate is blocked by Chrome\n e.preventDefault(); //Cancel default action on DND\n } //Cancel default action on DND\n\n } catch (e) {// just suppress the exception, nothing needed to be done here\n } //e.cancelBubble = true;\n\n }\n\n return dndActive;\n }, this);\n var eventElement = domHelpers.getRootNode(gantt.$root);\n var mousemoveContainer = this.config.mousemoveContainer || domHelpers.getRootNode(gantt.$root);\n var eventParams = {\n passive: false\n };\n var mouseup = utils.bind(function (e) {\n gantt.eventRemove(mousemoveContainer, inputMethod.move, limited_mousemove);\n gantt.eventRemove(eventElement, inputMethod.up, mouseup, eventParams);\n return this.dragEnd(domElement);\n }, this);\n gantt.event(mousemoveContainer, inputMethod.move, limited_mousemove, eventParams);\n gantt.event(eventElement, inputMethod.up, mouseup, eventParams);\n },\n checkPositionChange: function checkPositionChange(pos) {\n var diff_x = pos.x - this.config.pos.x;\n var diff_y = pos.y - this.config.pos.y;\n var distance = Math.sqrt(Math.pow(Math.abs(diff_x), 2) + Math.pow(Math.abs(diff_y), 2));\n\n if (distance > this.config.sensitivity) {\n return true;\n } else {\n return false;\n }\n },\n initDnDMarker: function initDnDMarker() {\n // create dnd placeholder and put it in dom\n var marker = this.config.marker = document.createElement(\"div\");\n marker.className = \"gantt_drag_marker\"; // GS-1333: don't show any message when we resize grid columns\n\n marker.innerHTML = \"\";\n document.body.appendChild(marker);\n },\n backupEventTarget: function backupEventTarget(domEvent, getEvent) {\n if (!gantt.config.touch) {\n return;\n } // keep original event target in DOM in order to keep dnd on touchmove event\n\n\n var e = getEvent(domEvent);\n var el = e.target || e.srcElement;\n var copy = el.cloneNode(true); //this.config.target.target = copy;\n\n this.config.original_target = copyDomEvent(e);\n this.config.original_target.target = copy;\n this.config.backup_element = el;\n el.parentNode.appendChild(copy);\n el.style.display = \"none\";\n var mousemoveContainer = this.config.mousemoveContainer || document.body;\n mousemoveContainer.appendChild(el);\n },\n getInputMethods: function getInputMethods() {\n // bind actions to browser events\n var inputMethods = [];\n inputMethods.push({\n \"move\": \"mousemove\",\n \"down\": \"mousedown\",\n \"up\": \"mouseup\",\n \"accessor\": function accessor(e) {\n return e;\n }\n });\n\n if (gantt.config.touch) {\n var touchEventsSupported = true;\n\n try {\n document.createEvent(\"TouchEvent\");\n } catch (e) {\n touchEventsSupported = false;\n }\n\n if (touchEventsSupported) {\n inputMethods.push({\n \"move\": \"touchmove\",\n \"down\": \"touchstart\",\n \"up\": \"touchend\",\n \"accessor\": function accessor(ev) {\n if (ev.touches && ev.touches.length > 1) return null;\n if (ev.touches[0]) return {\n target: document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY),\n pageX: ev.touches[0].pageX,\n pageY: ev.touches[0].pageY,\n clientX: ev.touches[0].clientX,\n clientY: ev.touches[0].clientY\n };else return ev;\n }\n });\n } else if (global.navigator.pointerEnabled) {\n inputMethods.push({\n \"move\": \"pointermove\",\n \"down\": \"pointerdown\",\n \"up\": \"pointerup\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == \"mouse\") return null;\n return ev;\n }\n });\n } else if (global.navigator.msPointerEnabled) {\n inputMethods.push({\n \"move\": \"MSPointerMove\",\n \"down\": \"MSPointerDown\",\n \"up\": \"MSPointerUp\",\n \"accessor\": function accessor(ev) {\n if (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n return ev;\n }\n });\n }\n }\n\n return inputMethods;\n },\n clearDragTimer: function clearDragTimer() {\n if (this._drag_start_timer) {\n clearTimeout(this._drag_start_timer);\n this._drag_start_timer = null;\n }\n },\n dragStart: function dragStart(obj, e, inputMethod) {\n if (this.config && this.config.started) {\n return;\n }\n\n this.config = {\n obj: obj,\n marker: null,\n started: false,\n pos: this.getPosition(e),\n sensitivity: 4\n };\n if (this._settings) utils.mixin(this.config, this._settings, true);\n this.traceDragEvents(obj, inputMethod);\n gantt._prevent_touch_scroll = true;\n document.body.className += \" gantt_noselect\";\n\n if (gantt.config.touch) {\n this.dragMove(obj, e, inputMethod.accessor);\n }\n },\n dragMove: function dragMove(obj, e, getEvent) {\n var source = getEvent(e);\n if (!source) return false;\n\n if (!this.config.marker && !this.config.started) {\n var pos = this.getPosition(source);\n\n if (gantt.config.touch || this.checkPositionChange(pos)) {\n // real drag starts here,\n // when user moves mouse at first time after onmousedown\n this.config.started = true;\n this.config.ignore = false;\n\n if (this.callEvent(\"onBeforeDragStart\", [obj, this.config.original_target]) === false) {\n this.config.ignore = true;\n return false;\n }\n\n this.backupEventTarget(e, getEvent);\n this.initDnDMarker();\n\n gantt._touch_feedback();\n\n this.callEvent(\"onAfterDragStart\", [obj, this.config.original_target]);\n } else {\n this.config.ignore = true;\n }\n }\n\n if (!this.config.ignore) {\n // GS-1279 Gantt crashes on Mobile Firefox after starting to create a link and moving finger outisde the page.\n if (e.targetTouches && !source.target) return;\n source.pos = this.getPosition(source);\n this.config.marker.style.left = source.pos.x + \"px\";\n this.config.marker.style.top = source.pos.y + \"px\";\n this.callEvent(\"onDragMove\", [obj, source]);\n return true;\n }\n\n return false;\n },\n dragEnd: function dragEnd(obj) {\n var target = this.config.backup_element;\n\n if (target && target.parentNode) {\n target.parentNode.removeChild(target);\n }\n\n gantt._prevent_touch_scroll = false;\n\n if (this.config.marker) {\n this.config.marker.parentNode.removeChild(this.config.marker);\n this.config.marker = null;\n this.callEvent(\"onDragEnd\", []);\n }\n\n this.config.started = false;\n document.body.className = document.body.className.replace(\" gantt_noselect\", \"\");\n },\n getPosition: function getPosition(e) {\n var x = 0,\n y = 0;\n\n if (e.pageX || e.pageY) {\n x = e.pageX;\n y = e.pageY;\n } else if (e.clientX || e.clientY) {\n x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n }\n\n return {\n x: x,\n y: y\n };\n }\n };\n return DnD;\n};","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar t = /*#__PURE__*/function () {\n function t(_t) {\n _classCallCheck(this, t);\n\n var e = _t.url,\n s = _t.token;\n this._url = e, this._token = s, this._mode = 1, this._seed = 1, this._queue = [], this.data = {}, this.api = {}, this._events = {};\n }\n\n _createClass(t, [{\n key: \"headers\",\n value: function headers() {\n return {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Remote-Token\": this._token\n };\n }\n }, {\n key: \"fetch\",\n value: function (_fetch) {\n function fetch(_x, _x2) {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function (_t2, e) {\n var s = {\n credentials: \"include\",\n headers: this.headers()\n };\n return e && (s.method = \"POST\", s.body = e), fetch(_t2, s).then(function (_t3) {\n return _t3.json();\n });\n })\n }, {\n key: \"load\",\n value: function load(_t4) {\n var _this = this;\n\n return _t4 && (this._url = _t4), this.fetch(this._url).then(function (_t5) {\n return _this.parse(_t5);\n });\n }\n }, {\n key: \"parse\",\n value: function parse(_t6) {\n var e = _t6.key,\n s = _t6.websocket;\n e && (this._token = _t6.key);\n\n for (var _e in _t6.data) {\n this.data[_e] = _t6.data[_e];\n }\n\n for (var _e2 in _t6.api) {\n var _s = this.api[_e2] = {},\n i = _t6.api[_e2];\n\n for (var _t29 in i) {\n _s[_t29] = this._wrapper(_e2 + \".\" + _t29);\n }\n }\n\n return s && this.connect(), this;\n }\n }, {\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var _t8 = this._socket;\n _t8 && (this._socket = null, _t8.onclose = function () {}, _t8.close()), this._mode = 2, this._socket = function (t, e, s, i) {\n var n = e;\n \"/\" === n[0] && (n = document.location.protocol + \"//\" + document.location.host + e);\n n = n.replace(/^http(s|):/, \"ws$1:\");\n var o = -1 != n.indexOf(\"?\") ? \"&\" : \"?\";\n n = \"\".concat(n).concat(o, \"token=\").concat(s, \"&ws=1\");\n var r = new WebSocket(n);\n return r.onclose = function () {\n return setTimeout(function () {\n return t.connect();\n }, 2e3);\n }, r.onmessage = function (e) {\n var s = JSON.parse(e.data);\n\n switch (s.action) {\n case \"result\":\n t.result(s.body, []);\n break;\n\n case \"event\":\n t.fire(s.body.name, s.body.value);\n break;\n\n case \"start\":\n i();\n break;\n\n default:\n t.onError(s.data);\n }\n }, r;\n }(this, this._url, this._token, function () {\n return _this2._mode = 3, _this2._send(), _this2._resubscribe(), _this2;\n });\n }\n }, {\n key: \"_wrapper\",\n value: function _wrapper(_t9) {\n return function () {\n var _this3 = this;\n\n var e = [].slice.call(arguments);\n var s = null;\n var i = new Promise(function (i, n) {\n s = {\n data: {\n id: _this3._uid(),\n name: _t9,\n args: e\n },\n status: 1,\n resolve: i,\n reject: n\n }, _this3._queue.push(s);\n });\n return this.onCall(s, i), 3 === this._mode ? this._send(s) : setTimeout(function () {\n return _this3._send();\n }, 1), i;\n }.bind(this);\n }\n }, {\n key: \"_uid\",\n value: function _uid() {\n return (this._seed++).toString();\n }\n }, {\n key: \"_send\",\n value: function _send(_t10) {\n var _this4 = this;\n\n if (2 == this._mode) return void setTimeout(function () {\n return _this4._send();\n }, 100);\n var e = _t10 ? [_t10] : this._queue.filter(function (_t11) {\n return 1 === _t11.status;\n });\n if (!e.length) return;\n var s = e.map(function (_t12) {\n return _t12.status = 2, _t12.data;\n });\n 3 !== this._mode ? this.fetch(this._url, JSON.stringify(s))[\"catch\"](function (_t13) {\n return _this4.onError(_t13);\n }).then(function (_t14) {\n return _this4.result(_t14, s);\n }) : this._socket.send(JSON.stringify({\n action: \"call\",\n body: s\n }));\n }\n }, {\n key: \"result\",\n value: function result(_t15, e) {\n var s = {};\n if (_t15) for (var _e3 = 0; _e3 < _t15.length; _e3++) {\n s[_t15[_e3].id] = _t15[_e3];\n } else for (var _t30 = 0; _t30 < e.length; _t30++) {\n s[e[_t30].id] = {\n id: e[_t30].id,\n error: \"Network Error\",\n data: null\n };\n }\n\n for (var _t31 = this._queue.length - 1; _t31 >= 0; _t31--) {\n var _e4 = this._queue[_t31],\n i = s[_e4.data.id];\n i && (this.onResponse(_e4, i), i.error ? _e4.reject(i.error) : _e4.resolve(i.data), this._queue.splice(_t31, 1));\n }\n }\n }, {\n key: \"on\",\n value: function on(_t18, e) {\n var s = this._uid();\n\n var i = this._events[_t18];\n var n = !!i;\n return n || (i = this._events[_t18] = []), i.push({\n id: s,\n handler: e\n }), n || 3 != this._mode || this._socket.send(JSON.stringify({\n action: \"subscribe\",\n name: _t18\n })), {\n name: _t18,\n id: s\n };\n }\n }, {\n key: \"_resubscribe\",\n value: function _resubscribe() {\n if (3 == this._mode) for (var _t32 in this._events) {\n this._socket.send(JSON.stringify({\n action: \"subscribe\",\n name: _t32\n }));\n }\n }\n }, {\n key: \"detach\",\n value: function detach(_t20) {\n if (!_t20) {\n if (3 == this._mode) for (var _t33 in this._events) {\n this._socket.send(JSON.stringify({\n action: \"unsubscribe\",\n key: _t33\n }));\n }\n return void (this._events = {});\n }\n\n var e = _t20.id,\n s = _t20.name,\n i = this._events[s];\n\n if (i) {\n var _t34 = i.filter(function (_t23) {\n return _t23.id != e;\n });\n\n _t34.length ? this._events[s] = _t34 : (delete this._events[s], 3 == this._mode && this._socket.send(JSON.stringify({\n action: \"unsubscribe\",\n name: s\n })));\n }\n }\n }, {\n key: \"fire\",\n value: function fire(_t24, e) {\n var s = this._events[_t24];\n if (s) for (var _t35 = 0; _t35 < s.length; _t35++) {\n s[_t35].handler(e);\n }\n }\n }, {\n key: \"onError\",\n value: function onError(_t26) {\n return null;\n }\n }, {\n key: \"onCall\",\n value: function onCall(_t27, e) {}\n }, {\n key: \"onResponse\",\n value: function onResponse(_t28, e) {}\n }]);\n\n return t;\n}();\n\nexport { t as Client };","var remote_client = require(\"remote-client\");\n\nmodule.exports = {\n remoteEvents: function remoteEvents(url, token) {\n var _this = this;\n\n var remote = new remote_client.Client({\n url: url,\n token: token\n }); // temporary patch, as we do not want credentials\n\n remote.fetch = function (url, body) {\n var req = {\n headers: this.headers()\n };\n\n if (body) {\n req.method = \"POST\";\n req.body = body;\n }\n\n return fetch(url, req).then(function (res) {\n return res.json();\n });\n };\n\n this._ready = remote.load().then(function (back) {\n return _this._remote = back;\n });\n\n function ready() {\n return this._ready;\n }\n\n function on(name, handler) {\n this.ready().then(function (back) {\n if (typeof name === \"string\") back.on(name, handler);else {\n for (var key in name) {\n back.on(key, name[key]);\n }\n }\n });\n }\n\n this.ready = ready;\n this.on = on;\n }\n};","const dateToStr = (format: string, utc: boolean, gantt) => {\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 = [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 var worktimeCalculation = inc > 1;\n\n if (worktimeCalculation && getHoursCondition) {\n // try to shift the modified Date to 00:00\n modifiedDate.setHours(0);\n }\n\n return modifiedDate;\n },\n add: function add(date, inc, mode) {\n /*jsl:ignore*/\n var ndate = new Date(date.valueOf());\n\n switch (mode) {\n case \"day\":\n ndate = this._add_days(ndate, inc, date);\n break;\n\n case \"week\":\n ndate = this._add_days(ndate, inc * 7, date);\n break;\n\n case \"month\":\n ndate.setMonth(ndate.getMonth() + inc);\n break;\n\n case \"year\":\n ndate.setYear(ndate.getFullYear() + inc);\n break;\n\n case \"hour\":\n /*\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 ? new XMLHttpRequest() : new global.ActiveXObject(\"Microsoft.XMLHTTP\");\n var isQt = navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null;\n\n if (!!async) {\n t.onreadystatechange = function () {\n if (t.readyState == 4 || isQt && t.readyState == 3) {\n // what for long response and status 404?\n if (t.status != 200 || t.responseText === \"\") if (!gantt.callEvent(\"onAjaxError\", [t])) return;\n setTimeout(function () {\n if (typeof onLoad == \"function\") {\n onLoad.apply(global, [{\n xmlDoc: t,\n filePath: url\n }]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n }\n\n resolve(t);\n\n if (typeof onLoad == \"function\") {\n onLoad = null;\n t = null;\n }\n }, 0);\n }\n };\n }\n\n var noCache = !this || !this.cache;\n\n if (method == \"GET\" && noCache) {\n url += (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + \"dhxr\" + new Date().getTime() + \"=1\";\n }\n\n t.open(method, url, async);\n\n if (headers) {\n for (var key in headers) {\n t.setRequestHeader(key, headers[key]);\n }\n } else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n t.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n } else if (method == \"GET\") {\n postData = null;\n }\n\n t.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n t.send(postData);\n if (!async) return {\n xmlDoc: t,\n filePath: url\n }; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n });\n },\n urlSeparator: function urlSeparator(str) {\n if (str.indexOf(\"?\") != -1) return \"&\";else return \"?\";\n }\n };\n};","type DurationUnits = \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\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;\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 IResourceConfig {\n\tdataprocessor_assignments?: boolean;\n\tdataprocessor_resources?: boolean;\n\teditable_resource_diagram?: boolean;\n\tresource_store?: {\n\t\ttype?: \"treeDataStore\"|\"dataStore\"|string;\n\t\tfetchTasks?: boolean;\n\t\tinitItem?: (item: any) => any;\n\t};\n\tlightbox_resources?: (resources: any[]) => any[];\n\n}\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 | object;\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\tresources?: IResourceConfig;\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};","module.exports = {\n KEY_CODES: {\n UP: 38,\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39,\n SPACE: 32,\n ENTER: 13,\n DELETE: 46,\n ESC: 27,\n TAB: 9\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction DHXGantt() {\n this.constants = require(\"../constants\");\n this.version = VERSION;\n this.license = LICENSE;\n this.templates = {};\n this.ext = {};\n this.keys = {\n edit_save: this.constants.KEY_CODES.ENTER,\n edit_cancel: this.constants.KEY_CODES.ESC\n };\n}\n\nmodule.exports = function (supportedExtensions) {\n // use a named constructor to make gantt instance discoverable in heap snapshots\n var gantt = new DHXGantt();\n\n var ExtensionManager = require(\"../ext/extension_manager\")[\"default\"];\n\n var extensionManager = new ExtensionManager(supportedExtensions);\n var activePlugins = {};\n\n gantt.plugins = function (config) {\n for (var i in config) {\n if (config[i] && !activePlugins[i]) {\n var plugin = extensionManager.getExtension(i);\n\n if (plugin) {\n plugin(gantt);\n activePlugins[i] = true;\n }\n }\n }\n\n return activePlugins;\n };\n\n gantt.$services = require(\"../core/common/services\")();\n gantt.config = require(\"../core/common/config\")();\n gantt.ajax = require(\"../core/common/ajax\")(gantt);\n gantt.date = require(\"../core/common/date\")(gantt);\n gantt.RemoteEvents = require(\"../core/remote/remote_events\").remoteEvents;\n\n var dnd = require(\"../core/common/dnd\")(gantt);\n\n gantt.$services.setService(\"dnd\", function () {\n return dnd;\n });\n\n var templatesLoader = require(\"../core/common/templates\")(gantt);\n\n gantt.$services.setService(\"templateLoader\", function () {\n return templatesLoader;\n });\n\n require(\"../utils/eventable\")(gantt);\n\n var StateService = require(\"../core/common/state\");\n\n var stateService = new StateService();\n stateService.registerProvider(\"global\", function () {\n var res = {\n min_date: gantt._min_date,\n max_date: gantt._max_date,\n selected_task: null\n }; // do not throw error if getState called from non-initialized gantt\n\n if (gantt.$data && gantt.$data.tasksStore) {\n res.selected_task = gantt.$data.tasksStore.getSelectedId();\n }\n\n return res;\n });\n gantt.getState = stateService.getState;\n gantt.$services.setService(\"state\", function () {\n return stateService;\n });\n\n var utils = require(\"../utils/utils\");\n\n utils.mixin(gantt, utils);\n gantt.Promise = require(\"../utils/promise\");\n gantt.env = require(\"../utils/env\");\n\n require(\"../core/datastore/datastore_hooks\")(gantt);\n\n var DataProcessor = require(\"../core/dataprocessor\");\n\n gantt.dataProcessor = DataProcessor.DEPRECATED_api;\n gantt.createDataProcessor = DataProcessor.createDataProcessor;\n\n require(\"../core/plugins\")(gantt);\n\n require(\"../core/dynamic_loading\")(gantt);\n\n require(\"../core/grid_column_api\")(gantt);\n\n require(\"../core/tasks\")(gantt);\n\n require(\"../core/load\")(gantt);\n\n require(\"../core/worktime/work_time\")(gantt);\n\n require(\"../core/data\")(gantt);\n\n require(\"../publish_helpers/void_script_second\")[\"default\"](gantt);\n\n require(\"../core/data_task_types\")(gantt);\n\n require(\"../core/cached_functions\")(gantt);\n\n require(\"../core/gantt_core\")(gantt);\n\n require(\"../core/destructor\")(gantt);\n\n require(\"../publish_helpers/void_script_third\")[\"default\"](gantt);\n\n var i18n = require(\"../locale\")[\"default\"]();\n\n gantt.i18n = {\n addLocale: i18n.addLocale,\n setLocale: function setLocale(locale) {\n if (typeof locale === \"string\") {\n var localeObject = i18n.getLocale(locale);\n\n if (!localeObject) {\n localeObject = i18n.getLocale(\"en\");\n }\n\n gantt.locale = localeObject;\n } else if (locale) {\n if (!gantt.locale) {\n gantt.locale = locale;\n } else {\n for (var i in locale) {\n if (locale[i] && _typeof(locale[i]) === \"object\") {\n if (!gantt.locale[i]) {\n gantt.locale[i] = {};\n }\n\n gantt.mixin(gantt.locale[i], locale[i], true);\n } else {\n gantt.locale[i] = locale[i];\n }\n }\n }\n }\n },\n getLocale: i18n.getLocale\n };\n gantt.i18n.setLocale(\"en\");\n return gantt;\n};","require(\"css/skins/terrace.less\");\n\nvar factory = require(\"./make_instance_common\");\n\nmodule.exports = function (supportedExtensions) {\n var gantt = factory(supportedExtensions);\n\n if (!gantt.env.isNode) {\n require(\"../core/ui_core\")(gantt);\n }\n\n return gantt;\n};","\nimport ExtensionsManager from \"../ext/extension_manager\";\nimport * as scope from \"../utils/global\";\n\nclass GanttFactory implements IGanttFactory{\n\tprotected _seed: number;\n\tprotected _ganttPlugin: GanttPlugin[];\n\tprotected _factoryMethod: (bundledExtensions: {[key:string]: GanttPlugin}) => any;\n\tprotected _bundledExtensions: {[key:string]: GanttPlugin};\n\tprotected _extensionsManager: ExtensionsManager;\n\n\tconstructor(factoryMethod: ()=>any, _bundledExtensions:{[key:string]: GanttPlugin}) {\n\t\tthis._seed = 0;\n\t\tthis._ganttPlugin = [];\n\t\tthis._factoryMethod = factoryMethod;\n\t\tthis._bundledExtensions = _bundledExtensions;\n\t\tthis._extensionsManager = new ExtensionsManager(_bundledExtensions);\n\t}\n\n\tplugin = (code: GanttPlugin):void => {\n\t\tthis._ganttPlugin.push(code);\n\n\t\tif(scope.gantt !== undefined && scope.gantt.getTask){\n\t\t\tcode(scope.gantt);\n\t\t}\n\t}\n\n\tgetGanttInstance = (initConfig?: IGanttInitializationConfig):any => {\n\t\tconst gantt = this._factoryMethod(this._bundledExtensions);\n\t\tfor (let i=0; i {\n\t\tif(initConfig.plugins){\n\t\t\tfor(const i in initConfig.plugins){\n\t\t\t\tconst ext = this._extensionsManager.getExtension(i);\n\t\t\t\tif(ext){\n\t\t\t\t\tgantt.plugins({[i]: true});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(initConfig.config){\n\t\t\tgantt.mixin(gantt.config, initConfig.config, true);\n\t\t}\n\n\t\tif(initConfig.templates){\n\t\t\tgantt.attachEvent(\"onTemplatesReady\", function(){\n\t\t\t\tgantt.mixin(gantt.templates, initConfig.templates, true);\n\t\t\t}, {once: true});\n\t\t}\n\n\t\tif(initConfig.events){\n\t\t\tfor(const event in initConfig.events){\n\t\t\t\tgantt.attachEvent(event, initConfig.events[event]);\n\t\t\t}\n\t\t}\n\n\t\tif(initConfig.locale){\n\t\t\tgantt.i18n.setLocale(initConfig.locale);\n\t\t}\n\n\t\tif(Array.isArray(initConfig.calendars)){\n\t\t\tinitConfig.calendars.forEach(function(calendar){\n\t\t\t\tgantt.addCalendar(calendar);\n\t\t\t});\n\t\t}\n\n\t\tif(initConfig.container){\n\t\t\tgantt.init(initConfig.container);\n\t\t} else {\n\t\t\tgantt.init();\n\t\t}\n\n\t\tif(initConfig.data){\n\t\t\tif(typeof initConfig.data === \"string\"){\n\t\t\t\tgantt.load(initConfig.data);\n\t\t\t}else{\n\t\t\t\tgantt.parse(initConfig.data);\n\t\t\t}\n\t\t}\n\n\n\t}\n}\n\nexport default GanttFactory;","import { IUndo, IUndoCommand, IUndoCommands, IUndoPropAction, IUndoPropCommand, TActionType, TEntityType, TUndoStack, TUndoValue } from \"./types\";\n\nconst MAX_UNDO_STEPS = 100;\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\tsetUndoStack(stack: []) {\n\t\tthis._undoStack = stack;\n\t}\n\n\tgetRedoStack() {\n\t\treturn this._redoStack;\n\t}\n\tsetRedoStack(stack: []) {\n\t\tthis._redoStack = stack;\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\tsetUndoStack: (stack:[]) => _undo.setUndoStack(stack),\n\tgetRedoStack: () => _undo.getRedoStack(),\n\tsetRedoStack: (stack:[]) => _undo.setRedoStack(stack),\n\tclearUndoStack: () => _undo.clearUndoStack(),\n\tclearRedoStack: () => _undo.clearRedoStack(),\n\tsaveState: (id: TaskID | LinkID, type: TEntityType) => monitor.store(id, type, true),\n\tgetInitialState: (id: TaskID | LinkID, type: TEntityType) => {\n\t\tif(type === gantt.config.undo_types.link){\n\t\t\treturn monitor.getInitialLink(id);\n\t\t}else{\n\t\t\treturn monitor.getInitialTask(id);\n\t\t}\n\t}\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 += \"
\"+gantt.locale.labels[buttons[i]]+\"
\";\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 = \"
\" +\n\t\t\t\"
\" +\n\t\t\t\"
\" +\n\t\t\t\"
\";\n\n\t\t// buttons\n\t\thtml += \"
\";\n\t\thtml += \"
\";\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 gantt.getGlobalTaskIndex(b) ? 1 : -1;\n });\n return res;\n },\n forSelected: function forSelected(callback) {\n var selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n callback(selected[i]);\n }\n },\n isSameLevel: function isSameLevel(id) {\n if (!this._one_level) return true;\n var last = this.getLastSelected();\n if (!last) return true;\n if (!(gantt.isTaskExists(last) && gantt.isTaskExists(id))) return true;\n return !!(gantt.calculateTaskLevel(gantt.getTask(last)) == gantt.calculateTaskLevel(gantt.getTask(id)));\n },\n afterSelect: function afterSelect(id) {\n if (gantt.isTaskExists(id)) {\n // FIXME: quick workaround to prevent re-filtering inside refresh on multiselect\n gantt._quickRefresh(function () {\n gantt.refreshTask(id);\n });\n }\n },\n doSelection: function doSelection(e) {\n if (!this.isActive()) return false; // deny selection when click on 'expand' or 'collapse' icons\n\n if (gantt._is_icon_open_click(e)) return false;\n var target_ev = gantt.locate(e);\n if (!target_ev) return false;\n if (!gantt.callEvent(\"onBeforeMultiSelect\", [e])) return false;\n var selected = this.getSelected();\n var defaultLast = this.getFirstSelected();\n var isLast = false;\n var last = this.getLastSelected();\n var multiSelect = gantt.config.multiselect;\n\n var singleSelection = function () {\n // GS-719: If the multiselect extension is added we still need a way\n // to open the inline editors after clicking on the cells in the grid\n var controller = gantt.ext.inlineEditors;\n var state = controller.getState();\n var cell = controller.locateCell(e.target);\n\n if (gantt.config.inline_editors_multiselect_open && cell && controller.getEditorConfig(cell.columnName)) {\n if (controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName) {// do nothing if editor is already active in this cell\n } else {\n controller.startEdit(cell.id, cell.columnName);\n }\n }\n\n this.setFirstSelected(target_ev);\n\n if (!this.isSelected(target_ev)) {\n this.select(target_ev, e);\n }\n\n selected = this.getSelected();\n\n for (var i = 0; i < selected.length; i++) {\n if (selected[i] !== target_ev) {\n this.unselect(selected[i], e);\n }\n }\n }.bind(this);\n\n var blockSelection = function () {\n if (!last) last = target_ev;else if (target_ev) {\n var first_indx = gantt.getGlobalTaskIndex(this.getFirstSelected());\n var target_indx = gantt.getGlobalTaskIndex(target_ev);\n var last_indx = gantt.getGlobalTaskIndex(last); // clear prev selection\n\n var tmp = last;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n this.unselect(tmp, e);\n tmp = first_indx > last_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n\n tmp = target_ev;\n\n while (gantt.getGlobalTaskIndex(tmp) !== first_indx) {\n if (this.select(tmp, e) && !isLast) {\n isLast = true;\n defaultLast = tmp;\n }\n\n tmp = first_indx > target_indx ? gantt.getNext(tmp) : gantt.getPrev(tmp);\n }\n }\n }.bind(this);\n\n if (multiSelect && (e.ctrlKey || e.metaKey)) {\n if (!this.isSelected(target_ev)) this.setFirstSelected(target_ev);\n\n if (target_ev) {\n this.toggle(target_ev, e);\n }\n } else if (multiSelect && e.shiftKey) {\n if (!gantt.isTaskExists(this.getFirstSelected()) || this.getFirstSelected() === null) {\n this.setFirstSelected(target_ev);\n }\n\n if (selected.length) {\n // select a group of tasks\n blockSelection();\n } else {\n // select a task when no task is selected and Shift is pressed\n singleSelection();\n }\n } else {\n // no key press or no multiple selection on the mouse click\n singleSelection();\n }\n\n if (this.isSelected(target_ev)) {\n this.setLastSelected(target_ev);\n } else if (defaultLast) {\n if (target_ev == last) this.setLastSelected(e.shiftKey ? defaultLast : this.getDefaultSelected());\n } else {\n this.setLastSelected(null);\n }\n\n if (!this.getSelected().length) this.setLastSelected(null);\n if (!this.getLastSelected() || !this.isSelected(this.getFirstSelected())) this.setFirstSelected(this.getLastSelected());\n return true;\n }\n };\n\n (function () {\n var old_selectTask = gantt.selectTask;\n\n gantt.selectTask = function (id) {\n id = replaceValidZeroId(id, this.config.root_id);\n if (!id) return false;\n var multiselect = gantt._multiselect;\n var res = id;\n\n if (multiselect.isActive()) {\n if (multiselect.select(id, null)) {\n multiselect.setLastSelected(id);\n }\n\n multiselect.setFirstSelected(multiselect.getLastSelected());\n } else {\n res = old_selectTask.call(this, id);\n }\n\n return res;\n };\n\n var old_unselectTask = gantt.unselectTask;\n\n gantt.unselectTask = function (id) {\n var multiselect = gantt._multiselect;\n var isActive = multiselect.isActive();\n id = id || multiselect.getLastSelected();\n\n if (id && isActive) {\n multiselect.unselect(id, null);\n if (id == multiselect.getLastSelected()) multiselect.setLastSelected(null);\n gantt.refreshTask(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n\n var res = id;\n if (!isActive) res = old_unselectTask.call(this, id);\n return res;\n };\n\n gantt.toggleTaskSelection = function (id) {\n var multiselect = gantt._multiselect;\n\n if (id && multiselect.isActive()) {\n multiselect.toggle(id);\n multiselect.setFirstSelected(multiselect.getLastSelected());\n }\n };\n\n gantt.getSelectedTasks = function () {\n var multiselect = gantt._multiselect;\n multiselect.isActive();\n return multiselect.getSelected();\n };\n\n gantt.eachSelectedTask = function (callback) {\n return this._multiselect.forSelected(callback);\n };\n\n gantt.isSelectedTask = function (id) {\n return this._multiselect.isSelected(id);\n };\n\n gantt.getLastSelectedTask = function () {\n return this._multiselect.getLastSelected();\n };\n\n gantt.attachEvent(\"onGanttReady\", function () {\n var old_isSelected = gantt.$data.tasksStore.isSelected;\n\n gantt.$data.tasksStore.isSelected = function (id) {\n if (gantt._multiselect.isActive()) {\n return gantt._multiselect.isSelected(id);\n }\n\n return old_isSelected.call(this, id);\n };\n });\n })();\n\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (gantt.isSelectedTask(id)) {\n multiselect.unselect(id, null);\n multiselect.select(new_id, null);\n }\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n var multiselect = gantt._multiselect;\n if (!multiselect.isActive()) return true;\n\n if (multiselect._selected[id]) {\n multiselect.unselect(id, null);\n multiselect._selected[id] = false;\n multiselect.setLastSelected(multiselect.getDefaultSelected());\n }\n\n multiselect.forSelected(function (task_id) {\n if (!gantt.isTaskExists(task_id)) multiselect.unselect(task_id, null);\n });\n });\n gantt.attachEvent(\"onBeforeTaskMultiSelect\", function (id, state, e) {\n var multiselect = gantt._multiselect;\n\n if (state && multiselect.isActive()) {\n if (multiselect._one_level) {\n return multiselect.isSameLevel(id);\n }\n }\n\n return true;\n });\n gantt.attachEvent(\"onTaskClick\", function (id, e) {\n if (gantt._multiselect.doSelection(e)) gantt.callEvent(\"onMultiSelect\", [e]);\n return true;\n });\n};","module.exports = function (gantt) {\n if (!gantt._markers) {\n gantt._markers = gantt.createDatastore({\n name: \"marker\",\n initItem: function initItem(marker) {\n marker.id = marker.id || gantt.uid();\n return marker;\n }\n });\n }\n\n gantt.config.show_markers = true;\n\n function render_marker(marker) {\n if (!gantt.config.show_markers) return false;\n if (!marker.start_date) return false;\n var state = gantt.getState();\n if (+marker.start_date > +state.max_date) return;\n if ((!marker.end_date || +marker.end_date < +state.min_date) && +marker.start_date < +state.min_date) return;\n var div = document.createElement(\"div\");\n div.setAttribute(\"data-marker-id\", marker.id);\n var css = \"gantt_marker\";\n if (gantt.templates.marker_class) css += \" \" + gantt.templates.marker_class(marker);\n\n if (marker.css) {\n css += \" \" + marker.css;\n }\n\n if (marker.title) {\n div.title = marker.title;\n }\n\n div.className = css;\n var start = gantt.posFromDate(marker.start_date);\n div.style.left = start + \"px\";\n var markerHeight = Math.max(gantt.getRowTop(gantt.getVisibleTaskCount()), 0) + \"px\";\n\n if (gantt.config.timeline_placeholder) {\n markerHeight = gantt.$container.scrollHeight + \"px\";\n }\n\n div.style.height = markerHeight;\n\n if (marker.end_date) {\n var end = gantt.posFromDate(marker.end_date);\n div.style.width = Math.max(end - start, 0) + \"px\";\n }\n\n if (marker.text) {\n div.innerHTML = \"
\" + marker.text + \"
\";\n }\n\n return div;\n }\n\n function initMarkerArea() {\n if (!gantt.$task_data) return;\n var markerArea = document.createElement(\"div\");\n markerArea.className = \"gantt_marker_area\";\n gantt.$task_data.appendChild(markerArea);\n gantt.$marker_area = markerArea;\n }\n\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n if (!gantt.$marker_area) initMarkerArea();\n });\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.$marker_area) {\n initMarkerArea();\n gantt.renderMarkers();\n }\n });\n gantt.attachEvent(\"onGanttLayoutReady\", function () {\n // GS-1304 - markers should attach when layout is initialized, both on gantt.init and gantt.resetLayout\n // wait for \"onBeforeGanttRender\", so all layout elements will be in DOM\n gantt.attachEvent(\"onBeforeGanttRender\", function () {\n initMarkerArea();\n var layers = gantt.$services.getService(\"layers\");\n var markerRenderer = layers.createDataRender({\n name: \"marker\",\n defaultContainer: function defaultContainer() {\n return gantt.$marker_area;\n }\n });\n markerRenderer.addLayer(render_marker);\n }, {\n once: true\n });\n });\n\n gantt.getMarker = function (id) {\n if (!this._markers) return null;\n return this._markers.getItem(id);\n };\n\n gantt.addMarker = function (marker) {\n return this._markers.addItem(marker);\n };\n\n gantt.deleteMarker = function (id) {\n if (!this._markers.exists(id)) return false;\n\n this._markers.removeItem(id);\n\n return true;\n };\n\n gantt.updateMarker = function (id) {\n this._markers.refresh(id);\n };\n\n gantt._getMarkers = function () {\n return this._markers.getItems();\n };\n\n gantt.renderMarkers = function () {\n this._markers.refresh();\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.dispatcher = {\n isActive: false,\n activeNode: null,\n globalNode: new gantt.$keyboardNavigation.GanttNode(),\n enable: function enable() {\n this.isActive = true;\n this.setActiveNode(this.getActiveNode());\n },\n disable: function disable() {\n this.isActive = false;\n },\n isEnabled: function isEnabled() {\n return !!this.isActive;\n },\n getDefaultNode: function getDefaultNode() {\n var node;\n\n if (gantt.config.keyboard_navigation_cells) {\n node = new gantt.$keyboardNavigation.TaskCell();\n } else {\n node = new gantt.$keyboardNavigation.TaskRow();\n }\n\n if (!node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n setDefaultNode: function setDefaultNode() {\n this.setActiveNode(this.getDefaultNode());\n },\n getActiveNode: function getActiveNode() {\n var node = this.activeNode;\n\n if (node && !node.isValid()) {\n node = node.fallback();\n }\n\n return node;\n },\n fromDomElement: function fromDomElement(e) {\n var inputs = [gantt.$keyboardNavigation.TaskRow, gantt.$keyboardNavigation.TaskCell, gantt.$keyboardNavigation.HeaderCell];\n\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].prototype.fromDomElement) {\n var node = inputs[i].prototype.fromDomElement(e);\n if (node) return node;\n }\n }\n\n return null;\n },\n focusGlobalNode: function focusGlobalNode() {\n this.blurNode(this.globalNode);\n this.focusNode(this.globalNode);\n },\n setActiveNode: function setActiveNode(el) {\n //console.trace()\n var focusChanged = true;\n\n if (this.activeNode) {\n if (this.activeNode.compareTo(el)) {\n focusChanged = false;\n }\n }\n\n if (this.isEnabled()) {\n if (focusChanged) this.blurNode(this.activeNode);\n this.activeNode = el;\n this.focusNode(this.activeNode, !focusChanged);\n }\n },\n focusNode: function focusNode(el, keptFocus) {\n if (el && el.focus) {\n el.focus(keptFocus);\n }\n },\n blurNode: function blurNode(el) {\n if (el && el.blur) {\n el.blur();\n }\n },\n keyDownHandler: function keyDownHandler(e) {\n if (gantt.$keyboardNavigation.isModal()) return;\n if (!this.isEnabled()) return;\n\n if (e.defaultPrevented) {\n return;\n }\n\n var ganttNode = this.globalNode;\n var command = gantt.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\n var activeElement = this.getActiveNode();\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onKeyDown\", [command, e]) === false) {\n return;\n }\n\n if (!activeElement) {\n this.setDefaultNode();\n } else if (activeElement.findHandler(command)) {\n activeElement.doAction(command, e);\n } else if (ganttNode.findHandler(command)) {\n ganttNode.doAction(command, e);\n }\n },\n _timeout: null,\n awaitsFocus: function awaitsFocus() {\n return this._timeout !== null;\n },\n delay: function delay(callback, _delay) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(gantt.bind(function () {\n this._timeout = null;\n callback();\n }, this), _delay || 1);\n },\n clearDelay: function clearDelay() {\n clearTimeout(this._timeout);\n }\n };\n};","module.exports = function (gantt) {\n (function () {\n var modalsStack = [];\n\n function isModal() {\n return !!modalsStack.length;\n }\n\n function afterPopup(box) {\n setTimeout(function () {\n if (!isModal()) {\n if (!gantt.$destroyed) {\n gantt.focus();\n }\n }\n }, 1);\n }\n\n function startModal(box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n gantt.event(box, \"keydown\", trapFocus);\n modalsStack.push(box); //gantt.$keyboardNavigation.dispatcher.disable();\n }\n\n function endModal() {\n var box = modalsStack.pop();\n\n if (box) {\n gantt.eventRemove(box, \"keydown\", trapFocus);\n }\n\n afterPopup(box);\n }\n\n function isTopModal(box) {\n return box == modalsStack[modalsStack.length - 1];\n }\n\n function trapFocus(event) {\n var target = event.currentTarget;\n if (!isTopModal(target)) return;\n gantt.$keyboardNavigation.trapFocus(target, event);\n }\n\n function traceLightbox() {\n startModal(gantt.getLightbox());\n }\n\n gantt.attachEvent(\"onLightbox\", traceLightbox);\n gantt.attachEvent(\"onAfterLightbox\", endModal);\n gantt.attachEvent(\"onLightboxChange\", function () {\n endModal();\n traceLightbox();\n });\n gantt.attachEvent(\"onAfterQuickInfo\", function () {\n afterPopup();\n });\n gantt.attachEvent(\"onMessagePopup\", function (box) {\n saveFocus();\n startModal(box);\n });\n gantt.attachEvent(\"onAfterMessagePopup\", function () {\n endModal();\n restoreFocus();\n });\n var focusElement = null;\n\n function saveFocus() {\n focusElement = gantt.utils.dom.getActiveElement();\n }\n\n function restoreFocus() {\n setTimeout(function () {\n if (focusElement) {\n focusElement.focus();\n focusElement = null;\n }\n }, 1);\n }\n\n gantt.$keyboardNavigation.isModal = isModal;\n })();\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n var _require = require(\"../../../utils/helpers\"),\n replaceValidZeroId = _require.replaceValidZeroId;\n\n gantt.$keyboardNavigation.TaskCell = function (taskId, index) {\n taskId = replaceValidZeroId(taskId, gantt.config.root_id);\n\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n this.columnIndex = index || 0; // provided task may not exist, in this case node will be detectes as invalid\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n this.globalIndex = gantt.getGlobalTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskCell.prototype = gantt._compose(gantt.$keyboardNavigation.TaskRow, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.$keyboardNavigation.TaskRow.prototype.isValid.call(this) && !!gantt.getGridColumns()[this.columnIndex];\n },\n fallback: function fallback() {\n var node = gantt.$keyboardNavigation.TaskRow.prototype.fallback.call(this);\n var result = node;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow) {\n var visibleColumns = gantt.getGridColumns();\n var index = this.columnIndex;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n result = new gantt.$keyboardNavigation.TaskCell(node.taskId, index);\n }\n }\n\n return result;\n },\n fromDomElement: function fromDomElement(el) {\n if (!gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n var index = 0;\n var cellElement = domHelpers.locateAttribute(el, \"data-column-index\");\n\n if (cellElement) {\n index = cellElement.getAttribute(\"data-column-index\") * 1;\n }\n\n return new gantt.$keyboardNavigation.TaskCell(taskId, index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n var row = gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n if (!row) return null;\n return row.querySelector(\"[data-column-index='\" + this.columnIndex + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n keys: {\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell(this.columnIndex);\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskCell(prevTask, this.columnIndex);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(nextTask, this.columnIndex));\n }\n },\n \"left\": function left() {\n if (this.columnIndex > 0) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.columnIndex < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, this.columnIndex + 1));\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(this.taskId, 0));\n },\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id, this.columnIndex));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(gantt.getTaskByIndex(0).id, this.columnIndex));\n }\n }\n }\n });\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n gantt.$keyboardNavigation.TaskCell.prototype.bindAll(gantt.$keyboardNavigation.TaskCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.TaskRow = function (taskId) {\n if (!taskId) {\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (rootLevel[0]) {\n taskId = rootLevel[0];\n }\n }\n\n this.taskId = taskId;\n\n if (gantt.isTaskExists(this.taskId)) {\n this.index = gantt.getTaskIndex(this.taskId);\n this.globalIndex = gantt.getGlobalTaskIndex(this.taskId);\n }\n };\n\n gantt.$keyboardNavigation.TaskRow.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n return gantt.isTaskExists(this.taskId) && gantt.getTaskIndex(this.taskId) > -1;\n },\n fallback: function fallback() {\n if (!gantt.getVisibleTaskCount()) {\n var header = new gantt.$keyboardNavigation.HeaderCell();\n if (!header.isValid()) return null;else return header;\n } else {\n var nextIndex = -1; // GS-1393. When Gantt tries to restore the focus, it should rely on the global index\n\n if (gantt.getTaskByIndex(this.globalIndex - 1)) {\n nextIndex = this.globalIndex - 1;\n } else if (gantt.getTaskByIndex(this.globalIndex + 1)) {\n nextIndex = this.globalIndex + 1;\n } else {\n var globalIndex = this.globalIndex;\n\n while (globalIndex >= 0) {\n if (gantt.getTaskByIndex(globalIndex)) {\n nextIndex = globalIndex;\n break;\n }\n\n globalIndex--;\n }\n }\n\n if (nextIndex > -1) {\n return new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(nextIndex).id);\n }\n }\n },\n fromDomElement: function fromDomElement(el) {\n if (gantt.config.keyboard_navigation_cells) {\n return null;\n }\n\n var taskId = gantt.locate(el);\n\n if (gantt.isTaskExists(taskId)) {\n return new gantt.$keyboardNavigation.TaskRow(taskId);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n if (gantt.isTaskExists(this.taskId) && gantt.isTaskVisible(this.taskId)) {\n if (gantt.config.show_grid) {\n return gantt.$grid.querySelector(\".gantt_row[\" + gantt.config.task_attribute + \"='\" + this.taskId + \"']\");\n } else {\n return gantt.getTaskNode(this.taskId);\n }\n }\n },\n focus: function focus(keptFocus) {\n if (!keptFocus) {\n var pos = gantt.getTaskPosition(gantt.getTask(this.taskId));\n var height = gantt.getTaskHeight(this.taskId);\n var scroll = gantt.getScrollState();\n var viewWidth;\n\n if (gantt.$task) {\n viewWidth = gantt.$task.offsetWidth;\n } else {\n viewWidth = scroll.inner_width;\n }\n\n var viewHeight;\n\n if (gantt.$grid_data || gantt.$task_data) {\n viewHeight = (gantt.$grid_data || gantt.$task_data).offsetHeight;\n } else {\n viewHeight = scroll.inner_height;\n }\n\n if (pos.top < scroll.y || pos.top + height > scroll.y + viewHeight) {\n gantt.scrollTo(null, pos.top - height * 5);\n } else if (gantt.config.scroll_on_click && gantt.config.show_chart) {\n // horizontal scroll activated\n if (pos.left > scroll.x + viewWidth) {\n // scroll forward to the start of the task\n gantt.scrollTo(pos.left - gantt.config.task_scroll_offset);\n } else if (pos.left + pos.width < scroll.x) {\n // scroll back to the end of the task\n gantt.scrollTo(pos.left + pos.width - gantt.config.task_scroll_offset);\n }\n }\n }\n\n gantt.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this, [keptFocus]); // GS-152 if there are scrollbars with custom names, change their scroll position\n\n scrollGrid();\n\n function scrollGrid() {\n var grid = gantt.$ui.getView(\"grid\");\n var scrollPositionX = parseInt(grid.$grid.scrollLeft);\n var scrollPositionY = parseInt(grid.$grid_data.scrollTop);\n var attachedScrollbarHorizontal = grid.$config.scrollX;\n\n if (attachedScrollbarHorizontal && grid.$config.scrollable) {\n var scrollbarHorizontal = gantt.$ui.getView(attachedScrollbarHorizontal);\n\n if (scrollbarHorizontal) {\n scrollbarHorizontal.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n\n var attachedScrollbarVertical = grid.$config.scrollY;\n\n if (attachedScrollbarVertical) {\n var scrollbarVertical = gantt.$ui.getView(attachedScrollbarVertical);\n\n if (scrollbarVertical) {\n scrollbarVertical.scrollTo(scrollPositionX, scrollPositionY);\n }\n }\n }\n },\n keys: {\n \"pagedown\": function pagedown() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(gantt.getVisibleTaskCount() - 1).id));\n }\n },\n \"pageup\": function pageup() {\n if (gantt.getVisibleTaskCount()) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(gantt.getTaskByIndex(0).id));\n }\n },\n \"up\": function up() {\n var nextElement = null;\n var prevTask = gantt.getPrev(this.taskId);\n\n if (!gantt.isTaskExists(prevTask)) {\n nextElement = new gantt.$keyboardNavigation.HeaderCell();\n } else {\n nextElement = new gantt.$keyboardNavigation.TaskRow(prevTask);\n }\n\n this.moveTo(nextElement);\n },\n \"down\": function down() {\n var nextTask = gantt.getNext(this.taskId);\n\n if (gantt.isTaskExists(nextTask)) {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(nextTask));\n }\n },\n \"shift+down\": function shiftDown() {\n if (gantt.hasChild(this.taskId) && !gantt.getTask(this.taskId).$open) {\n gantt.open(this.taskId);\n }\n },\n \"shift+up\": function shiftUp() {\n if (gantt.hasChild(this.taskId) && gantt.getTask(this.taskId).$open) {\n gantt.close(this.taskId);\n }\n },\n \"shift+right\": function shiftRight() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var prevId = gantt.getPrevSibling(this.taskId);\n\n if (gantt.isTaskExists(prevId) && !gantt.isChildOf(this.taskId, prevId)) {\n var parent = gantt.getTask(prevId);\n parent.$open = true;\n var result = gantt.moveTask(this.taskId, -1, prevId);\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n \"shift+left\": function shiftLeft() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n var parent = gantt.getParent(this.taskId);\n\n if (gantt.isTaskExists(parent)) {\n var result = gantt.moveTask(this.taskId, gantt.getTaskIndex(parent) + 1, gantt.getParent(parent));\n if (result !== false) gantt.updateTask(this.taskId);\n }\n },\n // select\n \"space\": function space(e) {\n if (!gantt.isSelectedTask(this.taskId)) {\n gantt.selectTask(this.taskId);\n } else {\n gantt.unselectTask(this.taskId);\n }\n },\n // collapse\n \"ctrl+left\": function ctrlLeft(e) {\n gantt.close(this.taskId);\n },\n // expand\n \"ctrl+right\": function ctrlRight(e) {\n gantt.open(this.taskId);\n },\n // delete task\n \"delete\": function _delete(e) {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.$click.buttons[\"delete\"](this.taskId);\n },\n // open lightbox\n \"enter\": function enter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.showLightbox(this.taskId);\n },\n // add subtask\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.TaskRow.prototype.bindAll(gantt.$keyboardNavigation.TaskRow.prototype.keys);\n};","module.exports = function (gantt) {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.HeaderCell = function (index) {\n this.index = index || 0;\n };\n\n gantt.$keyboardNavigation.HeaderCell.prototype = gantt._compose(gantt.$keyboardNavigation.KeyNavNode, {\n _handlers: null,\n isValid: function isValid() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) return false;\n }\n\n return !!gantt.getGridColumns()[this.index] || !gantt.getVisibleTaskCount();\n },\n fallback: function fallback() {\n if (!gantt.config.show_grid) {\n if (gantt.getVisibleTaskCount()) {\n return new gantt.$keyboardNavigation.TaskRow();\n }\n\n return null;\n }\n\n var visibleColumns = gantt.getGridColumns();\n var index = this.index;\n\n while (index >= 0) {\n if (visibleColumns[index]) break;\n index--;\n }\n\n if (visibleColumns[index]) {\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n fromDomElement: function fromDomElement(el) {\n var cellElement = domHelpers.locateClassName(el, \"gantt_grid_head_cell\");\n\n if (cellElement) {\n var index = 0;\n\n while (cellElement && cellElement.previousSibling) {\n cellElement = cellElement.previousSibling;\n index += 1;\n }\n\n return new gantt.$keyboardNavigation.HeaderCell(index);\n } else {\n return null;\n }\n },\n getNode: function getNode() {\n var cells = gantt.$grid_scale.childNodes;\n return cells[this.index];\n },\n keys: {\n \"left\": function left() {\n if (this.index > 0) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index - 1));\n }\n },\n \"right\": function right() {\n var columns = gantt.getGridColumns();\n\n if (this.index < columns.length - 1) {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(this.index + 1));\n }\n },\n \"down\": function down() {\n var taskRow;\n var rootLevel = gantt.getChildren(gantt.config.root_id);\n\n if (gantt.isTaskExists(rootLevel[0])) {\n taskRow = rootLevel[0];\n }\n\n if (taskRow) {\n if (gantt.config.keyboard_navigation_cells) {\n this.moveTo(new gantt.$keyboardNavigation.TaskCell(taskRow, this.index));\n } else {\n this.moveTo(new gantt.$keyboardNavigation.TaskRow(taskRow));\n }\n }\n },\n \"end\": function end() {\n var columns = gantt.getGridColumns();\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(columns.length - 1));\n },\n \"home\": function home() {\n this.moveTo(new gantt.$keyboardNavigation.HeaderCell(0));\n },\n // press header button\n \"enter, space\": function enterSpace() {\n var node = domHelpers.getActiveElement();\n node.click();\n },\n // add new task\n \"ctrl+enter\": function ctrlEnter() {\n if (gantt.isReadonly(this)) {\n return;\n }\n\n gantt.createTask({}, this.taskId);\n }\n }\n });\n gantt.$keyboardNavigation.HeaderCell.prototype.bindAll(gantt.$keyboardNavigation.HeaderCell.prototype.keys);\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.KeyNavNode = function () {};\n\n gantt.$keyboardNavigation.KeyNavNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n isValid: function isValid() {\n return true;\n },\n fallback: function fallback() {\n return null;\n },\n moveTo: function moveTo(element) {\n gantt.$keyboardNavigation.dispatcher.setActiveNode(element);\n },\n compareTo: function compareTo(b) {\n // good enough comparison of two random objects\n if (!b) return false;\n\n for (var i in this) {\n if (!!this[i] != !!b[i]) return false;\n var canStringifyThis = !!(this[i] && this[i].toString);\n var canStringifyThat = !!(b[i] && b[i].toString);\n if (canStringifyThat != canStringifyThis) return false;\n\n if (!(canStringifyThat && canStringifyThis)) {\n if (b[i] != this[i]) return false;\n } else {\n if (b[i].toString() != this[i].toString()) return false;\n }\n }\n\n return true;\n },\n getNode: function getNode() {},\n focus: function focus() {\n var node = this.getNode();\n if (!node) return;\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeFocus\", [node]) === false) {\n return;\n }\n\n if (node) {\n node.setAttribute(\"tabindex\", \"-1\");\n\n if (!node.$eventAttached) {\n node.$eventAttached = true;\n gantt.event(node, \"focus\", function (e) {\n e.preventDefault();\n return false;\n }, false);\n } //node.className += \" gantt_focused\";\n\n\n if (gantt.utils.dom.isChildOf(document.activeElement, node)) {\n node = document.activeElement;\n }\n\n if (node.focus) node.focus();\n eventFacade.callEvent(\"onFocus\", [this.getNode()]);\n }\n },\n blur: function blur() {\n var node = this.getNode();\n\n if (node) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n eventFacade.callEvent(\"onBlur\", [node]);\n node.setAttribute(\"tabindex\", \"-1\"); //node.className = (node.className || \"\").replace(/ ?gantt_focused/g, \"\");\n }\n }\n });\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.GanttNode = function () {};\n\n gantt.$keyboardNavigation.GanttNode.prototype = gantt._compose(gantt.$keyboardNavigation.EventHandler, {\n focus: function focus() {\n gantt.focus();\n },\n blur: function blur() {},\n isEnabled: function isEnabled() {\n return gantt.$container.hasAttribute(\"tabindex\");\n },\n scrollHorizontal: function scrollHorizontal(dir) {\n var date = gantt.dateFromPos(gantt.getScrollState().x);\n var scale = gantt.getScale();\n var step = dir < 0 ? -scale.step : scale.step;\n date = gantt.date.add(date, step, scale.unit);\n gantt.scrollTo(gantt.posFromDate(date));\n },\n scrollVertical: function scrollVertical(dir) {\n var top = gantt.getScrollState().y;\n var step = gantt.config.row_height;\n gantt.scrollTo(null, top + (dir < 0 ? -1 : 1) * step);\n },\n keys: {\n \"alt+left\": function altLeft(e) {\n this.scrollHorizontal(-1);\n },\n \"alt+right\": function altRight(e) {\n this.scrollHorizontal(1);\n },\n \"alt+up\": function altUp(e) {\n this.scrollVertical(-1);\n },\n \"alt+down\": function altDown(e) {\n this.scrollVertical(1);\n },\n // undo\n \"ctrl+z\": function ctrlZ() {\n if (gantt.undo) gantt.undo();\n },\n // redo\n \"ctrl+r\": function ctrlR() {\n if (gantt.redo) gantt.redo();\n }\n }\n });\n gantt.$keyboardNavigation.GanttNode.prototype.bindAll(gantt.$keyboardNavigation.GanttNode.prototype.keys);\n};","module.exports = function (gantt) {\n (function () {\n var domHelpers = require(\"../../../core/ui/utils/dom_helpers\");\n\n gantt.$keyboardNavigation.getFocusableNodes = domHelpers.getFocusableNodes;\n\n gantt.$keyboardNavigation.trapFocus = function trapFocus(root, e) {\n if (e.keyCode != 9) return false;\n var focusable = gantt.$keyboardNavigation.getFocusableNodes(root);\n var currentFocus = domHelpers.getActiveElement();\n var currentIndex = -1;\n\n for (var i = 0; i < focusable.length; i++) {\n if (focusable[i] == currentFocus) {\n currentIndex = i;\n break;\n }\n }\n\n if (e.shiftKey) {\n // back tab\n if (currentIndex <= 0) {\n // go to the last element if we focused on the first\n var lastItem = focusable[focusable.length - 1];\n\n if (lastItem) {\n lastItem.focus();\n e.preventDefault();\n return true;\n }\n }\n } else {\n // forward tab\n if (currentIndex >= focusable.length - 1) {\n // forward tab from last element should go back to the first element\n var firstItem = focusable[0];\n\n if (firstItem) {\n firstItem.focus();\n e.preventDefault();\n return true;\n }\n }\n }\n\n return false;\n };\n })();\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.EventHandler = {\n _handlers: null,\n findHandler: function findHandler(command) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var hash = shortcuts.getHash(command);\n return this._handlers[hash];\n },\n doAction: function doAction(command, e) {\n var handler = this.findHandler(command);\n\n if (handler) {\n var eventFacade = gantt.$keyboardNavigation.facade;\n\n if (eventFacade.callEvent(\"onBeforeAction\", [command, e]) === false) {\n return;\n }\n\n handler.call(this, e);\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n },\n bind: function bind(shortcut, handler) {\n if (!this._handlers) this._handlers = {};\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n this._handlers[shortcuts.getHash(commands[i])] = handler;\n }\n },\n unbind: function unbind(shortcut) {\n var shortcuts = gantt.$keyboardNavigation.shortcuts;\n var commands = shortcuts.parse(shortcut);\n\n for (var i = 0; i < commands.length; i++) {\n if (this._handlers[shortcuts.getHash(commands[i])]) {\n delete this._handlers[shortcuts.getHash(commands[i])];\n }\n }\n },\n bindAll: function bindAll(map) {\n for (var i in map) {\n this.bind(i, map[i]);\n }\n },\n initKeys: function initKeys() {\n if (!this._handlers) this._handlers = {};\n\n if (this.keys) {\n this.bindAll(this.keys);\n }\n }\n };\n};","module.exports = function (gantt) {\n gantt.$keyboardNavigation.shortcuts = {\n createCommand: function createCommand() {\n return {\n modifiers: {\n \"shift\": false,\n \"alt\": false,\n \"ctrl\": false,\n \"meta\": false\n },\n keyCode: null\n };\n },\n parse: function parse(shortcut) {\n var commands = [];\n var expr = this.getExpressions(this.trim(shortcut));\n\n for (var i = 0; i < expr.length; i++) {\n var words = this.getWords(expr[i]);\n var command = this.createCommand();\n\n for (var j = 0; j < words.length; j++) {\n if (this.commandKeys[words[j]]) {\n command.modifiers[words[j]] = true;\n } else if (this.specialKeys[words[j]]) {\n command.keyCode = this.specialKeys[words[j]];\n } else {\n command.keyCode = words[j].charCodeAt(0);\n }\n }\n\n commands.push(command);\n }\n\n return commands;\n },\n getCommandFromEvent: function getCommandFromEvent(domEvent) {\n var command = this.createCommand();\n command.modifiers.shift = !!domEvent.shiftKey;\n command.modifiers.alt = !!domEvent.altKey;\n command.modifiers.ctrl = !!domEvent.ctrlKey;\n command.modifiers.meta = !!domEvent.metaKey;\n command.keyCode = domEvent.which || domEvent.keyCode;\n\n if (command.keyCode >= 96 && command.keyCode <= 105) {\n // numpad keys 96-105 -> 48-57\n command.keyCode -= 48; //convert numpad number code to regular number code\n }\n\n var printableKey = String.fromCharCode(command.keyCode);\n\n if (printableKey) {\n command.keyCode = printableKey.toLowerCase().charCodeAt(0);\n }\n\n return command;\n },\n getHashFromEvent: function getHashFromEvent(domEvent) {\n return this.getHash(this.getCommandFromEvent(domEvent));\n },\n getHash: function getHash(command) {\n var parts = [];\n\n for (var i in command.modifiers) {\n if (command.modifiers[i]) {\n parts.push(i);\n }\n }\n\n parts.push(command.keyCode);\n return parts.join(this.junctionChar);\n },\n getExpressions: function getExpressions(shortcut) {\n return shortcut.split(this.junctionChar);\n },\n getWords: function getWords(term) {\n return term.split(this.combinationChar);\n },\n trim: function trim(shortcut) {\n return shortcut.replace(/\\s/g, \"\");\n },\n junctionChar: \",\",\n combinationChar: \"+\",\n commandKeys: {\n \"shift\": 16,\n \"alt\": 18,\n \"ctrl\": 17,\n \"meta\": true\n },\n specialKeys: {\n \"backspace\": 8,\n \"tab\": 9,\n \"enter\": 13,\n \"esc\": 27,\n \"space\": 32,\n \"up\": 38,\n \"down\": 40,\n \"left\": 37,\n \"right\": 39,\n \"home\": 36,\n \"end\": 35,\n \"pageup\": 33,\n \"pagedown\": 34,\n \"delete\": 46,\n \"insert\": 45,\n \"plus\": 107,\n \"f1\": 112,\n \"f2\": 113,\n \"f3\": 114,\n \"f4\": 115,\n \"f5\": 116,\n \"f6\": 117,\n \"f7\": 118,\n \"f8\": 119,\n \"f9\": 120,\n \"f10\": 121,\n \"f11\": 122,\n \"f12\": 123\n }\n };\n};","module.exports = function (gantt) {\n var eventable = require(\"../utils/eventable\");\n\n function setupKeyNav(gantt) {\n gantt.config.keyboard_navigation = true;\n gantt.config.keyboard_navigation_cells = false;\n gantt.$keyboardNavigation = {};\n\n gantt._compose = function () {\n var parts = Array.prototype.slice.call(arguments, 0);\n var res = {};\n\n for (var i = 0; i < parts.length; i++) {\n var obj = parts[i];\n\n if (typeof obj == \"function\") {\n obj = new obj();\n }\n\n for (var p in obj) {\n res[p] = obj[p];\n }\n }\n\n return res;\n };\n\n require(\"./keyboard_navigation/common/keyboard_shortcuts\")(gantt);\n\n require(\"./keyboard_navigation/common/eventhandler\")(gantt);\n\n require(\"./keyboard_navigation/common/trap_modal_focus\")(gantt);\n\n require(\"./keyboard_navigation/elements/gantt_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/nav_node\")(gantt);\n\n require(\"./keyboard_navigation/elements/header_cell\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_row\")(gantt);\n\n require(\"./keyboard_navigation/elements/task_cell\")(gantt);\n\n require(\"./keyboard_navigation/modals\")(gantt);\n\n require(\"./keyboard_navigation/core\")(gantt);\n\n var domHelpers = require(\"../core/ui/utils/dom_helpers\");\n\n (function () {\n var dispatcher = gantt.$keyboardNavigation.dispatcher;\n\n dispatcher.isTaskFocused = function (id) {\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskRow || node instanceof gantt.$keyboardNavigation.TaskCell) {\n if (node.taskId == id) {\n return true;\n }\n }\n\n return false;\n };\n\n var keyDownHandler = function keyDownHandler(e) {\n if (!gantt.config.keyboard_navigation) return; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return;\n\n if (isNoKeyboardNavigationElement(e) || isLightboxElement(e)) {\n return;\n }\n\n return dispatcher.keyDownHandler(e);\n };\n\n var focusHandler = function focusHandler(e) {\n if (dispatcher.$preventDefault) {\n e.preventDefault();\n gantt.$container.blur();\n return false; // do nothing if key-nav focus is already planned\n } else if (!dispatcher.awaitsFocus()) {\n // otherwise - re-focus key-nav element on gantt focus\n dispatcher.focusGlobalNode();\n }\n };\n\n var reFocusActiveNode = function reFocusActiveNode() {\n if (!dispatcher.isEnabled()) return;\n var outsideGantt = !domHelpers.isChildOf(document.activeElement, gantt.$container) && document.activeElement.localName != \"body\";\n var activeNode = dispatcher.getActiveNode();\n if (!activeNode || outsideGantt) return;\n var domElement = activeNode.getNode();\n var top, left;\n\n if (domElement && domElement.parentNode) {\n top = domElement.parentNode.scrollTop;\n left = domElement.parentNode.scrollLeft;\n }\n\n activeNode.focus(true);\n\n if (domElement && domElement.parentNode) {\n domElement.parentNode.scrollTop = top;\n domElement.parentNode.scrollLeft = left;\n }\n };\n\n gantt.attachEvent(\"onDataRender\", function () {\n if (!gantt.config.keyboard_navigation) return;\n reFocusActiveNode();\n });\n gantt.attachEvent(\"onGanttRender\", function () {\n gantt.eventRemove(gantt.$root, \"keydown\", keyDownHandler);\n gantt.eventRemove(gantt.$container, \"focus\", focusHandler);\n gantt.eventRemove(gantt.$container, \"mousedown\", mousedownHandler);\n\n if (gantt.config.keyboard_navigation) {\n gantt.event(gantt.$root, \"keydown\", keyDownHandler);\n gantt.event(gantt.$container, \"focus\", focusHandler);\n gantt.event(gantt.$container, \"mousedown\", mousedownHandler);\n gantt.$container.setAttribute(\"tabindex\", \"0\");\n } else {\n gantt.$container.removeAttribute(\"tabindex\");\n }\n });\n\n function getTaskNodeConstructor() {\n if (gantt.config.keyboard_navigation_cells) {\n return gantt.$keyboardNavigation.TaskCell;\n } else {\n return gantt.$keyboardNavigation.TaskRow;\n }\n }\n\n function isInlineEditorCell(e) {\n return !!domHelpers.closest(e.target, \".gantt_grid_editor_placeholder\");\n } // GS-1445. Cancel keyboard navigation within custom elements\n\n\n function isNoKeyboardNavigationElement(e) {\n return !!domHelpers.closest(e.target, \".no_keyboard_navigation\");\n }\n\n function isLightboxElement(e) {\n return !!domHelpers.closest(e.target, \".gantt_cal_light\");\n }\n\n function mousedownHandler(e) {\n if (!gantt.config.keyboard_navigation) return true; // GS-734 & GS-1078: we don't need keyboard navigation inside inline editors\n\n if (!gantt.config.keyboard_navigation_cells && isInlineEditorCell(e)) return true;\n\n if (isNoKeyboardNavigationElement(e)) {\n return;\n }\n\n var focusNode;\n var locateTask = dispatcher.fromDomElement(e);\n\n if (locateTask) {\n //var node = getTaskNodeConstructor();\n if (dispatcher.activeNode instanceof gantt.$keyboardNavigation.TaskCell && domHelpers.isChildOf(e.target, gantt.$task)) {\n locateTask = new gantt.$keyboardNavigation.TaskCell(locateTask.taskId, dispatcher.activeNode.columnIndex);\n }\n\n focusNode = locateTask;\n }\n\n if (focusNode) {\n if (!dispatcher.isEnabled()) {\n dispatcher.activeNode = focusNode;\n } else {\n dispatcher.delay(function () {\n dispatcher.setActiveNode(focusNode);\n });\n }\n } else {\n // empty click should drop focus from gantt, insert of reselecting default node\n dispatcher.$preventDefault = true;\n setTimeout(function () {\n dispatcher.$preventDefault = false;\n }, 300);\n }\n }\n\n var onReady = gantt.attachEvent(\"onGanttReady\", function () {\n // restore focus on repainted tasks\n gantt.detachEvent(onReady);\n gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function (id) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId == id) {\n reFocusActiveNode();\n }\n }\n });\n\n if (gantt._smart_render) {\n var updateRender = gantt._smart_render._redrawTasks;\n\n gantt._smart_render._redrawTasks = function (renderers, items) {\n if (gantt.config.keyboard_navigation && dispatcher.isEnabled()) {\n var currentNode = dispatcher.getActiveNode();\n\n if (currentNode && currentNode.taskId !== undefined) {\n var focusedItemVisible = false;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id == currentNode.taskId && items[i].start_date) {\n focusedItemVisible = true;\n break;\n }\n }\n\n if (!focusedItemVisible) {\n items.push(gantt.getTask(currentNode.taskId));\n }\n }\n }\n\n var res = updateRender.apply(this, arguments);\n return res;\n };\n }\n });\n var createdTaskId = null;\n var keepFocusOnNewTask = false;\n gantt.attachEvent(\"onTaskCreated\", function (task) {\n createdTaskId = task.id;\n return true;\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (!gantt.config.keyboard_navigation) return true;\n\n if (dispatcher.isEnabled()) {\n // GS-1394. After adding a new task, the focus shouldn't change to the placeholder task\n if (id == createdTaskId) {\n keepFocusOnNewTask = true;\n setTimeout(function () {\n keepFocusOnNewTask = false;\n createdTaskId = null;\n });\n }\n\n if (keepFocusOnNewTask && item.type == gantt.config.types.placeholder) {\n return;\n }\n\n var columnIndex = 0;\n var node = dispatcher.activeNode;\n\n if (node instanceof gantt.$keyboardNavigation.TaskCell) {\n columnIndex = node.columnIndex;\n }\n\n var nodeConstructor = getTaskNodeConstructor();\n\n if (item.type == gantt.config.types.placeholder && gantt.config.placeholder_task.focusOnCreate === false) {// do not focus on the placeholder task\n } else {\n dispatcher.setActiveNode(new nodeConstructor(id, columnIndex));\n }\n }\n });\n gantt.attachEvent(\"onTaskIdChange\", function (oldId, newId) {\n if (!gantt.config.keyboard_navigation) return true;\n var node = dispatcher.activeNode;\n\n if (dispatcher.isTaskFocused(oldId)) {\n node.taskId = newId;\n }\n\n return true;\n });\n var interval = setInterval(function () {\n if (!gantt.config.keyboard_navigation) return;\n\n if (!dispatcher.isEnabled()) {\n dispatcher.enable();\n }\n\n return;\n }, 500);\n gantt.attachEvent(\"onDestroy\", function () {\n clearInterval(interval);\n });\n\n function getScopeName(obj) {\n if (obj instanceof gantt.$keyboardNavigation.GanttNode) {\n return \"gantt\";\n } else if (obj instanceof gantt.$keyboardNavigation.HeaderCell) {\n return \"headerCell\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskRow) {\n return \"taskRow\";\n } else if (obj instanceof gantt.$keyboardNavigation.TaskCell) {\n return \"taskCell\";\n }\n\n return null;\n }\n\n function getScope(mode) {\n var scopes = {\n \"gantt\": gantt.$keyboardNavigation.GanttNode,\n \"headerCell\": gantt.$keyboardNavigation.HeaderCell,\n \"taskRow\": gantt.$keyboardNavigation.TaskRow,\n \"taskCell\": gantt.$keyboardNavigation.TaskCell\n };\n return scopes[mode] || scopes.gantt;\n }\n\n function findVisibleColumnIndex(columnName) {\n var columns = gantt.getGridColumns();\n\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name == columnName) {\n return i;\n }\n }\n\n return 0;\n }\n\n var keyNavFacade = {};\n eventable(keyNavFacade);\n gantt.mixin(keyNavFacade, {\n addShortcut: function addShortcut(shortcut, handler, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.bind(shortcut, handler);\n }\n },\n getShortcutHandler: function getShortcutHandler(shortcut, scope) {\n var commands = gantt.$keyboardNavigation.shortcuts.parse(shortcut);\n\n if (commands.length) {\n return keyNavFacade.getCommandHandler(commands[0], scope);\n }\n },\n getCommandHandler: function getCommandHandler(command, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n if (command) {\n return scopeObject.prototype.findHandler(command);\n }\n }\n },\n removeShortcut: function removeShortcut(shortcut, scope) {\n var scopeObject = getScope(scope);\n\n if (scopeObject) {\n scopeObject.prototype.unbind(shortcut);\n }\n },\n focus: function focus(config) {\n var type = config ? config.type : null;\n var constructor = getScope(type);\n var node;\n\n switch (type) {\n case \"taskCell\":\n node = new constructor(config.id, findVisibleColumnIndex(config.column));\n break;\n\n case \"taskRow\":\n node = new constructor(config.id);\n break;\n\n case \"headerCell\":\n node = new constructor(findVisibleColumnIndex(config.column));\n break;\n\n default:\n break;\n }\n\n dispatcher.delay(function () {\n if (node) {\n dispatcher.setActiveNode(node);\n } else {\n dispatcher.enable();\n\n if (!dispatcher.getActiveNode()) {\n dispatcher.setDefaultNode();\n } else {\n if (!dispatcher.awaitsFocus()) {\n dispatcher.enable();\n }\n }\n }\n });\n },\n getActiveNode: function getActiveNode() {\n if (dispatcher.isEnabled()) {\n var node = dispatcher.getActiveNode();\n var scope = getScopeName(node);\n var columns = gantt.getGridColumns();\n\n switch (scope) {\n case \"taskCell\":\n return {\n type: \"taskCell\",\n id: node.taskId,\n column: columns[node.columnIndex].name\n };\n\n case \"taskRow\":\n return {\n type: \"taskRow\",\n id: node.taskId\n };\n\n case \"headerCell\":\n return {\n type: \"headerCell\",\n column: columns[node.index].name\n };\n }\n }\n\n return null;\n }\n });\n gantt.$keyboardNavigation.facade = keyNavFacade;\n gantt.ext.keyboardNavigation = keyNavFacade;\n\n gantt.focus = function () {\n keyNavFacade.focus();\n };\n\n gantt.addShortcut = keyNavFacade.addShortcut;\n gantt.getShortcutHandler = keyNavFacade.getShortcutHandler;\n gantt.removeShortcut = keyNavFacade.removeShortcut;\n })();\n }\n\n setupKeyNav(gantt);\n};","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 helpers = require(\"../utils/helpers\");\n\n gantt._groups = {\n relation_property: null,\n relation_id_property: '$group_id',\n group_id: null,\n group_text: null,\n loading: false,\n loaded: 0,\n dynamicGroups: false,\n set_relation_value: undefined,\n _searchCache: null,\n init: function init(gantt) {\n var self = this;\n gantt.attachEvent(\"onClear\", function () {\n self.clear();\n });\n self.clear();\n var originalGetParent = gantt.$data.tasksStore.getParent; // gantt._get_parent_id;\n\n this._searchCache = null;\n gantt.attachEvent(\"onBeforeTaskMove\", function (id, parent, tindex) {\n // GS-504: If we allow several owners/resources, the task should be moved to \n // a new position only if there is the function that handles that logic\n var invalidParent = parent === this.config.root_id;\n var noRelationValueFunction = this._groups.dynamicGroups && !(this._groups.set_relation_value instanceof Function);\n\n if (self.is_active() && (invalidParent || noRelationValueFunction)) {\n return false;\n }\n\n var task = gantt.getTask(id); // to allow reordering from regular task to virtual task in the group mode\n\n if (this._groups.save_tree_structure && gantt.isTaskExists(task.parent) && gantt.isTaskExists(parent)) {\n var oldParentTask = gantt.getTask(task.parent);\n var newParentTask = gantt.getTask(parent);\n\n if (newParentTask.$virtual && gantt.isChildOf(oldParentTask.id, newParentTask.id)) {\n task.parent = gantt.config.root_id;\n } // avoid cyclic tree:\n\n\n var cyclicTree = false;\n var parentTask = newParentTask;\n\n while (parentTask) {\n if (id == parentTask.parent) {\n cyclicTree = true;\n }\n\n if (gantt.isTaskExists(parentTask.parent)) {\n parentTask = gantt.getTask(parentTask.parent);\n } else {\n parentTask = null;\n }\n }\n\n if (cyclicTree) {\n return false;\n }\n }\n\n return true;\n }); // restore initial parent if the task is moved to a different group on the root level\n\n gantt.attachEvent(\"onRowDragStart\", function (id, target) {\n var task = gantt.getTask(id);\n\n if (this._groups.save_tree_structure && gantt.isTaskExists(task.parent) && gantt.config.order_branch && gantt.config.order_branch != \"marker\") {\n task.$initial_parent = task.parent;\n }\n\n return true;\n });\n gantt.attachEvent(\"onRowDragEnd\", function (id, target) {\n if (gantt.config.order_branch && gantt.config.order_branch != \"marker\") {\n var task = gantt.getTask(id);\n\n if (task.$initial_parent) {\n if (task.parent == gantt.config.root_id) {\n var renderedParent = gantt.getTask(task.$rendered_parent);\n var initialParent = gantt.getTask(task.$initial_parent);\n var restoreParent = false;\n\n if (this._groups.dynamicGroups && renderedParent[this._groups.group_id] != initialParent[this._groups.group_id]) {\n restoreParent = true;\n }\n\n if (!this._groups.dynamicGroups && renderedParent[this._groups.group_id] != initialParent[this._groups.relation_property]) {\n restoreParent = true;\n }\n\n if (restoreParent) {\n task.parent = task.$initial_parent;\n }\n }\n\n delete task.$initial_parent;\n }\n }\n });\n gantt.$data.tasksStore._listenerToDrop = gantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", gantt.bind(_initBeforeDataRender, gantt));\n\n gantt.$data.tasksStore.getParent = function (task) {\n if (self.is_active()) {\n return self.get_parent(gantt, task);\n } else {\n return originalGetParent.apply(this, arguments);\n }\n };\n\n var originalSetParent = gantt.$data.tasksStore.setParent;\n\n gantt.$data.tasksStore.setParent = function (task, new_pid) {\n if (!self.is_active()) {\n return originalSetParent.apply(this, arguments);\n } else if (self.set_relation_value instanceof Function && gantt.isTaskExists(new_pid)) {\n var parent = gantt.getTask(new_pid);\n var groupIds = parent[self.relation_id_property];\n\n if (!parent.$virtual) {\n var groupId = _getGroupId(parent, self.relation_property);\n\n if (!self._searchCache) {\n self._buildCache();\n }\n\n var virtualParentId = self._searchCache[groupId];\n var virtualParent = gantt.getTask(virtualParentId);\n groupIds = virtualParent[self.relation_id_property];\n }\n\n if (task[self.group_id] === undefined) {\n // to avoid nulling of relation_property if the group is not set\n task[self.group_id] = groupIds;\n }\n\n if (self.save_tree_structure && task[self.group_id] != groupIds) {\n task[self.group_id] = groupIds;\n }\n\n if (groupIds) {\n if (typeof groupIds == \"string\") {\n groupIds = groupIds.split(\",\");\n } else {\n groupIds = [groupIds];\n }\n } // GS-504: This is a way to save the relation_property and customize the logic\n\n\n task[self.relation_property] = self.set_relation_value(groupIds, task.id, task[self.relation_property]) || groupIds;\n } else if (gantt.isTaskExists(new_pid)) {\n var parent = gantt.getTask(new_pid);\n\n if (!self.dynamicGroups) {\n if (parent.$virtual) {\n task[self.relation_property] = parent[self.relation_id_property];\n } else {\n task[self.relation_property] = parent[self.relation_property];\n } // task[self.group_id] = parent[self.group_id] || task[self.group_id];\n\n }\n\n this._setParentInner.apply(this, arguments);\n } else if (self.dynamicGroups) {\n if (task[self.group_id] === undefined || !task.$virtual && task[self.relation_property][0] === [][0]) {\n // GS-1332 the tasks without the group should be moved to the default group:\n task[self.relation_property] = 0;\n }\n } // GS-1449. Update the parent when it was changed in the group mode\n\n\n if (gantt.isTaskExists(new_pid)) {\n task.$rendered_parent = new_pid;\n\n if (!gantt.getTask(new_pid).$virtual) {\n return originalSetParent.apply(this, arguments) || new_pid;\n }\n }\n };\n\n gantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n if (self.is_active()) {\n if (task.type == gantt.config.types.project && !task.$virtual) return false;\n }\n\n return true;\n });\n gantt.attachEvent(\"onBeforeParse\", function () {\n self.loading = true;\n\n self._clearCache();\n });\n gantt.attachEvent(\"onTaskLoading\", function () {\n if (self.is_active()) {\n self.loaded--;\n\n if (self.loaded <= 0) {\n self.loading = false;\n\n self._clearCache();\n\n gantt.eachTask(gantt.bind(function (t) {\n this.get_parent(gantt, t);\n }, self));\n }\n }\n\n return true;\n });\n gantt.attachEvent(\"onParse\", function () {\n self.loading = false;\n self.loaded = 0;\n });\n },\n _clearCache: function _clearCache() {\n this._searchCache = null;\n },\n _buildCache: function _buildCache() {\n this._searchCache = {};\n var items = gantt.$data.tasksStore.getItems();\n\n for (var i = 0; i < items.length; i++) {\n this._searchCache[items[i][this.relation_id_property]] = items[i].id;\n }\n },\n get_parent: function get_parent(gantt, task, tasks) {\n if (task.id === undefined) {\n task = gantt.getTask(task);\n }\n\n var group_id = _getGroupId(task, this.relation_property);\n\n if (this.save_tree_structure && gantt.isTaskExists(task.parent)) {\n var parentTask = gantt.getTask(task.parent);\n\n var parent_group_id = _getGroupId(parentTask, this.relation_property);\n\n if (parentTask.type != \"project\" && group_id == parent_group_id) {\n return task.parent;\n }\n }\n\n if (this._groups_pull[group_id] === task.id) {\n return gantt.config.root_id;\n }\n\n if (this._groups_pull[group_id] !== undefined) {\n return this._groups_pull[group_id];\n }\n\n var parent_id = gantt.config.root_id;\n\n if (!this.loading && group_id !== undefined) {\n if (!this._searchCache) {\n this._buildCache();\n }\n\n var parent = this._searchCache[group_id];\n\n if (gantt.isTaskExists(parent) && parent != task.id) {\n parent_id = this._searchCache[group_id];\n }\n\n this._groups_pull[group_id] = parent_id;\n }\n\n return parent_id;\n },\n clear: function clear() {\n this._groups_pull = {};\n this.relation_property = null;\n this.group_id = null;\n this.group_text = null;\n\n this._clearCache();\n },\n is_active: function is_active() {\n return !!this.relation_property;\n },\n generate_sections: function generate_sections(list, groups_type) {\n var groups = [];\n\n for (var i = 0; i < list.length; i++) {\n var group = gantt.copy(list[i]);\n group.type = groups_type;\n\n if (group.open === undefined) {\n group.open = true;\n }\n\n group.$virtual = true;\n group.readonly = true;\n group[this.relation_id_property] = group[this.group_id];\n group.text = group[this.group_text];\n groups.push(group);\n }\n\n return groups;\n },\n clear_temp_tasks: function clear_temp_tasks(tasks) {\n for (var i = 0; i < tasks.length; i++) {\n if (tasks[i].$virtual) {\n tasks.splice(i, 1);\n i--;\n }\n }\n },\n generate_data: function generate_data(gantt, groups) {\n var links = gantt.getLinks();\n var tasks = gantt.getTaskByTime();\n this.clear_temp_tasks(tasks);\n tasks.forEach(function (task) {\n task.$calculate_duration = false; // no need to recalculate durations of tasks after group by\n });\n var categories = [];\n\n if (this.is_active() && groups && groups.length) {\n categories = this.generate_sections(groups, gantt.config.types.project);\n }\n\n var data = {\n links: links\n };\n data.data = categories.concat(tasks);\n return data;\n },\n update_settings: function update_settings(relation, group_id, group_text) {\n this.clear();\n this.relation_property = relation;\n this.group_id = group_id;\n this.group_text = group_text;\n },\n group_tasks: function group_tasks(gantt, groups_array, relation_property, group_id, group_text) {\n this.update_settings(relation_property, group_id, group_text);\n var data = this.generate_data(gantt, groups_array);\n this.loaded = data.data.length; // save task selection before grouping tasks\n // We need to iterate selected tasks with the \"isSelectedTask\" method\n // because it will work with and without the multiselect extension\n\n var selectedTasks = [];\n gantt.eachTask(function (task) {\n if (gantt.isSelectedTask(task.id)) {\n selectedTasks.push(task.id);\n }\n });\n\n gantt._clear_data();\n\n var schedulingOnParse = gantt.config.auto_scheduling_initial;\n gantt.config.auto_scheduling_initial = false;\n gantt.parse(data); // restore task selection after grouping tasks\n\n selectedTasks.forEach(function (taskId) {\n if (gantt.isTaskExists(taskId)) {\n gantt.selectTask(taskId);\n }\n });\n gantt.config.auto_scheduling_initial = schedulingOnParse;\n }\n };\n\n gantt._groups.init(gantt);\n\n function setRelationValueForAssignmentsArray(newGroupValues, id, oldRelationProperty) {\n if (!newGroupValues) {\n return 0;\n }\n\n if (Array.isArray(oldRelationProperty) && !oldRelationProperty[0]) {\n return 0;\n }\n\n if (newGroupValues && !Array.isArray(oldRelationProperty)) {\n var resources = [];\n newGroupValues.map(function (id) {\n resources.push({\n resource_id: id,\n value: 8\n });\n });\n return resources;\n }\n\n if (!oldRelationProperty[0].resource_id) {\n oldRelationProperty = [{\n resource_id: oldRelationProperty,\n value: 8\n }];\n }\n\n if (typeof newGroupValues == \"string\") {\n newGroupValues = newGroupValues.split(',');\n }\n\n if (newGroupValues.length == 1) {\n oldRelationProperty[0].resource_id = newGroupValues[0];\n return [oldRelationProperty[0]];\n }\n\n var newRelationProperty = [];\n\n for (var i = 0; i < newGroupValues.length; i++) {\n var new_value = newGroupValues[i];\n var pos = oldRelationProperty.map(function (e) {\n return e.resource_id;\n }).indexOf(new_value);\n\n if (pos > -1) {\n oldRelationProperty[pos].resource_id = new_value;\n newRelationProperty.push(oldRelationProperty[pos]);\n } else {\n var copy = gantt.copy(oldRelationProperty[0]);\n copy.resource_id = new_value;\n newRelationProperty.push(copy);\n }\n }\n\n return newRelationProperty;\n }\n\n function setRelationValueForPrimitivesArray(newGroupValues, id, oldRelationProperty) {\n return newGroupValues;\n }\n\n function inspectRelationProperty(tasks, relationProperty) {\n var resourceAssignments = false;\n var arrays = false;\n\n for (var i = 0; i < tasks.length; i++) {\n var value = tasks[i][relationProperty];\n\n if (Array.isArray(value)) {\n arrays = true;\n\n if (value.length) {\n if (value[0].resource_id !== undefined) {\n resourceAssignments = true;\n break;\n }\n }\n }\n }\n\n return {\n haveArrays: arrays,\n haveResourceAssignments: resourceAssignments\n };\n }\n\n function selectRelationFunction(relationInfo) {\n if (relationInfo.haveResourceAssignments) {\n return setRelationValueForAssignmentsArray;\n } else if (relationInfo.haveArrays) {\n return setRelationValueForPrimitivesArray;\n }\n\n return null;\n }\n\n gantt.groupBy = function (config) {\n var _this = this;\n\n var tasks = gantt.getTaskByTime();\n this._groups.set_relation_value = config.set_relation_value;\n this._groups.dynamicGroups = false;\n this._groups.save_tree_structure = config.save_tree_structure;\n var relationInfo = inspectRelationProperty(tasks, config.relation_property);\n\n if (relationInfo.haveArrays) {\n this._groups.dynamicGroups = true;\n }\n\n if (!this._groups.set_relation_value) {\n this._groups.set_relation_value = selectRelationFunction(relationInfo);\n }\n\n config = config || {};\n config.default_group_label = config.default_group_label || this.locale.labels.default_group || \"None\";\n var relation_property = config.relation_property || null;\n var group_id = config.group_id || \"key\";\n var group_text = config.group_text || \"label\";\n\n this._groups.regroup = function () {\n var tasks = gantt.getTaskByTime();\n var groupOpenCloseState = {};\n var restoreOpenCloseState = false;\n tasks.forEach(function (task) {\n if (task.$virtual && task.$open !== undefined) {\n groupOpenCloseState[task[group_id]] = task.$open;\n restoreOpenCloseState = true;\n }\n });\n\n var groups = _initGroups(config, tasks, gantt);\n\n if (groups && restoreOpenCloseState) {\n groups.forEach(function (group) {\n if (groupOpenCloseState[group[group_id]] !== undefined) {\n group.open = groupOpenCloseState[group[group_id]];\n }\n });\n }\n\n _this._groups.group_tasks(_this, groups, relation_property, group_id, group_text);\n\n return true;\n };\n\n this._groups.regroup();\n };\n\n function _initGroups(config, tasks, gantt) {\n var groups;\n\n if (config.groups) {\n if (gantt._groups.dynamicGroups) {\n groups = _getGroupForMultiItems(tasks, config);\n } else {\n groups = config.groups;\n }\n } else {\n groups = null;\n }\n\n return groups;\n }\n\n function _getResourcesIds(resources) {\n return resources.map(_getEntryId).sort().join(\",\");\n }\n\n function _getEntryId(entry) {\n if (entry && _typeof(entry) == \"object\") {\n return String(entry.resource_id);\n } else {\n return String(entry);\n }\n }\n\n function _getGroupId(task, relationProperty) {\n var group_id;\n\n if (task[relationProperty] instanceof Array) {\n // GS-1332 We want to assign tasks with the empty relationProperty to a default group\n if (!task[relationProperty].length) {\n group_id = 0;\n } else {\n group_id = _getResourcesIds(task[relationProperty]);\n }\n } else {\n group_id = task[relationProperty];\n }\n\n return group_id;\n }\n\n function _getGroupForMultiItems(tasks, config) {\n var resultObj = {};\n var result = [];\n var itemsByKey = {};\n var property = config.relation_property;\n var delimiter = config.delimiter || \",\";\n var hasDefaultGroup = false;\n var defaultGroupId = 0;\n helpers.forEach(config.groups, function (entry) {\n if (entry[\"default\"]) {\n hasDefaultGroup = true;\n defaultGroupId = entry.group_id;\n }\n\n itemsByKey[entry.key || entry[config.group_id]] = entry;\n });\n\n for (var i = 0; i < tasks.length; i++) {\n var key;\n var label;\n var task = tasks[i];\n var taskGroupValue = task[property];\n\n if (helpers.isArray(taskGroupValue)) {\n if (taskGroupValue.length > 0) {\n key = _getResourcesIds(taskGroupValue);\n label = taskGroupValue.map(function (entry, index) {\n var key;\n\n if (entry && _typeof(entry) == \"object\") {\n key = entry.resource_id;\n } else {\n key = entry;\n }\n\n entry = itemsByKey[key];\n return entry.label || entry.text;\n }).sort().join(delimiter);\n } else {\n if (hasDefaultGroup) continue;\n key = 0;\n label = config.default_group_label;\n }\n } else if (taskGroupValue) {\n key = taskGroupValue;\n label = itemsByKey[key].label || itemsByKey[key].text;\n } else {\n if (hasDefaultGroup) continue;\n key = 0;\n label = config.default_group_label;\n }\n\n if (key === undefined || resultObj[key] !== undefined) {\n continue;\n }\n\n resultObj[key] = {\n key: key,\n label: label\n };\n\n if (key === defaultGroupId) {\n resultObj[key][\"default\"] = true;\n }\n\n resultObj[key][config.group_text] = label;\n resultObj[key][config.group_id] = key;\n }\n\n result = helpers.hashToArray(resultObj);\n result.forEach(function (group) {\n if (group.key == defaultGroupId) {\n group[\"default\"] = true;\n }\n });\n return result;\n }\n\n var state = gantt.$services.getService(\"state\");\n state.registerProvider(\"groupBy\", function () {\n return {\n group_mode: gantt._groups.is_active() ? gantt._groups.relation_property : null\n };\n });\n\n function _initBeforeDataRender() {\n var _this = this;\n\n if (this.$data.tasksStore._listenerToDrop) {\n this.$data.tasksStore.detachEvent(this.$data.tasksStore._listenerToDrop);\n } // updateTask can be called many times from batchUpdate or autoSchedule,\n // add a delay in order to perform grouping only once when everything is done\n\n\n var delayedFunction = helpers.delay(function () {\n if (!_this._groups.dynamicGroups) {\n return true;\n }\n\n if (_this._groups.regroup) {\n var scrollState = gantt.getScrollState();\n\n _this._groups.regroup();\n\n if (scrollState) {\n gantt.scrollTo(scrollState.x, scrollState.y);\n }\n }\n\n return true;\n });\n this.$data.tasksStore.attachEvent(\"onAfterUpdate\", function () {\n // do not reset delayed function each time since onAfterUpdate can be called huge number of times and clearTimeout/setTimeout gets expensive\n if (!delayedFunction.$pending) {\n delayedFunction();\n }\n\n return true;\n });\n }\n};","export default function(gantt: any){\n\ninterface IBody extends HTMLElement {\n\tmsRequestFullscreen?: () => void;\n\tmozRequestFullScreen?: () => void;\n\twebkitRequestFullscreen?: (ALLOW_KEYBOARD_INPUT: any) => void;\n}\n\n\ninterface IConsole extends Console {\n\twarning?: (str: string) => void;\n}\n\ninterface IDocument extends Document {\n\tfullscreenElement: Element;\n\tmozFullScreenElement?: Element;\n\twebkitFullscreenElement?: Element;\n\tmsFullscreenElement?: Element;\n\twebkitFullscreenEnabled?: boolean;\n\tmozFullScreenEnabled?: boolean;\n\tmsFullscreenEnabled?: boolean;\n\tmsExitFullscreen?: () => void;\n\tmozCancelFullScreen?: () => void;\n\twebkitExitFullscreen?: () => void;\n}\n\ninterface IElement extends Element {\n\tALLOW_KEYBOARD_INPUT?: boolean;\n}\n\ninterface IElementSizes extends ISizes {\n\tmodified: boolean;\n}\n\ninterface ISizes {\n\twidth: null | string;\n\theight: null | string;\n\ttop: null | string;\n\tleft: null | string;\n\tposition: null | string;\n\tzIndex: null | number;\n}\n\nfunction isExpanded() {\n\tconst element = ((document as IDocument).fullscreenElement ||\n\t\t(document as IDocument).mozFullScreenElement ||\n\t\t(document as IDocument).webkitFullscreenElement ||\n\t\t(document as IDocument).msFullscreenElement);\n\treturn !!(element && element === document.body);\n}\n\nfunction isFullscreenAvailable() {\n\ttry {\n\t\treturn (document as IDocument).fullscreenEnabled ||\n\t\t\t(document as IDocument).webkitFullscreenEnabled ||\n\t\t\t(document as IDocument).mozFullScreenEnabled ||\n\t\t\t(document as IDocument).msFullscreenEnabled;\n\t} catch (e) {\n\t\tconsole.error(\"Fullscreen is not available:\", e); // tslint:disable-line:no-console\n\t}\n}\n\nconst state = gantt.$services.getService(\"state\");\nstate.registerProvider(\"fullscreen\", () => {\n\tif (isFullscreenAvailable()){\n\t\treturn { fullscreen: isExpanded() };\n\t} else {\n\t\treturn undefined;\n\t}\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}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar stringifyPrimitive = function stringifyPrimitive(v) {\n switch (_typeof(v)) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function (obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n\n if (obj === null) {\n obj = undefined;\n }\n\n if (_typeof(obj) === 'object') {\n return map(objectKeys(obj), function (k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\n if (isArray(obj[k])) {\n return map(obj[k], function (v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map(xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n\n return res;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'; // If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function (qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n var maxKeys = 1000;\n\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length; // maxKeys <= 0 means that we should not limit keys count\n\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr,\n vstr,\n k,\n v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = {\n isString: function isString(arg) {\n return typeof arg === 'string';\n },\n isObject: function isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n },\n isNull: function isNull(arg) {\n return arg === null;\n },\n isNullOrUndefined: function isNullOrUndefined(arg) {\n return arg == null;\n }\n};","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! https://mths.be/punycode v1.4.1 by @mathias */\n;\n\n(function (root) {\n /** Detect free variables */\n var freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n var freeModule = (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n var freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's state to ,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;;\n /* no condition */\n k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see \n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (typeof define == 'function' && _typeof(define.amd) == 'object' && define.amd) {\n define('punycode', function () {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = punycode;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n // in Rhino or a web browser\n root.punycode = punycode;\n }\n})(this);","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n};","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","var Buffer = require('buffer').Buffer;\n\nmodule.exports = function (buf) {\n // If the buffer is backed by a Uint8Array, a faster version will work\n if (buf instanceof Uint8Array) {\n // If the buffer isn't a subarray, return the underlying ArrayBuffer\n if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n } else if (typeof buf.buffer.slice === 'function') {\n // Otherwise we need to get a proper copy\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n }\n }\n\n if (Buffer.isBuffer(buf)) {\n // This is the slow version that will work with any Buffer\n // implementation (even in old browsers)\n var arrayCopy = new Uint8Array(buf.length);\n var len = buf.length;\n\n for (var i = 0; i < len; i++) {\n arrayCopy[i] = buf[i];\n }\n\n return arrayCopy.buffer;\n } else {\n throw new Error('Argument must be a Buffer');\n }\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n/**/\n\n\nvar util = require('core-util-is');\n\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","/**\n * Module exports.\n */\nmodule.exports = deprecate;\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a