{"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/./node_modules/stream-http/index.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/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/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/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/./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/url/url.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/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","clearTaskStoreHandler","_delayRender","tasks","$data","tasksStore","ownStore","rowStore","handlerIdProperty","$attachedResourceViewHandler","$attachedTaskStoreHandler","initGrid","destroyGrid","_linkToTaskStore","delayRender","lightbox","refresh","_updateNestedTasks","_mark_recompute","resourceStore","getDatastore","resource_store","fetchTasks","silent","toAddArray","toAdd","toDelete","eachItem","resource","$role","assignments","getResourceAssignments","addedTasks","resourceData","pull","resource1","task_id","resource_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","ClientRequest","response","extend","statusCodes","url","http","request","opts","defaultProtocol","location","protocol","hostname","port","path","toUpperCase","headers","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","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","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","eachParent","_setParentInner","new_pid","_eachItemCached","cache","_eachItemIterate","startId","itemsStack","useCache","startItem","parentsHash","added_already","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","els","temp","rule","$powerArray","$removeAt","$remove","$find","$insertAt","$each","master","$map","$filter","_filterRule","copyOnParse","isSilent","updateItem","order","data_size","addItem","changeId","sindex","$destroyed","unselect","alreadySilent","arraysEqual","arr1","arr2","quick","skipFilter","_quick_refresh","oldOrder","serialize","filteredOrder","getItems","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","updPerSecond","_on_timeout","ceil","ExtensionsManager","addExtension","_extensions","getExtension","createScope","eventScope","staticArray","FormData","__webpack_amd_options__","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","shift","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","xhr","fetchTimer","_mode","rawHeaders","trailers","rawTrailers","_fetchResponse","statusCode","status","statusMessage","statusText","writableStream","WritableStream","Promise","resolve","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","DateComparator","_gantt","isEqual","dateA","dateB","_hasDuration","isFirstSmaller","small","big","isSmallerOrDefault","smallDate","bigDate","isGreaterOrDefault","getVertices","relations","rel","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","lightboxHiddenAttr","lightboxVisibleAttr","lightboxAttr","lightboxButtonAttrString","buttonName","role","tabindex","lightboxHeader","headerText","lightboxSelectAttrString","time_option","years","months","hours","minutes","lightboxDurationInputAttrString","section","column_duration","aria-valuemin","multiselect","attrs","new_task","gridCellAttrString","textValue","editor","gridAddButtonAttrString","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","payload","wai_aria_attributes","_extend_to_optional","lightbox_block","optional_time","mapping","_resolve_default_mapping","disable","enable","disabled","update_block","_lightbox_id","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","TypeselectControl","typeKey","typeValue","oldOnChange","changeLightboxType","_lightbox_new_type","ConstraintControl","isNonTimedConstraint","constraint_types","ASAP","ALAP","toggleTimeSelect","timeSelects","isNonTimed","getTimePicker","typeSelect","_time_format_order","_eventsInitialized","constraintDate","constraint_date","_fill_lightbox_select","constraintType","constraint_type","getConstraintType","getTimePickerValue","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","query","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","href","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","rollup","$rollup","$rendered_at","isBarInViewport","isInViewPortParent","isInViewPortChild","renderedNodes","checkVisibility","generateChildElement","isProject","resetProjectDates","realChild","childCopy","itemNode","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","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","exec","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","getVisibleLinksRange","isLinkInViewport","previusSiblingContainer","defaultContainerSibling","setService","addTaskLayer","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","assignment","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","stringify","_arraysEqual","_compareSettings","mySettings","thatSettings","myDays","otherDates","myHours","otherHours","myWeek","thatWeek","getDay","getSeconds","endHours","timestampRanges","timerangeConfig","startMinute","endMinute","durationSeconds","calendarConfig","reset_calendar","isWorkUnit","dateKey","mult","_calculateEndDate","_calculateMinuteEndDate","_subtractMinuteDate","_calculateHourEndDate","_addInterval","stopAction","added","dstShift","_addHoursUntilDayEnd","rangeHours","addHours","intervalEnd","durationLeft","setMinutes","setSeconds","hoursPerDay","_addMinutesUntilHourEnd","hour_start","rangeMinutes","addMinutes","_subtractMinutesUntilHourStart","hourStartTimestamp","initialDateTimestamp","addedInterval","calculatedDay","daySchedule","minutesInDay","dayStart","iterateFromDayEnd","isWorkHour","workInterval","minutesInHour","_getClosestWorkTimePast","times","lastInterval","minutePresision","_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","encodeURIComponent","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","getTaskAssignments","_loadAssignmentsFromTask","taskAssignments","_syncAssignments","storeAssignments","taskValues","assignmentsStoreValues","inBoth","inTaskNotInStore","inStoreNotInTask","taskOwner","ownerId","foundOwnerAssignment","taskSearch","storeSearch","processedIds","inTask","inStore","diffAssignments","ignoreFields","assignmentHasChanged","updateAssignment","_syncOnTaskUpdate","assignmentsStore","totalAssignments","needUpdate","needUpdateFor","assignmentsHash","deleteIds","idsSearch","_syncOnTaskDelete","resourceAssignmentsCache","resourceTaskAssignmentsCache","taskAssignmentsCache","searchTaskId","resourceTaskCacheKey","getTaskResources","uniqueResources","updateTaskAssignments","createResourceMethods","singleResourceCacheBuilt","falsyValuePrefix","random","resourceHashFunction","getCacheKey","resourceIds","typeFilter","getResourceTasks","matchingResources","resourceValue","selectAssignments","owners","propertyValue","filterResourceTasks","resourcePlugin","renderEditableLabel","editable","renderSummaryLabel","sum","reduce","editableResourceCellTemplate","editableResourceCellClass","getSummaryResourceAssignments","childResource","initEditableDiagram","timeoutId","makeEditable","cancelAnimationFrame","requestAnimationFrame","contentEditable","assignmentEditInProcess","blur","strValue","innerText","rowId","parse_date","assignmentStore","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","handleResourceAssignmentCRUD","updated","updatedRows","clientOnly","_in_progress","insertedTasks","pendingAssignments","putAssignmentToQueue","insertResourceAssignment","handleResourceCRUD","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","escape","_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__","u","_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","proto","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","generator","spawn","addYieldHandler","17","spread","18","MappingPromiseArray","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","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","send","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","templatesLoader","stateService","selected_task","i18n","setLocale","localeObject","extension_manager_1","GanttFactory","factoryMethod","_bundledExtensions","_ganttPlugin","initConfig","_factoryMethod","_internal_id","_seed","_initFromConfig","_extensionsManager","event_1","MAX_UNDO_STEPS","Undo","maxSteps","undoEnabled","redoEnabled","invert","revert","inverseCommands","_undoStack","_redoStack","getUndoStack","getRedoStack","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","saveState","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","esc","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","removeAttribute","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","renderedParent","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","decodeURIComponent","decode","encode","webpackPolyfill","paths","freeExports","freeModule","freeGlobal","punycode","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","toASCII","toUnicode","Url","slashes","auth","pathname","urlParse","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","ae","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","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","onmessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","script","installReadyStateChangeImplementation","copyBuffer","instance","Constructor","_classCallCheck","custom","toArrayBuffer","preferBinary","_opts","_body","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","keyName","signal","_fetchAbortController","requestTimeout","credentials","withCredentials","_connect","ontimeout","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","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","_serializeHtml","_serializeAll","_fixColumns","_sendToExport","exportToPNG","exportToICal","_serializePlain","exportToExcel","convert","_eachTaskTimed","_no_progress_colors","visual","_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","parts1","parts2","parts3","X-Requested-With","sheet","getHeaders","resData","projectProperties","taskProperties","_xdr","pack","_nodejsPostRequest","Content-Type","Content-Length","_markColumns","$template","_ajaxToExport","xdoc","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","$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 = 326);\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 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;","var 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 _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 // because rowstore could be changed during timeout\n self.$config.rowStore.refresh();\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) {\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 _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 });\n newColumnWidth--; // the total column width shouldn't match the outerWidth\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;","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'];","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\n function showScrollbar(scrollbar) {\n scrollbar.$parent.show();\n scrollChanged = true;\n visibleScrollbars.push(scrollbar);\n }\n\n function hideScrollbar(scrollbar) {\n scrollbar.$parent.hide();\n scrollChanged = true;\n hiddenScrollbars.push(scrollbar);\n }\n\n var scrollbar;\n\n for (var i = 0; i < scrollbars.length; i++) {\n scrollbar = scrollbars[i];\n\n if (autosize[scrollbar.$config.scroll]) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldHide()) {\n hideScrollbar(scrollbar);\n } else if (scrollbar.shouldShow()) {\n showScrollbar(scrollbar);\n } else {\n if (scrollbar.isVisible()) {\n visibleScrollbars.push(scrollbar);\n } else {\n hiddenScrollbars.push(scrollbar);\n }\n }\n }\n\n var visibleGroups = {};\n\n for (var i = 0; i < visibleScrollbars.length; i++) {\n if (visibleScrollbars[i].$config.group) {\n visibleGroups[visibleScrollbars[i].$config.group] = true;\n }\n }\n\n for (var i = 0; i < hiddenScrollbars.length; i++) {\n scrollbar = hiddenScrollbars[i];\n\n if (scrollbar.$config.group && visibleGroups[scrollbar.$config.group]) {\n showScrollbar(scrollbar); // GS-707 If the scrollbar was hidden then showed, the container resize shouldn't happen because of that\n\n for (var j = 0; j < visibleScrollbars.length; j++) {\n if (visibleScrollbars[j] == scrollbar) {\n this.$gantt.$scrollbarRepaint = true;\n break;\n }\n }\n }\n }\n\n return scrollChanged;\n };\n\n Layout.prototype._syncCellSizes = function (groupName, newSize) {\n if (!groupName) return;\n var groups = {};\n\n this._eachChild(function (cell) {\n if (cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\") {\n if (!groups[cell.$config.group]) {\n groups[cell.$config.group] = [];\n }\n\n groups[cell.$config.group].push(cell);\n }\n });\n\n if (groups[groupName]) {\n this._syncGroupSize(groups[groupName], newSize);\n }\n\n return groups[groupName];\n };\n\n Layout.prototype._syncGroupSize = function (cells, newSize) {\n if (!cells.length) return;\n var property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n var direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n var newSizeValue = newSize.value;\n var isGravity = newSize.isGravity;\n\n for (var i = 0; i < cells.length; i++) {\n var ownSize = cells[i].getSize();\n var resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\n if (resizeSibling.$name == \"resizer\") {\n resizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n }\n\n var siblingSize = resizeSibling.getSize();\n\n if (!isGravity) {\n if (resizeSibling[property]) {\n var totalGravity = ownSize.gravity + siblingSize.gravity;\n var totalSize = ownSize[property] + siblingSize[property];\n var k = totalGravity / totalSize;\n cells[i].$config.gravity = k * newSizeValue;\n resizeSibling.$config[property] = totalSize - newSizeValue;\n resizeSibling.$config.gravity = totalGravity - k * newSizeValue;\n } else {\n cells[i].$config[property] = newSizeValue;\n }\n } else {\n cells[i].$config.gravity = newSizeValue;\n }\n\n var mainGrid = this.$gantt.$ui.getView(\"grid\");\n\n if (mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable && !isGravity) {\n this.$gantt.config.grid_width = newSizeValue;\n }\n }\n };\n\n Layout.prototype.resize = function (startStage) {\n var mainCall = false;\n\n if (this.$root && !this._resizeInProgress) {\n this.callEvent(\"onBeforeResize\", []);\n mainCall = true;\n this._resizeInProgress = true;\n }\n\n _super.prototype.resize.call(this, true);\n\n _super.prototype.resize.call(this, false);\n\n if (mainCall) {\n var contentViews = [];\n contentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n contentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n contentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n var scrollbars = this.getCellsByType(\"scroller\");\n\n for (var i = 0; i < contentViews.length; i++) {\n if (!contentViews[i].$config.hidden) contentViews[i].setContentSize();\n }\n\n var autosize = this._getAutosizeMode(this.$config.autosize);\n /* // 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\n for (var i = 0; i < branch.length; i++) {\n if (branch[i] == id) return i;\n }\n\n return -1;\n },\n hasChild: function hasChild(id) {\n var branch = this._branches[id];\n return branch && branch.length;\n },\n getChildren: function getChildren(id) {\n var branch = this._branches[id];\n return branch ? branch : powerArray.$create();\n },\n isChildOf: function isChildOf(childId, parentId) {\n if (!this.exists(childId)) return false;\n if (parentId === this.$getRootId()) return true;\n if (!this.hasChild(parentId)) return false;\n var item = this.getItem(childId);\n var pid = this.getParent(childId);\n var parent = this.getItem(parentId);\n\n if (parent.$level >= item.$level) {\n return false;\n }\n\n while (item && this.exists(pid)) {\n item = this.getItem(pid);\n if (item && item.id == parentId) return true;\n pid = this.getParent(item);\n }\n\n return false;\n },\n getSiblings: function getSiblings(id) {\n if (!this.exists(id)) {\n return powerArray.$create();\n }\n\n var parent = this.getParent(id);\n return this.getChildren(parent);\n },\n getNextSibling: function getNextSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var nextSibling = siblings[i + 1];\n\n if (nextSibling === 0 && i > 0) {\n nextSibling = \"0\";\n }\n\n return nextSibling || null;\n }\n }\n\n return null;\n },\n getPrevSibling: function getPrevSibling(id) {\n var siblings = this.getSiblings(id);\n\n for (var i = 0, len = siblings.length; i < len; i++) {\n if (siblings[i] == id) {\n var previousSibling = siblings[i - 1];\n\n if (previousSibling === 0 && i > 0) {\n previousSibling = \"0\";\n }\n\n return previousSibling || null;\n }\n }\n\n return null;\n },\n getParent: function getParent(id) {\n var item = null;\n\n if (id.id !== undefined) {\n item = id;\n } else {\n item = this.getItem(id);\n }\n\n var parent;\n\n if (item) {\n parent = item[this.$parentProperty];\n } else {\n parent = this.$getRootId();\n }\n\n return parent;\n },\n clearAll: function clearAll() {\n this._branches = {};\n DataStore.prototype.clearAll.call(this);\n },\n calculateItemLevel: function calculateItemLevel(item) {\n var level = 0;\n this.eachParent(function () {\n level++;\n }, item);\n return level;\n },\n _setParentInner: function _setParentInner(item, new_pid, silent) {\n if (!silent) {\n if (item.hasOwnProperty(\"$rendered_parent\")) {\n this._move_branch(item, item.$rendered_parent, new_pid);\n } else {\n this._move_branch(item, item[this.$parentProperty], new_pid);\n }\n }\n },\n setParent: function setParent(item, new_pid, silent) {\n this._setParentInner(item, new_pid, silent);\n\n item[this.$parentProperty] = new_pid;\n },\n _eachItemCached: function _eachItemCached(code, cache) {\n for (var i = 0, len = cache.length; i < len; i++) {\n code.call(this, cache[i]);\n }\n },\n _eachItemIterate: function _eachItemIterate(code, startId, cache) {\n var itemsStack = this.getChildren(startId);\n\n if (itemsStack.length) {\n itemsStack = itemsStack.slice().reverse();\n }\n\n while (itemsStack.length) {\n var itemId = itemsStack.pop();\n var item = this.getItem(itemId);\n code.call(this, item);\n\n if (cache) {\n cache.push(item);\n }\n\n if (this.hasChild(item.id)) {\n var children = this.getChildren(item.id);\n var len = children.length;\n\n for (var i = len - 1; i >= 0; i--) {\n itemsStack.push(children[i]);\n }\n }\n }\n },\n eachItem: function eachItem(code, parent) {\n var rootId = this.$getRootId();\n\n if (!utils.defined(parent)) {\n parent = rootId;\n }\n\n var startId = replaceValidZeroId(parent, rootId) || rootId;\n var useCache = false;\n var buildCache = false;\n var cache = null;\n\n if (startId === rootId) {\n if (this._eachItemMainRangeCache) {\n useCache = true;\n cache = this._eachItemMainRangeCache;\n } else {\n buildCache = true;\n cache = this._eachItemMainRangeCache = [];\n }\n }\n\n if (useCache) {\n this._eachItemCached(code, cache);\n } else {\n this._eachItemIterate(code, startId, buildCache ? cache : null);\n }\n },\n eachParent: function eachParent(code, startItem) {\n var parentsHash = {};\n var item = startItem;\n var parent = this.getParent(item);\n\n while (this.exists(parent)) {\n if (parentsHash[parent]) {\n throw new Error(\"Invalid tasks tree. Cyclic reference has been detected on task \" + parent);\n }\n\n parentsHash[parent] = true;\n item = this.getItem(parent);\n code.call(this, item);\n parent = this.getParent(item);\n }\n },\n _add_branch: function _add_branch(item, index, parent) {\n var pid = parent === undefined ? this.getParent(item) : parent;\n if (!this.hasChild(pid)) this._branches[pid] = powerArray.$create();\n var branch = this.getChildren(pid);\n var added_already = false;\n\n for (var i = 0, length = branch.length; i < length; i++) {\n if (branch[i] == item.id) {\n added_already = true;\n break;\n }\n }\n\n if (!added_already) {\n if (index * 1 == index) {\n branch.splice(index, 0, item.id);\n } else {\n branch.push(item.id);\n }\n\n item.$rendered_parent = pid;\n }\n },\n _move_branch: function _move_branch(item, old_parent, new_parent) {\n this._eachItemMainRangeCache = null; //this.setParent(item, new_parent);\n //this._sync_parent(task);\n\n this._replace_branch_child(old_parent, item.id);\n\n if (this.exists(new_parent) || new_parent == this.$getRootId()) {\n this._add_branch(item, undefined, new_parent);\n } else {\n delete this._branches[item.id];\n }\n\n item.$level = this.calculateItemLevel(item);\n this.eachItem(function (child) {\n child.$level = this.calculateItemLevel(child);\n }, item.id);\n },\n _replace_branch_child: function _replace_branch_child(node, old_id, new_id) {\n var branch = this.getChildren(node);\n\n if (branch && node !== undefined) {\n var newbranch = powerArray.$create();\n\n for (var i = 0; i < branch.length; i++) {\n if (branch[i] != old_id) newbranch.push(branch[i]);else if (new_id) newbranch.push(new_id);\n }\n\n this._branches[node] = newbranch;\n }\n },\n sort: function sort(field, desc, parent) {\n if (!this.exists(parent)) {\n parent = this.$getRootId();\n }\n\n if (!field) field = \"order\";\n var criteria = typeof field == \"string\" ? function (a, b) {\n if (a[field] == b[field] || helpers.isDate(a[field]) && helpers.isDate(b[field]) && a[field].valueOf() == b[field].valueOf()) {\n return 0;\n }\n\n var result = a[field] > b[field];\n return result ? 1 : -1;\n } : field;\n\n if (desc) {\n var original_criteria = criteria;\n\n criteria = function criteria(a, b) {\n return original_criteria(b, a);\n };\n }\n\n var els = this.getChildren(parent);\n\n if (els) {\n var temp = [];\n\n for (var i = els.length - 1; i >= 0; i--) {\n temp[i] = this.getItem(els[i]);\n }\n\n temp.sort(criteria);\n\n for (var i = 0; i < temp.length; i++) {\n els[i] = temp[i].id;\n this.sort(field, desc, els[i]);\n }\n }\n },\n filter: function filter(rule) {\n for (var i in this.pull) {\n if (this.pull[i].$rendered_parent !== this.getParent(this.pull[i])) {\n this._move_branch(this.pull[i], this.pull[i].$rendered_parent, this.getParent(this.pull[i]));\n }\n }\n\n return DataStore.prototype.filter.apply(this, arguments);\n },\n open: function open(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = true;\n this.callEvent(\"onItemOpen\", [id]);\n }\n },\n close: function close(id) {\n if (this.exists(id)) {\n this.getItem(id).$open = false;\n this.callEvent(\"onItemClose\", [id]);\n }\n },\n destructor: function destructor() {\n DataStore.prototype.destructor.call(this);\n this._branches = null;\n this._indexRangeCache = {};\n this._eachItemMainRangeCache = null;\n }\n}, DataStore.prototype);\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n $create: function $create(array) {\n return utils.mixin(array || [], this);\n },\n //remove element at specified position\n $removeAt: function $removeAt(pos, len) {\n if (pos >= 0) this.splice(pos, len || 1);\n },\n //find element in collection and remove it\n $remove: function $remove(value) {\n this.$removeAt(this.$find(value));\n },\n //add element to collection at specific position\n $insertAt: function $insertAt(data, pos) {\n if (!pos && pos !== 0) //add to the end by default\n this.push(data);else {\n var b = this.splice(pos, this.length - pos);\n this[pos] = data;\n this.push.apply(this, b); //reconstruct array without loosing this pointer\n }\n },\n //return index of element, -1 if it doesn't exists\n $find: function $find(data) {\n for (var i = 0; i < this.length; i++) {\n if (data == this[i]) return i;\n }\n\n return -1;\n },\n //execute some method for each element of array\n $each: function $each(functor, master) {\n for (var i = 0; i < this.length; i++) {\n functor.call(master || this, this[i]);\n }\n },\n //create new array from source, by using results of functor\n $map: function $map(functor, master) {\n for (var i = 0; i < this.length; i++) {\n this[i] = functor.call(master || this, this[i]);\n }\n\n return this;\n },\n $filter: function $filter(functor, master) {\n for (var i = 0; i < this.length; i++) {\n if (!functor.call(master || this, this[i])) {\n this.splice(i, 1);\n i--;\n }\n }\n\n return this;\n }\n};\nmodule.exports = $powerArray;","var powerArray = require(\"./power_array\");\n\nvar utils = require(\"../../utils/utils\");\n\nvar eventable = require(\"../../utils/eventable\");\n\nvar isPlaceholderTask = require(\"../../utils/placeholder_task\");\n\nvar DataStore = function DataStore(config) {\n this.pull = {};\n this.$initItem = config.initItem;\n this.visibleOrder = powerArray.$create();\n this.fullOrder = powerArray.$create();\n this._skip_refresh = false;\n this._filterRule = null;\n this._searchVisibleOrder = {};\n this._indexRangeCache = {};\n this._getItemsCache = null;\n this.$config = config;\n eventable(this);\n\n this._attachDataChange(function () {\n this._indexRangeCache = {};\n this._getItemsCache = null;\n return true;\n });\n\n return this;\n};\n\nDataStore.prototype = {\n _attachDataChange: function _attachDataChange(callback) {\n this.attachEvent(\"onClearAll\", callback);\n this.attachEvent(\"onBeforeParse\", callback);\n this.attachEvent(\"onBeforeUpdate\", callback);\n this.attachEvent(\"onBeforeDelete\", callback);\n this.attachEvent(\"onBeforeAdd\", callback);\n this.attachEvent(\"onParse\", callback);\n this.attachEvent(\"onBeforeFilter\", callback);\n },\n _parseInner: function _parseInner(data) {\n var item = null,\n loaded = [];\n\n for (var i = 0, len = data.length; i < len; i++) {\n item = data[i];\n\n if (this.$initItem) {\n if (this.$config.copyOnParse()) {\n item = utils.copy(item);\n }\n\n item = this.$initItem(item);\n }\n\n if (this.callEvent(\"onItemLoading\", [item])) {\n if (!this.pull.hasOwnProperty(item.id)) {\n this.fullOrder.push(item.id);\n }\n\n loaded.push(item);\n this.pull[item.id] = item;\n }\n }\n\n return loaded;\n },\n parse: function parse(data) {\n if (!this.isSilent()) {\n this.callEvent(\"onBeforeParse\", [data]);\n }\n\n var loaded = this._parseInner(data);\n\n if (!this.isSilent()) {\n this.refresh();\n this.callEvent(\"onParse\", [loaded]);\n }\n },\n getItem: function getItem(id) {\n return this.pull[id];\n },\n _updateOrder: function _updateOrder(code) {\n code.call(this.visibleOrder);\n code.call(this.fullOrder);\n },\n updateItem: function updateItem(id, item) {\n if (!utils.defined(item)) item = this.getItem(id);\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeUpdate\", [item.id, item]) === false) return false;\n } // This is how it worked before updating the properties:\n // this.pull[id]=item;\n\n\n utils.mixin(this.pull[id], item, true);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterUpdate\", [item.id, item]);\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"update\"]);\n }\n },\n _removeItemInner: function _removeItemInner(id) {\n //clear from collections\n //this.visibleOrder.$remove(id);\n this._updateOrder(function () {\n this.$remove(id);\n });\n\n delete this.pull[id];\n },\n removeItem: function removeItem(id) {\n //utils.assert(this.exists(id), \"Not existing ID in remove command\"+id);\n var obj = this.getItem(id); //save for later event\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeDelete\", [obj.id, obj]) === false) return false;\n }\n\n this.callEvent(\"onAfterDeleteConfirmed\", [obj.id, obj]);\n\n this._removeItemInner(id);\n\n if (!this.isSilent()) {\n this.filter();\n this.callEvent(\"onAfterDelete\", [obj.id, obj]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [obj.id, obj, \"delete\"]);\n }\n },\n _addItemInner: function _addItemInner(item, index) {\n //in case of treetable order is sent as 3rd parameter\n //var order = index;\n if (this.exists(item.id)) {\n this.silent(function () {\n this.updateItem(item.id, item);\n });\n } else {\n var order = this.visibleOrder; //by default item is added to the end of the list\n\n var data_size = order.length;\n if (!utils.defined(index) || index < 0) index = data_size; //check to prevent too big indexes\n\n if (index > data_size) {\n //dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n index = Math.min(order.length, index);\n }\n } //gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\n this.pull[item.id] = item;\n\n if (!this.isSilent()) {\n this._updateOrder(function () {\n if (this.$find(item.id) === -1) this.$insertAt(item.id, index);\n });\n }\n\n this.filter(); //order.$insertAt(item.id,index);\n },\n isVisible: function isVisible(id) {\n return this.visibleOrder.$find(id) > -1;\n },\n getVisibleItems: function getVisibleItems() {\n return this.getIndexRange();\n },\n addItem: function addItem(item, index) {\n if (!utils.defined(item.id)) item.id = utils.uid();\n\n if (this.$initItem) {\n item = this.$initItem(item);\n }\n\n if (!this.isSilent()) {\n if (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n }\n\n this._addItemInner(item, index);\n\n if (!this.isSilent()) {\n this.callEvent(\"onAfterAdd\", [item.id, item]); //repaint signal\n\n this.callEvent(\"onStoreUpdated\", [item.id, item, \"add\"]);\n }\n\n return item.id;\n },\n _changeIdInner: function _changeIdInner(oldId, newId) {\n if (this.pull[oldId]) this.pull[newId] = this.pull[oldId];\n var visibleOrder = this._searchVisibleOrder[oldId];\n this.pull[newId].id = newId;\n\n this._updateOrder(function () {\n this[this.$find(oldId)] = newId;\n });\n\n this._searchVisibleOrder[newId] = visibleOrder;\n delete this._searchVisibleOrder[oldId]; //this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\n delete this.pull[oldId];\n },\n changeId: function changeId(oldId, newId) {\n this._changeIdInner(oldId, newId);\n\n this.callEvent(\"onIdChange\", [oldId, newId]);\n },\n exists: function exists(id) {\n return !!this.pull[id];\n },\n _moveInner: function _moveInner(sindex, tindex) {\n var id = this.getIdByIndex(sindex);\n\n this._updateOrder(function () {\n this.$removeAt(sindex);\n this.$insertAt(id, Math.min(this.length, tindex));\n }); //this.visibleOrder.$removeAt(sindex);\t//remove at old position\n //if (sindex=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// 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 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 div.setAttribute(\"aria-selected\", gantt.isSelectedTask(task.id) ? \"true\" : \"false\");\n },\n setTaskBarAttr: function setTaskBarAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.drag_move) {\n if (task.id != gantt.getState(\"tasksDnd\").drag_id) {\n div.setAttribute(\"aria-grabbed\", false);\n } else {\n div.setAttribute(\"aria-grabbed\", true);\n }\n }\n },\n taskRowAttr: function taskRowAttr(task, div) {\n this._taskCommonAttr(task, div);\n\n if (!gantt.isReadonly(task) && gantt.config.order_branch) {\n div.setAttribute(\"aria-grabbed\", false);\n }\n\n div.setAttribute(\"role\", \"row\");\n div.setAttribute(\"aria-level\", task.$level);\n\n if (gantt.hasChild(task.id)) {\n div.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n }\n },\n linkAttr: function linkAttr(link, div) {\n var linkTypes = gantt.config.links;\n var toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n var fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n var content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart);\n div.setAttribute(\"aria-label\", stripHTMLLite(content));\n\n if (gantt.isReadonly(link)) {\n div.setAttribute(\"aria-readonly\", true);\n }\n },\n gridSeparatorAttr: function gridSeparatorAttr(div) {\n div.setAttribute(\"role\", \"separator\");\n },\n lightboxHiddenAttr: function lightboxHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n },\n lightboxVisibleAttr: function lightboxVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n lightboxAttr: function lightboxAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n div.setAttribute(\"aria-hidden\", \"true\");\n div.firstChild.setAttribute(\"role\", \"heading\");\n },\n lightboxButtonAttrString: function lightboxButtonAttrString(buttonName) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels[buttonName],\n \"tabindex\": \"0\"\n });\n },\n lightboxHeader: function lightboxHeader(div, headerText) {\n div.setAttribute(\"aria-label\", headerText);\n },\n lightboxSelectAttrString: function lightboxSelectAttrString(time_option) {\n var label = \"\";\n\n switch (time_option) {\n case \"%Y\":\n label = gantt.locale.labels.years;\n break;\n\n case \"%m\":\n label = gantt.locale.labels.months;\n break;\n\n case \"%d\":\n label = gantt.locale.labels.days;\n break;\n\n case \"%H:%i\":\n label = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n break;\n\n default:\n break;\n }\n\n return gantt._waiAria.getAttributeString({\n \"aria-label\": label\n });\n },\n lightboxDurationInputAttrString: function lightboxDurationInputAttrString(section) {\n return this.getAttributeString({\n \"aria-label\": gantt.locale.labels.column_duration,\n \"aria-valuemin\": \"0\"\n });\n },\n gridAttrString: function gridAttrString() {\n return [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n },\n gridScaleRowAttrString: function gridScaleRowAttrString() {\n return \"role='row'\";\n },\n gridScaleCellAttrString: function gridScaleCellAttrString(column, label) {\n var attrs = \"\";\n\n if (column.name == \"add\") {\n attrs = this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n } else {\n var attributes = {\n \"role\": \"columnheader\",\n \"aria-label\": label\n };\n\n if (gantt._sort && gantt._sort.name == column.name) {\n if (gantt._sort.direction == \"asc\") {\n attributes[\"aria-sort\"] = \"ascending\";\n } else {\n attributes[\"aria-sort\"] = \"descending\";\n }\n }\n\n attrs = this.getAttributeString(attributes);\n }\n\n return attrs;\n },\n gridDataAttrString: function gridDataAttrString() {\n return \"role='rowgroup'\";\n },\n gridCellAttrString: function gridCellAttrString(column, textValue, task) {\n var attributes = {\n \"role\": \"gridcell\",\n \"aria-label\": textValue\n };\n\n if (!column.editor || gantt.isReadonly(task)) {\n attributes[\"aria-readonly\"] = true;\n }\n\n return this.getAttributeString(attributes);\n },\n gridAddButtonAttrString: function gridAddButtonAttrString(column) {\n return this.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": gantt.locale.labels.new_task\n });\n },\n messageButtonAttrString: function messageButtonAttrString(buttonLabel) {\n return \"tabindex='0' role='button' aria-label='\" + buttonLabel + \"'\";\n },\n messageInfoAttr: function messageInfoAttr(div) {\n div.setAttribute(\"role\", \"alert\"); //div.setAttribute(\"tabindex\", \"-1\");\n },\n messageModalAttr: function messageModalAttr(div, uid) {\n div.setAttribute(\"role\", \"dialog\");\n\n if (uid) {\n div.setAttribute(\"aria-labelledby\", uid);\n } //\tdiv.setAttribute(\"tabindex\", \"-1\");\n\n },\n quickInfoAttr: function quickInfoAttr(div) {\n div.setAttribute(\"role\", \"dialog\");\n },\n quickInfoHeaderAttrString: function quickInfoHeaderAttrString() {\n return \" role='heading' \";\n },\n quickInfoHeader: function quickInfoHeader(div, header) {\n div.setAttribute(\"aria-label\", header);\n },\n quickInfoButtonAttrString: function quickInfoButtonAttrString(label) {\n return gantt._waiAria.getAttributeString({\n \"role\": \"button\",\n \"aria-label\": label,\n \"tabindex\": \"0\"\n });\n },\n tooltipAttr: function tooltipAttr(div) {\n div.setAttribute(\"role\", \"tooltip\");\n },\n tooltipVisibleAttr: function tooltipVisibleAttr(div) {\n div.setAttribute(\"aria-hidden\", \"false\");\n },\n tooltipHiddenAttr: function tooltipHiddenAttr(div) {\n div.setAttribute(\"aria-hidden\", \"true\");\n }\n };\n\n function isDisabled() {\n return !gantt.config.wai_aria_attributes;\n }\n\n for (var i in gantt._waiAria) {\n gantt._waiAria[i] = function (payload) {\n return function () {\n if (isDisabled()) {\n return \"\";\n }\n\n return payload.apply(this, arguments);\n };\n }(gantt._waiAria[i]);\n }\n};","module.exports = function (gantt) {\n gantt._extend_to_optional = function (lightbox_block) {\n var duration = lightbox_block;\n var optional_time = {\n render: duration.render,\n focus: duration.focus,\n set_value: function set_value(node, value, task, section) {\n var mapping = gantt._resolve_default_mapping(section);\n\n if (!task[mapping.start_date] || mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task)) {\n optional_time.disable(node, section);\n var val = {};\n\n for (var i in mapping) {\n //take default values from the time control from task start/end dates\n val[mapping[i]] = task[i];\n }\n\n return duration.set_value.call(gantt, node, value, val, section); //set default value\n } else {\n optional_time.enable(node, section);\n return duration.set_value.call(gantt, node, value, task, section);\n }\n },\n get_value: function get_value(node, task, section) {\n if (section.disabled) {\n return {\n start_date: null\n };\n } else {\n return duration.get_value.call(gantt, node, task, section);\n }\n },\n update_block: function update_block(node, section) {\n gantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n node.style.display = section.disabled ? \"none\" : \"block\";\n\n if (section.button) {\n var button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n labels = gantt.locale.labels;\n var button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n button.innerHTML = button_text;\n }\n\n gantt.resizeLightbox();\n },\n disable: function disable(node, section) {\n section.disabled = true;\n optional_time.update_block(node, section);\n },\n enable: function enable(node, section) {\n section.disabled = false;\n optional_time.update_block(node, section);\n },\n button_click: function button_click(index, el, section, container) {\n if (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n return;\n }\n\n var config = gantt._get_typed_lightbox_config()[index];\n\n if (config.disabled) {\n optional_time.enable(container, config);\n } else {\n optional_time.disable(container, config);\n }\n }\n };\n return optional_time;\n };\n\n gantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n gantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n};","var __extends = require(\"../../../../utils/extends\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./select_control\")(gantt);\n\n function TypeselectControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(TypeselectControl, _super);\n\n TypeselectControl.prototype.render = function (sns) {\n var types = gantt.config.types,\n locale = gantt.locale.labels,\n options = [];\n\n var filter = sns.filter || function (typeKey, typeValue) {\n if (!types.placeholder || typeValue !== types.placeholder) {\n return true;\n }\n\n return false;\n };\n\n for (var i in types) {\n if (!filter(i, types[i]) === false) {\n options.push({\n key: types[i],\n label: locale[\"type_\" + i]\n });\n }\n }\n\n sns.options = options;\n var oldOnChange = sns.onchange;\n\n sns.onchange = function () {\n gantt.changeLightboxType(this.value);\n\n if (this.value === gantt.config.types.task) {\n gantt._lightbox_new_type = \"task\";\n }\n\n if (typeof oldOnChange == 'function') {\n oldOnChange.apply(this, arguments);\n }\n };\n\n return _super.prototype.render.apply(this, arguments);\n };\n\n return TypeselectControl;\n};","var __extends = require(\"../../../../utils/extends\");\n\nvar htmlHelpers = require(\"../../utils/html_helpers\");\n\nmodule.exports = function (gantt) {\n var _super = require(\"./base_control\")(gantt);\n\n function ConstraintControl() {\n var self = _super.apply(this, arguments) || this;\n return self;\n }\n\n __extends(ConstraintControl, _super);\n\n function isNonTimedConstraint(value) {\n if (!value || value === gantt.config.constraint_types.ASAP || value === gantt.config.constraint_types.ALAP) {\n return true;\n } else {\n return false;\n }\n }\n\n function toggleTimeSelect(timeSelects, typeValue) {\n var isNonTimed = isNonTimedConstraint(typeValue);\n\n for (var i = 0; i < timeSelects.length; i++) {\n timeSelects[i].disabled = isNonTimed;\n }\n }\n\n ConstraintControl.prototype.render = function (sns) {\n var height = (sns.height || 30) + \"px\";\n var html = \"
\";\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\n gantt._lightbox_root.appendChild(this._cover);\n };\n\n gantt.event(window, \"deviceorientation\", function () {\n if (gantt.getState().lightbox) {\n gantt._center_lightbox(gantt.getLightbox());\n }\n });\n\n gantt._init_lightbox_events = function () {\n gantt.lightbox_events = {};\n\n gantt.lightbox_events.gantt_save_btn = function () {\n gantt._save_lightbox();\n };\n\n gantt.lightbox_events.gantt_delete_btn = function () {\n gantt._lightbox_new_type = null;\n if (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id])) return;\n\n if (gantt.isTaskExists(gantt._lightbox_id)) {\n gantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n } else {\n gantt.hideLightbox();\n }\n };\n\n gantt.lightbox_events.gantt_cancel_btn = function () {\n gantt._cancel_lightbox();\n };\n\n gantt.lightbox_events[\"default\"] = function (e, src) {\n if (src.getAttribute(\"data-dhx-button\")) {\n gantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n } else {\n var index, block, sec;\n var className = domHelpers.getClassName(src);\n\n if (className.indexOf(\"gantt_custom_button\") != -1) {\n if (className.indexOf(\"gantt_custom_button_\") != -1) {\n index = src.parentNode.getAttribute(\"data-index\");\n sec = src;\n\n while (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n sec = sec.parentNode;\n }\n } else {\n index = src.getAttribute(\"data-index\");\n sec = src.parentNode;\n src = src.firstChild;\n }\n }\n\n var sections = gantt._get_typed_lightbox_config();\n\n if (index) {\n index = index * 1;\n block = gantt.form_blocks[sections[index * 1].type];\n block.button_click(index, src, sec, sec.nextSibling);\n }\n }\n };\n\n this.event(gantt.getLightbox(), \"click\", function (e) {\n e = e || window.event;\n var src = domHelpers.getTargetNode(e);\n var className = domHelpers.getClassName(src);\n\n if (!className) {\n src = src.previousSibling;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n src = src.firstChild;\n className = domHelpers.getClassName(src);\n }\n\n if (src && className) {\n var func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n return func(e, src);\n }\n\n return false;\n });\n\n gantt.getLightbox().onkeydown = function (e) {\n var event = e || window.event;\n var target = e.target || e.srcElement;\n var buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n switch ((e || event).keyCode) {\n case gantt.constants.KEY_CODES.SPACE:\n {\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n }\n\n break;\n }\n\n case gantt.keys.edit_save:\n if ((e || event).shiftKey) return;\n\n if (buttonTarget && target.click) {\n target.click();\n } else {\n gantt._save_lightbox();\n }\n\n break;\n\n case gantt.keys.edit_cancel:\n gantt._cancel_lightbox();\n\n break;\n\n default:\n break;\n }\n };\n };\n\n gantt._cancel_lightbox = function () {\n var task = this.getLightboxValues();\n this.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\n if (gantt.isTaskExists(task.id) && task.$new) {\n this.silent(function () {\n gantt.$data.tasksStore.removeItem(task.id);\n\n gantt._update_flags(task.id, null);\n });\n }\n\n this.refreshData();\n this.hideLightbox();\n };\n\n gantt._save_lightbox = function () {\n var task = this.getLightboxValues();\n if (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new])) return;\n\n if (task.$new) {\n delete task.$new;\n this.addTask(task, task.parent, this.getTaskIndex(task.id));\n } else if (this.isTaskExists(task.id)) {\n this.mixin(this.getTask(task.id), task, true);\n this.refreshTask(task.id);\n this.updateTask(task.id);\n }\n\n this.refreshData(); // TODO: do we need any blockable events here to prevent closing lightbox?\n\n this.hideLightbox();\n };\n\n gantt._resolve_default_mapping = function (section) {\n var mapping = section.map_to;\n var time_controls = {\n \"time\": true,\n \"time_optional\": true,\n \"duration\": true,\n \"duration_optional\": true\n };\n\n if (time_controls[section.type]) {\n if (section.map_to == \"auto\") {\n mapping = {\n start_date: \"start_date\",\n end_date: \"end_date\",\n duration: \"duration\"\n };\n } else if (typeof section.map_to === \"string\") {\n mapping = {\n start_date: section.map_to\n };\n }\n } else if (section.type === \"constraint\") {\n if (!section.map_to || typeof section.map_to === \"string\") {\n mapping = {\n constraint_type: \"constraint_type\",\n constraint_date: \"constraint_date\"\n };\n }\n }\n\n return mapping;\n };\n\n gantt.getLightboxValues = function () {\n var task = {};\n\n if (gantt.isTaskExists(this._lightbox_id)) {\n task = this.mixin({}, this.getTask(this._lightbox_id));\n }\n\n var sns = this._get_typed_lightbox_config();\n\n for (var i = 0; i < sns.length; i++) {\n var node = 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 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 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.gridSeparatorAttr(resize_el);\n\n return resize_el;\n }\n\n return {\n render: _render_grid_item,\n update: null,\n getRectangle: getRowRectangle,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createGridTaskRowResizerRender;","var getRectangle = require(\"./viewport/get_bg_row_rectangle\");\n\nvar getVisibleRange = require(\"./viewport/get_visible_bars_range\");\n\nvar getVisibleCellsRange = require(\"./viewport/get_visible_cells_range\");\n\nvar isColumnVisible = require(\"./viewport/is_column_visible\");\n\nvar resourceTimetable = require(\"../../resource_timetable_builder\");\n\nfunction renderBar(level, start, end, timeline) {\n var top = (1 - (level * 1 || 0)) * 100;\n var left = timeline.posFromDate(start);\n var right = timeline.posFromDate(end);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_hor_bar\";\n element.style.top = top + '%';\n element.style.left = left + \"px\";\n element.style.width = right - left + 1 + \"px\";\n return element;\n}\n\nfunction renderConnection(prevLevel, nextLevel, left) {\n if (prevLevel === nextLevel) {\n return null;\n }\n\n var top = 1 - Math.max(prevLevel, nextLevel);\n var height = Math.abs(prevLevel - nextLevel);\n var element = document.createElement(\"div\");\n element.className = \"gantt_histogram_vert_bar\";\n element.style.top = top * 100 + \"%\";\n element.style.height = height * 100 + \"%\";\n element.style.left = left + \"px\";\n return element;\n}\n\nfunction generateRenderResourceHistogram(gantt) {\n var getResourceLoad = resourceTimetable(gantt);\n var renderedHistogramCells = {};\n var renderedHistogramRows = {};\n var renderedHistogramCapacity = {};\n\n function detachRenderedHistogramCell(id, index) {\n var renderedRow = renderedHistogramCells[id];\n\n if (renderedRow && renderedRow[index] && renderedRow[index].parentNode) {\n renderedRow[index].parentNode.removeChild(renderedRow[index]);\n }\n }\n\n function renderHistogramLine(capacity, timeline, maxCapacity, viewport) {\n var scale = timeline.getScale();\n var el = document.createElement(\"div\");\n var range = getVisibleCellsRange(scale, viewport);\n\n for (var i = range.start; i <= range.end; i++) {\n var colStart = scale.trace_x[i];\n var colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n var col = scale.trace_x[i].valueOf();\n var level = Math.min(capacity[col] / maxCapacity, 1) || 0; // do not render histogram for lines with below zero capacity, as it's reserved for folders\n\n if (level < 0) {\n return null;\n }\n\n var nextLevel = Math.min(capacity[colEnd.valueOf()] / maxCapacity, 1) || 0;\n var bar = renderBar(level, colStart, colEnd, timeline);\n\n if (bar) {\n el.appendChild(bar);\n }\n\n var connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\n if (connection) {\n el.appendChild(connection);\n }\n }\n\n return el;\n }\n\n function renderCapacityElement(resource, sizes, capacityMatrix, config, timeline, maxCapacity, viewport) {\n var renderedElement = renderedHistogramCapacity[resource.id];\n\n if (renderedElement && renderedElement.parentNode) {\n renderedElement.parentNode.removeChild(renderedElement);\n }\n\n var capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity, viewport);\n\n if (capacityElement && sizes) {\n capacityElement.setAttribute(\"data-resource-id\", resource.id);\n capacityElement.setAttribute(timeline.$config.item_attribute, resource.id);\n capacityElement.style.position = \"absolute\";\n capacityElement.style.top = sizes.top + 1 + \"px\";\n capacityElement.style.height = timeline.getItemHeight(resource.id) - 1 + \"px\";\n capacityElement.style.left = 0;\n }\n\n return capacityElement;\n }\n\n function renderHistogramCell(resource, sizes, maxCapacity, config, templates, day, timeline) {\n var css = templates.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks, day.assignments);\n var height = timeline.getItemHeight(resource.id) - 1;\n\n if (css || content) {\n var el = document.createElement('div');\n el.className = [\"gantt_histogram_cell\", css].join(\" \");\n el.setAttribute(timeline.$config.item_attribute, resource.id);\n el.style.cssText = ['left:' + sizes.left + 'px', 'width:' + sizes.width + 'px', 'height:' + height + 'px', 'line-height:' + height + 'px', 'top:' + (sizes.top + 1) + 'px'].join(\";\");\n\n if (content) {\n content = \"
\" + 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/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\n function renderSplitTask(task, timeline) {\n if (task.rollup !== false && task.$rollup && task.$rollup.length) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n task.$rollup.forEach(function (itemId) {\n var child = gantt.copy(gantt.getTask(itemId));\n child.$rendered_at = task.id;\n var displayRollup = gantt.callEvent(\"onBeforeRollupTaskDisplay\", [child.id, child, task.id]);\n\n if (displayRollup === false) {\n return;\n }\n\n var element = defaultRender(child, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_rollup_child\");\n element.setAttribute(\"data-rollup-parent-id\", task.id);\n el.appendChild(element);\n });\n return el;\n }\n\n return false;\n }\n\n return {\n render: renderSplitTask,\n update: null,\n //getRectangle: getBarRectangle\n isInViewPort: isInViewPort,\n getVisibleRange: getVisibleRange\n };\n}\n\nmodule.exports = createTaskRenderer;","var isBarInViewport = require(\"./is_bar_in_viewport\");\n\nmodule.exports = function isSplitTaskInViewport(item, viewport, view, config, gantt) {\n if (!gantt.isSplitTask(item)) {\n return false;\n }\n\n var range = gantt.getSubtaskDates(item.id);\n return isBarInViewport({\n id: item.id,\n start_date: range.start_date,\n end_date: range.end_date,\n parent: item.parent\n }, viewport, view, gantt);\n};","var createBaseBarRender = require(\"./task_bar_render\"); //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 var isProject = gantt.isSummaryTask(child);\n\n if (isProject) {\n gantt.resetProjectDates(child);\n }\n\n var element = defaultRender(child, timeline);\n if (!element) return;\n var height = timeline.getBarHeight(task.id, child.type == gantt.config.types.milestone);\n var padding = Math.floor((timeline.getItemHeight(task.id) - height) / 2);\n element.style.top = sizes.top + padding + \"px\";\n element.classList.add(\"gantt_split_child\");\n\n if (isProject) {\n element.classList.add(\"gantt_split_subproject\");\n }\n\n return element;\n }\n\n function renderSplitTask(task, timeline, config, viewPort) {\n if (gantt.isSplitTask(task) && (gantt.config.open_split_tasks && !task.$open || !gantt.config.open_split_tasks)) {\n var el = document.createElement('div'),\n sizes = gantt.getTaskPosition(task);\n\n if (gantt.hasChild(task.id)) {\n gantt.eachTask(function (realChild) {\n var isVisible = checkVisibility(realChild, viewPort, timeline, config, gantt);\n\n if (!isVisible) {\n return;\n }\n\n if (realChild.hide_bar) {\n return;\n }\n\n var childCopy = gantt.copy(gantt.getTask(realChild.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 = generateChildElement(task, realChild, timeline, sizes);\n renderedNodes[realChild.id] = element;\n el.appendChild(element);\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 (gantt.hasChild(task.id)) {\n var el = document.createElement(\"div\"),\n sizes = gantt.getTaskPosition(task);\n gantt.eachTask(function (child) {\n var isVisible = checkVisibility(child, viewPort, timeline, config, gantt);\n\n if (isVisible !== !!renderedNodes[child.id]) {\n if (isVisible) {\n var element = generateChildElement(task, child, timeline, sizes);\n renderedNodes[child.id] = element;\n } else {\n renderedNodes[child.id] = false;\n }\n }\n\n if (!!renderedNodes[child.id]) {\n el.appendChild(renderedNodes[child.id]);\n }\n\n itemNode.innerHTML = el.innerHTML;\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 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 getVisibleLinksRange = require(\"./render/viewport/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 if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: getVisibleTaskRange\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = getVisibleTaskRange;\n }\n }\n\n config.view = \"timeline\";\n return taskLayers.addLayer(config);\n },\n _getTaskLayers: function _getTaskLayers() {\n return taskLayers.getLayers();\n },\n removeTaskLayer: function removeTaskLayer(id) {\n taskLayers.removeLayer(id);\n },\n _clearTaskLayers: function _clearTaskLayers() {\n taskLayers.clear();\n },\n addLinkLayer: function addLinkLayer(config) {\n if (typeof config === \"function\") {\n config = {\n renderer: {\n render: config,\n getVisibleRange: getVisibleLinksRange\n }\n };\n } else {\n if (config.renderer && !config.renderer.getVisibleRange) {\n config.renderer.getVisibleRange = getVisibleLinksRange;\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 gantt.getDatastore(storeNames[i]).callEvent(\"onBeforeRefreshAll\", []);\n }\n });\n this.$layout.attachEvent(\"onResize\", function () {\n gantt._quickRefresh(function () {\n gantt.refreshData();\n });\n });\n this.callEvent(\"onGanttLayoutReady\", []);\n this.$layout.render();\n this.$container = this.$layout.$container.firstChild;\n addResizeListener(this);\n }.bind(gantt);\n\n gantt.resetLayout = function () {\n dropLayout();\n rebuildLayout();\n this.render();\n };\n\n gantt._reinit = function (node) {\n this.callEvent(\"onBeforeGanttReady\", []);\n\n this._update_flags();\n\n var config = this.$services.getService(\"templateLoader\");\n config.initTemplates(this);\n dropLayout();\n this.$root = null;\n\n if (node) {\n this.$root = domHelpers.toNode(node);\n rebuildLayout();\n this.$mouseEvents.reset(this.$root);\n }\n\n this.callEvent(\"onTemplatesReady\", []);\n this.callEvent(\"onGanttReady\", []);\n this.render();\n };\n\n gantt.$click = {\n buttons: {\n \"edit\": function edit(id) {\n if (gantt.isReadonly(gantt.getTask(id))) {\n return;\n }\n\n gantt.showLightbox(id);\n },\n \"delete\": function _delete(id) {\n var task = gantt.getTask(id);\n\n if (gantt.isReadonly(task)) {\n return;\n }\n\n var question = gantt.locale.labels.confirm_deleting;\n var title = gantt.locale.labels.confirm_deleting_title;\n\n gantt._simple_confirm(question, title, function () {\n if (!gantt.isTaskExists(id)) {\n gantt.hideLightbox();\n return;\n }\n\n if (task.$new) {\n gantt.silent(function () {\n gantt.deleteTask(id, true);\n });\n gantt.refreshData();\n } else {\n gantt.deleteTask(id);\n }\n\n gantt.hideLightbox();\n });\n }\n }\n }; //renders self\n\n gantt.render = function () {\n this.callEvent(\"onBeforeGanttRender\", []);\n var visibleDate;\n\n if (!isHeadless(gantt)) {\n if (!this.config.sort && this._sort) {\n this._sort = undefined;\n }\n\n if (this.$root) {\n if (this.config.rtl) {\n this.$root.classList.add(\"gantt_rtl\");\n this.$root.firstChild.classList.add(\"gantt_rtl\"); // GS-1499\n } else {\n this.$root.classList.remove(\"gantt_rtl\");\n this.$root.firstChild.classList.remove(\"gantt_rtl\"); // GS-1499\n }\n }\n\n var pos = this.getScrollState();\n var posX = pos ? pos.x : 0;\n\n if (this._getHorizontalScrollbar()) {\n var scrollbar = this._getHorizontalScrollbar();\n\n posX = scrollbar.$config.codeScrollLeft || posX || 0;\n }\n\n visibleDate = null;\n\n if (posX) {\n visibleDate = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n }\n }\n\n calculateScaleRange(this);\n\n if (!isHeadless(gantt)) {\n this.$layout.$config.autosize = this.config.autosize;\n var preserveScroll = this.config.preserve_scroll;\n this.config.preserve_scroll = false; // prevent scrolling from layout resize, scroll will be called here later on\n\n this.$layout.resize();\n this.config.preserve_scroll = preserveScroll;\n\n if (this.config.preserve_scroll && pos) {\n // 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 }\n\n var addMinutes = Math.round((minuteTo - minuteFrom) / 60);\n left -= addMinutes;\n added += addMinutes;\n range.start = minuteTo;\n }\n }\n\n var intervalEnd = hourEnd;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, range.start);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinutesUntilHourStart: function _subtractMinutesUntilHourStart(from, duration) {\n var hourStart = this.$gantt.date.hour_start(new Date(from));\n var added = 0;\n var left = duration;\n var hourStartTimestamp = hourStart.getHours() * 60 * 60 + hourStart.getMinutes() * 60 + hourStart.getSeconds();\n var initialDateTimestamp = from.getHours() * 60 * 60 + from.getMinutes() * 60 + from.getSeconds();\n\n var worktimes = this._getWorkHours(from);\n\n for (var i = worktimes.length - 1; i >= 0 && added < duration; i--) {\n var interval = worktimes[i];\n\n if (initialDateTimestamp > interval.start && hourStartTimestamp <= interval.end) {\n var minuteFrom = Math.min(initialDateTimestamp, interval.end);\n var minuteTo = Math.max(hourStartTimestamp, interval.start); //\tvar minuteFrom = Math.max(interval.start, currentHour.start);\n //\tvar minuteTo = Math.min(interval.end, currentHour.end);\n\n var rangeMinutes = (minuteFrom - minuteTo) / 60;\n\n if (rangeMinutes > left) {\n rangeMinutes = left;\n minuteTo = minuteFrom - left * 60;\n }\n\n var addMinutes = Math.abs(Math.round((minuteFrom - minuteTo) / 60));\n left -= addMinutes;\n added += addMinutes;\n initialDateTimestamp = minuteTo;\n }\n }\n\n var intervalEnd = hourStart;\n\n if (added === duration) {\n intervalEnd = new Date(from.getFullYear(), from.getMonth(), from.getDate(), 0, 0, initialDateTimestamp);\n }\n\n return {\n added: added,\n end: intervalEnd\n };\n },\n _subtractMinuteDate: function _subtractMinuteDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || -1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._subtractMinutesUntilHourStart(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n\n while (added < duration) {\n var dayStart = this.$gantt.date.day_start(new Date(start));\n var iterateFromDayEnd = false;\n\n if (start.valueOf() === dayStart.valueOf()) {\n dayStart = this.$gantt.date.add(dayStart, -1, \"day\");\n iterateFromDayEnd = true;\n } //var dayStartTimestamp = this.$gantt.date.day_start(new Date(start)).valueOf();\n\n\n var dayEnd = new Date(dayStart.getFullYear(), dayStart.getMonth(), dayStart.getDate(), 23, 59, 59, 999).valueOf();\n\n if (dayEnd !== calculatedDay) {\n daySchedule = this._getWorkHours(dayStart);\n minutesInDay = this._getMinutesPerDay(dayStart);\n calculatedDay = dayEnd;\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start, iterateFromDayEnd);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n\n if (daySchedule[daySchedule.length - 1].end <= timestamp) {\n if (left > minutesInDay) {\n added += minutesInDay;\n start = this.$gantt.date.add(start, -1, \"day\");\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = daySchedule.length - 1; i >= 0; i--) {\n if (daySchedule[i].start < timestamp - 1 && daySchedule[i].end >= timestamp - 1) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.end && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, -workInterval.durationMinutes, \"minute\");\n } else if (left <= timestamp / 60 - workInterval.startMinute) {\n added += left;\n start = this.$gantt.date.add(start, -left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n start = this._nextDate(start, \"hour\", step);\n } else {\n addedInterval = this._subtractMinutesUntilHourStart(start, left);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n }\n } else {\n if (start.getHours() === 0 && start.getMinutes() === 0 && start.getSeconds() === 0) {\n var prev = this._getClosestWorkTimePast(start, \"hour\");\n\n if (prev.valueOf() === start.valueOf()) {\n var prev = this.$gantt.date.add(start, -1, \"day\");\n\n var times = this._getWorkHours(prev);\n\n if (times.length) {\n var lastInterval = times[times.length - 1];\n prev.setSeconds(lastInterval.durationSeconds);\n }\n }\n\n start = prev;\n } else {\n start = this._getClosestWorkTimePast(new Date(start - 1), \"hour\");\n }\n }\n }\n\n if (added < duration) {\n var durationLeft = duration - added;\n addedInterval = this._subtractMinutesUntilHourStart(start, durationLeft);\n added += addedInterval.added;\n start = addedInterval.end;\n }\n\n return start;\n },\n _calculateMinuteEndDate: function _calculateMinuteEndDate(from, duration, step) {\n var start = new Date(from),\n added = 0;\n step = step || 1;\n duration = Math.abs(duration * 1);\n duration = Math.round(duration);\n\n var addedInterval = this._addMinutesUntilHourEnd(start, duration);\n\n added += addedInterval.added;\n start = addedInterval.end;\n var calculatedDay = 0;\n var daySchedule = [];\n var minutesInDay = 0;\n var minutePresision = undefined;\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; // when the working time settings are set in minutes\n\n if (minutePresision === undefined) {\n minutePresision = false;\n daySchedule.forEach(function (interval) {\n if (interval.startMinute % 60 || interval.endMinute % 60) {\n minutePresision = true;\n }\n });\n }\n }\n\n var left = duration - added;\n\n var timestamp = this._getTimeOfDayStamp(start);\n\n if (!daySchedule.length || !minutesInDay) {\n start = this.$gantt.date.add(this.$gantt.date.day_start(start), 1, \"day\");\n continue;\n }\n\n if (daySchedule[0].start >= timestamp) {\n if (left >= minutesInDay) {\n added += minutesInDay;\n\n if (left == minutesInDay) {\n start = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, daySchedule[daySchedule.length - 1].end);\n break;\n } else {\n start = this.$gantt.date.add(start, 1, \"day\");\n start = this.$gantt.date.day_start(start);\n }\n\n continue;\n }\n }\n\n var isWorkHour = false;\n var workInterval = null;\n\n for (var i = 0; i < daySchedule.length; i++) {\n if (daySchedule[i].start <= timestamp && daySchedule[i].end > timestamp) {\n isWorkHour = true;\n workInterval = daySchedule[i];\n break;\n }\n }\n\n if (isWorkHour) {\n if (timestamp === workInterval.start && left >= workInterval.durationMinutes) {\n added += workInterval.durationMinutes;\n start = this.$gantt.date.add(start, workInterval.durationMinutes, \"minute\");\n } else if (left <= workInterval.endMinute - timestamp / 60) {\n added += left;\n start = this.$gantt.date.add(start, left, \"minute\");\n } else {\n var minutesInHour = this._getMinutesPerHour(start);\n\n if (minutesInHour <= left) {\n added += minutesInHour;\n\n if (minutePresision) {\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};\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 gantt.attachEvent(\"onBeforeBatchUpdate\", function () {\n batchUpdate = true;\n });\n gantt.attachEvent(\"onAfterBatchUpdate\", function () {\n if (needUpdate) {\n var assignmentsHash = {};\n\n for (var i in needUpdateFor) {\n assignmentsHash[i] = gantt.getTaskAssignments(needUpdateFor[i].id);\n }\n\n for (var i in needUpdateFor) {\n _syncAssignments(needUpdateFor[i], assignmentsHash[i]);\n }\n }\n\n needUpdate = false;\n batchUpdate = false;\n needUpdateFor = {};\n });\n gantt.attachEvent(\"onTaskCreated\", function (item) {\n var assignments = _loadAssignmentsFromTask(item);\n\n resourceAssignmentsStore.parse(assignments);\n\n _assignAssignments(item, assignments);\n\n return true;\n });\n gantt.attachEvent(\"onAfterTaskUpdate\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n gantt.attachEvent(\"onAfterTaskAdd\", function (id, item) {\n if (batchUpdate) {\n needUpdate = true;\n needUpdateFor[id] = item;\n } else {\n _syncOnTaskUpdate(item);\n }\n });\n /*\tgantt.attachEvent(\"onRowDragMove\", function (id) {\n \t\t_syncOnTaskUpdate(gantt.getTask(id));\n \t});*/\n\n gantt.attachEvent(\"onRowDragEnd\", function (id) {\n _syncOnTaskUpdate(gantt.getTask(id));\n });\n gantt.$data.tasksStore.attachEvent(\"onAfterDeleteConfirmed\", function (id, item) {\n var deleteIds = [id];\n gantt.eachTask(function (task) {\n deleteIds.push(task.id);\n }, id);\n\n _syncOnTaskDelete(deleteIds);\n });\n gantt.$data.tasksStore.attachEvent(\"onClearAll\", function () {\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n resourceAssignmentsStore.clearAll();\n return true;\n });\n gantt.attachEvent(\"onTaskIdChange\", function (id, new_id) {\n var taskResources = resourceAssignmentsStore.find(function (a) {\n return a.task_id == id;\n });\n taskResources.forEach(function (a) {\n a.task_id = new_id;\n resourceAssignmentsStore.updateItem(a.id);\n });\n\n _updateTaskBack(new_id); //any custom logic here\n\n });\n var resourceAssignmentsCache = null;\n var resourceTaskAssignmentsCache = null;\n var taskAssignmentsCache = null;\n resourceAssignmentsStore.attachEvent(\"onStoreUpdated\", function resetCache() {\n if (batchUpdate) {\n return true;\n }\n\n resourceAssignmentsCache = null;\n resourceTaskAssignmentsCache = null;\n taskAssignmentsCache = null;\n return true;\n });\n\n gantt.getResourceAssignments = function (resourceId, taskId) {\n var searchTaskId = gantt.defined(taskId) && taskId !== null;\n\n if (resourceAssignmentsCache === null) {\n resourceAssignmentsCache = {};\n resourceTaskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!resourceAssignmentsCache[a.resource_id]) {\n resourceAssignmentsCache[a.resource_id] = [];\n }\n\n resourceAssignmentsCache[a.resource_id].push(a);\n var resourceTaskCacheKey = a.resource_id + \"-\" + a.task_id;\n\n if (!resourceTaskAssignmentsCache[resourceTaskCacheKey]) {\n resourceTaskAssignmentsCache[resourceTaskCacheKey] = [];\n }\n\n resourceTaskAssignmentsCache[resourceTaskCacheKey].push(a);\n });\n }\n\n if (searchTaskId) {\n return (resourceTaskAssignmentsCache[resourceId + \"-\" + taskId] || []).slice();\n } else {\n return (resourceAssignmentsCache[resourceId] || []).slice();\n }\n };\n\n gantt.getTaskAssignments = function (taskId) {\n if (taskAssignmentsCache === null) {\n var result = [];\n taskAssignmentsCache = {};\n resourceAssignmentsStore.eachItem(function (a) {\n if (!taskAssignmentsCache[a.task_id]) {\n taskAssignmentsCache[a.task_id] = [];\n }\n\n taskAssignmentsCache[a.task_id].push(a);\n\n if (a.task_id == taskId) {\n result.push(a);\n }\n });\n }\n\n return (taskAssignmentsCache[taskId] || []).slice();\n };\n\n gantt.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);\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.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();\n store.select(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 (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 var order = tasksStore.getVisibleItems();\n\n for (var i = 0; i < order.length; i++) {\n var item = order[i];\n item.$index = i;\n item.$local_index = gantt.getTaskIndex(item.id);\n gantt.resetProjectDates(item);\n }\n });\n tasksStore.attachEvent(\"onFilterItem\", function (id, task) {\n if (gantt.config.show_tasks_outside_timescale) {\n return true;\n }\n\n var min = null,\n max = null;\n\n if (gantt.config.start_date && gantt.config.end_date) {\n if (gantt._isAllowedUnscheduledTask(task)) return true;\n min = gantt.config.start_date.valueOf();\n max = gantt.config.end_date.valueOf();\n if (+task.start_date > max || +task.end_date < +min) return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onIdChange\", function (oldId, newId) {\n gantt._update_flags(oldId, newId);\n\n var changedTask = gantt.getTask(newId);\n\n if (!tasksStore.isSilent()) {\n if (changedTask.$split_subtask || changedTask.rollup) {\n gantt.eachParent(function (parent) {\n gantt.refreshTask(parent.id);\n }, newId);\n }\n }\n });\n tasksStore.attachEvent(\"onAfterUpdate\", function (id) {\n gantt._update_parents(id);\n\n if (gantt.getState(\"batchUpdate\").batch_update) {\n return true;\n }\n\n var task = tasksStore.getItem(id);\n if (!task.$source) task.$source = [];\n\n for (var i = 0; i < task.$source.length; i++) {\n linksStore.refresh(task.$source[i]);\n }\n\n if (!task.$target) task.$target = [];\n\n for (var i = 0; i < task.$target.length; i++) {\n linksStore.refresh(task.$target[i]);\n }\n });\n tasksStore.attachEvent(\"onBeforeItemMove\", function (sid, parent, tindex) {\n // GS-125. Don't allow users to move the placeholder task\n if (isPlaceholderTask(sid, gantt, tasksStore)) {\n //eslint-disable-next-line\n console.log(\"The placeholder task cannot be moved to another position.\");\n return false;\n }\n\n return true;\n });\n tasksStore.attachEvent(\"onAfterItemMove\", function (sid, parent, tindex) {\n var source = gantt.getTask(sid);\n\n if (this.getNextSibling(sid) !== null) {\n source.$drop_target = this.getNextSibling(sid);\n } else if (this.getPrevSibling(sid) !== null) {\n source.$drop_target = \"next:\" + this.getPrevSibling(sid);\n } else {\n source.$drop_target = \"next:null\";\n }\n });\n tasksStore.attachEvent(\"onStoreUpdated\", function (id, item, action) {\n if (action == \"delete\") {\n gantt._update_flags(id, null);\n }\n\n var state = gantt.$services.getService(\"state\");\n\n if (state.getState(\"batchUpdate\").batch_update) {\n return;\n }\n\n if (gantt.config.fit_tasks && action !== \"paint\") {\n var oldState = gantt.getState();\n calculateScaleRange(gantt);\n var newState = gantt.getState(); //this._init_tasks_range();\n\n if (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n gantt.render();\n gantt.callEvent(\"onScaleAdjusted\", []);\n return true;\n }\n }\n\n if (action == \"add\" || action == \"move\" || action == \"delete\") {\n if (gantt.$layout) {\n gantt.$layout.resize();\n }\n } else if (!id) {\n linksStore.refresh();\n }\n });\n linksStore.attachEvent(\"onAfterAdd\", function (id, link) {\n sync_link(link);\n });\n linksStore.attachEvent(\"onAfterUpdate\", function (id, link) {\n sync_links();\n });\n linksStore.attachEvent(\"onAfterDelete\", function (id, link) {\n sync_link_delete(link);\n });\n linksStore.attachEvent(\"onBeforeIdChange\", function (oldId, newId) {\n sync_link_delete(gantt.mixin({\n id: oldId\n }, gantt.$data.linksStore.getItem(newId)));\n sync_link(gantt.$data.linksStore.getItem(newId));\n });\n\n function checkLinkedTaskVisibility(taskId) {\n var isVisible = gantt.isTaskVisible(taskId);\n\n if (!isVisible && gantt.isTaskExists(taskId)) {\n var parent = gantt.getParent(taskId);\n\n if (gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)) {\n parent = gantt.getTask(parent);\n\n if (gantt.isSplitTask(parent)) {\n isVisible = true;\n }\n }\n }\n\n return isVisible;\n }\n\n linksStore.attachEvent(\"onFilterItem\", function (id, link) {\n if (!gantt.config.show_links) {\n return false;\n }\n\n var sourceVisible = checkLinkedTaskVisibility(link.source);\n var targetVisible = checkLinkedTaskVisibility(link.target);\n if (!(sourceVisible && targetVisible) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target))) return false;\n return gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n });\n\n (function () {\n // delete all connected links after task is deleted\n var treeHelper = require(\"../../utils/task_tree_helpers\");\n\n var deletedLinks = {};\n gantt.attachEvent(\"onBeforeTaskDelete\", function (id, item) {\n deletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n return true;\n });\n gantt.attachEvent(\"onAfterTaskDelete\", function (id, item) {\n if (deletedLinks[id]) {\n gantt.$data.linksStore.silent(function () {\n for (var i in deletedLinks[id]) {\n 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};","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\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\text(gantt);\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 = 10;\n\nexport class Undo implements IUndo {\n\n\tmaxSteps = MAX_UNDO_STEPS;\n\tundoEnabled = true;\n\tredoEnabled = true;\n\taction: IUndoPropAction = {\n\t\tcreate: (commands?: IUndoCommand[]): IUndoCommands => {\n\t\t\treturn { commands: (commands ? commands.slice() : []) };\n\t\t},\n\t\tinvert: (action: IUndoCommands): IUndoCommands => {\n\t\t\tconst gantt = this._gantt;\n\t\t\tconst revert = gantt.copy(action);\n\t\t\tconst commands = this.command;\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\n\t\t\t\tconst command = revert.commands[i] = commands.invert(revert.commands[i]);\n\t\t\t\tif (command.type === commands.type.update || command.type === commands.type.move) {\n\t\t\t\t\t[command.value, command.oldValue] = [command.oldValue, command.value];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn revert as IUndoCommands;\n\t\t}\n\t};\n\tcommand: IUndoPropCommand = {\n\t\t// entities that require different processing for undoing-redoing changes (gantt.config.undo_types)\n\t\tentity: null,\n\n\t\t// types of traced actions (gantt.config.undo_actions)\n\t\ttype: null,\n\n\t\tcreate: (value: TUndoValue, oldValue: TUndoValue, type: TActionType, entity: TEntityType): IUndoCommand => {\n\t\t\tconst gantt = this._gantt;\n\t\t\treturn {\n\t\t\t\tentity,\n\t\t\t\ttype,\n\t\t\t\tvalue: gantt.copy(value),\n\t\t\t\toldValue: gantt.copy(oldValue || value)\n\t\t\t};\n\t\t},\n\t\tinvert: (command: IUndoCommand): IUndoCommand => {\n\t\t\tconst gantt = this._gantt;\n\t\t\tconst revert = gantt.copy(command);\n\t\t\trevert.type = this.command.inverseCommands(command.type);\n\t\t\treturn revert;\n\t\t},\n\t\tinverseCommands: (command: TActionType): TActionType => {\n\t\t\tconst gantt = this._gantt;\n\t\t\tconst types = this.command.type;\n\t\t\tswitch (command) {\n\t\t\t\tcase types.update:\n\t\t\t\t\treturn types.update;\n\t\t\t\tcase types.remove:\n\t\t\t\t\treturn types.add;\n\t\t\t\tcase types.add:\n\t\t\t\t\treturn types.remove;\n\t\t\t\tcase types.move:\n\t\t\t\t\treturn types.move;\n\t\t\t\tdefault:\n\t\t\t\t\tgantt.assert(false, \"Invalid command \"+ command);\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate _undoStack = [];\n\tprivate _redoStack = [];\n\tprivate _gantt: any;\n\n\tconstructor(gantt: any){\n\t\tthis._gantt = gantt;\n\t}\n\tgetUndoStack() {\n\t\treturn this._undoStack;\n\t}\n\n\tgetRedoStack() {\n\t\treturn this._redoStack;\n\t}\n\n\tclearUndoStack() {\n\t\tthis._undoStack = [];\n\t}\n\n\tclearRedoStack() {\n\t\tthis._redoStack = [];\n\t}\n\n\tupdateConfigs() {\n\t\tconst gantt = this._gantt;\n\t\tthis.maxSteps = gantt.config.undo_steps || MAX_UNDO_STEPS;\n\t\tthis.command.entity = gantt.config.undo_types;\n\t\tthis.command.type = gantt.config.undo_actions;\n\t\tthis.undoEnabled = !!gantt.config.undo;\n\t\tthis.redoEnabled = !!gantt.config.redo; // GS-873, Redo should work even when the `gantt.config.undo` is disabled.\n\t}\n\n\tundo() {\n\t\tconst gantt = this._gantt;\n\t\tthis.updateConfigs();\n\t\tif (!this.undoEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst action = this._pop(this._undoStack);\n\t\tif (action) {\n\t\t\tthis._reorderCommands(action);\n\t\t}\n\t\tif (gantt.callEvent(\"onBeforeUndo\", [action]) !== false) {\n\t\t\tif (action) {\n\t\t\t\tthis._applyAction(this.action.invert(action));\n\t\t\t\tthis._push(this._redoStack, gantt.copy(action));\n\t\t\t\tgantt.callEvent(\"onAfterUndo\", [action]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tgantt.callEvent(\"onAfterUndo\", [null]);\n\t}\n\n\tredo() {\n\t\tconst gantt = this._gantt;\n\t\tthis.updateConfigs();\n\t\tif (!this.redoEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst action = this._pop(this._redoStack);\n\t\tif (action) {\n\t\t\tthis._reorderCommands(action);\n\t\t}\n\n\t\tif (gantt.callEvent(\"onBeforeRedo\", [action]) !== false) {\n\t\t\tif (action) {\n\t\t\t\tthis._applyAction(action);\n\t\t\t\tthis._push(this._undoStack, gantt.copy(action));\n\t\t\t\tgantt.callEvent(\"onAfterRedo\", [action]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tgantt.callEvent(\"onAfterRedo\", [null]);\n\t}\n\n\t// storeUndo:\n\tlogAction(action: IUndoCommands) {\n\t\tthis._push(this._undoStack, action);\n\t\tthis._redoStack = [];\n\t}\n\n\tprivate _push(stack: TUndoStack, action: IUndoCommands): IUndoCommands {\n\t\tconst gantt = this._gantt;\n\t\tif (!action.commands.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = stack === this._undoStack ? \"onBeforeUndoStack\" : \"onBeforeRedoStack\";\n\t\tif (gantt.callEvent(event, [action]) === false){\n\t\t\treturn;\n\t\t}\n\t\t// commands can be removed from event handler\n\t\tif (!action.commands.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tstack.push(action);\n\t\twhile (stack.length > this.maxSteps) {\n\t\t\tstack.shift();\n\t\t}\n\t\treturn action;\n\t}\n\n\tprivate _pop(stack: TUndoStack): IUndoCommands {\n\t\treturn stack.pop();\n\t}\n\n\tprivate _reorderCommands(action) {\n\t\t// firstly process tasks and only then links\n\t\t// in order to ensure links are added not earlier than their tasks\n\t\t// firstly to 'move' actions and only then updates\n\t\tconst weights = { any: 0, link:1, task:2 };\n\t\tconst actionWeights = { move: 1, any:0 };\n\t\taction.commands.sort(function(a, b) {\n\t\t\tif (a.entity === \"task\" && b.entity === \"task\") {\n\t\t\t\tif (a.type !== b.type) {\n\t\t\t\t\treturn (actionWeights[b.type] || 0) - (actionWeights[a.type] || 0);\n\t\t\t\t} else if (a.type === \"move\" && a.oldValue && b.oldValue && b.oldValue.parent === a.oldValue.parent) {\n\t\t\t\t\treturn a.oldValue.$index - b.oldValue.$index;\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst weightA = weights[a.entity] || weights.any;\n\t\t\t\tconst weightB = weights[b.entity] || weights.any;\n\t\t\t\treturn weightB - weightA;\n\t\t\t}\n\n\t\t});\n\t}\n\n\tprivate _applyAction(action: IUndoCommands) {\n\t\tlet command = null;\n\t\tconst entities = this.command.entity;\n\t\tconst actions = this.command.type;\n\t\tconst gantt = this._gantt;\n\t\tconst methods = {};\n\t\tmethods[entities.task] = {\n\t\t\tadd: \"addTask\",\n\t\t\tget: \"getTask\",\n\t\t\tupdate: \"updateTask\",\n\t\t\tremove: \"deleteTask\",\n\t\t\tmove: \"moveTask\",\n\t\t\tisExists: \"isTaskExists\"\n\t\t};\n\t\tmethods[entities.link] = {\n\t\t\tadd: \"addLink\",\n\t\t\tget: \"getLink\",\n\t\t\tupdate: \"updateLink\",\n\t\t\tremove: \"deleteLink\",\n\t\t\tisExists: \"isLinkExists\"\n\t\t};\n\n\t\tgantt.batchUpdate(function() {\n\t\t\tfor (let i = 0; i < action.commands.length; i++) {\n\t\t\t\tcommand = action.commands[i];\n\t\t\t\tconst method = methods[command.entity][command.type];\n\t\t\t\tconst getMethod = methods[command.entity].get;\n\t\t\t\tconst check = methods[command.entity].isExists;\n\n\t\t\t\tif (command.type === actions.add) {\n\t\t\t\t\tgantt[method](command.oldValue, command.oldValue.parent, command.oldValue.$local_index);\n\t\t\t\t} else if (command.type === actions.remove) {\n\t\t\t\t\tif (gantt[check](command.value.id)) {\n\t\t\t\t\t\tgantt[method](command.value.id);\n\t\t\t\t\t}\n\t\t\t\t} else if (command.type === actions.update) {\n\t\t\t\t\tconst item = gantt[getMethod](command.value.id);\n\t\t\t\t\tfor(const prop in command.value){\n\t\t\t\t\t\tif(!prop.startsWith(\"$\") && !prop.startsWith(\"_\")){\n\t\t\t\t\t\t\titem[prop] = command.value[prop];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tgantt[method](command.value.id);\n\t\t\t\t} else if (command.type === actions.move) {\n\t\t\t\t\tgantt[method](command.value.id, command.value.$local_index, command.value.parent);\n\t\t\t\t\t// GS-680: We should send the changes to the server after we undo vertical reorder\n\t\t\t\t\tgantt.callEvent(\"onRowDragEnd\", [command.value.id]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}","import { IInlineEditState, IMonitor, IUndo, IUndoCommand, TActionType, TEntityType, TUndoValue } from \"./types\";\n\nconst noTrack = {\n\tonBeforeUndo: \"onAfterUndo\",\n\tonBeforeRedo: \"onAfterRedo\"\n};\n\nconst batchActions = [\n\t\"onTaskDragStart\",\n\t\"onAfterTaskUpdate\",\n\t\"onAfterTaskDelete\",\n\t\"onBeforeBatchUpdate\"\n];\n\nexport class Monitor implements IMonitor {\n\tprivate _batchAction = null;\n\tprivate _batchMode = false;\n\tprivate _ignore = false;\n\tprivate _ignoreMoveEvents = false;\n\tprivate _initialTasks = {};\n\tprivate _initialLinks = {};\n\tprivate _nestedTasks = {};\n\tprivate _nestedLinks = {};\n\tprivate _timeout;\n\tprivate _gantt: any;\n\tprivate _undo: IUndo;\n\n\tconstructor(undo: IUndo, gantt: any) {\n\t\tthis._undo = undo;\n\t\tthis._gantt = gantt;\n\t\tthis._attachEvents();\n\t}\n\n\tstore(id: TaskID | LinkID, type: TEntityType, overwrite: boolean = false) {\n\t\tif (type === this._gantt.config.undo_types.task) {\n\t\t\treturn this._storeTask(id, overwrite);\n\t\t}\n\t\tif (type === this._gantt.config.undo_types.link) {\n\t\t\treturn this._storeLink(id, overwrite);\n\t\t}\n\t\treturn false;\n\t}\n\tisMoveEventsIgnored() {\n\t\treturn this._ignoreMoveEvents;\n\t}\n\ttoggleIgnoreMoveEvents(newValue?: boolean) {\n\t\tthis._ignoreMoveEvents = newValue || false;\n\t}\n\tstartIgnore() {\n\t\tthis._ignore = true;\n\t}\n\tstopIgnore() {\n\t\tthis._ignore = false;\n\t}\n\tstartBatchAction() {\n\t\t// try catching updates made from event handlers using timeout\n\t\tif (!this._timeout){\n\t\t\tthis._timeout = setTimeout(() => {\n\t\t\t\tthis.stopBatchAction();\n\t\t\t\tthis._timeout = null;\n\t\t\t}, 10);\n\t\t}\n\n\n\t\tif (this._ignore || this._batchMode) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._batchMode = true;\n\t\tthis._batchAction = this._undo.action.create();\n\t}\n\tstopBatchAction() {\n\t\tif (this._ignore) {\n\t\t\treturn;\n\t\t}\n\t\tconst undo = this._undo;\n\t\tif (this._batchAction) {\n\t\t\tundo.logAction(this._batchAction);\n\t\t}\n\t\tthis._batchMode = false;\n\t\tthis._batchAction = null;\n\t}\n\tonTaskAdded(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.add);\n\t\t}\n\t}\n\tonTaskUpdated(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.update);\n\t\t}\n\t}\n\tonTaskMoved(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\t(task as any).$local_index = this._gantt.getTaskIndex(task.id);\n\t\t\tconst oldValue = this.getInitialTask(task.id);\n\t\t\tif((task as any).$local_index === oldValue.$local_index &&\n\t\t\t\tthis._gantt.getParent(task) === this._gantt.getParent(oldValue)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\tthis._storeEntityCommand(\n\t\t\t\ttask,\n\t\t\t\tthis.getInitialTask(task.id),\n\t\t\t\tthis._undo.command.type.move,\n\t\t\t\tthis._undo.command.entity.task\n\t\t\t);\n\t\t}\n\t}\n\tonTaskDeleted(task: ITask) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeTaskCommand(task, this._undo.command.type.remove);\n\t\t\tif (this._nestedTasks[task.id]) {\n\t\t\t\tconst children = this._nestedTasks[task.id];\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tthis._storeTaskCommand(children[i], this._undo.command.type.remove);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this._nestedLinks[task.id]) {\n\t\t\t\tconst childrenLinks = this._nestedLinks[task.id];\n\t\t\t\tfor (let i = 0; i < childrenLinks.length; i++) {\n\t\t\t\t\tthis._storeLinkCommand(childrenLinks[i], this._undo.command.type.remove);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tonLinkAdded(link: ILink) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.add);\n\t\t}\n\t}\n\tonLinkUpdated(link: ILink) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.update);\n\t\t}\n\t}\n\tonLinkDeleted(link: ILink) {\n\t\tif (!this._ignore) {\n\t\t\tthis._storeLinkCommand(link, this._undo.command.type.remove);\n\t\t}\n\t}\n\tsetNestedTasks(id: TaskID, taskIds: TaskID[]) {\n\t\tconst gantt = this._gantt;\n\t\tlet task = null;\n\t\tconst tasks = [];\n\t\tlet\tlinkIds = this._getLinks(gantt.getTask(id));\n\n\t\tfor (let i = 0; i < taskIds.length; i++) {\n\t\t\ttask = this.setInitialTask(taskIds[i]);\n\t\t\tlinkIds = linkIds.concat(this._getLinks(task));\n\t\t\ttasks.push(task);\n\t\t}\n\n\t\tconst uniqueLinks = {};\n\t\tfor (let i = 0; i < linkIds.length; i++) {\n\t\t\tuniqueLinks[linkIds[i]] = true;\n\t\t}\n\t\tconst links = [];\n\t\tfor (const i in uniqueLinks) {\n\t\t\tlinks.push(this.setInitialLink(i));\n\t\t}\n\t\tthis._nestedTasks[id] = tasks;\n\t\tthis._nestedLinks[id] = links;\n\t}\n\tsetInitialTask(id: TaskID, overwrite?: boolean) {\n\t\tconst gantt = this._gantt;\n\t\tif (overwrite || (!this._initialTasks[id] || !this._batchMode)) {\n\t\t\tconst task = gantt.copy(gantt.getTask(id));\n\t\t\ttask.$index = gantt.getGlobalTaskIndex(id);\n\t\t\ttask.$local_index = gantt.getTaskIndex(id);\n\t\t\tthis.setInitialTaskObject(id, task);\n\t\t}\n\t\treturn this._initialTasks[id];\n\t}\n\tgetInitialTask(id: TaskID) {\n\t\treturn this._initialTasks[id];\n\t}\n\tclearInitialTasks() {\n\t\tthis._initialTasks = {};\n\t}\n\tsetInitialTaskObject(id: TaskID, object: ITask) {\n\t\tthis._initialTasks[id] = object;\n\t}\n\tsetInitialLink(id: LinkID, overwrite?: boolean) {\n\t\tif (!this._initialLinks[id] || !this._batchMode) {\n\t\t\tthis._initialLinks[id] = this._gantt.copy(this._gantt.getLink(id));\n\t\t}\n\t\treturn this._initialLinks[id];\n\t}\n\tgetInitialLink(id: LinkID) {\n\t\treturn this._initialLinks[id];\n\t}\n\tclearInitialLinks() {\n\t\tthis._initialLinks = {};\n\t}\n\tprivate _attachEvents() {\n\t\tlet deleteCacheCooldown = null;\n\t\tconst gantt = this._gantt;\n\n\t\tconst saveInitialAll = () => {\n\t\t\tif (!deleteCacheCooldown) {\n\t\t\t\tdeleteCacheCooldown = setTimeout(() => {\n\t\t\t\t\tdeleteCacheCooldown = null;\n\t\t\t\t});\n\n\t\t\t\tthis.clearInitialTasks();\n\t\t\t\tgantt.eachTask((task: ITask) => {\n\t\t\t\t\tthis.setInitialTask(task.id);\n\t\t\t\t});\n\n\t\t\t\tthis.clearInitialLinks();\n\t\t\t\tgantt.getLinks().forEach((link: ILink) => {\n\t\t\t\t\tthis.setInitialLink(link.id);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tconst getMoveObjectByTaskId = (id: TaskID) => {\n\t\t\treturn gantt.copy(gantt.getTask(id));\n\t\t};\n\n\t\tfor (const i in noTrack) {\n\t\t\tgantt.attachEvent(i, () => {\n\t\t\t\tthis.startIgnore();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tgantt.attachEvent(noTrack[i], () => {\n\t\t\t\tthis.stopIgnore();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\n\t\tfor (let i = 0; i < batchActions.length; i++) {\n\t\t\tgantt.attachEvent(batchActions[i], () => {\n\t\t\t\tthis.startBatchAction();\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\n\t\tgantt.attachEvent(\"onParse\", () => {\n\t\t\tthis._undo.clearUndoStack();\n\t\t\tthis._undo.clearRedoStack();\n\t\t\tsaveInitialAll();\n\t\t});\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", (id: TaskID, task: ITask) => {\n\t\t\tthis.setInitialTask(id, true);\n\t\t\tthis.onTaskAdded(task);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", (id: TaskID, task: ITask) => {\n\t\t\tthis.onTaskUpdated(task);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", (id: TaskID, task: ITask) => {\n\t\t\tthis.onTaskDeleted(task);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterLinkAdd\", (id: LinkID, link: ILink) => {\n\t\t\tthis.setInitialLink(id, true);\n\t\t\tthis.onLinkAdded(link);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterLinkUpdate\", (id: LinkID, link: ILink) => {\n\t\t\tthis.onLinkUpdated(link);\n\t\t});\n\t\tgantt.attachEvent(\"onAfterLinkDelete\", (id: LinkID, link: ILink) => {\n\t\t\tthis.onLinkDeleted(link);\n\t\t});\n\t\tgantt.attachEvent(\"onRowDragEnd\", (id: TaskID, target: TaskID) => {\n\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\n\t\t\tthis.toggleIgnoreMoveEvents();\n\t\t\treturn true;\n\t\t});\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", (id: TaskID) => {\n\t\t\tthis.store(id, gantt.config.undo_types.task);\n\t\t\tconst nested = [];\n\n\t\t\t// remember task indexes in case their being deleted in a loop, so they could be restored in the correct order\n\t\t\tsaveInitialAll();\n\n\t\t\tgantt.eachTask((task: ITask) => {\n\t\t\t\tnested.push(task.id);\n\t\t\t}, id);\n\t\t\tthis.setNestedTasks(id, nested);\n\t\t\treturn true;\n\t\t});\n\t\tconst datastore = gantt.getDatastore(\"task\");\n\n\t\tdatastore.attachEvent(\"onBeforeItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\n\t\t\tif (!this.isMoveEventsIgnored()) {\n\t\t\t\tsaveInitialAll();\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tdatastore.attachEvent(\"onAfterItemMove\", (id: TaskID, parent: TaskID, tindex: number) => {\n\t\t\tif (!this.isMoveEventsIgnored()) {\n\t\t\t\tthis.onTaskMoved(getMoveObjectByTaskId(id));\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onRowDragStart\", (id: TaskID, target: TaskID, e: Event) => {\n\t\t\tthis.toggleIgnoreMoveEvents(true);\n\t\t\tsaveInitialAll();\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onBeforeTaskDrag\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\n\n\t\tgantt.attachEvent(\"onLightbox\", (taskId: TaskID) => this.store(taskId, gantt.config.undo_types.task));\n\n\t\tgantt.attachEvent(\"onBeforeTaskAutoSchedule\", (task: ITask) => {\n\t\t\tthis.store(task.id, gantt.config.undo_types.task);\n\t\t\treturn true;\n\t\t});\n\n\t\tif (gantt.ext.inlineEditors) {\n\t\t\tgantt.ext.inlineEditors.attachEvent(\"onEditStart\", (state: IInlineEditState) => {\n\t\t\t\tthis.store(state.id, gantt.config.undo_types.task);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _storeCommand(command: IUndoCommand) {\n\t\tconst undo = this._undo;\n\t\tundo.updateConfigs();\n\n\t\tif (!undo.undoEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._batchMode) {\n\t\t\tthis._batchAction.commands.push(command);\n\t\t} else {\n\t\t\tconst action = undo.action.create([command]);\n\t\t\tundo.logAction(action);\n\t\t}\n\t}\n\tprivate _storeEntityCommand(obj: TUndoValue, old: TUndoValue, actionType: TActionType, entityType: TEntityType) {\n\t\tconst undo = this._undo;\n\t\tconst command = undo.command.create(obj, old, actionType, entityType);\n\t\tthis._storeCommand(command);\n\t}\n\tprivate _storeTaskCommand(obj: ITask, type: TActionType) {\n\t\tif(this._gantt.isTaskExists(obj.id)){\n\t\t\t(obj as any).$local_index = this._gantt.getTaskIndex(obj.id);\n\t\t}\n\n\t\tthis._storeEntityCommand(obj, this.getInitialTask(obj.id), type, this._undo.command.entity.task);\n\t}\n\tprivate _storeLinkCommand(obj: ILink, type: TActionType) {\n\t\tthis._storeEntityCommand(obj, this.getInitialLink(obj.id), type, this._undo.command.entity.link);\n\t}\n\tprivate _getLinks(task: ITask) {\n\t\treturn task.$source.concat(task.$target);\n\t}\n\tprivate _storeTask(taskId: TaskID, overwrite: boolean = false) {\n\t\tconst gantt = this._gantt;\n\t\tthis.setInitialTask(taskId, overwrite);\n\t\tgantt.eachTask((child: ITask) => {\n\t\t\tthis.setInitialTask(child.id);\n\t\t}, taskId);\n\t\treturn true;\n\t}\n\tprivate _storeLink(linkId: LinkID, overwrite: boolean = false) {\n\t\tthis.setInitialLink(linkId, overwrite);\n\t\treturn true;\n\t}\n}","import { Monitor } from \"./monitor\";\nimport { IMonitor, IUndoCommand, TEntityType, TUndoStack } from \"./types\";\nimport { Undo } from \"./undo\";\n\nexport default function(gantt: any){\n\nconst _undo = new Undo(gantt);\nconst monitor: IMonitor = new Monitor(_undo, gantt);\n\ngantt.config.undo = true;\ngantt.config.redo = true;\n\n/**\n * entities that require different processing for undoing-redoing changes\n * @type {{link: string, task: string}}\n */\ngantt.config.undo_types = {\n\tlink: \"link\",\n\ttask: \"task\"\n};\n\n/**\n * types of traced actions\n * @type {{update: string, remove: string, add: string}}\n */\ngantt.config.undo_actions = {\n\tupdate: \"update\",\n\tremove: \"remove\", // remove item from datastore\n\tadd: \"add\",\n\tmove: \"move\" // move task in grid\n};\n\nif (!gantt.ext) {\n\tgantt.ext = {};\n}\n\ngantt.ext.undo = {\n\tundo: () => _undo.undo(),\n\tredo: () => _undo.redo(),\n\tgetUndoStack: () => _undo.getUndoStack(),\n\tgetRedoStack: () => _undo.getRedoStack(),\n\tclearUndoStack: () => _undo.clearUndoStack(),\n\tclearRedoStack: () => _undo.clearRedoStack(),\n\tsaveState: (id: TaskID | LinkID, type: TEntityType) => monitor.store(id, type, true)\n};\n\ngantt.undo = gantt.ext.undo.undo;\ngantt.redo = gantt.ext.undo.redo;\ngantt.getUndoStack = gantt.ext.undo.getUndoStack;\ngantt.getRedoStack = gantt.ext.undo.getRedoStack;\ngantt.clearUndoStack = gantt.ext.undo.clearUndoStack;\ngantt.clearRedoStack = gantt.ext.undo.clearRedoStack;\n\nfunction updTask(task: ITask, oldId: TaskID, newId: TaskID) {\n\tif (!task) { return; }\n\n\tif (task.id === oldId) {\n\t\ttask.id = newId;\n\t}\n\n\tif (task.parent === oldId) {\n\t\ttask.parent = newId;\n\t}\n}\n\nfunction changeTaskCommandId(command: IUndoCommand, oldId: TaskID, newId: TaskID) {\n\tupdTask(command.value, oldId, newId);\n\tupdTask(command.oldValue, oldId, newId);\n}\n\nfunction updLink(link: ILink, oldTaskId: TaskID, newTaskId: TaskID) {\n\tif (!link) { return; }\n\tif (link.source === oldTaskId) {\n\t\tlink.source = newTaskId;\n\t}\n\tif (link.target === oldTaskId) {\n\t\tlink.target = newTaskId;\n\t}\n}\n\nfunction changeLinkCommandId(command: IUndoCommand, oldId: LinkID, newId: LinkID) {\n\tupdLink(command.value, oldId, newId);\n\tupdLink(command.oldValue, oldId, newId);\n}\n\nfunction updateTasksIds(log: TUndoStack, oldId: TaskID, newId: TaskID) {\n\tconst undo = _undo;\n\n\tfor (let i = 0; i < log.length; i++) {\n\t\tconst entry = log[i];\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\n\t\t\tif (entry.commands[j].entity === undo.command.entity.task) {\n\t\t\t\tchangeTaskCommandId(entry.commands[j], oldId, newId);\n\t\t\t} else if (entry.commands[j].entity === undo.command.entity.link) {\n\t\t\t\tchangeLinkCommandId(entry.commands[j], oldId, newId);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction updateLinksIds(log: TUndoStack, oldId: LinkID, newId: LinkID) {\n\tconst undo = _undo;\n\n\tfor (let i = 0; i < log.length; i++) {\n\t\tconst entry = log[i];\n\t\tfor (let j = 0; j < entry.commands.length; j++) {\n\t\t\tconst command = entry.commands[j];\n\t\t\tif (command.entity === undo.command.entity.link) {\n\t\t\t\tif (command.value && command.value.id === oldId) {\n\t\t\t\t\tcommand.value.id = newId;\n\t\t\t\t}\n\t\t\t\tif (command.oldValue && command.oldValue.id === oldId) {\n\t\t\t\t\tcommand.oldValue.id = newId;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\ngantt.attachEvent(\"onTaskIdChange\", (oldId: TaskID, newId: TaskID) => {\n\tconst undo = _undo;\n\tupdateTasksIds(undo.getUndoStack(), oldId, newId);\n\tupdateTasksIds(undo.getRedoStack(), oldId, newId);\n});\n\ngantt.attachEvent(\"onLinkIdChange\", (oldId: LinkID, newId: LinkID) => {\n\tconst undo = _undo;\n\tupdateLinksIds(undo.getUndoStack(), oldId, newId);\n\tupdateLinksIds(undo.getRedoStack(), oldId, newId);\n});\n\ngantt.attachEvent(\"onGanttReady\", () => {\n\t_undo.updateConfigs();\n});\n\n}","import * as domHelpers from \"../../core/ui/utils/dom_helpers\";\n\ninterface IViewPosition{\n\ttop: number;\n\tleft: number;\n}\n\ninterface IViewBox extends IViewPosition{\n\twidth: number;\n\theight: number;\n\tbottom: number;\n\tright: number;\n}\n\nexport class Tooltip {\n\tprivate _root: HTMLElement;\n\tprivate _tooltipNode: HTMLElement;\n\tprivate _gantt: any;\n\n\tconstructor(gantt: any){\n\t\tthis._gantt = gantt;\n\t}\n\n\tgetNode() : HTMLElement {\n\t\tconst gantt = this._gantt;\n\t\tif (!this._tooltipNode){\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\n\t\t\tthis._tooltipNode.className = \"gantt_tooltip\";\n\t\t\tgantt._waiAria.tooltipAttr(this._tooltipNode);\n\t\t}\n\t\treturn this._tooltipNode;\n\t}\n\n\tsetViewport(node: HTMLElement):Tooltip{\n\t\tthis._root = node;\n\t\treturn this;\n\t}\n\n\tshow(left: number, top: number): Tooltip;\n\tshow(event: MouseEvent): Tooltip;\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\n\t\tconst gantt = this._gantt;\n\t\tconst container = document.body;\n\t\tconst node = this.getNode();\n\n\t\tif(!domHelpers.isChildOf(node, container)){\n\t\t\tthis.hide();\n\t\t\tcontainer.appendChild(node);\n\t\t}\n\n\t\tif (this._isLikeMouseEvent(left)) {\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\n\t\t\ttop = position.top;\n\t\t\tleft = position.left;\n\t\t}\n\n\t\tnode.style.top = top + \"px\";\n\t\tnode.style.left = left + \"px\";\n\n\t\tgantt._waiAria.tooltipVisibleAttr(node);\n\t\treturn this;\n\t}\n\thide() : Tooltip{\n\t\tconst gantt = this._gantt;\n\t\tconst node = this.getNode();\n\t\tif(node && node.parentNode){\n\t\t\tnode.parentNode.removeChild(node);\n\t\t}\n\t\tgantt._waiAria.tooltipHiddenAttr(node);\n\t\treturn this;\n\t}\n\n\tsetContent(html: string) : Tooltip{\n\t\tconst node = this.getNode();\n\t\tnode.innerHTML = html;\n\t\treturn this;\n\t}\n\n\t// it is for salesforce, because it proxies event to it own events\n\tprivate _isLikeMouseEvent(event: any): boolean {\n\t\tif (!event || typeof event !== \"object\") {\n\t\t\treturn false;\n\t\t}\n\t\treturn \"clientX\" in event && \"clientY\" in event;\n\t}\n\n\tprivate _getViewPort() : HTMLElement {\n\t\treturn this._root || document.body;\n\t}\n\n\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\n\t\tconst gantt = this._gantt;\n\t\t// top/left coordinates inside the viewport by mouse position\n\t\tconst viewport = this._getViewPortSize();\n\t\tconst tooltipNode = this.getNode();\n\t\tconst tooltip: IViewBox = {\n\t\t\ttop:0,\n\t\t\tleft: 0,\n\t\t\twidth: tooltipNode.offsetWidth,\n\t\t\theight: tooltipNode.offsetHeight,\n\t\t\tbottom: 0,\n\t\t\tright: 0\n\t\t};\n\n\t\tconst offsetX = gantt.config.tooltip_offset_x;\n\t\tconst offsetY = gantt.config.tooltip_offset_y;\n\n\t\tconst container = document.body;\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\n\t\tconst containerPos = domHelpers.getNodePosition(container);\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\n\n\t\ttooltip.top = mouse.y;\n\t\ttooltip.left = mouse.x;\n\t\ttooltip.top += offsetY;\n\t\ttooltip.left += offsetX;\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\ttooltip.right = tooltip.left + tooltip.width;\n\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\n\t\tif(tooltip.top < viewport.top - scrollTop){\n\t\t\ttooltip.top = viewport.top;\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\t}else if(tooltip.bottom > viewport.bottom){\n\t\t\ttooltip.bottom = viewport.bottom;\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\n\t\t}\n\n\t\tif(tooltip.left < viewport.left){\n\t\t\ttooltip.left = viewport.left;\n\t\t\ttooltip.right = viewport.left + tooltip.width;\n\t\t}else if(tooltip.right > viewport.right){\n\t\t\ttooltip.right = viewport.right;\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\n\t\t}\n\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\n\t\t}\n\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\n\t\t}\n\n\t\treturn tooltip;\n\t}\n\n\tprivate _getViewPortSize() : IViewBox {\n\t\tconst gantt = this._gantt;\n\t\tconst container = this._getViewPort();\n\t\tlet viewport = container;\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\n\t\tlet pos;\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of gantt\n\t\tif(container === gantt.$task_data){\n\t\t\tviewport = gantt.$task;\n\t\t\tscrollTop = 0;\n\t\t\tscrollLeft = 0;\n\t\t\tpos = domHelpers.getNodePosition(gantt.$task);\n\t\t}else{\n\t\t\tpos = domHelpers.getNodePosition(viewport);\n\t\t}\n\t\treturn {\n\t\t\tleft:pos.x + scrollLeft,\n\t\t\ttop: pos.y + scrollTop,\n\t\t\twidth: pos.width,\n\t\t\theight: pos.height,\n\t\t\tbottom: pos.y + pos.height + scrollTop,\n\t\t\tright: pos.x + pos.width + scrollLeft\n\t\t};\n\t}\n}\n","import * as domEventsScope from \"../../core/ui/utils/dom_event_scope\";\nimport * as domHelpers from \"../../core/ui/utils/dom_helpers\";\nimport * as helpers from \"../../utils/helpers\";\nimport { Tooltip } from \"./tooltip\";\n\ninterface ITrackerTarget {\n\tselector: string;\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\n\tglobal: boolean;\n}\n\ninterface ITooltipConfig {\n\tselector: string;\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\n\tglobal: boolean;\n}\n\nexport class TooltipManager{\n\ttooltip: Tooltip;\n\tprotected _domEvents: any;\n\tprivate _listeners: object = {};\n\tprivate _gantt: any;\n\tprivate delayShow: any;\n\tprivate delayHide: any;\n\n\tconstructor(gantt: any) {\n\t\tthis.tooltip = new Tooltip(gantt);\n\t\tthis._gantt = gantt;\n\t\tthis._domEvents = domEventsScope();\n\t\tthis._initDelayedFunctions();\n\t}\n\n\tdestructor(): void{\n\t\tthis.tooltip.hide();\n\t\tthis._domEvents.detachAll();\n\t}\n\thideTooltip(): void{\n\t\tthis.delayHide();\n\t}\n\tattach(config: ITrackerTarget): void {\n\t\tlet root = document.body;\n\t\tconst gantt = this._gantt;\n\t\tif(!config.global){\n\t\t\troot = gantt.$root;\n\t\t}\n\n\t\tlet watchableTarget = null;\n\t\tconst handler = (event) => {\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst doOnMouseEnter = () => {\n\t\t\t\twatchableTarget = targetNode;\n\t\t\t\tconfig.onmouseenter(event, targetNode);\n\t\t\t};\n\n\t\t\tif(watchableTarget){\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\n\t\t\t\t}else{\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\n\t\t\t\t\twatchableTarget = null;\n\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\n\t\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(targetNode){\n\t\t\t\t\tdoOnMouseEnter();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.detach(config.selector);\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\n\t\tthis._listeners[config.selector] = {\n\t\t\tnode: root,\n\t\t\thandler\n\t\t};\n\t}\n\n\tdetach(selector: string): void {\n\t\tconst listener = this._listeners[selector];\n\t\tif(listener){\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\n\t\t}\n\t}\n\n\ttooltipFor(config: ITooltipConfig): void {\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\n\t\t\tlet clone = event;\n\t\t\t// making events survive timeout in ie\n\t\t\t// tslint:disable-next-line no-string-literal\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\n\t\t\t\t// tslint:disable-next-line no-string-literal\n\t\t\t\tclone = document[\"createEventObject\"](event);\n\t\t\t}\n\t\t\treturn clone;\n\t\t};\n\t\tthis._initDelayedFunctions();\n\t\tthis.attach({\n\t\t\tselector: config.selector,\n\t\t\tglobal: config.global,\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\n\t\t\t\tconst html = config.html(event, node);\n\t\t\t\tif(html){\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\n\t\t\t\tconst html = config.html(event, node);\n\t\t\t\tif(html){\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\n\t\t\t\t}else{\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\t\t\tthis.delayHide();\n\t\t\t\t}\n\t\t\t},\n\t\t\tonmouseleave:() => {\n\t\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\t\tthis.delayHide();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate _initDelayedFunctions(){\n\t\tconst gantt = this._gantt;\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\n\t\tif(this.delayShow){\n\t\t\tthis.delayShow.$cancelTimeout();\n\t\t}\n\t\tif(this.delayHide){\n\t\t\tthis.delayHide.$cancelTimeout();\n\t\t}\n\t\tthis.tooltip.hide();\n\n\t\tthis.delayShow = helpers.delay((event: MouseEvent, html: string) => {\n\t\t\tif(gantt.callEvent(\"onBeforeTooltip\", [event]) === false) {\n\t\t\t\tthis.tooltip.hide();\n\t\t\t} else {\n\t\t\t\tthis.tooltip.setContent(html);\n\t\t\t\tthis.tooltip.show(event);\n\t\t\t}\n\t\t}, gantt.config.tooltip_timeout || 1);\n\n\t\tthis.delayHide = helpers.delay(() => {\n\t\t\tthis.delayShow.$cancelTimeout();\n\t\t\tthis.tooltip.hide();\n\t\t}, gantt.config.tooltip_hide_timeout || 1);\n\t}\n\n}","import {TooltipManager} from \"./tooltipManager\";\n\nexport default function(gantt: any){\n\ngantt.config.tooltip_timeout = 30;\ngantt.config.tooltip_offset_y = 20;\ngantt.config.tooltip_offset_x = 10;\ngantt.config.tooltip_hide_timeout = 30;\n\n\n\nconst tooltipManager = new TooltipManager(gantt);\n\ngantt.ext.tooltips = tooltipManager;\n\ngantt.attachEvent(\"onGanttReady\", function(){\n\n\ttooltipManager.tooltipFor({\n\t\tselector: \"[\"+gantt.config.task_attribute+\"]:not(.gantt_task_row)\",\n\t\thtml: (event: MouseEvent) => {\n\t\t\tif (gantt.config.touch && !gantt.config.touch_tooltip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst targetTaskId = gantt.locate(event);\n\t\t\tif(gantt.isTaskExists(targetTaskId)){\n\t\t\t\tconst task = gantt.getTask(targetTaskId);\n\t\t\t\treturn gantt.templates.tooltip_text(task.start_date, task.end_date, task);\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tglobal: false\n\t});\n});\n\ngantt.attachEvent(\"onDestroy\", function() {\n\ttooltipManager.destructor();\n});\n\ngantt.attachEvent(\"onLightbox\", function() {\n\ttooltipManager.hideTooltip();\n});\nconst isLinkCreate = () => {\n\tconst state = gantt.getState();\n\treturn !!state.link_source_id;\n};\ngantt.attachEvent(\"onBeforeTooltip\", function() {\n\tif (isLinkCreate()){\n\t\treturn false;\n\t}\n});\n\ngantt.attachEvent(\"onGanttScroll\", function(){\n\ttooltipManager.hideTooltip();\n});\n\n}","\ninterface IQuickInfoContainer{\n\tparent: HTMLElement;\n\txViewport: HTMLElement;\n\tyViewport: HTMLElement;\n}\n\nexport class QuickInfo {\n\tprivate _quickInfoTask: TaskID;\n\tprivate _quickInfoBoxId: number | string;\n\tprivate _quickInfoBox: HTMLElement;\n\tprivate _quickInfoReadonly: boolean | null;\n\tprivate _container: HTMLElement;\n\tprivate _gantt: any;\n\n\tconstructor(gantt: any) {\n\t\tthis._gantt = gantt;\n\t}\n\n\t// show at coordinates:\n\t// show(x: number, y: number)\n\t// show for a task:\n\t// show(id: TaskID)\n\tshow : {\n\t\t(x: number, y: number) : void;\n\t\t(id: TaskID) : void;\n\t} = (id: TaskID | number, y? : number) : void => {\n\t\tif (y === undefined) {\n\t\t\tthis._showForTask(id);\n\t\t} else {\n\t\t\tthis._showAtCoordinates(id as number, y);\n\t\t}\n\t}\n\n\thide = (forced?: boolean) : any => {\n\t\tconst gantt = this._gantt;\n\t\tconst qi = this._quickInfoBox;\n\t\tthis._quickInfoBoxId = 0;\n\t\tconst taskId = this._quickInfoTask;\n\t\tthis._quickInfoTask = null;\n\n\t\tif (qi && qi.parentNode){\n\n\t\t\tif (gantt.config.quick_info_detached) {\n\t\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\n\t\t\t\treturn qi.parentNode.removeChild(qi);\n\t\t\t}\n\n\t\t\tqi.className += \" gantt_qi_hidden\";\n\t\t\tif (qi.style.right === \"auto\"){\n\t\t\t\tqi.style.left = \"-350px\";\n\t\t\t} else {\n\t\t\t\tqi.style.right = \"-350px\";\n\t\t\t}\n\n\t\t\tif (forced) {\n\t\t\t\tqi.style.left = qi.style.right = \"\";\n\t\t\t\tqi.parentNode.removeChild(qi);\n\t\t\t}\n\t\t\tgantt.callEvent(\"onAfterQuickInfo\", [taskId]);\n\t\t}\n\t}\n\n\tgetNode = (): HTMLElement => {\n\t\tif(this._quickInfoBox) {\n\t\t\treturn this._quickInfoBox;\n\t\t}\n\t\treturn null;\n\t}\n\n\tsetContainer = (container: string|HTMLElement): void => {\n\t\tif(container){\n\t\t\tthis._container = typeof container === \"string\" ? document.getElementById(container) : container;\n\t\t}\n\t}\n\n\tsetContent = (content?: IQuickInfoContent) => {\n\t\tconst gantt = this._gantt;\n\n\t\tconst defaultContent = {\n\t\t\ttaskId: null,\n\t\t\theader: {\n\t\t\t\ttitle: \"\",\n\t\t\t\tdate: \"\"\n\t\t\t},\n\t\t\tcontent: \"\",\n\t\t\tbuttons: gantt.config.quickinfo_buttons\n\t\t};\n\n\t\tif(!content){\n\t\t\tcontent = defaultContent;\n\t\t}\n\n\t\tif(!content.taskId){\n\t\t\tcontent.taskId = defaultContent.taskId;\n\t\t}\n\n\t\tif(!content.header){\n\t\t\tcontent.header = defaultContent.header;\n\t\t}\n\n\t\tif(!content.header.title){\n\t\t\tcontent.header.title = defaultContent.header.title;\n\t\t}\n\t\tif(!content.header.date){\n\t\t\tcontent.header.date = defaultContent.header.date;\n\t\t}\n\t\tif(!content.content){\n\t\t\tcontent.content = defaultContent.content;\n\t\t}\n\t\tif(!content.buttons){\n\t\t\tcontent.buttons = defaultContent.buttons;\n\t\t}\n\n\n\t\tlet qi = this.getNode();\n\t\tif(!qi){\n\t\t\tqi = this._createQuickInfoElement();\n\t\t}\n\n\t\tif(content.taskId){\n\t\t\tthis._quickInfoBoxId = content.taskId;\n\t\t}\n\n\t\tconst titleBox = qi.querySelector(\".gantt_cal_qi_title\") as HTMLElement;\n\t\tconst titleContent = titleBox.querySelector(\".gantt_cal_qi_tcontent\");\n\t\tconst titleDate = titleBox.querySelector(\".gantt_cal_qi_tdate\");\n\t\tconst main = qi.querySelector(\".gantt_cal_qi_content\");\n\t\tconst controls = qi.querySelector(\".gantt_cal_qi_controls\") as HTMLElement;\n\n\t\tgantt._waiAria.quickInfoHeader(qi, [content.header.title, content.header.date].join(\" \"));\n\n\t\ttitleContent.innerHTML = content.header.title;\n\t\ttitleDate.innerHTML = content.header.date;\n\n\t\tif(!content.header.title && !content.header.date){\n\t\t\ttitleBox.style.display = \"none\";\n\t\t}else{\n\t\t\ttitleBox.style.display = \"\";\n\t\t}\n\t\tmain.innerHTML = content.content;\n\n\t\tconst buttons = content.buttons;\n\t\tif(!buttons.length){\n\t\t\tcontrols.style.display = \"none\";\n\t\t}else{\n\t\t\tcontrols.style.display = \"\";\n\t\t}\n\t\tlet html = \"\";\n\t\tfor (let i = 0; i < buttons.length; i++){\n\n\t\t\tconst ariaAttr = gantt._waiAria.quickInfoButtonAttrString(gantt.locale.labels[buttons[i]]);\n\n\t\t\thtml += \"
\"+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);","// 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};","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