{"version":3,"sources":["webpack:///./node_modules/devexpress-gantt/dist/dx-gantt.js"],"names":["factory","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","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","__webpack_exports__","__extends","_assign","__rest","__decorate","__param","__metadata","__awaiter","__generator","__createBinding","__exportStar","__values","__read","__spread","__spreadArrays","__spreadArray","__await","__asyncGenerator","__asyncDelegator","__asyncValues","__makeTemplateObject","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","_extendStatics","b","setPrototypeOf","__proto__","Array","TypeError","String","__","this","constructor","assign","arguments","length","apply","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","decorators","target","desc","getOwnPropertyDescriptor","Reflect","decorate","paramIndex","decorator","metadataKey","metadataValue","metadata","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","push","k","k2","undefined","ar","error","concat","il","a","j","jl","to","from","asyncIterator","q","resume","fulfill","settle","shift","cooked","raw","__setModuleDefault","mod","default","receiver","privateMap","has","set","string_1","isDefined","boolToInt","boolToString","isNumber","obj","isString","isNonNullString","str","isEven","num","isOdd","numberToStringBin","minLength","StringUtils","padLeft","toString","numberToStringHex","DateTimeUtils","Time_1","TimeRange_1","common_1","DateRange_1","DayOfWeekMonthlyOccurrence_1","compareDates","date1","date2","getTime","areDatesEqual","getMaxDate","getMinDate","getDaysBetween","start","end","diff","Math","abs","ceil","msInDay","getWeeksBetween","daysBetween","numWeeks","floor","getDay","getMonthsDifference","dateDiff","getFullYear","getMonth","getYearsDifference","getDayNumber","date","getDateByDayNumber","Date","setHours","setMinutes","setSeconds","addDays","days","checkDayOfMonth","day","getDate","checkDayOfWeek","checkMonth","month","checkYear","year","checkDayOfWeekOccurrenceInMonth","dayOfWeek","occurrence","dayOfWeekInMonthDates","getSpecificDayOfWeekInMonthDates","DayOfWeekMonthlyOccurrence","Last","getFirstDayOfWeekInMonth","firstDayOfWeekInMonth","diffDays","res","specificDayOfWeekDate","getSpecificDayOfWeekInMonthDate","dates","checkValidDayInMonth","getNextMonth","inc","convertToDate","src","ms","parse","isNaN","convertTimeRangeToDateRange","timeRange","dayNumber","startT","hour","min","sec","msec","endT","DateRange","convertToTimeRanges","_this","map","x","convertToTimeRange","parseTimeRanges","TimeRange","convertToTime","parseTimeRange","Time","getTimeGromJsDate","parseTime","split","filter","parts","h","parseInt","getHours","getMinutes","getSeconds","getMilliseconds","caclTimeDifference","time1","time2","getTimeInMilleconds","areTimesEqual","getMaxTime","getMinTime","getLastTimeOfDay","browser_1","math_1","DomUtils","clearInnerHtml","element","firstChild","removeChild","setStylePosition","style","point","left","MathUtils","round","top","setStyleSize","size","width","height","setStyleSizeAndPosition","rectangle","hideNode","node","parentNode","isHTMLElementNode","nodeType","Node","ELEMENT_NODE","isTextNode","TEXT_NODE","isElementNode","isHTMLTableRowElement","tagName","isItParent","parentElement","getParentByTagName","toUpperCase","getDocumentScrollTop","isScrollBodyIE","Browser","IE","getCurrentStyle","document","overflow","scrollTop","WebKitFamily","Edge","MacOSMobilePlatform","window","pageYOffset","documentElement","getDocumentScrollLeft","scrollLeft","currentStyle","defaultView","getComputedStyle","Firefox","frameElement","changes","curElement","display","setProperty","ownerDocument","srcObject","newObject","cloneObject","ch","offsetWidth","setFocus","focusCore","focus","activeElement","setTimeout","hasClassName","className","classNames","classList","contains","elementClassName","getAttribute","elementClasses","addClassName","setAttribute","removeClassName","updClassName","newClassName","replace","trim","toggleClassName","toggle","pxToInt","px","pxToNumber","pxToFloat","parseFloat","getAbsolutePositionY","getAbsolutePositionY_FF3","getBoundingClientRect","getAbsolutePositionY_IE","Version","Opera","curEl","isFirstCycle","cells","pos","getAbsoluteScrollOffset_OperaFF","offsetTop","offsetParent","getAbsolutePositionY_Opera","NetscapeFamily","borderTopWidth","getAbsolutePositionY_NS","getAbsolutePositionY_Other","getAbsolutePositionX","getAbsolutePositionX_FF3","getAbsolutePositionX_IE","offsetLeft","getAbsolutePositionX_Opera","borderLeftWidth","getAbsolutePositionX_NS","getAbsolutePositionX_Other","isInteractiveControl","getClearClientHeight","offsetHeight","getTopBottomPaddings","getVerticalBordersWidth","paddingTop","paddingBottom","MajorVersion","borderTopStyle","borderBottomStyle","borderBottomWidth","getNodes","parent","predicate","collection","all","getElementsByTagName","getChildNodes","childNodes","getNodesByClassName","querySelectorAll","children","result_1","forEach","elem","getChildNodesByClassName","getVerticalScrollBarWidth","verticalScrollBarWidth","container","createElement","cssText","appendChild","child","widthWithoutScrollBar","widthWithScrollBar","clientWidth","getHorizontalBordersWidth","borderLeftStyle","borderRightStyle","borderRightWidth","getFontFamiliesFromCssString","cssString","fam","getInnerText","Safari","html2PlainTextFilter","innerHTML","innerText","textContent","parseFunction","indexOfPx","substr","isX","position","Point","zero","fromNumber","isZero","JSON","stringify","copyFrom","clone","equals","offset","offsetX","offsetY","offsetByPoint","multiply","multiplierX","multiplierY","negative","applyConverter","converter","plus","minus","xComparer","yComparer","IdentUserAgent","userAgent","ignoreDocumentMode","browserTypesOrderedList","defaultVersions","Chrome","Mozilla","Netscape","toLowerCase","indentPlatformMajorVersion","platformIdentStrings","optVersion","patterns","Opera10","browserType","version","browserTypeCandidate","matches","RegExp","exec","index","GetBrowserVersion","getIECompatibleVersionString","browserVersionDetected","platform","minOccurenceIndex","Number","MAX_VALUE","identStr","importantIdent","occurenceIndex","match","isSamsungAndroidDevice","getVersionFromTrident","documentMode","max","fillUserAgentInfo","tridentPattern","ieCompatibleVersionString","getVersionFromMatches","versionFromTrident","compatible","isTouchEnabled","navigator","type","WindowsPlatform","MacOSPlatform","AndroidMobilePlatform","WindowsPhonePlatform","HardwareAcceleration","WebKitTouchUI","isIETouchUI","UserAgent","MSTouchUI","maxTouchPoints","TouchUI","MobileUI","AndroidDefaultBrowser","AndroidChromeBrowser","SamsungAndroidDevice","isARMArchitecture","VirtualKeyboardSupported","fillDocumentElementBrowserTypeClassNames","PlaformMajorVersion","versionStr","documentElementClassName","browserTypeslist","Info","getUserAgent","_foo","dom_1","touch_1","EvtUtils","preventEvent","evt","preventDefault","returnValue","getEventSource","srcElement","getEventSourceByPosition","elementFromPoint","getEventX","getEventY","getMouseWheelEventName","isLeftButtonPressed","TouchUtils","isTouchEvent","event","button","buttons","which","touchMouseMoveEventName","preventEventAndBubble","stopPropagation","cancelBubble","clientEventRequiresDocScrollCorrection","isSafariVerLess3","isMacOSMobileVerLess51","clientX","clientY","getWheelDelta","ret","detail","wheelDelta","deltaY","SimpleCommandState","CommandBase","control","modelManipulator","configurable","history","validationController","_state","getState","execute","parameters","_i","state","enabled","executed","executeInternal","barManager","updateItemsState","isEnabled","settings","editing","Error","visible","TaskAreaManager","MouseEventSource","point_1","evt_1","GridLayoutCalculator_1","ganttView","time","touchTime","eventManager","initMouseEvents","initTouchEvents","initMouseEventHandlers","onMouseClickHandler","onTaskAreaClick","onMouseDblClickHandler","onTaskAreaDblClick","onScrollHandler","updateView","onContextMenuHandler","onContextMenu","onMouseWheelHandler","onMouseWheel","onMouseDownHandler","onMouseDown","onMouseMoveHandler","onDocumentMouseMove","onMouseUpHandler","onDocumentMouseUp","onKeyDownHandler","onDocumentKeyDown","initTouchEventHandlers","onTouchStartHandler","onTouchStart","onTouchEndHandler","onTouchEnd","onTouchMoveHandler","onTouchMove","onPointerDownHandler","onPointerUpHandler","onPointerMoveHandler","taskArea","addEventListener","detachMouseEvents","removeEventListener","add","MS_POINTER_ACTIVE_CLASS","detachTouchEvents","attachEventsOnTask","taskElement","onMouseEnterHandler","onTaskElementHover","detachEventsOnTask","detachEvents","preventSelect","isFocus","allowSelectTask","isConnectorLine","changeTaskSelection","getClickedTaskIndex","onMouseUp","onKeyDown","onMouseMove","clickedItem","viewModel","items","now","touches","DBLCLICK_INTERVAL","onTaskDblClick","task","id","commandManager","showTaskEditDialog","onTaskClick","getDependencyKeyFromSource","source","convertInternalToPublicKey","isDependency","getClickedTaskKey","ganttOwner","onGanttViewContextMenu","info","showPopupMenu","hoveredTaskIndex","taskEditController","show","showTaskInfo","relativeY","tickSize","clickedTask","changeGanttTaskSelection","clickedTaskIndex","GridLayoutCalculator","CLASSNAMES","CONNECTOR_HORIZONTAL","CONNECTOR_VERTICAL","equal","DataObject","internalId","generateGuid","assignFromObject","sourceObj","Dependency","DependencyType","tslib_1","DataObject_1","_super","predecessorId","successorId","SS","SF","parseType","FS","FF","CompositionHistoryItem","HistoryItem","setModelManipulator","historyItems","redo","item","undo","historyItem","undoItemsQuery","CollectionBase","Utils_1","_items","_isGanttCollection","getItemById","_addItem","addRange","range","remove","_removeItems","clear","_invertedItems","count","splice","slice","getItem","_a","_createInvertedItems","invertedItems","getItemByPublicId","val","sourceCollection","importFromObject","importFromArray","createItemFromObjectAndAdd","createItem","values","importFromJSON","json","GanttJsonUtils","parseJson","TaskTitlePosition","Position","ViewType","onEventAttachingToDocument","eventName","func","isTouchEventName","documentTouchHandlers","documentEventAttachingAllowed","changedTouches","pageX","pageY","touchMouseDownEventName","PointerEvent","touchMouseUpEventName","msTouchDraggableClassName","RecurrenceBase","DayOfWeek_1","Month_1","DateTimeUtils_1","RecurrenceFactory_1","interval","occurrenceCount","_start","_end","_interval","_occurrenceCount","_dayOfWeek","_day","_dayOfWeekOccurrence","_month","_calculateByDayOfWeek","dayOfWeekInternal","RecurrenceFactory","getEnumValue","DayOfWeek","dayInternal","dayOfWeekOccurrence","dayOfWeekOccurrenceInternal","monthInternal","Month","calculateByDayOfWeek","calculatePoints","calculatePointsByOccurrenceCount","calculatePointsByDateRange","points","getFirstPoint","isRecurrencePoint","getNextPoint","isDateInRange","checkDate","useIntervalInCalc","checkInterval","calculatePointByInterval","calculateNearestPoint","getSpecDayInMonth","Sunday","Saturday","First","January","December","size_1","Enums_1","GridElementInfo_1","Dependency_1","Settings_1","tileToDependencyMap","tileToNoWorkingIntervalsMap","minLineLength","resourceMaxWidth","minTaskWidth","setSettings","visibleTaskAreaSize","elementSizeValues","viewType","scrollBarHeight","verticalTickCount","itemCount","taskHeight","parentTaskHeight","milestoneWidth","scaleHeight","scaleItemHeight","arrowSize","Size","connectorArrowWidth","lineThickness","connectorLineThickness","minConnectorSpaceFromTask","tickTimeSpan","DateUtils","getTickTimeSpan","horizontalTickCount","getTotalTickCount","createTileToConnectorLinesMap","createTileToNonWorkingIntervalsMap","getTaskAreaBorderInfo","isVertical","sizeValue","getVerticalGridLineHeight","getGridBorderInfo","getScaleBorderInfo","scaleType","getScaleItemColSpan","GridElementInfo","setPosition","getGridBorderPosition","setSize","getGridBorderSize","posValue","getScaleElementInfo","getScaleItemPosition","getScaleItemSize","getScaleItemClassName","getRenderedNoWorkingIntervals","scaleItemInfo","noWorkingIntervals","valueOf","isScaleItemInsideNoWorkingInterval","scaleItemLeft","scaleItemRight","noWorkingIntervalLeft","noWorkingIntervalRight","TenMinutes","Hours","SixHours","Days","Weeks","Months","Quarter","Years","getTaskWrapperElementInfo","getTaskWrapperClassName","getTaskWrapperPoint","getTask","isMilestone","selected","getTaskHeight","getPosByDate","height_1","getTaskElementInfo","textOutsideTask","autoCalculatedParent","parentAutoCalc","taskHasChildrenByIndex","getTaskWidth","getTaskClassName","color","backgroundColor","borderLeftColor","borderRightColor","borderTopColor","taskWidth","smallTaskWidth","getAutoCalcParentTaskClassName","progress","getTaskPoint","taskWrapperTopPadding","getTaskSize","getWidthByDateRange","isTaskToCalculateByChildren","getTaskProgressElementInfo","getTaskProgressSize","getTaskProgressWidth","getTaskTextElementInfo","isInsideText","getTaskTextElementClassName","taskX","outsideTaskTextDefaultWidth","margins","getTaskResourcesWrapperElementInfo","getTaskResourceElementInfo","getSelectionElementInfo","getRowElementInfo","getSelectionPosition","getSelectionSize","getHighlightRowInfo","getNoWorkingIntervalInfo","noWorkingDateRange","getNoWorkingIntervalPosition","getNoWorkingIntervalSize","intervalStart","noWorkingInterval","getConnectorInfo","predessorIndex","successorIndex","connectorType","connectorPoints","getConnectorPoints","getConnectorLineInfo","getArrowInfo","startPoint","endPoint","isEdgeLine","getConnectorClassName","getConnectorPosition","getConnectorSize","sizeCorrection","connectorLines","lineInfo","findArrowLineInfo","arrowPosition","getArrowPosition","getArrowClassName","getArrowPoint","prevLastPoint","lastPoint","Top","Bottom","Left","Right","getArrowX","getArrowY","getRangeTickCount","getRangeTickCountInMonthsViewType","getRangeTickCountInQuarterViewType","startMonthStartDate","endMonthStartDate","getOffsetInMonths","msPerMonth","startQuarterStartDate","endQuarterStartDate","getOffsetInQuarters","getDateByPos","preResult","monthFromStart","setMonth","setTime","getFinishToStartConnectorPoints","getStartToFinishConnectorPoints","getStartToStartConnectorPoints","getFinishToFinishConnectorPoints","getConnectorPoints_FromTopTaskRightSide_ToBottomTaskTopSide","getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide","getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskRightSide","getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide","getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide","getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide","getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskTopSide","getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskLeftSide","topTaskIndex","bottomTaskIndex","shiftEndPointToRight","topTaskPoint","bottomTaskPoint","topTaskRightCenter","getTaskRightCenter","isBottomMilestone","bottomTaskTopCenter","getTaskTopCenter","endPointIndent","bottomTaskRightCenter","shiftToTop","topTaskBottomCenter","getTaskBottomCenter","bottomTaskLeftCenter","getTaskLeftCenter","shiftStartPointToRight","isTopMilestone","startPointIndent","topTaskLeftCenter","taskPoint","getTaskEdgeCorrection","sqrt","getRenderedRowColumnIndices","scrollPos","visibleAreaSizeValue","tickSizeValue","tickCount","firstVisibleIndex","getFirstVisibleGridCellIndex","lastVisibleIndex","getLastVisibleGridCellIndex","getRenderedScaleItemIndices","renderedColIndices","scaleItemColSpan","dependencies","createConnecotInfo","visibleIndex","updateTileToConnectorLinesMap","dependencyId","attr","dependency","dependencyInfo","predecessor","connectorInfo","connectorLine","addElementInfoToTileMap","getAdjustedNoWorkingInterval","noWorkingIntervalInfo","modelInterval","getNearestScaleTickDate","isVerticalTile","infoPointValue","infoSizeValue","tileSizeValue","firstTileIndex","lastTileIndex","getRenderedConnectorLines","getElementsInRenderedTiles","getRenderedStripLines","stripLines","showCurrentTime","StripLine","currentTimeTitle","currentTimeCssClass","stripLine","renderedStart","isCurrent","cssClass","title","firstVisibleTileIndex","lastVisibleTileIndex","TaskPropertyManipulator","TaskPropertiesManipulator","BaseManipulator","HistoryItemState_1","dispatcher","getErrorCallback","getDataUpdateErrorCallback","TaskTitleManipulator","description","TaskDescriptionManipulator","TaskProgressManipulator","TaskStartDateManipulator","TaskEndDateManipulator","move","TaskMoveManipulator","TaskColorManipulator","setValue","newValue","tasks","oldState","HistoryItemState","getPropertyValue","setPropertyValue","viewItem","findItem","owner","recreateTaskElement","restoreValue","notifyTaskTitleChanged","notifyTaskDescriptionChanged","notifyTaskProgressChanged","notifyTaskStartChanged","notifyTaskEndChanged","notifyTaskColorChanged","HandlerStateBase","handler","finish","getRelativePos","absolutePos","taskAreaX","taskAreaY","BaseArguments","cancel","RemoveDependencyHistoryItem","InsertDependencyHistoryItem","HistoryItem_1","insertDependency","removeDependency","DeassignResourceHistoryItem","AssignResourceHistoryItem","RemoveResourceHistoryItem","CreateResourceHistoryItem","text","callback","createCallback","resource","resourceId","properties","taskId","assignment","deassig","assignmentId","ConfirmationDialogParameters","ConfirmationDialog","ConfirmationType","DialogBase_1","applyParameters","_newParameters","oldParameters","beginTransaction","endTransaction","createParameters","options","getDialogName","DialogBase","message","DialogParametersBase","CommandBase_1","params","initParams","onBeforeDialogShow","showDialog","afterClosing","_oldParameters","TaskColorHistoryItem","TaskMoveHistoryItem","TaskEndHistoryItem","TaskStartHistoryItem","TaskProgressHistoryItem","TaskDescriptionHistoryItem","TaskTitleHistoryItem","TaskPropertiesHistoryItemBase","getPropertiesManipulator","ResourceCollection","CollectionBase_1","Resource_1","Resource","isAlpha","isDigit","stringHashCode","hash","strLen","charCodeAt","endsAt","template","strInd","tmplInd","strStartInd","startsAt","stringInLowerCase","stringInUpperCase","atLeastOneSymbolInUpperCase","char","getSymbolFromEnd","posFromEnd","trimChars","trimInternal","joinedChars","join","trimStart","trimEnd","getDecimalSeparator","toLocaleString","repeat","isNullOrEmpty","totalWidth","paddingChar","len","test","substring","empty","initByCommonAction","action","widthAdp","heightAdp","isEmpty","nonNegativeSize","multiplierW","multiplierH","conv","MouseHandlerStateBase","onMouseDoubleClick","_evt","MouseHandlerDragBaseState","currentPosition","selectDependency","onMouseUpInternal","switchToDefaultState","onMouseMoveInternal","_position","TouchHandlerDragBaseState","TouchHandlerStateBase_1","onTouchEndInternal","onTouchMoveInternal","TouchHandlerStateBase","ResourceUnassigningArguments","ResourceAssigningArguments","BaseArguments_1","list_1","digits","factor","powFactor","numberCloseTo","accuracy","restrictValue","minVal","maxVal","getRandomInt","random","ListUtils","initByCallback","ind","pow","somePrimes","_assign2","_extendStatics2","ResourceAssignment","_hour","_min","_sec","_msec","_fullmsec","updateFullMilleconds","isTimeInRange","hasIntersect","concatWith","Daily_1","Weekly_1","Monthly_1","Yearly_1","createRecurrenceByType","Daily","Weekly","Monthly","Yearly","createRecurrenceFromObject","recurrence","RecurrenceBase_1","daysToAdd","ElementTextHelperCultureInfo","ElementTextHelper","getDaysInMonth","rangeStartTime","rangeEndTime","needCorrectDate","nearestLeftTickTime","getNearestLeftTickTime","nearestRightTickTime","getNextTickTime","currentTickTime","nextTickDate","adjustStartDateByViewType","firstDayOfWeek","adjustEndDateByViewType","roundStartDate","msPerHour","msPerDay","msPerWeek","msPerYear","data","getTimezoneOffsetDiff","data1","data2","getTimezoneOffset","ViewTypeToScaleMap","FiveYears","cultureInfo","longestAbbrMonthName","longestMonthName","longestAbbrDayName","canvas","textMeasureContext","getContext","setFont","fontHolder","computedStyle","font","fontStyle","fontVariant","fontWeight","fontSize","lineHeight","fontFamily","startTime","modelItems","getScaleItemStartDate","setFullYear","getScaleStartDateCorrectedWithDST","timeZoneDiff","getScaleItemText","scaleItemStartDate","isViewTypeScale","getTenMinutesScaleItemText","getHoursScaleItemText","getDaysScaleItemText","getWeeksScaleItemText","getMonthsScaleItemText","getQuarterScaleItemText","getYearsScaleItemText","getFiveYearsScaleItemText","scaleItemDate","minutes","getThirtyMinutesScaleItemText","hours","hourDisplayText","getHourDisplayText","amPmText","getAmText","getPmText","getHoursScaleItemTextCore","getDayTotalText","weekLastDayDate","getWeeksScaleItemTextCore","monthNames","getMonthNames","yearDisplayText","getMonthsScaleItemTextCore","quarterNames","getQuarterNames","hasAmPm","displayDayName","useAbbrDayNames","useAbbrMonthNames","displayYear","getAbbrMonthNames","dayNames","getAbbrDayNames","getDayNames","dayNameDisplayText","monthName","getDayTotalTextCore","getTaskText","getTaskVisibility","getVisible","getScaleItemTextTemplate","getDayTextTemplate","getWeekTextTemplate","getLongestMonthName","getLongestAbbrDayName","getLongestAbbrMonthName","dayTextTemplate","dayName","dayValueString","yearValueString","firstDayOfWeekString","lastDayOfWeekString","getLongestText","texts","longestTextWidth","textWidth","getTextWidth","measureText","amText","pmText","abbrMonthNames","abbrDayNames","margins_1","Margins","assignToElement","assignPosition","assignSize","assignMargins","marginLeft","marginTop","right","marginRight","bottom","marginBottom","ValidationSettings","StripLineSettings","EditingSettings","Settings","taskTitlePosition","Inside","showResources","areHorizontalBordersEnabled","areVerticalBordersEnabled","areAlternateRowsEnabled","validation","taskTooltipContentTemplate","allowDependencyDelete","allowDependencyInsert","allowTaskDelete","allowTaskInsert","allowTaskUpdate","allowResourceDelete","allowResourceInsert","allowResourceUpdate","allowTaskResourceUpdate","currentTimeUpdateInterval","validateDependencies","autoUpdateParentTasks","enablePredecessorGap","TaskEditController","gantt","taskIndex","createElements","updateWrapInfo","wrapInfo","baseElement","TASK_EDIT_BOX","canUpdateTask","progressEdit","taskDateRange","hide","tooltip","posX","delay","showInfo","isAllowedToConnectTasks","isAnotherTask","successorViewItem","isChild","some","showDependencySuccessor","dependencySuccessorBaseElement","dependencySuccessorFrame","hideDependencySuccessor","processProgress","progressOffset","showProgress","confirmProgress","changeTaskProgressCommand","processEnd","positionX","startDate","gridLayoutCalculator","getCorrectedDate","showTime","confirmEnd","changeTaskEndCommand","processStart","endDate","confirmStart","changeTaskStartCommand","processMove","delta","raiseTaskMoving","onTaskMovingCallback","newStart","newEnd","calculator","newLeft","newWidth","confirmMove","taskMoveCommand","referenceDate","newDate","startDependency","dependencyLine","TASK_EDIT_DEPENDENCY_LINE","startPosition","processDependency","drawline","endDependency","createDependencyCommand","isDependencySelected","deleteSelectedDependency","removeDependencyCommand","baseFrame","TASK_EDIT_FRAME","TASK_EDIT_PROGRESS","dependencyFinish","TASK_EDIT_DEPENDENCY_RIGTH","TASK_EDIT_TOUCH","dependencyStart","TASK_EDIT_DEPENDENCY_LEFT","startEdit","TASK_EDIT_START","endEdit","TASK_EDIT_END","TASK_EDIT_BOX_SUCCESSOR","TASK_EDIT_FRAME_SUCCESSOR","dependencySuccessorStart","TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH","dependencySuccessorFinish","TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT","TaskEditTooltip","elementTextHelper","attachEvents","onMouseLeaveHandler","temp","angle","atan","PI","transform","TASK_EDIT_PROGRESS_STATUS","setDefaultTooltip","defaultTooltip","TASK_EDIT_TOOLTIP_DEFAULT","titleWrapper","TASK_EDIT_TASK_TITLE","getTimeContent","progressElement","TASK_EDIT_PROGRESS_STATUS_TIME","progressTitle","progressValue","tooltipTemplateFunction","isTooltipShowing","destroyTemplate","showInfoFunc","timerId","autoHide","_b","_c","_d","TASK_EDIT_TOOLTIP_ARROW_AFTER","TASK_EDIT_TOOLTIP_ARROW_BEFORE","absolutePositionY","leftPosition","absoluteDistance","header","clientHeight","isShowingDown","topPosition","clearTimeout","timeElement","startEl","startTitle","startValue","endEl","endTitle","endValue","formatDate","getDateFormat","HandlerBase","TaskAreaManager_1","TaskEditController_1","switchState","initSource","classToSource","TaskArea","TaskEdit_Progress","TaskEdit_Start","TaskEdit_End","TaskEdit_Frame","TaskEdit_DependencyStart","TaskEdit_DependencyFinish","Successor_DependencyStart","Successor_DependencyFinish","MouseHandlerDependencyState","dependencyMap","MouseHandlerStateBase_1","sourceElement","relativePosStart","relativePosEnd","relativeTouchPos","isTouchNearby","relativePos","hoverTaskIndex","touchPos","elementPos","onDoubleTap","TaskEditDialogShowingArguments","TaskUpdatingArguments","TaskRemovingArguments","TaskInsertingArguments","parentId","fieldNames","newValues","createNewValues","_loop_1","fieldName","this_1","hiddenFields","readOnlyFields","RemoveTaskHistoryItem","CreateTaskHistoryItem","TaskDependencyHistoryItem_1","taskIds","pendingCallbacks","lockChangesProcessing","task_1","addTask","item_1","ConstraintViolationDialogParameters","ConstraintViolationDialogCommand","ConstraintViolationOption","newParameters","option","DoNothing","RemoveDependency","addAndRedo","validationError","KeepDependency","successorTask","predecessorTask","successorTaskTitle","predecessorTaskTitle","GanttView","GanttView_1","VisualModel_1","EtalonSizeValues_1","ModelManipulator_1","History_1","EventManager_1","TaskAreaContainer_1","ModelChangesDispatcher_1","CommandManager_1","BarManager_1","ValidationController_1","FullScreenModeHelper_1","TaskHistoryItem_1","ResourceHistoryItem_1","timeScaleAreas","horTaskAreaBorders","vertTaskAreaBorders","scaleBorders","scaleElements","taskElements","resourcesElements","selectionElements","hlRowElements","renderedRowIndices","renderedScaleItemIndices","invalidTaskDependencies","renderedConnectorLines","connectorLinesToElementsMap","noWorkingIntervalsToElementsMap","renderedNoWorkingIntervals","renderedStripLines","stripLinesMap","etalonSizeValues","EtalonSizeValues","scaleCount","currentZoom","maxZoom","stripLinesUpdaterId","currentSelectedTaskID","ValidationController","createMainElement","createHeader","calculateEtalonSizeValues","createTaskAreaContainer","loadOptionsFromGanttOwner","mainElement","setupHelpers","setSizeForTaskArea","createTimeScaleContainer","createTimeScaleAreas","CommandManager","BarManager","bars","EventManager","History","taskAreaManager","fullScreenModeHelper","FullScreenModeHelper","onWindowResizelHandler","onBrowserWindowResize","scrollLeftByViewType","initializeStripLinesUpdater","reset","timeScaleContainer","taskAreaContainer","getWidth","getHeight","getElement","getDateRange","modelStartDate","modelEndDate","getVisibleAreaTime","etalonElementsContainer","createEtalonElementsContainer","etalonElements","createEtalonElements","calculateEtalonSizeValuesCore","scaleItemWidths","getSmallTaskWidth","paddingLeft","getHeaderHeight","etalonPaddingLeft","indexOfRem","visibility","wrapper","milestoneWrapper","etalonElementClassNames","etalonElementInfo","parentWrapper","parentTask","zoomIn","leftPos","targetDate","updateTickSizeWidth","resetAndUpdate","setViewType","scrollToDate","zoomOut","adjustedStartDate","dataRange","onVisualModelChanged","setInterval","recreateStripLines","clearStripLinesUpdater","clearInterval","getGanttViewStartDate","reduce","getGanttViewEndDate","getTaskAreaWidth","getTaskAreaHeight","getVisibleTaskCount","createTimeScaleArea","timeScaleArea","unshift","createMonthsScale","createTaskArea","getExternalTaskAreaContainer","TaskAreaContainer","prepareTaskAreaContainer","currentDate","dayCount","nextDate","scaleItemElement","scaleBorderInfo","onBeginUpdateView","taskAreaContainerScrollLeft","processScroll","onGanttScroll","taskAreaContainerScrollTop","onEndUpdateView","taskAreaScrollTopKey","taskAreaScrollLeftKey","taskTextHeightKey","getTaskTextHeight","textElement","recreateTaskAreaBordersAndTaskElements","recreateConnectorLineElements","recreateNoWorkingIntervalElements","recreateScalesElements","newRenderedIndices","renderedIndices","recreateElements","removeTaskAreaBorderAndTaskElement","createTaskAreaBorderAndTaskElement","newRenderedNoWorkingIntervals","removeNoWorkingIntervalElement","createNoWorkingIntervalElement","newRenderedStripLines","removeElement","newRenderedConnectorLines","removeConnectorLineElement","createConnectorLineElement","recreateScaleElements","scaleIndex","removeScaleElementAndBorder","createScaleElementAndBorder","oldRenderedElementsInfo","newRenderedelementsInfo","removeAction","createAction","isVisible","removeTaskElement","createTaskElement","recreateConnectorLineElement","forceRender","infos","isRendered","allowTaskAreaBorders","isVerticalScroll","createTaskAreaBorder","removeTaskAreaBorder","getTaskAreaBordersDictionary","createScaleElement","createScaleBorder","scaleElement","createScaleElementCore","padding","dictionary","isHighlightRowElementAllowed","createHighlightRowElement","isValid","createTaskWrapperElement","Outside","createTaskTextElement","taskVisualElement","createTaskVisualElement","createTaskProgressElement","createResourcesWrapperElement","createResources","createTaskSelectionElement","taskDependencies","resourcesWrapperElementInfo","resources","createResourceElement","taskWrapperInfo","taskElementInfo","taskProgressInfo","taskTextInfo","taskTextElement","resourceElementInfo","selectionInfo","isExternal","hlRowInfo","calculateAutoViewType","diffInHours","changeTaskExpanded","publicId","expanded","getTaskByPublicId","expandTask","collapseTask","showTask","changeTaskVisibility","hideTask","unselectCurrentSelectedTask","unselectTask","getTaskSelected","autoPositioning","UpdateGanttViewType","setTaskTitlePosition","setShowResources","setFirstDayOfWeek","getRowHeight","tasksData","getGanttTasksData","ModelChangesDispatcher","modelChangesListener","getModelChangesListener","onModelChanged","ViewVisualModel","getGanttDependenciesData","getGanttResourcesData","getGanttResourceAssignmentsData","getGanttWorkTimeRules","ModelManipulator","updateRange","cleanMarkup","checkAndProcessModelChanges","changed","refreshTaskDataIfRequires","updateRowHeights","selectTask","changeTaskSelected","updateBarManager","selectTaskById","getTaskAreaContainer","setWidth","setHeight","setAllowSelection","setEditingSettings","setValidationSettings","setRowLinesVisible","setStripLines","deleteTask","removeTaskCommand","insertTask","parent_1","rootId","getRootTaskId","taskData","createTaskCommand","getLastInsertedTaskId","updateTask","updateTaskCommand","getTaskData","getTaskObjectForDataSource","successor","deleteDependency","internalKey","convertPublicToInternalKey","getDependencyData","getDependencyObjectForDataSource","insertResource","taskKeys","createResourceCommand","assignResourceToTask","deleteResource","removeResourceCommand","resourceKey","taskKey","resourceInternalKey","taskInternalKey","assignResourceCommand","unassignResourceFromTask","findAssignment","deassignResourceCommand","getResourceData","getResourceObjectForDataSource","getResourceAssignmentData","getResourceAssignmentObjectForDataSource","getTaskResources","model","getAssignedResources","getVisibleTaskKeys","getVisibleTasks","getVisibleDependencyKeys","getVisibleDependencies","getVisibleResourceKeys","getVisibleResources","getVisibleResourceAssignmentKeys","getVisibleResourceAssignments","getTasksExpandedState","applyTasksExpandedState","setTaskValue","manager","checkedNewValue","changeTaskTitleCommand","newProgress","createTaskItems","lastItem","getLastInsertedResource","getPrevTask","root","updateCreatedTaskIdAfterServerUpdate","getTaskIdByInternalId","isTaskHasChildren","requireFirstLoadParentAutoCalc","getRequireFirstLoadParentAutoCalc","updateOwnerInAutoParentMode","notifyParentDataRecalculated","getCurrentTaskData","getOwnerControlMainElement","getMainElement","adjustOwnerControl","adjustControl","isInFullScreenMode","adjustControlInFullScreenMode","applySettings","preventViewUpdate","ganttSettings","preventUpdate","currentHistoryItemInfo","getCurrentProcessingItemInfo","lock","rollBackAndRemove","unlock","setTaskTooltipContentTemplate","getFormattedDateText","getDefaultDateFormat","cachedPrefix","ResourceCollection_1","TaskCollection_1","DependencyCollection_1","ResourceAssignmentCollection_1","ViewVisualModelItem_1","ViewVisualModelDependencyInfo_1","WorkingTimeCalculator_1","ResourceAssignment_1","assignments","dateRange","workTimeRules","_fLockCount","TaskCollection","DependencyCollection","ResourceAssignmentCollection","_itemList","_viewItemList","_workTimeCalculator","WorkingTimeCalculator","updateModel","ViewVisualModelItem","createHierarchy","populateItemsForView","list","inverted","previous","recalculateParentRequired","parentItem","addChild","recalculateParents","duration","taskType","customFields","populateVisibleItems","updateVisibleItemDependencies","isRoot","getExpanded","visibleDependencies","getTasVisibleDependencies","setDependencies","ViewVisualModelDependencyInfo","beginUpdate","endUpdate","compareTaskOrder","taskModel","newTasks","newItems","oldItems","newTask","oldTask","saveTaskInternalIds","restoreTaskInternalIds","taskHasChildren","hasTasks","dataType","publicKey","getItemByInternalId","strKey","visibleTasksKeys","visibleResources","visibleAssignments","rootTaskId","calculateRootTaskId","json_1","JsonUtils","min_max_1","comparers_1","removeBy","shallowCopy","deepCopy","initByValue","numElements","initValue","initCallback","forEachOnInterval","reverseForEachOnInterval","reducedMap","startIndex","endIndex","newItem","indexBy","reverseIndexBy","elementBy","reverseElementBy","last","setLast","newVal","incLast","decLast","allOf2","equalsByReference","aLen","unique","cmp","finalizeObj","prevValue","sort","uniqueNumber","Comparers","number","NaN","forEach2","listA","listB","reverseForEach","reverseIndexOf","accumulate","initAccValue","acc","accumulateNumber","anyOf","unsafeAnyOf","currResult","reverseAnyOf","unsafeReverseAnyOf","anyOf2","allOf","allOfOnInterval","addListOnTail","resultList","addedList","joinLists","lists","accList","countIf","merge","shouldMerge","prevObj","getValue","minExtended","minElement","maxExtended","maxElement","minMax","minMaxExtended","MinMax","minValue","elemValue","ExtendedMin","maxValue","ExtendedMax","ExtendedMinMax","minByCmp","found","maxByCmp","minMaxByCmp","MinMaxNumber","string","stringIgnoreCase","Equals","simpleType","Task_1","Task","TaskType","assignCustomFields","getDuration","changeVisibility","changeSelection","GanttWorkingDayRuleCollection_1","DayWorkingTimeInfo_1","rules","_workingRules","WorkingDayRuleCollection","_workDayList","_calculationRange","calculateWorkDayList","clearList","processRule","sortList","rule","dayNum","dayInfo","isWorkDay","addWorkingIntervals","workTimeRanges","DayWorkingTimeInfo","d1","d2","calculateNoWorkTimeIntervals","getNoWorkTimeRangesFromDay","concatJointedRanges","_noWorkingIntervals","invalidate","WorkingTimeRule_1","WorkingTimeRule","recurrenceType","ranges","weeksFromStart","intervalCount","weeksToAdd","calcNextPointWithWeekCount","weekCount","MonthInfo_1","monthToAdd","MonthInfo","addMonths","months","nextMonth","yearInc","yearFromStart","newYear","intervals","_workingIntervals","rearrangeWorkingIntervals","concatWithIntersectedRanges","sortIntervals","getIntersectedIntervals","removeInterval","r1","r2","clearIntervals","starts","ends","_isWorkDay","Offsets","fromOffsets","offsets","fromSide","horizontal","vertical","normalize","multLeft","multRight","multTop","multBottom","DependencyManipulator_1","ResourcesManipulator_1","TaskManipulator_1","TaskManipulator","TaskDependencyManipulator","ResourcesManipulator","notifyDependencyInserted","getObjectForDataSource","notifyDependencyRemoved","TaskPropertiesManipulator_1","ResourcePropertiesManipulator_1","ResourcePropertiesManipulator","notifyResourceCreated","notifyResourceRemoved","resourceID","notifyResourceAssigned","notifyResourceUnassigned","resourceAssignment","ResourcePropertyManipulator","ResourceColorManipulator","stateValue","notifyResourceColorChanged","notifyTaskCreated","data_1","notifyTaskRemoved","HistoryItemInfo_1","currentIndex","currentProcessingItemInfo","transaction","transactionLevel","canUndo","activateItem","canRedo","transactionLength","addInternal","deleteOldItems","exceedItemsCount","MAX_HISTORY_ITEM_COUNT","isUndo","HistoryItemInfo","checkAndRemoveItem","MouseHandler_1","key_1","TouchHandler_1","mouseHandler","MouseHandler","touchHandler","TouchHandler","onMouseDblClick","code","getShortcutCode","ModifierKey","Ctrl","KeyCode","Key_z","Key_y","Delete","keyCode","KeyUtils","getEventKeyCode","modifiers","altKey","Alt","ctrlKey","shiftKey","Shift","metaKey","Meta","HandlerBase_1","MouseHandlerDefaultState_1","MouseHandlerMoveTaskState_1","MouseHandlerProgressTaskState_1","MouseHandlerTimestampTaskState_1","MouseHandlerDependencyState_1","MouseHandlerMoveTaskState","MouseHandlerProgressTaskState","MouseHandlerTimestampTaskState","MouseHandlerDefaultState","GanttMovingHelper","isInScrolling","ganttMovingHelper","startMoving","movingInfo","increase","calcMovingInfo","updateGanttAreaCursor","cancelMoving","updateScrollPosition","newEventX","newEventY","deltaX","eventX","eventY","dirX","dirY","maxDeltaX","maxRightDelta","maxLeftDelta","maxDeltaY","maxBottomDelta","maxTopDelta","newScrollLeft","newScrollTop","scrollWidth","scrollHeight","drag","cursor","relativePosition","encode_1","getKeyModifiers","isCtrlKey","isShiftKey","isAltKey","isMetaKey","getShortcutCodeByEvent","parseShortcutString","shortcutString","shcKeys","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","Enter","Home","End","Up","Down","PageUp","PageDown","Space","Tab","Backspace","ContextMenu","Esc","Insert","alert","EncodeUtils","decodeViaTextArea","encodeHtml","decodeHtml","prepareTextForRequest","prepareTextForCallBackRequest","html","textArea","TouchHandlerMoveTaskState_1","TouchHandlerDefaultState_1","TouchHandlerProgressTaskState_1","TouchHandlerTimestampTaskState_1","TouchHandlerDependencyState_1","TouchHandlerZoomState_1","TouchHandlerMoveTaskState","TouchHandlerProgressTaskState","TouchHandlerTimestampTaskState","TouchHandlerDependencyState","TouchHandlerZoomState","TouchHandlerDefaultState","popupTimer","info_1","getTaskIndex","TouchHandlerDragBaseState_1","HandlerStateBase_1","prevDistance","distance","getTouchDistance","getMiddleAbsPoint","pt0","pt1","getDistance","getMiddlePointByEvent","touch","getPoint","EventDispatcher_1","TaskArguments_1","AssignmentArguments_1","EventDispatcher","isLocked","notifyTaskCreating","args","raise","errorCallback","notifyTaskRemoving","taskID","notifyTaskUpdating","notifyTaskMoving","notifyTaskEditDialogShowing","notifyParentTaskUpdated","notifyDependencyInserting","notifyDependencyRemoving","dependencyID","notifyResourceCreating","notifyResourceRemoving","notifyResourceAssigning","notifyResourceUnassigning","assignmentID","fireResourceUnassigning","raiseTaskTitleUpdating","raiseTaskUpdating","raiseTaskDescriptionUpdating","raiseTaskProgressUpdating","raiseTaskColorUpdating","raiseTaskStartUpdating","raiseTaskEndUpdating","raiseTaskStartAndEndUpdating","oldValue","raiseTaskMultipleUpdating","fields","raiseTaskTaskEditDialogShowing","listeners","listener","hasEventListener","currentListener","funcName","TaskCommands_1","TaskPropertiesCommands_1","DependencyCommands_1","ResourceCommands_1","TaskEditDialog_1","ConstraintViolationDialog_1","ResourcesDialog_1","ClientCommand_1","HistoryCommands_1","ZoomCommands_1","FullScreenCommand_1","CollapseExpandCommands_1","ConfirmationDialog_1","ResourcePropertiesCommands_1","commands","createCommand","GanttClientCommand","CreateTask","CreateSubTask","createSubTaskCommand","RemoveTask","TaskInformation","TaskAddContextItem","TaskAddContextItemCommand","Undo","UndoCommand","Redo","RedoCommand","ZoomIn","ZoomInCommand","ZoomOut","ZoomOutCommand","FullScreen","ToggleFullScreenCommand","CollapseAll","CollapseAllCommand","ExpandAll","ExpandAllCommand","CreateTaskCommand","CreateSubTaskCommand","RemoveTaskCommand","TaskTitleCommand","TaskDescriptionCommand","TaskProgressCommand","TaskColorCommand","TaskStartCommand","TaskMoveCommand","TaskEndCommand","UpdateTaskCommand","CreateDependencyCommand","RemoveDependencyCommand","CreateResourceCommand","RemoveResourceCommand","AssignResourceCommand","DeassignResourceCommand","ResourceColorCommand","TaskEditDialogCommand","ResourcesDialogCommand","getCommand","commandId","command","TaskCommandBase","TaskPropertiesHistoryItem_1","isApiCall","updateParent","_parentAutoCalc","updateParentsIfRequired","selectedTask","referenceItem","referenceTask","selectedItem","confirmRequired","isUpdateParentTaskRequired","showConfirmationDialog","TaskDelete","removeTaskHistoryItem","childTasks","success","changedNewValues","needRecalculateParents","moveStartDependTasks","moveEndDependTasks","TaskPropertyCommandValidation","TaskPropertyCommandBase","newTitle","newDescription","validationErrors","validate","criticalErrors","critical","executeCore","showConstraintViolationDialog","oldStart","minStartTask","prev","curr","checkStartDependencies","oldEnd","maxEndTask","checkEndDependencies","oldDateRange","correctParentsOnChildMoving","startErrors","endErrors","DependencyCommandBase","DependencyArguments_1","DependencyInsertingArguments","DependencyDelete","DependencyRemovingArguments","ResourceCommandBase","ResourceArguments_1","ResourceInsertingArguments","ResourceRemovingArguments","removeResourceHistoryItem_1","TaskEditParameters","assigned","updateParents","param","showResourcesDialogCommand","showResourcesDialog","showTaskEditDialogCommand","enableEdit","isTaskEditEnabled","enableRangeEdit","isTaskRangeEditEnabled","ResourcesDialogParameters","resourcesForDelete","callBack","confirmationDialog","confirmationDialogParameters","ResourcesDelete","fullScreenTempVars","collapseAll","expandAll","ResourcePropertyCommandBase","ResourcePropertiesHistoryItem_1","ResourceColorHistoryItem","ResourcePropertiesHistoryItemBase","updateContextMenu","bar","isContextMenu","updateItemsList","commandKeys","getCommandKeys","updateBarItem","queryCommands","anyQuerySended","commandKeys_1","_loop_2","completeUpdate","commandKey","commandState","setItemVisible","setItemEnabled","setItemValue","ValidationError","lockPredecessorToSuccessor","dep","predecessorTaskId","predecessorPreviousEndDate","isAfterCorrectParents","isStartDependency","successorRangeBeforeMove","validTaskRange","predecessorEnd","correctMoving","moveRelatedTasks","predecessorPreviousStartDate","predecessorStart","deltaDate","calcStepCallback","totalDuration","childTask","updateParentsRangeByChild","manipulator","updateChildRangeByParent","changedTasks","childId","attr_1","_isInFullScreenMode","setFullScreenMode","setNormalMode","prepareFullScreenMode","AttrUtils","changeElementStyleAttribute","bodyMargin","margin","self","requestFullScreen","cancelFullScreen","restoreElementStyleAttribute","documentWidth","documentHeight","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","getFullScreenElement","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","exitFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","isFinite","setElementAttribute","attrName","setStyleAttribute","getElementAttribute","getStyleAttribute","removeElementAttribute","removeAttribute","removeStyleAttribute","removeProperty","saveStyleAttributeInElement","savedAttrName","isExistsAttributeInElement","emptyObject","isAttributeExists","attrValue"],"mappings":"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","file":"832d4bdb-6edfbadd10dbcf8d99a6.js","sourcesContent":["require(\"core-js/modules/es.string.trim-start.js\");\n\nrequire(\"core-js/modules/es.string.trim-end.js\");\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nrequire(\"core-js/modules/es.array.sort.js\");\n\n/*!\n * DevExpress Gantt (dx-gantt)\n * Version: 2.0.40\n * Build date: Wed Jul 07 2021\n * \n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\n * Read about DevExpress licensing here: https://www.devexpress.com/Support/EULAs\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if (typeof exports === 'object') exports[\"Gantt\"] = factory();else root[\"DevExpress\"] = root[\"DevExpress\"] || {}, root[\"DevExpress\"][\"Gantt\"] = factory();\n})(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) {\n __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n }\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 53);\n /******/\n }\n /************************************************************************/\n\n /******/\n ([\n /* 0 */\n\n /***/\n function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__extends\", function () {\n return __extends;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__assign\", function () {\n return _assign;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__rest\", function () {\n return __rest;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__decorate\", function () {\n return __decorate;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__param\", function () {\n return __param;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__metadata\", function () {\n return __metadata;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__awaiter\", function () {\n return __awaiter;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__generator\", function () {\n return __generator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__createBinding\", function () {\n return __createBinding;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__exportStar\", function () {\n return __exportStar;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__values\", function () {\n return __values;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__read\", function () {\n return __read;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spread\", function () {\n return __spread;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function () {\n return __spreadArrays;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spreadArray\", function () {\n return __spreadArray;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__await\", function () {\n return __await;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function () {\n return __asyncGenerator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function () {\n return __asyncDelegator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function () {\n return __asyncValues;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function () {\n return __makeTemplateObject;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__importStar\", function () {\n return __importStar;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__importDefault\", function () {\n return __importDefault;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function () {\n return __classPrivateFieldGet;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function () {\n return __classPrivateFieldSet;\n });\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n \r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n \r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\n\n /* global Reflect, Promise */\n\n\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n\n var _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n };\n\n function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n }\n\n function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n }\n\n function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n }\n\n function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n }\n\n function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n }\n\n function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n }\n\n var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n } : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n };\n\n function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n }\n\n function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n }\n\n function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n }\n /** @deprecated */\n\n\n function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n }\n /** @deprecated */\n\n\n function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n }\n\n function __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n }\n\n function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n }\n\n function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n }\n\n function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n }\n\n function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n }\n\n function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n }\n\n ;\n\n var __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n } : function (o, v) {\n o[\"default\"] = v;\n };\n\n function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n }\n\n function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n }\n\n function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n }\n\n function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n }\n /***/\n\n },\n /* 1 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var string_1 = __webpack_require__(27);\n\n function isDefined(value) {\n return value !== undefined && value !== null;\n }\n\n exports.isDefined = isDefined;\n\n function boolToInt(value) {\n return value ? 1 : 0;\n }\n\n exports.boolToInt = boolToInt;\n\n function boolToString(value) {\n return value ? '1' : '0';\n }\n\n exports.boolToString = boolToString;\n\n function isNumber(obj) {\n return typeof obj === 'number';\n }\n\n exports.isNumber = isNumber;\n\n function isString(obj) {\n return typeof obj === 'string';\n }\n\n exports.isString = isString;\n\n function isNonNullString(str) {\n return !!str;\n }\n\n exports.isNonNullString = isNonNullString;\n\n function isEven(num) {\n return num % 2 !== 0;\n }\n\n exports.isEven = isEven;\n\n function isOdd(num) {\n return num % 2 === 0;\n }\n\n exports.isOdd = isOdd;\n\n function numberToStringBin(num, minLength) {\n if (minLength === void 0) {\n minLength = 0;\n }\n\n return string_1.StringUtils.padLeft(num.toString(2), minLength, '0');\n }\n\n exports.numberToStringBin = numberToStringBin;\n\n function numberToStringHex(num, minLength) {\n if (minLength === void 0) {\n minLength = 0;\n }\n\n return string_1.StringUtils.padLeft(num.toString(16), minLength, '0');\n }\n\n exports.numberToStringHex = numberToStringHex;\n /***/\n },\n /* 2 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DateTimeUtils = void 0;\n\n var Time_1 = __webpack_require__(37);\n\n var TimeRange_1 = __webpack_require__(38);\n\n var common_1 = __webpack_require__(1);\n\n var DateRange_1 = __webpack_require__(9);\n\n var DayOfWeekMonthlyOccurrence_1 = __webpack_require__(39);\n\n var DateTimeUtils = function () {\n function DateTimeUtils() {}\n\n DateTimeUtils.compareDates = function (date1, date2) {\n if (!date1 || !date2) return -1;\n return date2.getTime() - date1.getTime();\n };\n\n DateTimeUtils.areDatesEqual = function (date1, date2) {\n return this.compareDates(date1, date2) == 0;\n };\n\n DateTimeUtils.getMaxDate = function (date1, date2) {\n if (!date1 && !date2) return null;\n if (!date1) return date2;\n if (!date2) return date1;\n var diff = this.compareDates(date1, date2);\n return diff > 0 ? date2 : date1;\n };\n\n DateTimeUtils.getMinDate = function (date1, date2) {\n if (!date1 && !date2) return null;\n if (!date1) return date2;\n if (!date2) return date1;\n var diff = this.compareDates(date1, date2);\n return diff > 0 ? date1 : date2;\n };\n\n DateTimeUtils.getDaysBetween = function (start, end) {\n var diff = Math.abs(end.getTime() - start.getTime());\n return Math.ceil(diff / this.msInDay);\n };\n\n DateTimeUtils.getWeeksBetween = function (start, end) {\n var daysBetween = this.getDaysBetween(start, end);\n var numWeeks = Math.floor(daysBetween / 7);\n if (start.getDay() > end.getDay()) numWeeks++;\n return numWeeks;\n };\n\n DateTimeUtils.getMonthsDifference = function (start, end) {\n var dateDiff = this.compareDates(start, end);\n var from = dateDiff >= 0 ? start : end;\n var to = dateDiff >= 0 ? end : start;\n var yearsDiff = to.getFullYear() - from.getFullYear();\n var monthDiff = yearsDiff * 12 + (to.getMonth() - from.getMonth());\n return monthDiff;\n };\n\n DateTimeUtils.getYearsDifference = function (start, end) {\n return Math.abs(end.getFullYear() - start.getFullYear());\n };\n\n DateTimeUtils.getDayNumber = function (date) {\n return Math.ceil(date.getTime() / this.msInDay);\n };\n\n DateTimeUtils.getDateByDayNumber = function (num) {\n var date = new Date(num * this.msInDay);\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n return date;\n };\n\n DateTimeUtils.addDays = function (date, days) {\n return new Date(date.getTime() + days * this.msInDay);\n };\n\n DateTimeUtils.checkDayOfMonth = function (day, date) {\n return day == date.getDate();\n };\n\n DateTimeUtils.checkDayOfWeek = function (day, date) {\n return day == date.getDay();\n };\n\n DateTimeUtils.checkMonth = function (month, date) {\n return month == date.getMonth();\n };\n\n DateTimeUtils.checkYear = function (year, date) {\n return year == date.getFullYear();\n };\n\n DateTimeUtils.checkDayOfWeekOccurrenceInMonth = function (date, dayOfWeek, occurrence) {\n var dayOfWeekInMonthDates = this.getSpecificDayOfWeekInMonthDates(dayOfWeek, date.getFullYear(), date.getMonth());\n if (occurrence == DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.Last) return this.areDatesEqual(date, dayOfWeekInMonthDates[dayOfWeekInMonthDates.length - 1]);\n return this.areDatesEqual(date, dayOfWeekInMonthDates[occurrence]);\n };\n\n DateTimeUtils.getFirstDayOfWeekInMonth = function (year, month) {\n var date = new Date(year, month, 1);\n return date.getDay();\n };\n\n DateTimeUtils.getSpecificDayOfWeekInMonthDates = function (dayOfWeek, year, month) {\n var firstDayOfWeekInMonth = this.getFirstDayOfWeekInMonth(year, month);\n var diffDays = dayOfWeek >= firstDayOfWeekInMonth ? dayOfWeek - firstDayOfWeekInMonth : dayOfWeek + 7 - firstDayOfWeekInMonth;\n var res = new Array();\n var specificDayOfWeekDate = new Date(year, month, diffDays + 1);\n\n while (specificDayOfWeekDate.getMonth() == month) {\n res.push(specificDayOfWeekDate);\n specificDayOfWeekDate = this.addDays(specificDayOfWeekDate, 7);\n }\n\n return res;\n };\n\n DateTimeUtils.getSpecificDayOfWeekInMonthDate = function (dayOfWeek, year, month, occurrence) {\n var dates = this.getSpecificDayOfWeekInMonthDates(dayOfWeek, year, month);\n if (occurrence == DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.Last) return dates[dates.length - 1];\n return dates[occurrence];\n };\n\n DateTimeUtils.checkValidDayInMonth = function (year, month, day) {\n if (day < 1 || day > 31 || new Date(year, month, day).getMonth() != month) return false;\n return true;\n };\n\n DateTimeUtils.getNextMonth = function (month, inc) {\n if (inc === void 0) {\n inc = 1;\n }\n\n return (month + inc) % 12;\n };\n\n DateTimeUtils.convertToDate = function (src) {\n if (src instanceof Date) return new Date(src);\n var ms = Date.parse(src);\n if (!isNaN(ms)) return new Date(ms);\n return null;\n };\n\n DateTimeUtils.convertTimeRangeToDateRange = function (timeRange, dayNumber) {\n var date = this.getDateByDayNumber(dayNumber);\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var startT = timeRange.start;\n var start = new Date(year, month, day, startT.hour, startT.min, startT.sec, startT.msec);\n var endT = timeRange.end;\n var end = new Date(year, month, day, endT.hour, endT.min, endT.sec, endT.msec);\n return new DateRange_1.DateRange(start, end);\n };\n\n DateTimeUtils.convertToTimeRanges = function (src) {\n var _this = this;\n\n if (src instanceof Array) return src.map(function (x) {\n return _this.convertToTimeRange(x);\n });\n return this.parseTimeRanges(src);\n };\n\n DateTimeUtils.convertToTimeRange = function (src) {\n if (!src) return null;\n if (src instanceof TimeRange_1.TimeRange) return src;\n if (common_1.isDefined(src.start) && common_1.isDefined(src.end)) return new TimeRange_1.TimeRange(this.convertToTime(src.start), this.convertToTime(src.end));\n return this.parseTimeRange(src);\n };\n\n DateTimeUtils.convertToTime = function (src) {\n if (!src) return null;\n if (src instanceof Time_1.Time) return src;\n if (src instanceof Date) return this.getTimeGromJsDate(src);\n return this.parseTime(src);\n };\n\n DateTimeUtils.parseTimeRanges = function (src) {\n var _this = this;\n\n if (!src) return null;\n var parts = src.split(/;|,/);\n return parts.map(function (p) {\n return _this.parseTimeRange(p);\n }).filter(function (r) {\n return !!r;\n });\n };\n\n DateTimeUtils.parseTimeRange = function (src) {\n if (!src) return null;\n var parts = src.split(\"-\");\n var start = parts[0];\n var end = parts[1];\n if (common_1.isDefined(start) && common_1.isDefined(end)) return new TimeRange_1.TimeRange(this.parseTime(start), this.parseTime(end));\n return null;\n };\n\n DateTimeUtils.parseTime = function (src) {\n if (!src) return null;\n var parts = src.split(\":\");\n var h = parseInt(parts[0]) || 0;\n var m = parseInt(parts[1]) || 0;\n var s = parseInt(parts[2]) || 0;\n var ms = parseInt(parts[3]) || 0;\n return new Time_1.Time(h, m, s, ms);\n };\n\n DateTimeUtils.getTimeGromJsDate = function (date) {\n if (!date) return null;\n var h = date.getHours();\n var m = date.getMinutes();\n var s = date.getSeconds();\n var ms = date.getMilliseconds();\n return new Time_1.Time(h, m, s, ms);\n };\n\n DateTimeUtils.caclTimeDifference = function (time1, time2) {\n return time2.getTimeInMilleconds() - time1.getTimeInMilleconds();\n };\n\n DateTimeUtils.areTimesEqual = function (time1, time2) {\n return this.caclTimeDifference(time1, time2) == 0;\n };\n\n DateTimeUtils.getMaxTime = function (time1, time2) {\n if (!time1 && !time2) return null;\n if (!time1) return time2;\n if (!time2) return time1;\n var diff = this.caclTimeDifference(time1, time2);\n return diff > 0 ? time2 : time1;\n };\n\n DateTimeUtils.getMinTime = function (time1, time2) {\n if (!time1 && !time2) return null;\n if (!time1) return time2;\n if (!time2) return time1;\n var diff = this.caclTimeDifference(time1, time2);\n return diff > 0 ? time1 : time2;\n };\n\n DateTimeUtils.getLastTimeOfDay = function () {\n return new Time_1.Time(23, 59, 59, 999);\n };\n\n DateTimeUtils.msInDay = 24 * 3600 * 1000;\n return DateTimeUtils;\n }();\n\n exports.DateTimeUtils = DateTimeUtils;\n /***/\n },\n /* 3 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(5);\n\n var common_1 = __webpack_require__(1);\n\n var math_1 = __webpack_require__(34);\n\n var string_1 = __webpack_require__(27);\n\n var DomUtils = function () {\n function DomUtils() {}\n\n DomUtils.clearInnerHtml = function (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n };\n\n DomUtils.setStylePosition = function (style, point) {\n style.left = math_1.MathUtils.round(point.x, 3) + 'px';\n style.top = math_1.MathUtils.round(point.y, 3) + 'px';\n };\n\n DomUtils.setStyleSize = function (style, size) {\n style.width = math_1.MathUtils.round(size.width, 3) + 'px';\n style.height = math_1.MathUtils.round(size.height, 3) + 'px';\n };\n\n DomUtils.setStyleSizeAndPosition = function (style, rectangle) {\n DomUtils.setStylePosition(style, rectangle);\n DomUtils.setStyleSize(style, rectangle);\n };\n\n DomUtils.hideNode = function (node) {\n if (node) {\n var parentNode = node.parentNode;\n if (parentNode) parentNode.removeChild(node);\n }\n };\n\n DomUtils.isHTMLElementNode = function (node) {\n return node.nodeType === Node.ELEMENT_NODE;\n };\n\n DomUtils.isTextNode = function (node) {\n return node.nodeType === Node.TEXT_NODE;\n };\n\n DomUtils.isElementNode = function (node) {\n return node.nodeType === Node.ELEMENT_NODE;\n };\n\n DomUtils.isHTMLTableRowElement = function (element) {\n return element.tagName === 'TR';\n };\n\n DomUtils.isItParent = function (parentElement, element) {\n if (!parentElement || !element) return false;\n\n while (element) {\n if (element === parentElement) return true;\n if (element.tagName === 'BODY') return false;\n element = element.parentNode;\n }\n\n return false;\n };\n\n DomUtils.getParentByTagName = function (element, tagName) {\n tagName = tagName.toUpperCase();\n\n while (element) {\n if (element.tagName === 'BODY') return null;\n if (element.tagName === tagName) return element;\n element = element.parentNode;\n }\n\n return null;\n };\n\n DomUtils.getDocumentScrollTop = function () {\n var isScrollBodyIE = browser_1.Browser.IE && DomUtils.getCurrentStyle(document.body).overflow === 'hidden' && document.body.scrollTop > 0;\n\n if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge || isScrollBodyIE) {\n if (browser_1.Browser.MacOSMobilePlatform) return window.pageYOffset;\n if (browser_1.Browser.WebKitFamily) return document.documentElement.scrollTop || document.body.scrollTop;\n return document.body.scrollTop;\n } else return document.documentElement.scrollTop;\n };\n\n DomUtils.getDocumentScrollLeft = function () {\n var isScrollBodyIE = browser_1.Browser.IE && DomUtils.getCurrentStyle(document.body).overflow === 'hidden' && document.body.scrollLeft > 0;\n if (browser_1.Browser.Edge || isScrollBodyIE) return document.body ? document.body.scrollLeft : document.documentElement.scrollLeft;\n if (browser_1.Browser.WebKitFamily) return document.documentElement.scrollLeft || document.body.scrollLeft;\n return document.documentElement.scrollLeft;\n };\n\n DomUtils.getCurrentStyle = function (element) {\n if (element.currentStyle) return element.currentStyle;else if (document.defaultView && document.defaultView.getComputedStyle) {\n var result = document.defaultView.getComputedStyle(element, null);\n\n if (!result && browser_1.Browser.Firefox && window.frameElement) {\n var changes = [];\n var curElement = window.frameElement;\n\n while (!(result = document.defaultView.getComputedStyle(element, null))) {\n changes.push([curElement, curElement.style.display]);\n curElement.style.setProperty('display', 'block', 'important');\n curElement = curElement.tagName === 'BODY' ? curElement.ownerDocument.defaultView.frameElement : curElement.parentNode;\n }\n\n result = cloneObject(result);\n\n for (var ch = void 0, i = 0; ch = changes[i]; i++) {\n ch[0].style.display = ch[1];\n }\n\n document.body.offsetWidth;\n }\n\n return result;\n }\n return window.getComputedStyle(element, null);\n };\n\n DomUtils.setFocus = function (element) {\n function focusCore() {\n try {\n element.focus();\n if (browser_1.Browser.IE && document.activeElement !== element) element.focus();\n } catch (e) {}\n }\n\n if (browser_1.Browser.MacOSMobilePlatform) focusCore();else {\n setTimeout(function () {\n focusCore();\n }, 100);\n }\n };\n\n DomUtils.hasClassName = function (element, className) {\n try {\n var classNames = className.split(' ');\n var classList = element.classList;\n\n if (classList) {\n for (var i = classNames.length - 1; i >= 0; i--) {\n if (!classList.contains(classNames[i])) return false;\n }\n } else {\n var elementClassName = element.getAttribute && element.getAttribute('class');\n if (!elementClassName) return false;\n var elementClasses = elementClassName.split(' ');\n\n for (var i = classNames.length - 1; i >= 0; i--) {\n if (elementClasses.indexOf(classNames[i]) < 0) return false;\n }\n }\n\n return true;\n } catch (e) {\n return false;\n }\n };\n\n DomUtils.addClassName = function (element, className) {\n if (!DomUtils.hasClassName(element, className)) {\n var elementClassName = element.getAttribute && element.getAttribute('class');\n element.setAttribute('class', elementClassName === '' ? className : elementClassName + \" \" + className);\n }\n };\n\n DomUtils.removeClassName = function (element, className) {\n var elementClassName = element.getAttribute && element.getAttribute('class');\n var updClassName = \" \" + elementClassName + \" \";\n var newClassName = updClassName.replace(\" \" + className + \" \", ' ');\n if (updClassName.length !== newClassName.length) element.setAttribute('class', string_1.StringUtils.trim(newClassName));\n };\n\n DomUtils.toggleClassName = function (element, className, toggle) {\n if (toggle === undefined) {\n if (DomUtils.hasClassName(element, className)) DomUtils.removeClassName(element, className);else DomUtils.addClassName(element, className);\n } else {\n if (toggle) DomUtils.addClassName(element, className);else DomUtils.removeClassName(element, className);\n }\n };\n\n DomUtils.pxToInt = function (px) {\n return pxToNumber(px, parseInt);\n };\n\n DomUtils.pxToFloat = function (px) {\n return pxToNumber(px, parseFloat);\n };\n\n DomUtils.getAbsolutePositionY = function (element) {\n function getAbsolutePositionY_IE(element) {\n return browser_1.Browser.IE && element.parentNode === null ? 0 : element.getBoundingClientRect().top + DomUtils.getDocumentScrollTop();\n }\n\n function getAbsolutePositionY_FF3(element) {\n return Math.round(element.getBoundingClientRect().top + DomUtils.getDocumentScrollTop());\n }\n\n function getAbsolutePositionY_Opera(curEl) {\n var isFirstCycle = true;\n if (curEl && DomUtils.isHTMLTableRowElement(curEl) && curEl.cells.length > 0) curEl = curEl.cells[0];\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, false);\n\n while (curEl != null) {\n pos += curEl.offsetTop;\n if (!isFirstCycle) pos -= curEl.scrollTop;\n curEl = curEl.offsetParent;\n isFirstCycle = false;\n }\n\n pos += document.body.scrollTop;\n return pos;\n }\n\n function getAbsolutePositionY_NS(curEl) {\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, false);\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetTop;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollTop;\n\n if (!isFirstCycle && browser_1.Browser.Firefox) {\n var style = DomUtils.getCurrentStyle(curEl);\n if (curEl.tagName === 'DIV' && style.overflow !== 'visible') pos += DomUtils.pxToInt(style.borderTopWidth);\n }\n\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n function getAbsolutePositionY_Other(curEl) {\n var pos = 0;\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetTop;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollTop;\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n if (!element) return 0;\n if (browser_1.Browser.IE) return getAbsolutePositionY_IE(element);else if (browser_1.Browser.Firefox && browser_1.Browser.Version >= 3) return getAbsolutePositionY_FF3(element);else if (browser_1.Browser.Opera) return getAbsolutePositionY_Opera(element);else if (browser_1.Browser.NetscapeFamily && (!browser_1.Browser.Firefox || browser_1.Browser.Version < 3)) return getAbsolutePositionY_NS(element);else if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge) return getAbsolutePositionY_FF3(element);\n return getAbsolutePositionY_Other(element);\n };\n\n DomUtils.getAbsolutePositionX = function (element) {\n function getAbsolutePositionX_IE(element) {\n return browser_1.Browser.IE && element.parentNode === null ? 0 : element.getBoundingClientRect().left + DomUtils.getDocumentScrollLeft();\n }\n\n function getAbsolutePositionX_FF3(element) {\n return Math.round(element.getBoundingClientRect().left + DomUtils.getDocumentScrollLeft());\n }\n\n function getAbsolutePositionX_Opera(curEl) {\n var isFirstCycle = true;\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, true);\n\n while (curEl != null) {\n pos += curEl.offsetLeft;\n if (!isFirstCycle) pos -= curEl.scrollLeft;\n curEl = curEl.offsetParent;\n isFirstCycle = false;\n }\n\n pos += document.body.scrollLeft;\n return pos;\n }\n\n function getAbsolutePositionX_NS(curEl) {\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, true);\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetLeft;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollLeft;\n\n if (!isFirstCycle && browser_1.Browser.Firefox) {\n var style = DomUtils.getCurrentStyle(curEl);\n if (curEl.tagName === 'DIV' && style.overflow !== 'visible') pos += DomUtils.pxToInt(style.borderLeftWidth);\n }\n\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n function getAbsolutePositionX_Other(curEl) {\n var pos = 0;\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetLeft;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollLeft;\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n if (!element) return 0;\n if (browser_1.Browser.IE) return getAbsolutePositionX_IE(element);else if (browser_1.Browser.Firefox && browser_1.Browser.Version >= 3) return getAbsolutePositionX_FF3(element);else if (browser_1.Browser.Opera) return getAbsolutePositionX_Opera(element);else if (browser_1.Browser.NetscapeFamily && (!browser_1.Browser.Firefox || browser_1.Browser.Version < 3)) return getAbsolutePositionX_NS(element);else if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge) return getAbsolutePositionX_FF3(element);else return getAbsolutePositionX_Other(element);\n };\n\n DomUtils.isInteractiveControl = function (element) {\n return ['A', 'INPUT', 'SELECT', 'OPTION', 'TEXTAREA', 'BUTTON', 'IFRAME'].indexOf(element.tagName) > -1;\n };\n\n DomUtils.getClearClientHeight = function (element) {\n return element.offsetHeight - (DomUtils.getTopBottomPaddings(element) + DomUtils.getVerticalBordersWidth(element));\n };\n\n DomUtils.getTopBottomPaddings = function (element, style) {\n var currentStyle = style ? style : DomUtils.getCurrentStyle(element);\n return DomUtils.pxToInt(currentStyle.paddingTop) + DomUtils.pxToInt(currentStyle.paddingBottom);\n };\n\n DomUtils.getVerticalBordersWidth = function (element, style) {\n if (!common_1.isDefined(style)) style = browser_1.Browser.IE && browser_1.Browser.MajorVersion !== 9 && window.getComputedStyle ? window.getComputedStyle(element) : DomUtils.getCurrentStyle(element);\n var res = 0;\n if (style.borderTopStyle !== 'none') res += DomUtils.pxToFloat(style.borderTopWidth);\n if (style.borderBottomStyle !== 'none') res += DomUtils.pxToFloat(style.borderBottomWidth);\n return res;\n };\n\n DomUtils.getNodes = function (parent, predicate) {\n var collection = parent.all || parent.getElementsByTagName('*');\n var result = [];\n\n for (var i = 0; i < collection.length; i++) {\n var element = collection[i];\n if (predicate(element)) result.push(element);\n }\n\n return result;\n };\n\n DomUtils.getChildNodes = function (parent, predicate) {\n var collection = parent.childNodes;\n var result = [];\n\n for (var i = 0; i < collection.length; i++) {\n var element = collection[i];\n if (predicate(element)) result.push(element);\n }\n\n return result;\n };\n\n DomUtils.getNodesByClassName = function (parent, className) {\n if (parent.querySelectorAll) {\n var children = parent.querySelectorAll(\".\" + className);\n var result_1 = [];\n children.forEach(function (element) {\n return result_1.push(element);\n });\n return result_1;\n } else return DomUtils.getNodes(parent, function (elem) {\n return DomUtils.hasClassName(elem, className);\n });\n };\n\n DomUtils.getChildNodesByClassName = function (parent, className) {\n function nodeListToArray(nodeList, filter) {\n var result = [];\n nodeList.forEach(function (element) {\n if (filter(element)) result.push(element);\n });\n return result;\n }\n\n if (parent.querySelectorAll) {\n var children = parent.querySelectorAll(\".\" + className);\n return nodeListToArray(children, function (element) {\n return element.parentNode === parent;\n });\n } else {\n return DomUtils.getChildNodes(parent, function (elem) {\n if (DomUtils.isElementNode(elem)) return common_1.isNonNullString(elem.className) && DomUtils.hasClassName(elem, elem.className);else return false;\n });\n }\n };\n\n DomUtils.getVerticalScrollBarWidth = function () {\n if (DomUtils.verticalScrollBarWidth === undefined) {\n var container = document.createElement('DIV');\n container.style.cssText = 'position: absolute; top: 0px; left: 0px; visibility: hidden; width: 200px; height: 150px; overflow: hidden; box-sizing: content-box';\n document.body.appendChild(container);\n var child = document.createElement('P');\n container.appendChild(child);\n child.style.cssText = 'width: 100%; height: 200px;';\n var widthWithoutScrollBar = child.offsetWidth;\n container.style.overflow = 'scroll';\n var widthWithScrollBar = child.offsetWidth;\n if (widthWithoutScrollBar === widthWithScrollBar) widthWithScrollBar = container.clientWidth;\n DomUtils.verticalScrollBarWidth = widthWithoutScrollBar - widthWithScrollBar;\n document.body.removeChild(container);\n }\n\n return DomUtils.verticalScrollBarWidth;\n };\n\n DomUtils.getHorizontalBordersWidth = function (element, style) {\n if (!common_1.isDefined(style)) style = browser_1.Browser.IE && window.getComputedStyle ? window.getComputedStyle(element) : DomUtils.getCurrentStyle(element);\n var res = 0;\n if (style.borderLeftStyle !== 'none') res += DomUtils.pxToFloat(style.borderLeftWidth);\n if (style.borderRightStyle !== 'none') res += DomUtils.pxToFloat(style.borderRightWidth);\n return res;\n };\n\n DomUtils.getFontFamiliesFromCssString = function (cssString) {\n return cssString.split(',').map(function (fam) {\n return string_1.StringUtils.trim(fam.replace(/'|\"/gi, ''));\n });\n };\n\n DomUtils.getInnerText = function (container) {\n if (browser_1.Browser.Safari && browser_1.Browser.MajorVersion <= 5) {\n if (DomUtils.html2PlainTextFilter === null) {\n DomUtils.html2PlainTextFilter = document.createElement('DIV');\n DomUtils.html2PlainTextFilter.style.width = '0';\n DomUtils.html2PlainTextFilter.style.height = '0';\n DomUtils.html2PlainTextFilter.style.overflow = 'visible';\n DomUtils.html2PlainTextFilter.style.display = 'none';\n document.body.appendChild(DomUtils.html2PlainTextFilter);\n }\n\n var filter = DomUtils.html2PlainTextFilter;\n filter.innerHTML = container.innerHTML;\n filter.style.display = '';\n var innerText = filter.innerText;\n filter.style.display = 'none';\n return innerText;\n } else if (browser_1.Browser.NetscapeFamily || browser_1.Browser.WebKitFamily || browser_1.Browser.IE && browser_1.Browser.Version >= 9 || browser_1.Browser.Edge) return container.textContent;else return container.innerText;\n };\n\n DomUtils.html2PlainTextFilter = null;\n DomUtils.verticalScrollBarWidth = undefined;\n return DomUtils;\n }();\n\n exports.DomUtils = DomUtils;\n\n function cloneObject(srcObject) {\n if (typeof srcObject !== 'object' || !common_1.isDefined(srcObject)) return srcObject;\n var newObject = {};\n\n for (var i in srcObject) {\n newObject[i] = srcObject[i];\n }\n\n return newObject;\n }\n\n function pxToNumber(px, parseFunction) {\n var result = 0;\n\n if (common_1.isDefined(px) && px !== '') {\n try {\n var indexOfPx = px.indexOf('px');\n if (indexOfPx > -1) result = parseFunction(px.substr(0, indexOfPx));\n } catch (e) {}\n }\n\n return result;\n }\n\n function getAbsoluteScrollOffset_OperaFF(curEl, isX) {\n var pos = 0;\n var isFirstCycle = true;\n\n while (curEl != null) {\n if (curEl.tagName === 'BODY') break;\n var style = DomUtils.getCurrentStyle(curEl);\n if (style.position === 'absolute') break;\n if (!isFirstCycle && curEl.tagName === 'DIV' && (style.position === '' || style.position === 'static')) pos -= isX ? curEl.scrollLeft : curEl.scrollTop;\n curEl = curEl.parentNode;\n isFirstCycle = false;\n }\n\n return pos;\n }\n /***/\n\n },\n /* 4 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Point = function () {\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.zero = function () {\n return new Point(0, 0);\n };\n\n Point.fromNumber = function (num) {\n return new Point(num, num);\n };\n\n Point.prototype.isZero = function () {\n return this.x === 0 && this.y === 0;\n };\n\n Point.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Point.prototype.copyFrom = function (obj) {\n this.x = obj.x;\n this.y = obj.y;\n };\n\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.equals = function (obj) {\n return this.x === obj.x && this.y === obj.y;\n };\n\n Point.prototype.offset = function (offsetX, offsetY) {\n this.x += offsetX;\n this.y += offsetY;\n return this;\n };\n\n Point.prototype.offsetByPoint = function (offset) {\n this.x += offset.x;\n this.y += offset.y;\n return this;\n };\n\n Point.prototype.multiply = function (multiplierX, multiplierY) {\n this.x *= multiplierX;\n this.y *= multiplierY;\n return this;\n };\n\n Point.prototype.negative = function () {\n this.x *= -1;\n this.y *= -1;\n return this;\n };\n\n Point.prototype.applyConverter = function (converter) {\n this.x = converter(this.x);\n this.y = converter(this.y);\n return this;\n };\n\n Point.plus = function (a, b) {\n return new Point(a.x + b.x, a.y + b.y);\n };\n\n Point.minus = function (a, b) {\n return new Point(a.x - b.x, a.y - b.y);\n };\n\n Point.xComparer = function (a, b) {\n return a.x - b.x;\n };\n\n Point.yComparer = function (a, b) {\n return a.y - b.y;\n };\n\n Point.equals = function (a, b) {\n return a.x === b.x && a.y === b.y;\n };\n\n return Point;\n }();\n\n exports.Point = Point;\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Browser = function () {\n function Browser() {}\n\n Browser.IdentUserAgent = function (userAgent, ignoreDocumentMode) {\n if (ignoreDocumentMode === void 0) {\n ignoreDocumentMode = false;\n }\n\n var browserTypesOrderedList = ['Mozilla', 'IE', 'Firefox', 'Netscape', 'Safari', 'Chrome', 'Opera', 'Opera10', 'Edge'];\n var defaultBrowserType = 'IE';\n var defaultPlatform = 'Win';\n var defaultVersions = {\n Safari: 2,\n Chrome: 0.1,\n Mozilla: 1.9,\n Netscape: 8,\n Firefox: 2,\n Opera: 9,\n IE: 6,\n Edge: 12\n };\n\n if (!userAgent || userAgent.length === 0) {\n Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);\n return;\n }\n\n userAgent = userAgent.toLowerCase();\n Browser.indentPlatformMajorVersion(userAgent);\n\n try {\n var platformIdentStrings = {\n 'Windows': 'Win',\n 'Macintosh': 'Mac',\n 'Mac OS': 'Mac',\n 'Mac_PowerPC': 'Mac',\n 'cpu os': 'MacMobile',\n 'cpu iphone os': 'MacMobile',\n 'Android': 'Android',\n '!Windows Phone': 'WinPhone',\n '!WPDesktop': 'WinPhone',\n '!ZuneWP': 'WinPhone'\n };\n var optSlashOrSpace = '(?:/|\\\\s*)?';\n var versionString = '(\\\\d+)(?:\\\\.((?:\\\\d+?[1-9])|\\\\d)0*?)?';\n var optVersion = '(?:' + versionString + ')?';\n var patterns = {\n Safari: 'applewebkit(?:.*?(?:version/' + versionString + '[\\\\.\\\\w\\\\d]*?(?:\\\\s+mobile/\\\\S*)?\\\\s+safari))?',\n Chrome: '(?:chrome|crios)(?!frame)' + optSlashOrSpace + optVersion,\n Mozilla: 'mozilla(?:.*rv:' + optVersion + '.*Gecko)?',\n Netscape: '(?:netscape|navigator)\\\\d*/?\\\\s*' + optVersion,\n Firefox: 'firefox' + optSlashOrSpace + optVersion,\n Opera: '(?:opera|\\\\sopr)' + optSlashOrSpace + optVersion,\n Opera10: 'opera.*\\\\s*version' + optSlashOrSpace + optVersion,\n IE: 'msie\\\\s*' + optVersion,\n Edge: 'edge' + optSlashOrSpace + optVersion\n };\n var browserType = null;\n var version = -1;\n\n for (var i = 0; i < browserTypesOrderedList.length; i++) {\n var browserTypeCandidate = browserTypesOrderedList[i];\n var regExp = new RegExp(patterns[browserTypeCandidate], 'i');\n var matches = regExp.exec(userAgent);\n\n if (matches && matches.index >= 0) {\n if (browserType === 'IE' && version >= 11 && browserTypeCandidate === 'Safari') continue;\n browserType = browserTypeCandidate;\n if (browserType === 'Opera10') browserType = 'Opera';\n var tridentPattern = 'trident' + optSlashOrSpace + optVersion;\n version = Browser.GetBrowserVersion(userAgent, matches, tridentPattern, Browser.getIECompatibleVersionString());\n if (browserType === 'Mozilla' && version >= 11) browserType = 'IE';\n }\n }\n\n if (!browserType) browserType = defaultBrowserType;\n var browserVersionDetected = version !== -1;\n if (!browserVersionDetected) version = defaultVersions[browserType];\n var platform = null;\n var minOccurenceIndex = Number.MAX_VALUE;\n\n for (var identStr in platformIdentStrings) {\n if (!Object.prototype.hasOwnProperty.call(platformIdentStrings, identStr)) continue;\n var importantIdent = identStr.substr(0, 1) === '!';\n var occurenceIndex = userAgent.indexOf((importantIdent ? identStr.substr(1) : identStr).toLowerCase());\n\n if (occurenceIndex >= 0 && (occurenceIndex < minOccurenceIndex || importantIdent)) {\n minOccurenceIndex = importantIdent ? 0 : occurenceIndex;\n platform = platformIdentStrings[identStr];\n }\n }\n\n var samsungPattern = 'SM-[A-Z]';\n var m = userAgent.toUpperCase().match(samsungPattern);\n var isSamsungAndroidDevice = m && m.length > 0;\n if (platform === 'WinPhone' && version < 9) version = Math.floor(Browser.getVersionFromTrident(userAgent, 'trident' + optSlashOrSpace + optVersion));\n if (!ignoreDocumentMode && browserType === 'IE' && version > 7 && document.documentMode < version) version = document.documentMode;\n if (platform === 'WinPhone') version = Math.max(9, version);\n if (!platform) platform = defaultPlatform;\n if (platform === platformIdentStrings['cpu os'] && !browserVersionDetected) version = 4;\n Browser.fillUserAgentInfo(browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice);\n } catch (e) {\n Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);\n }\n };\n\n Browser.GetBrowserVersion = function (userAgent, matches, tridentPattern, ieCompatibleVersionString) {\n var version = Browser.getVersionFromMatches(matches);\n\n if (ieCompatibleVersionString) {\n var versionFromTrident = Browser.getVersionFromTrident(userAgent, tridentPattern);\n if (ieCompatibleVersionString === 'edge' || parseInt(ieCompatibleVersionString) === versionFromTrident) return versionFromTrident;\n }\n\n return version;\n };\n\n Browser.getIECompatibleVersionString = function () {\n if (document.compatible) {\n for (var i = 0; i < document.compatible.length; i++) {\n if (document.compatible[i].userAgent === 'IE' && document.compatible[i].version) return document.compatible[i].version.toLowerCase();\n }\n }\n\n return '';\n };\n\n Browser.isTouchEnabled = function () {\n return 'ontouchstart' in window || navigator['maxTouchPoints'] > 0 || navigator['msMaxTouchPoints'] > 0;\n };\n\n Browser.fillUserAgentInfo = function (browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice) {\n if (isSamsungAndroidDevice === void 0) {\n isSamsungAndroidDevice = false;\n }\n\n for (var i = 0; i < browserTypesOrderedList.length; i++) {\n var type = browserTypesOrderedList[i];\n Browser[type] = type === browserType;\n }\n\n Browser.Version = Math.floor(10.0 * version) / 10.0;\n Browser.MajorVersion = Math.floor(Browser.Version);\n Browser.WindowsPlatform = platform === 'Win' || platform === 'WinPhone';\n Browser.MacOSMobilePlatform = platform === 'MacMobile' || platform === 'Mac' && Browser.isTouchEnabled();\n Browser.MacOSPlatform = platform === 'Mac' && !Browser.MacOSMobilePlatform;\n Browser.AndroidMobilePlatform = platform === 'Android';\n Browser.WindowsPhonePlatform = platform === 'WinPhone';\n Browser.WebKitFamily = Browser.Safari || Browser.Chrome || Browser.Opera && Browser.MajorVersion >= 15;\n Browser.NetscapeFamily = Browser.Netscape || Browser.Mozilla || Browser.Firefox;\n Browser.HardwareAcceleration = Browser.IE && Browser.MajorVersion >= 9 || Browser.Firefox && Browser.MajorVersion >= 4 || Browser.AndroidMobilePlatform && Browser.Chrome || Browser.Chrome && Browser.MajorVersion >= 37 || Browser.Safari && !Browser.WindowsPlatform || Browser.Edge || Browser.Opera && Browser.MajorVersion >= 46;\n Browser.WebKitTouchUI = Browser.MacOSMobilePlatform || Browser.AndroidMobilePlatform;\n var isIETouchUI = Browser.IE && Browser.MajorVersion > 9 && Browser.WindowsPlatform && Browser.UserAgent.toLowerCase().indexOf('touch') >= 0;\n Browser.MSTouchUI = isIETouchUI || Browser.Edge && !!window.navigator.maxTouchPoints;\n Browser.TouchUI = Browser.WebKitTouchUI || Browser.MSTouchUI;\n Browser.MobileUI = Browser.WebKitTouchUI || Browser.WindowsPhonePlatform;\n Browser.AndroidDefaultBrowser = Browser.AndroidMobilePlatform && !Browser.Chrome;\n Browser.AndroidChromeBrowser = Browser.AndroidMobilePlatform && Browser.Chrome;\n if (isSamsungAndroidDevice) Browser.SamsungAndroidDevice = isSamsungAndroidDevice;\n\n if (Browser.MSTouchUI) {\n var isARMArchitecture = Browser.UserAgent.toLowerCase().indexOf('arm;') > -1;\n Browser.VirtualKeyboardSupported = isARMArchitecture || Browser.WindowsPhonePlatform;\n } else Browser.VirtualKeyboardSupported = Browser.WebKitTouchUI;\n\n Browser.fillDocumentElementBrowserTypeClassNames(browserTypesOrderedList);\n };\n\n Browser.indentPlatformMajorVersion = function (userAgent) {\n var regex = /(?:(?:windows nt|macintosh|mac os|cpu os|cpu iphone os|android|windows phone|linux) )(\\d+)(?:[-0-9_.])*/;\n var matches = regex.exec(userAgent);\n if (matches) Browser.PlaformMajorVersion = matches[1];\n };\n\n Browser.getVersionFromMatches = function (matches) {\n var result = -1;\n var versionStr = '';\n\n if (matches) {\n if (matches[1]) {\n versionStr += matches[1];\n if (matches[2]) versionStr += '.' + matches[2];\n }\n\n if (versionStr !== '') {\n result = parseFloat(versionStr);\n if (isNaN(result)) result = -1;\n }\n }\n\n return result;\n };\n\n Browser.getVersionFromTrident = function (userAgent, tridentPattern) {\n var tridentDiffFromVersion = 4;\n var matches = new RegExp(tridentPattern, 'i').exec(userAgent);\n return Browser.getVersionFromMatches(matches) + tridentDiffFromVersion;\n };\n\n Browser.fillDocumentElementBrowserTypeClassNames = function (browserTypesOrderedList) {\n var documentElementClassName = '';\n var browserTypeslist = browserTypesOrderedList.concat(['WindowsPlatform', 'MacOSPlatform', 'MacOSMobilePlatform', 'AndroidMobilePlatform', 'WindowsPhonePlatform', 'WebKitFamily', 'WebKitTouchUI', 'MSTouchUI', 'TouchUI', 'AndroidDefaultBrowser']);\n\n for (var i = 0; i < browserTypeslist.length; i++) {\n var type = browserTypeslist[i];\n if (Browser[type]) documentElementClassName += 'dx' + type + ' ';\n }\n\n documentElementClassName += 'dxBrowserVersion-' + Browser.MajorVersion;\n\n if (typeof document !== 'undefined' && document && document.documentElement) {\n if (document.documentElement.className !== '') documentElementClassName = ' ' + documentElementClassName;\n document.documentElement.className += documentElementClassName;\n Browser.Info = documentElementClassName;\n }\n };\n\n Browser.getUserAgent = function () {\n return typeof navigator !== 'undefined' && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\n };\n\n Browser.UserAgent = Browser.getUserAgent();\n Browser._foo = Browser.IdentUserAgent(Browser.UserAgent);\n return Browser;\n }();\n\n exports.Browser = Browser;\n /***/\n },\n /* 6 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(5);\n\n var common_1 = __webpack_require__(1);\n\n var dom_1 = __webpack_require__(3);\n\n var touch_1 = __webpack_require__(15);\n\n var EvtUtils = function () {\n function EvtUtils() {}\n\n EvtUtils.preventEvent = function (evt) {\n if (evt.preventDefault) evt.preventDefault();else evt.returnValue = false;\n };\n\n EvtUtils.getEventSource = function (evt) {\n if (!common_1.isDefined(evt)) return null;\n return evt.srcElement ? evt.srcElement : evt.target;\n };\n\n EvtUtils.getEventSourceByPosition = function (evt) {\n if (!common_1.isDefined(evt)) return null;\n if (document.elementFromPoint && EvtUtils.getEventX(evt) !== undefined && EvtUtils.getEventY(evt) !== undefined) return document.elementFromPoint(EvtUtils.getEventX(evt), EvtUtils.getEventY(evt));\n return evt.srcElement ? evt.srcElement : evt.target;\n };\n\n EvtUtils.getMouseWheelEventName = function () {\n if (browser_1.Browser.Safari) return 'mousewheel';\n if (browser_1.Browser.NetscapeFamily && browser_1.Browser.MajorVersion < 17) return 'DOMMouseScroll';\n return 'wheel';\n };\n\n EvtUtils.isLeftButtonPressed = function (evt) {\n if (touch_1.TouchUtils.isTouchEvent(evt)) return true;\n evt = browser_1.Browser.IE && common_1.isDefined(event) ? event : evt;\n if (!evt) return false;\n\n if (browser_1.Browser.IE && browser_1.Browser.Version < 11) {\n if (browser_1.Browser.MSTouchUI) return true;\n return evt.button % 2 === 1;\n } else if (browser_1.Browser.WebKitFamily) {\n if (evt.type === 'pointermove') return evt.buttons === 1;\n return evt.which === 1;\n } else if (browser_1.Browser.NetscapeFamily || browser_1.Browser.Edge || browser_1.Browser.IE && browser_1.Browser.Version >= 11) {\n if (evt.type === touch_1.TouchUtils.touchMouseMoveEventName) return evt.buttons === 1;\n return evt.which === 1;\n } else if (browser_1.Browser.Opera) return evt.button === 0;\n\n return true;\n };\n\n EvtUtils.preventEventAndBubble = function (evt) {\n EvtUtils.preventEvent(evt);\n if (evt.stopPropagation) evt.stopPropagation();\n evt.cancelBubble = true;\n };\n\n EvtUtils.clientEventRequiresDocScrollCorrection = function () {\n var isSafariVerLess3 = browser_1.Browser.Safari && browser_1.Browser.Version < 3;\n var isMacOSMobileVerLess51 = browser_1.Browser.MacOSMobilePlatform && browser_1.Browser.Version < 5.1;\n return browser_1.Browser.AndroidDefaultBrowser || browser_1.Browser.AndroidChromeBrowser || !(isSafariVerLess3 || isMacOSMobileVerLess51);\n };\n\n EvtUtils.getEventX = function (evt) {\n if (touch_1.TouchUtils.isTouchEvent(evt)) return touch_1.TouchUtils.getEventX(evt);\n return evt.clientX + (EvtUtils.clientEventRequiresDocScrollCorrection() ? dom_1.DomUtils.getDocumentScrollLeft() : 0);\n };\n\n EvtUtils.getEventY = function (evt) {\n if (touch_1.TouchUtils.isTouchEvent(evt)) return touch_1.TouchUtils.getEventY(evt);\n return evt.clientY + (EvtUtils.clientEventRequiresDocScrollCorrection() ? dom_1.DomUtils.getDocumentScrollTop() : 0);\n };\n\n EvtUtils.cancelBubble = function (evt) {\n evt.cancelBubble = true;\n };\n\n EvtUtils.getWheelDelta = function (evt) {\n var ret;\n if (browser_1.Browser.NetscapeFamily && browser_1.Browser.MajorVersion < 17) ret = -evt.detail;else if (browser_1.Browser.Safari) ret = evt.wheelDelta;else ret = -evt.deltaY;\n if (browser_1.Browser.Opera && browser_1.Browser.Version < 9) ret = -ret;\n return ret;\n };\n\n return EvtUtils;\n }();\n\n exports.EvtUtils = EvtUtils;\n /***/\n },\n /* 7 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SimpleCommandState = exports.CommandBase = void 0;\n\n var CommandBase = function () {\n function CommandBase(control) {\n this.control = control;\n }\n\n Object.defineProperty(CommandBase.prototype, \"modelManipulator\", {\n get: function get() {\n return this.control.modelManipulator;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandBase.prototype, \"history\", {\n get: function get() {\n return this.control.history;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandBase.prototype, \"validationController\", {\n get: function get() {\n return this.control.validationController;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandBase.prototype, \"state\", {\n get: function get() {\n if (!this._state) this._state = this.getState();\n return this._state;\n },\n enumerable: false,\n configurable: true\n });\n\n CommandBase.prototype.execute = function () {\n var parameters = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n\n if (!this.state.enabled) return false;\n var executed = this.executeInternal.apply(this, parameters);\n if (executed) this.control.barManager.updateItemsState([]);\n return executed;\n };\n\n CommandBase.prototype.isEnabled = function () {\n return this.control.settings.editing.enabled;\n };\n\n CommandBase.prototype.executeInternal = function () {\n var parameters = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n\n throw new Error(\"Not implemented\");\n };\n\n return CommandBase;\n }();\n\n exports.CommandBase = CommandBase;\n\n var SimpleCommandState = function () {\n function SimpleCommandState(enabled, value) {\n this.visible = true;\n this.enabled = enabled;\n this.value = value;\n }\n\n return SimpleCommandState;\n }();\n\n exports.SimpleCommandState = SimpleCommandState;\n /***/\n },\n /* 8 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskAreaManager = exports.MouseEventSource = void 0;\n\n var browser_1 = __webpack_require__(5);\n\n var point_1 = __webpack_require__(4);\n\n var dom_1 = __webpack_require__(3);\n\n var evt_1 = __webpack_require__(6);\n\n var touch_1 = __webpack_require__(15);\n\n var GridLayoutCalculator_1 = __webpack_require__(17);\n\n var MouseEventSource;\n\n (function (MouseEventSource) {\n MouseEventSource[MouseEventSource[\"TaskArea\"] = 0] = \"TaskArea\";\n MouseEventSource[MouseEventSource[\"TaskEdit_Frame\"] = 1] = \"TaskEdit_Frame\";\n MouseEventSource[MouseEventSource[\"TaskEdit_Progress\"] = 2] = \"TaskEdit_Progress\";\n MouseEventSource[MouseEventSource[\"TaskEdit_Start\"] = 3] = \"TaskEdit_Start\";\n MouseEventSource[MouseEventSource[\"TaskEdit_End\"] = 4] = \"TaskEdit_End\";\n MouseEventSource[MouseEventSource[\"TaskEdit_DependencyStart\"] = 5] = \"TaskEdit_DependencyStart\";\n MouseEventSource[MouseEventSource[\"TaskEdit_DependencyFinish\"] = 6] = \"TaskEdit_DependencyFinish\";\n MouseEventSource[MouseEventSource[\"Successor_Wrapper\"] = 7] = \"Successor_Wrapper\";\n MouseEventSource[MouseEventSource[\"Successor_DependencyStart\"] = 8] = \"Successor_DependencyStart\";\n MouseEventSource[MouseEventSource[\"Successor_DependencyFinish\"] = 9] = \"Successor_DependencyFinish\";\n })(MouseEventSource = exports.MouseEventSource || (exports.MouseEventSource = {}));\n\n var TaskAreaManager = function () {\n function TaskAreaManager(ganttView) {\n this.time = new Date();\n this.touchTime = new Date();\n this.ganttView = ganttView;\n this.eventManager = ganttView.eventManager;\n this.position = new point_1.Point(-1, -1);\n if (!browser_1.Browser.WebKitTouchUI) this.initMouseEvents();\n if (browser_1.Browser.isTouchEnabled()) this.initTouchEvents();\n }\n\n TaskAreaManager.prototype.initMouseEventHandlers = function () {\n var _this = this;\n\n this.onMouseClickHandler = function (evt) {\n _this.onTaskAreaClick(evt);\n };\n\n this.onMouseDblClickHandler = function (evt) {\n _this.onTaskAreaDblClick(evt);\n };\n\n this.onScrollHandler = this.ganttView.updateView.bind(this.ganttView);\n\n this.onContextMenuHandler = function (evt) {\n _this.onContextMenu(evt);\n };\n\n this.onMouseWheelHandler = function (evt) {\n _this.onMouseWheel(evt);\n };\n\n this.onMouseDownHandler = function (evt) {\n _this.onMouseDown(evt);\n };\n\n this.onMouseMoveHandler = function (evt) {\n _this.onDocumentMouseMove(evt);\n };\n\n this.onMouseUpHandler = function (evt) {\n _this.onDocumentMouseUp(evt);\n };\n\n this.onKeyDownHandler = function (evt) {\n _this.onDocumentKeyDown(evt);\n };\n };\n\n TaskAreaManager.prototype.initTouchEventHandlers = function () {\n var _this = this;\n\n this.onTouchStartHandler = function (evt) {\n _this.onTouchStart(evt);\n };\n\n this.onTouchEndHandler = function (evt) {\n _this.onTouchEnd(evt);\n };\n\n this.onTouchMoveHandler = function (evt) {\n _this.onTouchMove(evt);\n };\n\n this.onPointerDownHandler = function (evt) {\n _this.onMouseDown(evt);\n };\n\n this.onPointerUpHandler = function (evt) {\n _this.onDocumentMouseUp(evt);\n };\n\n this.onPointerMoveHandler = function (evt) {\n _this.onDocumentMouseMove(evt);\n };\n };\n\n TaskAreaManager.prototype.initMouseEvents = function () {\n this.initMouseEventHandlers();\n this.ganttView.taskArea.addEventListener(\"click\", this.onMouseClickHandler);\n this.ganttView.taskArea.addEventListener(\"dblclick\", this.onMouseDblClickHandler);\n this.ganttView.taskArea.addEventListener(\"scroll\", this.onScrollHandler);\n this.ganttView.taskArea.addEventListener(\"contextmenu\", this.onContextMenuHandler);\n this.ganttView.taskArea.addEventListener(evt_1.EvtUtils.getMouseWheelEventName(), this.onMouseWheelHandler);\n this.ganttView.taskArea.addEventListener(\"mousedown\", this.onMouseDownHandler);\n document.addEventListener(\"mousemove\", this.onMouseMoveHandler);\n document.addEventListener(\"mouseup\", this.onMouseUpHandler);\n document.addEventListener(\"keydown\", this.onKeyDownHandler);\n };\n\n TaskAreaManager.prototype.detachMouseEvents = function () {\n this.initTouchEventHandlers();\n this.ganttView.taskArea.removeEventListener(\"click\", this.onMouseClickHandler);\n this.ganttView.taskArea.removeEventListener(\"dblclick\", this.onMouseDblClickHandler);\n this.ganttView.taskArea.removeEventListener(\"scroll\", this.onScrollHandler);\n this.ganttView.taskArea.removeEventListener(\"contextmenu\", this.onContextMenuHandler);\n this.ganttView.taskArea.removeEventListener(evt_1.EvtUtils.getMouseWheelEventName(), this.onMouseWheelHandler);\n this.ganttView.taskArea.removeEventListener(\"mousedown\", this.onMouseDownHandler);\n document.removeEventListener(\"mousemove\", this.onMouseMoveHandler);\n document.removeEventListener(\"mouseup\", this.onMouseUpHandler);\n document.removeEventListener(\"keydown\", this.onKeyDownHandler);\n };\n\n TaskAreaManager.prototype.initTouchEvents = function () {\n if (browser_1.Browser.WebKitTouchUI || browser_1.Browser.WindowsPlatform && !browser_1.Browser.Edge && !browser_1.Browser.IE) {\n this.ganttView.taskArea.addEventListener(\"touchstart\", this.onTouchStartHandler);\n this.ganttView.taskArea.addEventListener(\"touchend\", this.onTouchEndHandler);\n this.ganttView.taskArea.addEventListener(\"touchmove\", this.onTouchMoveHandler);\n } else if (browser_1.Browser.MSTouchUI) {\n this.ganttView.taskArea.classList.add(TaskAreaManager.MS_POINTER_ACTIVE_CLASS);\n this.ganttView.taskArea.addEventListener(\"pointerdown\", this.onPointerDownHandler);\n this.ganttView.taskArea.addEventListener(\"pointerup\", this.onPointerUpHandler);\n this.ganttView.taskArea.addEventListener(\"pointermove\", this.onPointerMoveHandler);\n }\n };\n\n TaskAreaManager.prototype.detachTouchEvents = function () {\n this.ganttView.taskArea.removeEventListener(\"touchstart\", this.onTouchStartHandler);\n this.ganttView.taskArea.removeEventListener(\"touchend\", this.onTouchEndHandler);\n this.ganttView.taskArea.removeEventListener(\"touchmove\", this.onTouchMoveHandler);\n this.ganttView.taskArea.removeEventListener(\"pointerdown\", this.onPointerDownHandler);\n this.ganttView.taskArea.removeEventListener(\"pointerup\", this.onPointerUpHandler);\n this.ganttView.taskArea.removeEventListener(\"pointermove\", this.onPointerMoveHandler);\n };\n\n TaskAreaManager.prototype.attachEventsOnTask = function (taskElement) {\n var _this = this;\n\n this.onMouseEnterHandler = function (evt) {\n if (browser_1.Browser.MSTouchUI) setTimeout(function () {\n return _this.onTaskElementHover(evt);\n }, 0);else _this.onTaskElementHover(evt);\n };\n\n taskElement.addEventListener(\"mouseenter\", this.onMouseEnterHandler);\n };\n\n TaskAreaManager.prototype.detachEventsOnTask = function (taskElement) {\n taskElement.removeEventListener(\"mouseenter\", this.onMouseEnterHandler);\n };\n\n TaskAreaManager.prototype.detachEvents = function () {\n this.detachMouseEvents();\n this.detachTouchEvents();\n };\n\n TaskAreaManager.prototype.onMouseDown = function (evt) {\n this.eventManager.onMouseDown(evt);\n this.preventSelect = false;\n this.position = new point_1.Point(evt.clientX, evt.clientY);\n };\n\n TaskAreaManager.prototype.onDocumentMouseUp = function (evt) {\n var _this = this;\n\n this.ganttView.isFocus = dom_1.DomUtils.isItParent(this.ganttView.taskArea, evt_1.EvtUtils.getEventSource(evt)) ? true : false;\n if (this.ganttView.isFocus && !this.preventSelect && this.ganttView.settings.allowSelectTask && !this.isConnectorLine(evt)) setTimeout(function () {\n _this.changeTaskSelection(_this.getClickedTaskIndex(evt));\n }, 0);\n this.eventManager.onMouseUp(evt);\n };\n\n TaskAreaManager.prototype.onMouseWheel = function (evt) {\n this.eventManager.onMouseWheel(evt);\n };\n\n TaskAreaManager.prototype.onDocumentKeyDown = function (evt) {\n this.eventManager.onKeyDown(evt);\n };\n\n TaskAreaManager.prototype.onDocumentMouseMove = function (evt) {\n if (this.position.x != evt.clientX || this.position.y != evt.clientY) {\n this.eventManager.onMouseMove(evt);\n this.preventSelect = true;\n }\n };\n\n TaskAreaManager.prototype.onTouchStart = function (evt) {\n this.position = new point_1.Point(touch_1.TouchUtils.getEventX(evt), touch_1.TouchUtils.getEventY(evt));\n var clickedItem = this.ganttView.viewModel.items[this.getClickedTaskIndex(evt)];\n var now = new Date();\n\n if (evt.touches.length === 1 && now.getTime() - this.touchTime.getTime() < TaskAreaManager.DBLCLICK_INTERVAL) {\n evt.preventDefault();\n if (clickedItem && this.ganttView.onTaskDblClick(clickedItem.task.id, evt)) this.ganttView.commandManager.showTaskEditDialog.execute(clickedItem.task);\n } else this.eventManager.onTouchStart(evt);\n\n if (clickedItem && this.ganttView.onTaskClick(clickedItem.task.id, evt)) this.touchTime = now;\n this.preventSelect = false;\n };\n\n TaskAreaManager.prototype.onTouchEnd = function (evt) {\n this.eventManager.onTouchEnd(evt);\n };\n\n TaskAreaManager.prototype.onTouchMove = function (evt) {\n if (this.position.x != touch_1.TouchUtils.getEventX(evt) || this.position.y != touch_1.TouchUtils.getEventY(evt)) {\n this.eventManager.onTouchMove(evt);\n this.preventSelect = true;\n }\n };\n\n TaskAreaManager.prototype.getDependencyKeyFromSource = function (source) {\n return this.ganttView.viewModel.convertInternalToPublicKey(\"dependency\", source.getAttribute(\"dependency-id\"));\n };\n\n TaskAreaManager.prototype.onContextMenu = function (evt) {\n var source = evt_1.EvtUtils.getEventSource(evt);\n var isDependency = this.isConnectorLine(evt);\n var type = isDependency ? \"dependency\" : \"task\";\n var key = isDependency ? this.getDependencyKeyFromSource(source) : this.getClickedTaskKey(this.getClickedTaskIndex(evt));\n if (evt.stopPropagation) evt.stopPropagation();\n if (evt.preventDefault) evt.preventDefault();\n if (browser_1.Browser.WebKitFamily) evt.returnValue = false;\n\n if (this.ganttView.ganttOwner.onGanttViewContextMenu(evt, key, type)) {\n var info = {\n event: evt,\n type: type,\n key: key,\n position: new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt))\n };\n this.ganttView.ganttOwner.showPopupMenu(info);\n }\n };\n\n TaskAreaManager.prototype.onTaskElementHover = function (evt) {\n evt.preventDefault();\n var hoveredTaskIndex = this.getClickedTaskIndex(evt);\n this.ganttView.taskEditController.show(hoveredTaskIndex);\n this.ganttView.taskEditController.showTaskInfo(evt_1.EvtUtils.getEventX(evt));\n };\n\n TaskAreaManager.prototype.getClickedTaskIndex = function (evt) {\n var y = evt_1.EvtUtils.getEventY(evt);\n var taskAreaY = dom_1.DomUtils.getAbsolutePositionY(this.ganttView.taskArea);\n var relativeY = y - taskAreaY;\n return Math.floor(relativeY / this.ganttView.tickSize.height);\n };\n\n TaskAreaManager.prototype.getClickedTaskKey = function (index) {\n var clickedItem = this.ganttView.viewModel.items[index];\n return clickedItem && clickedItem.task && clickedItem.task.id;\n };\n\n TaskAreaManager.prototype.changeTaskSelection = function (index) {\n var clickedTask = this.ganttView.viewModel.items[index];\n if (clickedTask) this.ganttView.ganttOwner.changeGanttTaskSelection(clickedTask.task.id, true);\n };\n\n TaskAreaManager.prototype.onTaskAreaClick = function (evt) {\n var clickedTaskIndex = this.getClickedTaskIndex(evt);\n var clickedItem = this.ganttView.viewModel.items[clickedTaskIndex];\n if (clickedItem) this.ganttView.onTaskClick(clickedItem.task.id, evt);\n };\n\n TaskAreaManager.prototype.onTaskAreaDblClick = function (evt) {\n evt.preventDefault();\n var clickedTaskIndex = this.getClickedTaskIndex(evt);\n var clickedItem = this.ganttView.viewModel.items[clickedTaskIndex];\n if (clickedItem && this.ganttView.onTaskDblClick(clickedItem.task.id, evt)) this.ganttView.commandManager.showTaskEditDialog.execute(clickedItem.task);\n };\n\n TaskAreaManager.prototype.isConnectorLine = function (evt) {\n var source = evt_1.EvtUtils.getEventSource(evt);\n return dom_1.DomUtils.hasClassName(source, GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL) || dom_1.DomUtils.hasClassName(source, GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL);\n };\n\n TaskAreaManager.DBLCLICK_INTERVAL = 300;\n TaskAreaManager.MS_POINTER_ACTIVE_CLASS = \"ms-pointer-active\";\n return TaskAreaManager;\n }();\n\n exports.TaskAreaManager = TaskAreaManager;\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DateRange = void 0;\n\n var DateRange = function () {\n function DateRange(start, end) {\n this.start = start;\n this.end = end;\n }\n\n DateRange.prototype.equal = function (date) {\n var result = true;\n result = result && this.start.getTime() === date.start.getTime();\n result = result && this.end.getTime() === date.end.getTime();\n return result;\n };\n\n return DateRange;\n }();\n\n exports.DateRange = DateRange;\n /***/\n },\n /* 10 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataObject = void 0;\n\n var common_1 = __webpack_require__(1);\n\n var math_1 = __webpack_require__(34);\n\n var DataObject = function () {\n function DataObject() {\n this.internalId = math_1.MathUtils.generateGuid();\n }\n\n DataObject.prototype.assignFromObject = function (sourceObj) {\n if (!common_1.isDefined(sourceObj)) return;\n\n if (common_1.isDefined(sourceObj.id)) {\n this.id = sourceObj.id;\n this.internalId = String(sourceObj.id);\n }\n };\n\n return DataObject;\n }();\n\n exports.DataObject = DataObject;\n /***/\n },\n /* 11 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Dependency = exports.DependencyType = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DataObject_1 = __webpack_require__(10);\n\n var common_1 = __webpack_require__(1);\n\n var DependencyType;\n\n (function (DependencyType) {\n DependencyType[DependencyType[\"FS\"] = 0] = \"FS\";\n DependencyType[DependencyType[\"SS\"] = 1] = \"SS\";\n DependencyType[DependencyType[\"FF\"] = 2] = \"FF\";\n DependencyType[DependencyType[\"SF\"] = 3] = \"SF\";\n })(DependencyType = exports.DependencyType || (exports.DependencyType = {}));\n\n var Dependency = function (_super) {\n tslib_1.__extends(Dependency, _super);\n\n function Dependency() {\n var _this = _super.call(this) || this;\n\n _this.predecessorId = \"\";\n _this.successorId = \"\";\n _this.type = null;\n return _this;\n }\n\n Object.defineProperty(Dependency.prototype, \"isStartDependency\", {\n get: function get() {\n return this.type === DependencyType.SS || this.type === DependencyType.SF;\n },\n enumerable: false,\n configurable: true\n });\n\n Dependency.prototype.assignFromObject = function (sourceObj) {\n if (common_1.isDefined(sourceObj)) {\n _super.prototype.assignFromObject.call(this, sourceObj);\n\n this.internalId = String(sourceObj.id);\n this.predecessorId = String(sourceObj.predecessorId);\n this.successorId = String(sourceObj.successorId);\n this.type = this.parseType(sourceObj.type);\n }\n };\n\n Dependency.prototype.parseType = function (type) {\n if (common_1.isDefined(type)) {\n var text = type.toString().toUpperCase();\n\n switch (text) {\n case \"SS\":\n case \"1\":\n return DependencyType.SS;\n\n case \"FF\":\n case \"2\":\n return DependencyType.FF;\n\n case \"SF\":\n case \"3\":\n return DependencyType.SF;\n\n default:\n return DependencyType.FS;\n }\n } else return DependencyType.FS;\n };\n\n return Dependency;\n }(DataObject_1.DataObject);\n\n exports.Dependency = Dependency;\n /***/\n },\n /* 12 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CompositionHistoryItem = exports.HistoryItem = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItem = function () {\n function HistoryItem(modelManipulator) {\n this.setModelManipulator(modelManipulator);\n }\n\n HistoryItem.prototype.setModelManipulator = function (modelManipulator) {\n this.modelManipulator = modelManipulator;\n };\n\n return HistoryItem;\n }();\n\n exports.HistoryItem = HistoryItem;\n\n var CompositionHistoryItem = function (_super) {\n tslib_1.__extends(CompositionHistoryItem, _super);\n\n function CompositionHistoryItem() {\n var _this = _super.call(this, null) || this;\n\n _this.historyItems = [];\n return _this;\n }\n\n CompositionHistoryItem.prototype.redo = function () {\n var item;\n\n for (var i = 0; item = this.historyItems[i]; i++) {\n item.redo();\n }\n };\n\n CompositionHistoryItem.prototype.undo = function () {\n var item;\n\n for (var i = this.historyItems.length - 1; item = this.historyItems[i]; i--) {\n item.undo();\n }\n };\n\n CompositionHistoryItem.prototype.add = function (historyItem) {\n if (historyItem == null) throw new Error(\"Can't add null HistoryItem\");\n this.historyItems.push(historyItem);\n };\n\n CompositionHistoryItem.prototype.undoItemsQuery = function () {\n this.undo();\n };\n\n CompositionHistoryItem.prototype.setModelManipulator = function (modelManipulator) {\n if (this.historyItems) for (var i = 0; i < this.historyItems.length - 1; i++) {\n this.historyItems[i].setModelManipulator(modelManipulator);\n }\n };\n\n return CompositionHistoryItem;\n }(HistoryItem);\n\n exports.CompositionHistoryItem = CompositionHistoryItem;\n /***/\n },\n /* 13 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CollectionBase = void 0;\n\n var common_1 = __webpack_require__(1);\n\n var Utils_1 = __webpack_require__(57);\n\n var CollectionBase = function () {\n function CollectionBase() {\n this._items = new Array();\n this._isGanttCollection = true;\n }\n\n CollectionBase.prototype.add = function (element) {\n if (!common_1.isDefined(element)) return;\n if (this.getItemById(element.internalId)) throw \"The collection item with id ='\" + element.internalId + \"' already exists.\";\n\n this._addItem(element);\n };\n\n CollectionBase.prototype.addRange = function (range) {\n for (var i = 0; i < range.length; i++) {\n this.add(range[i]);\n }\n };\n\n CollectionBase.prototype.remove = function (element) {\n var index = this._items.indexOf(element);\n\n if (index > -1 && index < this._items.length) this._removeItems(index, 1);\n };\n\n CollectionBase.prototype.clear = function () {\n this._removeItems(0, this._items.length);\n };\n\n CollectionBase.prototype._addItem = function (element) {\n this._items.push(element);\n\n delete this._invertedItems;\n };\n\n CollectionBase.prototype._removeItems = function (start, count) {\n this._items.splice(start, count);\n\n delete this._invertedItems;\n };\n\n Object.defineProperty(CollectionBase.prototype, \"items\", {\n get: function get() {\n return this._items.slice();\n },\n set: function set(value) {\n if (value) this._items = value.slice();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CollectionBase.prototype, \"length\", {\n get: function get() {\n return this._items.length;\n },\n enumerable: false,\n configurable: true\n });\n\n CollectionBase.prototype.getItem = function (index) {\n if (index > -1 && index < this._items.length) return this._items[index];\n return null;\n };\n\n Object.defineProperty(CollectionBase.prototype, \"invertedItems\", {\n get: function get() {\n var _a;\n\n (_a = this._invertedItems) !== null && _a !== void 0 ? _a : this._invertedItems = this._createInvertedItems();\n return this._invertedItems;\n },\n enumerable: false,\n configurable: true\n });\n\n CollectionBase.prototype._createInvertedItems = function () {\n var result = {};\n\n for (var i = 0; i < this._items.length; i++) {\n var item = this._items[i];\n result[item.internalId] = item;\n }\n\n return result;\n };\n\n CollectionBase.prototype.getItemById = function (id) {\n return this.invertedItems[id];\n };\n\n CollectionBase.prototype.getItemByPublicId = function (id) {\n return this._items.filter(function (val) {\n return val.id === id || val.id.toString() === id;\n })[0];\n };\n\n CollectionBase.prototype.assign = function (sourceCollection) {\n if (!common_1.isDefined(sourceCollection)) return;\n this.items = sourceCollection.items;\n };\n\n CollectionBase.prototype.importFromObject = function (source) {\n if (!common_1.isDefined(source)) return;\n this.clear();\n if (source._isGanttCollection) this.assign(source);else if (source instanceof Array) this.importFromArray(source);else this.createItemFromObjectAndAdd(source);\n };\n\n CollectionBase.prototype.createItemFromObjectAndAdd = function (source) {\n if (common_1.isDefined(source)) {\n var item = this.createItem();\n item.assignFromObject(source);\n this.add(item);\n }\n };\n\n CollectionBase.prototype.importFromArray = function (values) {\n for (var i = 0; i < values.length; i++) {\n this.createItemFromObjectAndAdd(values[i]);\n }\n };\n\n CollectionBase.prototype.importFromJSON = function (json) {\n this.importFromObject(Utils_1.GanttJsonUtils.parseJson(json));\n };\n\n return CollectionBase;\n }();\n\n exports.CollectionBase = CollectionBase;\n /***/\n },\n /* 14 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskTitlePosition = exports.Position = exports.ViewType = void 0;\n var ViewType;\n\n (function (ViewType) {\n ViewType[ViewType[\"TenMinutes\"] = 0] = \"TenMinutes\";\n ViewType[ViewType[\"Hours\"] = 1] = \"Hours\";\n ViewType[ViewType[\"SixHours\"] = 2] = \"SixHours\";\n ViewType[ViewType[\"Days\"] = 3] = \"Days\";\n ViewType[ViewType[\"Weeks\"] = 4] = \"Weeks\";\n ViewType[ViewType[\"Months\"] = 5] = \"Months\";\n ViewType[ViewType[\"Quarter\"] = 6] = \"Quarter\";\n ViewType[ViewType[\"Years\"] = 7] = \"Years\";\n ViewType[ViewType[\"FiveYears\"] = 8] = \"FiveYears\";\n })(ViewType = exports.ViewType || (exports.ViewType = {}));\n\n var Position;\n\n (function (Position) {\n Position[Position[\"Left\"] = 0] = \"Left\";\n Position[Position[\"Top\"] = 1] = \"Top\";\n Position[Position[\"Right\"] = 2] = \"Right\";\n Position[Position[\"Bottom\"] = 3] = \"Bottom\";\n })(Position = exports.Position || (exports.Position = {}));\n\n var TaskTitlePosition;\n\n (function (TaskTitlePosition) {\n TaskTitlePosition[TaskTitlePosition[\"Inside\"] = 0] = \"Inside\";\n TaskTitlePosition[TaskTitlePosition[\"Outside\"] = 1] = \"Outside\";\n TaskTitlePosition[TaskTitlePosition[\"None\"] = 2] = \"None\";\n })(TaskTitlePosition = exports.TaskTitlePosition || (exports.TaskTitlePosition = {}));\n /***/\n\n },\n /* 15 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(5);\n\n var common_1 = __webpack_require__(1);\n\n var TouchUtils = function () {\n function TouchUtils() {}\n\n TouchUtils.onEventAttachingToDocument = function (eventName, func) {\n if (browser_1.Browser.MacOSMobilePlatform && TouchUtils.isTouchEventName(eventName)) {\n if (!TouchUtils.documentTouchHandlers[eventName]) TouchUtils.documentTouchHandlers[eventName] = [];\n TouchUtils.documentTouchHandlers[eventName].push(func);\n return TouchUtils.documentEventAttachingAllowed;\n }\n\n return true;\n };\n\n TouchUtils.isTouchEventName = function (eventName) {\n return browser_1.Browser.WebKitTouchUI && (eventName.indexOf('touch') > -1 || eventName.indexOf('gesture') > -1);\n };\n\n TouchUtils.isTouchEvent = function (evt) {\n return browser_1.Browser.WebKitTouchUI && common_1.isDefined(evt.changedTouches);\n };\n\n TouchUtils.getEventX = function (evt) {\n return browser_1.Browser.IE ? evt.pageX : evt.changedTouches[0].pageX;\n };\n\n TouchUtils.getEventY = function (evt) {\n return browser_1.Browser.IE ? evt.pageY : evt.changedTouches[0].pageY;\n };\n\n TouchUtils.touchMouseDownEventName = browser_1.Browser.WebKitTouchUI ? 'touchstart' : browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointerdown' : 'mousedown';\n TouchUtils.touchMouseUpEventName = browser_1.Browser.WebKitTouchUI ? 'touchend' : browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointerup' : 'mouseup';\n TouchUtils.touchMouseMoveEventName = browser_1.Browser.WebKitTouchUI ? 'touchmove' : browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointermove' : 'mousemove';\n TouchUtils.msTouchDraggableClassName = 'dxMSTouchDraggable';\n TouchUtils.documentTouchHandlers = {};\n TouchUtils.documentEventAttachingAllowed = true;\n return TouchUtils;\n }();\n\n exports.TouchUtils = TouchUtils;\n /***/\n },\n /* 16 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RecurrenceBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DataObject_1 = __webpack_require__(10);\n\n var DayOfWeek_1 = __webpack_require__(71);\n\n var DayOfWeekMonthlyOccurrence_1 = __webpack_require__(39);\n\n var Month_1 = __webpack_require__(72);\n\n var common_1 = __webpack_require__(1);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var RecurrenceFactory_1 = __webpack_require__(40);\n\n var RecurrenceBase = function (_super) {\n tslib_1.__extends(RecurrenceBase, _super);\n\n function RecurrenceBase(start, end, interval, occurrenceCount) {\n if (start === void 0) {\n start = null;\n }\n\n if (end === void 0) {\n end = null;\n }\n\n if (interval === void 0) {\n interval = 1;\n }\n\n if (occurrenceCount === void 0) {\n occurrenceCount = 0;\n }\n\n var _this = _super.call(this) || this;\n\n _this._start = null;\n _this._end = null;\n _this._interval = 1;\n _this._occurrenceCount = 0;\n _this._dayOfWeek = 0;\n _this._day = 1;\n _this._dayOfWeekOccurrence = 0;\n _this._month = 0;\n _this._calculateByDayOfWeek = false;\n _this.start = start;\n _this.end = end;\n _this.interval = interval;\n _this.occurrenceCount = occurrenceCount;\n return _this;\n }\n\n RecurrenceBase.prototype.assignFromObject = function (sourceObj) {\n if (common_1.isDefined(sourceObj)) {\n _super.prototype.assignFromObject.call(this, sourceObj);\n\n this.start = DateTimeUtils_1.DateTimeUtils.convertToDate(sourceObj.start);\n this.end = DateTimeUtils_1.DateTimeUtils.convertToDate(sourceObj.end);\n if (common_1.isDefined(sourceObj.interval)) this.interval = sourceObj.interval;\n if (common_1.isDefined(sourceObj.occurrenceCount)) this.occurrenceCount = sourceObj.occurrenceCount;\n if (common_1.isDefined(sourceObj.dayOfWeek)) this.dayOfWeekInternal = RecurrenceFactory_1.RecurrenceFactory.getEnumValue(DayOfWeek_1.DayOfWeek, sourceObj.dayOfWeek);\n if (common_1.isDefined(sourceObj.day)) this.dayInternal = sourceObj.day;\n if (common_1.isDefined(sourceObj.dayOfWeekOccurrence)) this.dayOfWeekOccurrenceInternal = RecurrenceFactory_1.RecurrenceFactory.getEnumValue(DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence, sourceObj.dayOfWeekOccurrence);\n if (common_1.isDefined(sourceObj.month)) this.monthInternal = RecurrenceFactory_1.RecurrenceFactory.getEnumValue(Month_1.Month, sourceObj.month);\n if (common_1.isDefined(sourceObj.calculateByDayOfWeek)) this._calculateByDayOfWeek = !!sourceObj.calculateByDayOfWeek;\n }\n };\n\n RecurrenceBase.prototype.calculatePoints = function (start, end) {\n if (!start || !end) return new Array();\n var from = DateTimeUtils_1.DateTimeUtils.getMaxDate(start, this._start);\n var to = DateTimeUtils_1.DateTimeUtils.getMinDate(end, this._end);\n if (this._occurrenceCount > 0) return this.calculatePointsByOccurrenceCount(from, to);\n return this.calculatePointsByDateRange(from, to);\n };\n\n RecurrenceBase.prototype.calculatePointsByOccurrenceCount = function (start, end) {\n var points = new Array();\n var point = this.getFirstPoint(start);\n\n while (!!point && points.length < this._occurrenceCount && DateTimeUtils_1.DateTimeUtils.compareDates(point, end) >= 0) {\n if (this.isRecurrencePoint(point)) points.push(point);\n point = this.getNextPoint(point);\n }\n\n return points;\n };\n\n RecurrenceBase.prototype.calculatePointsByDateRange = function (start, end) {\n var points = new Array();\n var point = this.getFirstPoint(start);\n\n while (!!point && DateTimeUtils_1.DateTimeUtils.compareDates(point, end) >= 0) {\n if (this.isRecurrencePoint(point)) points.push(point);\n point = this.getNextPoint(point);\n }\n\n return points;\n };\n\n RecurrenceBase.prototype.getFirstPoint = function (start) {\n if (this.isRecurrencePoint(start)) return start;\n return this.getNextPoint(start);\n };\n\n RecurrenceBase.prototype.isRecurrencePoint = function (date) {\n return this.isDateInRange(date) && this.checkDate(date) && (!this.useIntervalInCalc() || this.checkInterval(date));\n };\n\n RecurrenceBase.prototype.isDateInRange = function (date) {\n if (!date) return false;\n if (this._start && DateTimeUtils_1.DateTimeUtils.compareDates(this.start, date) < 0) return false;\n if (this._occurrenceCount == 0 && this.end && DateTimeUtils_1.DateTimeUtils.compareDates(date, this.end) < 0) return false;\n return true;\n };\n\n RecurrenceBase.prototype.useIntervalInCalc = function () {\n return this.interval > 1 && !!this._start;\n };\n\n RecurrenceBase.prototype.getNextPoint = function (date) {\n if (!this.isDateInRange(date)) return null;\n if (this.useIntervalInCalc()) return this.calculatePointByInterval(date);\n return this.calculateNearestPoint(date);\n };\n\n RecurrenceBase.prototype.getSpecDayInMonth = function (year, month) {\n var date;\n if (this._calculateByDayOfWeek) date = DateTimeUtils_1.DateTimeUtils.getSpecificDayOfWeekInMonthDate(this.dayOfWeekInternal, year, month, this.dayOfWeekOccurrenceInternal);else date = new Date(year, month, this.dayInternal);\n return date;\n };\n\n Object.defineProperty(RecurrenceBase.prototype, \"dayInternal\", {\n get: function get() {\n return this._day;\n },\n set: function set(value) {\n if (value > 0 && value <= 31) this._day = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"dayOfWeekInternal\", {\n get: function get() {\n return this._dayOfWeek;\n },\n set: function set(dayOfWeek) {\n if (dayOfWeek >= DayOfWeek_1.DayOfWeek.Sunday && dayOfWeek <= DayOfWeek_1.DayOfWeek.Saturday) this._dayOfWeek = dayOfWeek;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"dayOfWeekOccurrenceInternal\", {\n get: function get() {\n return this._dayOfWeekOccurrence;\n },\n set: function set(value) {\n if (value >= DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.First && value <= DayOfWeekMonthlyOccurrence_1.DayOfWeekMonthlyOccurrence.Last) this._dayOfWeekOccurrence = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"monthInternal\", {\n get: function get() {\n return this._month;\n },\n set: function set(value) {\n if (value >= Month_1.Month.January && value <= Month_1.Month.December) this._month = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"start\", {\n get: function get() {\n return this._start;\n },\n set: function set(date) {\n if (!date) return;\n this._start = date;\n if (!!this._end && date > this._end) this._end = date;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"end\", {\n get: function get() {\n return this._end;\n },\n set: function set(date) {\n if (!date) return;\n this._end = date;\n if (!!this._start && date < this._start) this._start = date;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"occurrenceCount\", {\n get: function get() {\n return this._occurrenceCount;\n },\n set: function set(value) {\n if (value < 0) value = 0;\n this._occurrenceCount = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RecurrenceBase.prototype, \"interval\", {\n get: function get() {\n return this._interval;\n },\n set: function set(value) {\n if (value > 0) this._interval = value;\n },\n enumerable: false,\n configurable: true\n });\n return RecurrenceBase;\n }(DataObject_1.DataObject);\n\n exports.RecurrenceBase = RecurrenceBase;\n /***/\n },\n /* 17 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GridLayoutCalculator = void 0;\n\n var size_1 = __webpack_require__(28);\n\n var DateRange_1 = __webpack_require__(9);\n\n var Enums_1 = __webpack_require__(14);\n\n var GridElementInfo_1 = __webpack_require__(43);\n\n var Utils_1 = __webpack_require__(42);\n\n var point_1 = __webpack_require__(4);\n\n var Dependency_1 = __webpack_require__(11);\n\n var Settings_1 = __webpack_require__(44);\n\n var GridLayoutCalculator = function () {\n function GridLayoutCalculator() {\n this.tileToDependencyMap = [];\n this.tileToNoWorkingIntervalsMap = [];\n this.minLineLength = 10;\n this.resourceMaxWidth = 500;\n this.minTaskWidth = 2;\n }\n\n GridLayoutCalculator.prototype.setSettings = function (visibleTaskAreaSize, tickSize, elementSizeValues, range, viewModel, viewType, scrollBarHeight) {\n if (scrollBarHeight === void 0) {\n scrollBarHeight = 0;\n }\n\n this.visibleTaskAreaSize = visibleTaskAreaSize;\n this.tickSize = tickSize;\n this.viewType = viewType;\n this.range = range;\n this.verticalTickCount = viewModel.itemCount;\n this.viewModel = viewModel;\n this.elementSizeValues = elementSizeValues;\n this.taskHeight = elementSizeValues.taskHeight;\n this.parentTaskHeight = elementSizeValues.parentTaskHeight;\n this.milestoneWidth = elementSizeValues.milestoneWidth;\n this.scaleHeight = elementSizeValues.scaleItemHeight;\n this.arrowSize = new size_1.Size(elementSizeValues.connectorArrowWidth, elementSizeValues.connectorArrowWidth);\n this.lineThickness = elementSizeValues.connectorLineThickness;\n this.minConnectorSpaceFromTask = (this.tickSize.height - this.taskHeight) / 2;\n this.tickTimeSpan = Utils_1.DateUtils.getTickTimeSpan(viewType);\n this.horizontalTickCount = this.getTotalTickCount();\n this.scrollBarHeight = scrollBarHeight;\n this.createTileToConnectorLinesMap();\n this.createTileToNonWorkingIntervalsMap();\n };\n\n GridLayoutCalculator.prototype.getTaskAreaBorderInfo = function (index, isVertical) {\n var sizeValue = isVertical ? this.getVerticalGridLineHeight() : this.tickSize.width * this.horizontalTickCount;\n return this.getGridBorderInfo(index, isVertical, sizeValue);\n };\n\n GridLayoutCalculator.prototype.getScaleBorderInfo = function (index, scaleType) {\n var result = this.getGridBorderInfo(index, true, this.scaleHeight);\n result.position.x *= this.getScaleItemColSpan(scaleType);\n return result;\n };\n\n GridLayoutCalculator.prototype.getGridBorderInfo = function (index, isVertical, size) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.setPosition(this.getGridBorderPosition(index, isVertical));\n if (size) result.setSize(this.getGridBorderSize(isVertical, size));\n result.className = isVertical ? \"dx-gantt-vb\" : \"dx-gantt-hb\";\n return result;\n };\n\n GridLayoutCalculator.prototype.getGridBorderPosition = function (index, isVertical) {\n var result = new point_1.Point(undefined, undefined);\n var posValue = (index + 1) * (isVertical ? this.tickSize.width : this.tickSize.height);\n if (isVertical) result.x = posValue;else result.y = posValue;\n return result;\n };\n\n GridLayoutCalculator.prototype.getGridBorderSize = function (isVertical, sizeValue) {\n var result = new size_1.Size(0, 0);\n if (isVertical) result.height = sizeValue;else result.width = sizeValue;\n return result;\n };\n\n GridLayoutCalculator.prototype.getScaleElementInfo = function (index, scaleType) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.setPosition(this.getScaleItemPosition(index, scaleType));\n result.setSize(this.getScaleItemSize(scaleType));\n result.className = this.getScaleItemClassName(scaleType, result, this.getRenderedNoWorkingIntervals(result.position.x));\n return result;\n };\n\n GridLayoutCalculator.prototype.getScaleItemClassName = function (scaleType, scaleItemInfo, noWorkingIntervals) {\n var result = \"dx-gantt-si\";\n if (scaleType.valueOf() == this.viewType.valueOf() && this.isScaleItemInsideNoWorkingInterval(scaleItemInfo, noWorkingIntervals)) result += \" dx-gantt-holiday-scaleItem\";\n return result;\n };\n\n GridLayoutCalculator.prototype.isScaleItemInsideNoWorkingInterval = function (scaleItemInfo, noWorkingIntervals) {\n var scaleItemLeft = scaleItemInfo.position.x;\n var scaleItemRight = scaleItemInfo.position.x + scaleItemInfo.size.width;\n\n for (var i = 0; i < noWorkingIntervals.length; i++) {\n var noWorkingIntervalLeft = noWorkingIntervals[i].position.x;\n var noWorkingIntervalRight = noWorkingIntervals[i].position.x + noWorkingIntervals[i].size.width;\n if (scaleItemLeft >= noWorkingIntervalLeft && scaleItemRight <= noWorkingIntervalRight) return true;\n }\n\n return false;\n };\n\n GridLayoutCalculator.prototype.getScaleItemPosition = function (index, scaleType) {\n return new point_1.Point(index * this.tickSize.width * this.getScaleItemColSpan(scaleType), undefined);\n };\n\n GridLayoutCalculator.prototype.getScaleItemSize = function (scaleType) {\n return new size_1.Size(this.tickSize.width * this.getScaleItemColSpan(scaleType), 0);\n };\n\n GridLayoutCalculator.prototype.getScaleItemColSpan = function (scaleType) {\n if (scaleType.valueOf() == this.viewType.valueOf()) return 1;\n if (this.viewType == Enums_1.ViewType.TenMinutes) return 6;\n if (this.viewType == Enums_1.ViewType.Hours) return 24;\n if (this.viewType == Enums_1.ViewType.SixHours) return 4;\n if (this.viewType == Enums_1.ViewType.Days) return 7;\n if (this.viewType == Enums_1.ViewType.Weeks) return 4.29;\n if (this.viewType == Enums_1.ViewType.Months) return 12;\n if (this.viewType == Enums_1.ViewType.Quarter) return 4;\n if (this.viewType == Enums_1.ViewType.Years) return 5;\n return 1;\n };\n\n GridLayoutCalculator.prototype.getTaskWrapperElementInfo = function (index) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.className = this.getTaskWrapperClassName(index);\n result.setPosition(this.getTaskWrapperPoint(index));\n result.setAttribute(\"task-index\", index);\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskWrapperClassName = function (index) {\n var result = \"dx-gantt-taskWrapper\";\n if (this.getTask(index).isMilestone()) result = \"dx-gantt-milestoneWrapper\";\n if (this.viewModel.items[index].selected) result += \" dx-gantt-selectedTask\";\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskWrapperPoint = function (index) {\n var height = this.getTaskHeight(index);\n var y = index * this.tickSize.height + (this.tickSize.height - height) / 2;\n var result = new point_1.Point(this.getPosByDate(this.getTask(index).start), y);\n\n if (this.getTask(index).isMilestone()) {\n var height_1 = this.getTaskHeight(index);\n result.x -= height_1 / 2;\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskElementInfo = function (index, textOutsideTask) {\n if (textOutsideTask === void 0) {\n textOutsideTask = false;\n }\n\n var result = new GridElementInfo_1.GridElementInfo();\n var task = this.getTask(index);\n var autoCalculatedParent = this.viewModel.parentAutoCalc && this.viewModel.taskHasChildrenByIndex(index);\n\n if (!task.isMilestone()) {\n result.size.width = this.getTaskWidth(index);\n if (textOutsideTask) result.size.height = this.getTaskHeight(index);\n }\n\n result.className = this.getTaskClassName(index, result.size.width);\n\n if (task.color) {\n result.style.backgroundColor = task.color;\n\n if (autoCalculatedParent) {\n result.style.borderLeftColor = task.color;\n result.style.borderRightColor = task.color;\n result.style.borderTopColor = task.color;\n }\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskClassName = function (index, taskWidth) {\n var result = \"dx-gantt-task\";\n var task = this.getTask(index);\n var autoCalculatedParent = this.viewModel.parentAutoCalc && this.viewModel.taskHasChildrenByIndex(index);\n if (task.isMilestone()) result += \" dx-gantt-milestone\";else {\n if (taskWidth <= this.elementSizeValues.smallTaskWidth) result += \" dx-gantt-smallTask\";\n if (autoCalculatedParent) result += this.getAutoCalcParentTaskClassName(task);\n }\n return result;\n };\n\n GridLayoutCalculator.prototype.getAutoCalcParentTaskClassName = function (task) {\n var result = \" dx-gantt-parent\";\n if (task.progress == 0) result += \" dx-gantt-noPrg\";\n if (task.progress >= 100) result += \" dx-gantt-cmpl\";\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskPoint = function (index) {\n var result = this.getTaskWrapperPoint(index);\n if (!this.getTask(index).isMilestone()) result.y += this.elementSizeValues.taskWrapperTopPadding;\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskSize = function (index) {\n return new size_1.Size(this.getTaskWidth(index), this.getTaskHeight(index));\n };\n\n GridLayoutCalculator.prototype.getTaskWidth = function (index) {\n var task = this.getTask(index);\n return task.isMilestone() ? this.getTaskHeight(index) : Math.max(this.getWidthByDateRange(task.start, task.end), this.minTaskWidth);\n };\n\n GridLayoutCalculator.prototype.getTaskHeight = function (index) {\n var task = this.getTask(index);\n if (task.isMilestone()) return this.milestoneWidth;\n if (this.viewModel.isTaskToCalculateByChildren(task.id)) return this.parentTaskHeight;\n return this.taskHeight;\n };\n\n GridLayoutCalculator.prototype.getTask = function (index) {\n return this.viewModel.items[index].task;\n };\n\n GridLayoutCalculator.prototype.getTaskProgressElementInfo = function (index) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.className = \"dx-gantt-tPrg\";\n result.setSize(this.getTaskProgressSize(index));\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskProgressSize = function (index) {\n return new size_1.Size(this.getTaskProgressWidth(index), 0);\n };\n\n GridLayoutCalculator.prototype.getTaskProgressWidth = function (index) {\n return this.getTaskWidth(index) * this.getTask(index).progress / 100;\n };\n\n GridLayoutCalculator.prototype.getTaskTextElementInfo = function (index, isInsideText) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.className = this.getTaskTextElementClassName(isInsideText);\n\n if (!isInsideText) {\n var taskX = this.getTaskPoint(index).x;\n\n if (taskX < this.elementSizeValues.outsideTaskTextDefaultWidth) {\n result.size.width = taskX;\n result.margins.left = -taskX;\n }\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskTextElementClassName = function (isInsideText) {\n var result = \"dx-gantt-taskTitle\";\n result += isInsideText ? \" dx-gantt-titleIn\" : \" dx-gantt-titleOut\";\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskResourcesWrapperElementInfo = function (index) {\n var result = new GridElementInfo_1.GridElementInfo();\n var width = this.getTaskSize(index).width;\n result.className = \"dx-gantt-taskResWrapper\";\n result.setPosition(this.getTaskWrapperPoint(index));\n result.position.x = result.position.x + width;\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskResourceElementInfo = function () {\n var result = new GridElementInfo_1.GridElementInfo();\n result.className = \"dx-gantt-taskRes\";\n return result;\n };\n\n GridLayoutCalculator.prototype.getSelectionElementInfo = function (index) {\n return this.getRowElementInfo(index, \"dx-gantt-sel\");\n };\n\n GridLayoutCalculator.prototype.getSelectionPosition = function (index) {\n var result = new point_1.Point(undefined, undefined);\n result.y = index * this.tickSize.height;\n return result;\n };\n\n GridLayoutCalculator.prototype.getSelectionSize = function () {\n return new size_1.Size(this.tickSize.width * this.horizontalTickCount, this.tickSize.height);\n };\n\n GridLayoutCalculator.prototype.getHighlightRowInfo = function (index) {\n return this.getRowElementInfo(index, \"dx-gantt-altRow\");\n };\n\n GridLayoutCalculator.prototype.getRowElementInfo = function (index, className) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.className = className;\n result.setPosition(this.getSelectionPosition(index));\n result.setSize(this.getSelectionSize());\n return result;\n };\n\n GridLayoutCalculator.prototype.getNoWorkingIntervalInfo = function (noWorkingDateRange) {\n var result = new GridElementInfo_1.GridElementInfo();\n result.className = \"dx-gantt-nwi\";\n result.setPosition(this.getNoWorkingIntervalPosition(noWorkingDateRange.start));\n result.setSize(this.getNoWorkingIntervalSize(noWorkingDateRange));\n return result;\n };\n\n GridLayoutCalculator.prototype.getNoWorkingIntervalPosition = function (intervalStart) {\n var result = new point_1.Point(undefined, undefined);\n result.x = this.getPosByDate(intervalStart);\n return result;\n };\n\n GridLayoutCalculator.prototype.getNoWorkingIntervalSize = function (noWorkingInterval) {\n return new size_1.Size(this.getWidthByDateRange(noWorkingInterval.start, noWorkingInterval.end), this.getVerticalGridLineHeight());\n };\n\n GridLayoutCalculator.prototype.getVerticalGridLineHeight = function () {\n return Math.max(this.visibleTaskAreaSize.height - this.scrollBarHeight, this.tickSize.height * this.verticalTickCount);\n };\n\n GridLayoutCalculator.prototype.getConnectorInfo = function (id, predessorIndex, successorIndex, connectorType) {\n var result = new Array();\n var connectorPoints = this.getConnectorPoints(predessorIndex, successorIndex, connectorType);\n\n for (var i = 0; i < connectorPoints.length - 1; i++) {\n result.push(this.getConnectorLineInfo(id, connectorPoints[i], connectorPoints[i + 1], i == 0 || i == connectorPoints.length - 2));\n }\n\n result.push(this.getArrowInfo(id, connectorPoints, result, predessorIndex, successorIndex));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorLineInfo = function (id, startPoint, endPoint, isEdgeLine) {\n var result = new GridElementInfo_1.GridElementInfo();\n var isVertical = startPoint.x == endPoint.x;\n result.className = this.getConnectorClassName(isVertical);\n result.setPosition(this.getConnectorPosition(startPoint, endPoint));\n result.setSize(this.getConnectorSize(startPoint, endPoint, isVertical, isEdgeLine));\n result.setAttribute(\"dependency-id\", id);\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorClassName = function (isVertical) {\n return isVertical ? GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL : GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL;\n };\n\n GridLayoutCalculator.prototype.getConnectorPosition = function (startPoint, endPoint) {\n return new point_1.Point(Math.min(startPoint.x, endPoint.x), Math.min(startPoint.y, endPoint.y));\n };\n\n GridLayoutCalculator.prototype.getConnectorSize = function (startPoint, endPoint, isVertical, isEdgeLine) {\n var result = new size_1.Size(0, 0);\n var sizeCorrection = isEdgeLine ? 0 : 1;\n if (isVertical) result.height = Math.abs(endPoint.y - startPoint.y) + sizeCorrection;else result.width = Math.abs(endPoint.x - startPoint.x) + sizeCorrection;\n return result;\n };\n\n GridLayoutCalculator.prototype.getArrowInfo = function (id, connectorPoints, connectorLines, predessorIndex, successorIndex) {\n var result = new GridElementInfo_1.GridElementInfo();\n var lineInfo = this.findArrowLineInfo(connectorLines, predessorIndex, successorIndex);\n var arrowPosition = this.getArrowPosition(connectorPoints, predessorIndex, successorIndex);\n result.className = this.getArrowClassName(arrowPosition);\n result.setPosition(this.getArrowPoint(lineInfo, arrowPosition));\n result.setAttribute(\"dependency-id\", id);\n return result;\n };\n\n GridLayoutCalculator.prototype.findArrowLineInfo = function (connectorLines, predessorIndex, successorIndex) {\n var arrowLineIndex = predessorIndex < successorIndex ? connectorLines.length - 1 : 0;\n return connectorLines[arrowLineIndex];\n };\n\n GridLayoutCalculator.prototype.getArrowPosition = function (connectorPoints, predessorIndex, successorIndex) {\n var prevLastPoint = connectorPoints[predessorIndex < successorIndex ? connectorPoints.length - 2 : 1];\n var lastPoint = connectorPoints[predessorIndex < successorIndex ? connectorPoints.length - 1 : 0];\n if (prevLastPoint.x == lastPoint.x) return prevLastPoint.y > lastPoint.y ? Enums_1.Position.Top : Enums_1.Position.Bottom;\n return prevLastPoint.x > lastPoint.x ? Enums_1.Position.Left : Enums_1.Position.Right;\n };\n\n GridLayoutCalculator.prototype.getArrowClassName = function (arrowPosition) {\n var result = \"dx-gantt-arrow\";\n\n switch (arrowPosition) {\n case Enums_1.Position.Left:\n result += \" dx-gantt-LA\";\n break;\n\n case Enums_1.Position.Top:\n result += \" dx-gantt-TA\";\n break;\n\n case Enums_1.Position.Right:\n result += \" dx-gantt-RA\";\n break;\n\n case Enums_1.Position.Bottom:\n result += \" dx-gantt-BA\";\n break;\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getArrowPoint = function (lineInfo, arrowPosition) {\n return new point_1.Point(this.getArrowX(lineInfo, arrowPosition), this.getArrowY(lineInfo, arrowPosition));\n };\n\n GridLayoutCalculator.prototype.getArrowX = function (lineInfo, arrowPosition) {\n switch (arrowPosition) {\n case Enums_1.Position.Left:\n return lineInfo.position.x - this.arrowSize.width / 2;\n\n case Enums_1.Position.Right:\n return lineInfo.position.x + lineInfo.size.width - this.arrowSize.width / 2;\n\n case Enums_1.Position.Top:\n case Enums_1.Position.Bottom:\n return lineInfo.position.x - (this.arrowSize.width - this.lineThickness) / 2;\n }\n };\n\n GridLayoutCalculator.prototype.getArrowY = function (lineInfo, arrowPosition) {\n switch (arrowPosition) {\n case Enums_1.Position.Top:\n return lineInfo.position.y - this.arrowSize.height / 2;\n\n case Enums_1.Position.Bottom:\n return lineInfo.position.y + lineInfo.size.height - this.arrowSize.height / 2;\n\n case Enums_1.Position.Left:\n case Enums_1.Position.Right:\n return lineInfo.position.y - (this.arrowSize.height - this.lineThickness) / 2;\n }\n };\n\n GridLayoutCalculator.prototype.getPosByDate = function (date) {\n return this.getWidthByDateRange(this.range.start, date);\n };\n\n GridLayoutCalculator.prototype.getWidthByDateRange = function (start, end) {\n return this.getRangeTickCount(start, end) * this.tickSize.width;\n };\n\n GridLayoutCalculator.prototype.getRangeTickCount = function (start, end) {\n if (this.viewType == Enums_1.ViewType.Months) return this.getRangeTickCountInMonthsViewType(start, end);\n if (this.viewType == Enums_1.ViewType.Quarter) return this.getRangeTickCountInQuarterViewType(start, end);\n return (end.getTime() - start.getTime()) / this.tickTimeSpan;\n };\n\n GridLayoutCalculator.prototype.getRangeTickCountInMonthsViewType = function (start, end) {\n var startMonthStartDate = new Date(start.getFullYear(), start.getMonth(), 1);\n var endMonthStartDate = new Date(end.getFullYear(), end.getMonth(), 1);\n var monthOffset = Utils_1.DateUtils.getOffsetInMonths(startMonthStartDate, endMonthStartDate);\n var endFromMonthStartDateOffset = end.getTime() - endMonthStartDate.getTime();\n var startFromMonthStartDateOffset = start.getTime() - startMonthStartDate.getTime();\n return monthOffset + (endFromMonthStartDateOffset - startFromMonthStartDateOffset) / Utils_1.DateUtils.msPerMonth;\n };\n\n GridLayoutCalculator.prototype.getRangeTickCountInQuarterViewType = function (start, end) {\n var startQuarterStartDate = new Date(start.getFullYear(), Math.floor(start.getMonth() / 3) * 3, 1);\n var endQuarterStartDate = new Date(end.getFullYear(), Math.floor(end.getMonth() / 3) * 3, 1);\n var quarterOffset = Utils_1.DateUtils.getOffsetInQuarters(startQuarterStartDate, endQuarterStartDate);\n var endFromQuarterStartDateOffset = end.getTime() - endQuarterStartDate.getTime();\n var startFromQuarterStartDateOffset = start.getTime() - startQuarterStartDate.getTime();\n return quarterOffset + (endFromQuarterStartDateOffset - startFromQuarterStartDateOffset) / (Utils_1.DateUtils.msPerMonth * 3);\n };\n\n GridLayoutCalculator.prototype.getDateByPos = function (position) {\n var preResult = position / this.tickSize.width;\n var start = new Date(this.range.start);\n\n if (this.viewType == Enums_1.ViewType.Months || this.viewType == Enums_1.ViewType.Quarter) {\n var monthFromStart = Math.floor(preResult);\n start = new Date(start.setMonth(start.getMonth() + (this.viewType == Enums_1.ViewType.Months ? monthFromStart : monthFromStart * 3)));\n preResult = (position - this.getPosByDate(start)) / this.tickSize.width;\n }\n\n var time = preResult * this.tickTimeSpan + start.getTime();\n var result = new Date();\n result.setTime(time);\n return result;\n };\n\n GridLayoutCalculator.prototype.getTotalTickCount = function () {\n return this.getRangeTickCount(this.range.start, this.range.end);\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints = function (predessorIndex, successorIndex, connectorType) {\n switch (connectorType) {\n case Dependency_1.DependencyType.FS:\n return this.getFinishToStartConnectorPoints(predessorIndex, successorIndex);\n\n case Dependency_1.DependencyType.SF:\n return this.getStartToFinishConnectorPoints(predessorIndex, successorIndex);\n\n case Dependency_1.DependencyType.SS:\n return this.getStartToStartConnectorPoints(predessorIndex, successorIndex);\n\n case Dependency_1.DependencyType.FF:\n return this.getFinishToFinishConnectorPoints(predessorIndex, successorIndex);\n\n default:\n return new Array();\n }\n };\n\n GridLayoutCalculator.prototype.getFinishToStartConnectorPoints = function (predessorIndex, successorIndex) {\n if (predessorIndex < successorIndex) {\n if (this.getTask(predessorIndex).end <= this.getTask(successorIndex).start) return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskTopSide(predessorIndex, successorIndex, false);\n return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide(predessorIndex, successorIndex, false);\n }\n\n if (this.getTask(predessorIndex).end <= this.getTask(successorIndex).start) return this.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskRightSide(successorIndex, predessorIndex, false);\n return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide(successorIndex, predessorIndex, true);\n };\n\n GridLayoutCalculator.prototype.getFinishToFinishConnectorPoints = function (predessorIndex, successorIndex) {\n if (predessorIndex < successorIndex) return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide(predessorIndex, successorIndex);\n return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide(successorIndex, predessorIndex);\n };\n\n GridLayoutCalculator.prototype.getStartToStartConnectorPoints = function (predessorIndex, successorIndex) {\n if (predessorIndex < successorIndex) return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide(predessorIndex, successorIndex);\n return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide(successorIndex, predessorIndex);\n };\n\n GridLayoutCalculator.prototype.getStartToFinishConnectorPoints = function (predessorIndex, successorIndex) {\n if (predessorIndex < successorIndex) {\n if (this.getTask(predessorIndex).start >= this.getTask(successorIndex).end) return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskTopSide(predessorIndex, successorIndex, true);\n return this.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide(predessorIndex, successorIndex, false);\n }\n\n if (this.getTask(predessorIndex).start >= this.getTask(successorIndex).end) return this.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskLeftSide(successorIndex, predessorIndex, true);\n return this.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide(successorIndex, predessorIndex, true);\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskTopSide = function (topTaskIndex, bottomTaskIndex, shiftEndPointToRight) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskRightCenter = this.getTaskRightCenter(topTaskPoint, topTaskIndex);\n var isBottomMilestone = this.getTask(bottomTaskIndex).isMilestone();\n var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);\n var endPointIndent = shiftEndPointToRight ? this.getTaskWidth(bottomTaskIndex) - this.minLineLength : this.minLineLength;\n result.push(new point_1.Point(Math.floor(topTaskRightCenter.x), Math.floor(topTaskRightCenter.y)));\n result.push(new point_1.Point(Math.floor(isBottomMilestone ? bottomTaskTopCenter.x : bottomTaskPoint.x + endPointIndent), Math.floor(result[0].y)));\n result.push(new point_1.Point(Math.floor(result[1].x), Math.floor(bottomTaskTopCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskRightSide = function (topTaskIndex, bottomTaskIndex) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskRightCenter = this.getTaskRightCenter(topTaskPoint, topTaskIndex);\n var bottomTaskRightCenter = this.getTaskRightCenter(bottomTaskPoint, bottomTaskIndex);\n result.push(new point_1.Point(Math.floor(topTaskRightCenter.x), Math.floor(topTaskRightCenter.y)));\n result.push(new point_1.Point(Math.floor(Math.max(topTaskRightCenter.x, bottomTaskRightCenter.x) + this.minLineLength), Math.floor(result[0].y)));\n result.push(new point_1.Point(Math.floor(result[1].x), Math.floor(bottomTaskRightCenter.y)));\n result.push(new point_1.Point(Math.floor(bottomTaskRightCenter.x), Math.floor(bottomTaskRightCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskRightSide_ToBottomTaskLeftSide = function (topTaskIndex, bottomTaskIndex, shiftToTop) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskRightCenter = this.getTaskRightCenter(topTaskPoint, topTaskIndex);\n var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);\n var bottomTaskLeftCenter = this.getTaskLeftCenter(bottomTaskPoint, bottomTaskIndex);\n var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);\n result.push(new point_1.Point(Math.floor(topTaskRightCenter.x), Math.floor(topTaskRightCenter.y)));\n result.push(new point_1.Point(Math.floor(result[0].x + this.minLineLength), Math.floor(result[0].y)));\n result.push(new point_1.Point(Math.floor(result[1].x), Math.floor(shiftToTop ? topTaskBottomCenter.y + this.minConnectorSpaceFromTask : bottomTaskTopCenter.y - this.minConnectorSpaceFromTask)));\n result.push(new point_1.Point(Math.floor(bottomTaskLeftCenter.x - this.minLineLength), Math.floor(result[2].y)));\n result.push(new point_1.Point(Math.floor(result[3].x), Math.floor(bottomTaskLeftCenter.y)));\n result.push(new point_1.Point(Math.floor(bottomTaskLeftCenter.x), Math.floor(bottomTaskLeftCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskRightSide = function (topTaskIndex, bottomTaskIndex, shiftStartPointToRight) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);\n var isTopMilestone = this.getTask(topTaskIndex).isMilestone();\n var bottomTaskRightCenter = this.getTaskRightCenter(bottomTaskPoint, bottomTaskIndex);\n var startPointIndent = shiftStartPointToRight ? this.getTaskWidth(topTaskIndex) - this.minLineLength : this.minLineLength;\n result.push(new point_1.Point(Math.floor(isTopMilestone ? topTaskBottomCenter.x : topTaskPoint.x + startPointIndent), Math.floor(topTaskBottomCenter.y)));\n result.push(new point_1.Point(Math.floor(result[0].x), Math.floor(bottomTaskRightCenter.y)));\n result.push(new point_1.Point(Math.floor(bottomTaskRightCenter.x), Math.floor(bottomTaskRightCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskBottomSide_ToBottomTaskLeftSide = function (topTaskIndex, bottomTaskIndex, shiftStartPointToRight) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);\n var isTopMilestone = this.getTask(topTaskIndex).isMilestone();\n var bottomTaskLeftCenter = this.getTaskLeftCenter(bottomTaskPoint, bottomTaskIndex);\n var startPointIndent = shiftStartPointToRight ? this.getTaskWidth(topTaskIndex) - this.minLineLength : this.minLineLength;\n result.push(new point_1.Point(Math.floor(isTopMilestone ? topTaskBottomCenter.x : topTaskPoint.x + startPointIndent), Math.floor(topTaskBottomCenter.y)));\n result.push(new point_1.Point(Math.floor(result[0].x), Math.floor(bottomTaskLeftCenter.y)));\n result.push(new point_1.Point(Math.floor(bottomTaskLeftCenter.x), Math.floor(bottomTaskLeftCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskTopSide = function (topTaskIndex, bottomTaskIndex, shiftEndPointToRight) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskLeftCenter = this.getTaskLeftCenter(topTaskPoint, topTaskIndex);\n var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);\n var isBottomMilestone = this.getTask(bottomTaskIndex).isMilestone();\n var endPointIndent = shiftEndPointToRight ? this.getTaskWidth(bottomTaskIndex) - this.minLineLength : this.minLineLength;\n result.push(new point_1.Point(Math.floor(topTaskLeftCenter.x), Math.floor(topTaskLeftCenter.y)));\n result.push(new point_1.Point(Math.floor(isBottomMilestone ? bottomTaskTopCenter.x : bottomTaskPoint.x + endPointIndent), Math.floor(result[0].y)));\n result.push(new point_1.Point(Math.floor(result[1].x), Math.floor(bottomTaskTopCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskRightSide = function (topTaskIndex, bottomTaskIndex, shiftToTop) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskLeftCenter = this.getTaskLeftCenter(topTaskPoint, topTaskIndex);\n var topTaskBottomCenter = this.getTaskBottomCenter(topTaskPoint, topTaskIndex);\n var bottomTaskRightCenter = this.getTaskRightCenter(bottomTaskPoint, bottomTaskIndex);\n var bottomTaskTopCenter = this.getTaskTopCenter(bottomTaskPoint, bottomTaskIndex);\n result.push(new point_1.Point(Math.floor(topTaskLeftCenter.x), topTaskLeftCenter.y));\n result.push(new point_1.Point(Math.floor(result[0].x - this.minLineLength), result[0].y));\n result.push(new point_1.Point(Math.floor(result[1].x), Math.floor(shiftToTop ? topTaskBottomCenter.y + this.minConnectorSpaceFromTask : bottomTaskTopCenter.y - this.minConnectorSpaceFromTask)));\n result.push(new point_1.Point(Math.floor(bottomTaskRightCenter.x + this.minLineLength), Math.floor(result[2].y)));\n result.push(new point_1.Point(Math.floor(result[3].x), Math.floor(bottomTaskRightCenter.y)));\n result.push(new point_1.Point(Math.floor(bottomTaskRightCenter.x), Math.floor(bottomTaskRightCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getConnectorPoints_FromTopTaskLeftSide_ToBottomTaskLeftSide = function (topTaskIndex, bottomTaskIndex) {\n var result = new Array();\n var topTaskPoint = this.getTaskPoint(topTaskIndex);\n var bottomTaskPoint = this.getTaskPoint(bottomTaskIndex);\n var topTaskLeftCenter = this.getTaskLeftCenter(topTaskPoint, topTaskIndex);\n var bottomTaskLeftCenter = this.getTaskLeftCenter(bottomTaskPoint, bottomTaskIndex);\n result.push(new point_1.Point(Math.floor(topTaskLeftCenter.x), Math.floor(topTaskLeftCenter.y)));\n result.push(new point_1.Point(Math.floor(Math.min(topTaskLeftCenter.x, bottomTaskLeftCenter.x) - this.minLineLength), Math.floor(result[0].y)));\n result.push(new point_1.Point(Math.floor(result[1].x), Math.floor(bottomTaskLeftCenter.y)));\n result.push(new point_1.Point(Math.floor(bottomTaskLeftCenter.x), Math.floor(bottomTaskLeftCenter.y)));\n return result;\n };\n\n GridLayoutCalculator.prototype.getTaskLeftCenter = function (taskPoint, index) {\n return new point_1.Point(taskPoint.x - this.getTaskEdgeCorrection(index), taskPoint.y + this.getTaskHeight(index) / 2);\n };\n\n GridLayoutCalculator.prototype.getTaskRightCenter = function (taskPoint, index) {\n return new point_1.Point(taskPoint.x + this.getTaskWidth(index) + this.getTaskEdgeCorrection(index), taskPoint.y + this.getTaskHeight(index) / 2);\n };\n\n GridLayoutCalculator.prototype.getTaskTopCenter = function (taskPoint, index) {\n return new point_1.Point(taskPoint.x + this.getTaskWidth(index) / 2, taskPoint.y - this.getTaskEdgeCorrection(index));\n };\n\n GridLayoutCalculator.prototype.getTaskBottomCenter = function (taskPoint, index) {\n return new point_1.Point(taskPoint.x + this.getTaskWidth(index) / 2, taskPoint.y + this.getTaskHeight(index) + this.getTaskEdgeCorrection(index));\n };\n\n GridLayoutCalculator.prototype.getTaskEdgeCorrection = function (index) {\n var isMilestone = this.viewModel.items[index].task.isMilestone();\n return isMilestone ? this.getTaskHeight(index) * (Math.sqrt(2) - 1) / 2 : 0;\n };\n\n GridLayoutCalculator.prototype.getRenderedRowColumnIndices = function (scrollPos, isVertical) {\n var visibleAreaSizeValue = isVertical ? this.visibleTaskAreaSize.height : this.visibleTaskAreaSize.width;\n var tickSizeValue = isVertical ? this.tickSize.height : this.tickSize.width;\n var tickCount = isVertical ? this.verticalTickCount : this.horizontalTickCount;\n var firstVisibleIndex = this.getFirstVisibleGridCellIndex(scrollPos, tickSizeValue);\n var lastVisibleIndex = this.getLastVisibleGridCellIndex(scrollPos, tickSizeValue, visibleAreaSizeValue, tickCount);\n var result = new Array();\n\n for (var i = firstVisibleIndex; i <= lastVisibleIndex; i++) {\n result.push(i);\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getRenderedScaleItemIndices = function (scaleType, renderedColIndices) {\n var scaleItemColSpan = this.getScaleItemColSpan(scaleType);\n var firstVisibleIndex = Math.floor(renderedColIndices[0] / scaleItemColSpan);\n var lastVisibleIndex = Math.floor(renderedColIndices[renderedColIndices.length - 1] / scaleItemColSpan);\n var result = new Array();\n\n for (var i = firstVisibleIndex; i <= lastVisibleIndex; i++) {\n result.push(i);\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getFirstVisibleGridCellIndex = function (scrollPos, tickSizeValue) {\n var result = Math.floor(scrollPos / tickSizeValue);\n result = Math.max(result - 10, 0);\n return result;\n };\n\n GridLayoutCalculator.prototype.getLastVisibleGridCellIndex = function (scrollPos, tickSizeValue, visibleAreaSizeValue, tickCount) {\n var result = Math.floor((scrollPos + visibleAreaSizeValue) / tickSizeValue);\n result = Math.min(result + 10, tickCount - 1);\n return result;\n };\n\n GridLayoutCalculator.prototype.createTileToConnectorLinesMap = function () {\n this.tileToDependencyMap = [];\n\n for (var i = 0; i < this.viewModel.items.length; i++) {\n for (var j = 0; j < this.viewModel.items[i].dependencies.length; j++) {\n this.createConnecotInfo(this.viewModel.items[i].dependencies[j], this.viewModel.items[i].visibleIndex);\n }\n }\n };\n\n GridLayoutCalculator.prototype.updateTileToConnectorLinesMap = function (dependencyId) {\n this.tileToDependencyMap.forEach(function (map, index, tileToDependencyMap) {\n tileToDependencyMap[index] = map.filter(function (info) {\n return info.attr[\"dependency-id\"] != dependencyId;\n });\n });\n var result = [];\n var item = this.viewModel.items.filter(function (item) {\n return item.dependencies.filter(function (d) {\n return d.id == dependencyId;\n }).length > 0;\n })[0];\n\n if (item) {\n var dependency = item.dependencies.filter(function (d) {\n return d.id === dependencyId;\n })[0];\n result = this.createConnecotInfo(dependency, item.visibleIndex);\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.createConnecotInfo = function (dependencyInfo, successorIndex) {\n var _this = this;\n\n var predessorIndex = dependencyInfo.predecessor.visibleIndex;\n var type = dependencyInfo.type;\n var id = dependencyInfo.id;\n var connectorInfo = this.getConnectorInfo(id, predessorIndex, successorIndex, type);\n connectorInfo.forEach(function (connectorLine) {\n _this.addElementInfoToTileMap(connectorLine, _this.tileToDependencyMap, true);\n });\n return connectorInfo;\n };\n\n GridLayoutCalculator.prototype.createTileToNonWorkingIntervalsMap = function () {\n this.tileToNoWorkingIntervalsMap = [];\n\n for (var i = 0; i < this.viewModel.noWorkingIntervals.length; i++) {\n var noWorkingDateRange = this.getAdjustedNoWorkingInterval(this.viewModel.noWorkingIntervals[i]);\n if (!noWorkingDateRange) continue;\n var noWorkingIntervalInfo = this.getNoWorkingIntervalInfo(noWorkingDateRange);\n this.addElementInfoToTileMap(noWorkingIntervalInfo, this.tileToNoWorkingIntervalsMap, false);\n }\n };\n\n GridLayoutCalculator.prototype.getAdjustedNoWorkingInterval = function (modelInterval) {\n if (modelInterval.end.getTime() - modelInterval.start.getTime() < this.tickTimeSpan - 1) return null;\n return new DateRange_1.DateRange(Utils_1.DateUtils.getNearestScaleTickDate(modelInterval.start, this.range, this.tickTimeSpan, this.viewType), Utils_1.DateUtils.getNearestScaleTickDate(modelInterval.end, this.range, this.tickTimeSpan, this.viewType));\n };\n\n GridLayoutCalculator.prototype.addElementInfoToTileMap = function (info, map, isVerticalTile) {\n var infoPointValue = isVerticalTile ? info.position.y : info.position.x;\n var infoSizeValue = isVerticalTile ? info.size.height : info.size.width;\n var tileSizeValue = (isVerticalTile ? this.visibleTaskAreaSize.height : this.visibleTaskAreaSize.width) * 2;\n var firstTileIndex = Math.floor(infoPointValue / tileSizeValue);\n var lastTileIndex = Math.floor((infoPointValue + infoSizeValue) / tileSizeValue);\n\n for (var i = firstTileIndex; i <= lastTileIndex; i++) {\n if (!map[i]) map[i] = new Array();\n map[i].push(info);\n }\n };\n\n GridLayoutCalculator.prototype.getRenderedConnectorLines = function (scrollPos) {\n return this.getElementsInRenderedTiles(this.tileToDependencyMap, true, scrollPos);\n };\n\n GridLayoutCalculator.prototype.getRenderedNoWorkingIntervals = function (scrollPos) {\n return this.getElementsInRenderedTiles(this.tileToNoWorkingIntervalsMap, false, scrollPos);\n };\n\n GridLayoutCalculator.prototype.getRenderedStripLines = function (settings) {\n var result = new Array();\n var stripLines = settings.stripLines.map(function (t) {\n return t.clone();\n });\n if (settings.showCurrentTime) stripLines.push(new Settings_1.StripLine(new Date(), null, settings.currentTimeTitle, settings.currentTimeCssClass, true));\n\n for (var i = 0, stripLine = void 0; stripLine = stripLines[i]; i++) {\n var start = Utils_1.DateUtils.parse(stripLine.start);\n var end = stripLine.end ? Utils_1.DateUtils.parse(stripLine.end) : null;\n\n if (start >= this.range.start && start <= this.range.end || end && end >= this.range.start && end <= this.range.end) {\n var renderedStart = start > this.range.start ? start : this.range.start;\n var info = new GridElementInfo_1.GridElementInfo();\n info.size.height = this.getVerticalGridLineHeight();\n info.position.x = this.getPosByDate(renderedStart);\n info.size.width = end ? this.getWidthByDateRange(renderedStart, end < this.range.end ? end : this.range.end) : 0;\n info.className = stripLine.isCurrent ? \"dx-gantt-tc\" : end ? \"dx-gantt-ti\" : \"dx-gantt-tm\";\n info.className += stripLine.cssClass ? \" \" + stripLine.cssClass : \"\";\n info.attr.title = stripLine.title;\n result.push(info);\n }\n }\n\n return result;\n };\n\n GridLayoutCalculator.prototype.getElementsInRenderedTiles = function (map, isVerticalTile, scrollPos) {\n var result = new Array();\n var visibleAreaSizeValue = isVerticalTile ? this.visibleTaskAreaSize.height : this.visibleTaskAreaSize.width;\n\n if (visibleAreaSizeValue > 0) {\n var firstVisibleTileIndex = Math.floor(scrollPos / (visibleAreaSizeValue * 2));\n var lastVisibleTileIndex = Math.floor((scrollPos + visibleAreaSizeValue) / (visibleAreaSizeValue * 2));\n\n for (var i = firstVisibleTileIndex; i <= lastVisibleTileIndex; i++) {\n if (!map[i]) continue;\n map[i].forEach(function (info) {\n if (result.indexOf(info) == -1) result.push(info);\n });\n }\n }\n\n return result;\n };\n\n GridLayoutCalculator.CLASSNAMES = {\n CONNECTOR_VERTICAL: \"dx-gantt-conn-v\",\n CONNECTOR_HORIZONTAL: \"dx-gantt-conn-h\"\n };\n return GridLayoutCalculator;\n }();\n\n exports.GridLayoutCalculator = GridLayoutCalculator;\n /***/\n },\n /* 18 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskPropertyManipulator = exports.TaskPropertiesManipulator = exports.BaseManipulator = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItemState_1 = __webpack_require__(46);\n\n var DateRange_1 = __webpack_require__(9);\n\n var BaseManipulator = function () {\n function BaseManipulator(viewModel, dispatcher) {\n this.viewModel = viewModel;\n this.dispatcher = dispatcher;\n }\n\n BaseManipulator.prototype.getErrorCallback = function () {\n return this.viewModel.getDataUpdateErrorCallback();\n };\n\n return BaseManipulator;\n }();\n\n exports.BaseManipulator = BaseManipulator;\n\n var TaskPropertiesManipulator = function (_super) {\n tslib_1.__extends(TaskPropertiesManipulator, _super);\n\n function TaskPropertiesManipulator(viewModel, dispatcher) {\n var _this = _super.call(this, viewModel, dispatcher) || this;\n\n _this.title = new TaskTitleManipulator(viewModel, dispatcher);\n _this.description = new TaskDescriptionManipulator(viewModel, dispatcher);\n _this.progress = new TaskProgressManipulator(viewModel, dispatcher);\n _this.start = new TaskStartDateManipulator(viewModel, dispatcher);\n _this.end = new TaskEndDateManipulator(viewModel, dispatcher);\n _this.move = new TaskMoveManipulator(viewModel, dispatcher);\n _this.color = new TaskColorManipulator(viewModel, dispatcher);\n return _this;\n }\n\n return TaskPropertiesManipulator;\n }(BaseManipulator);\n\n exports.TaskPropertiesManipulator = TaskPropertiesManipulator;\n\n var TaskPropertyManipulator = function (_super) {\n tslib_1.__extends(TaskPropertyManipulator, _super);\n\n function TaskPropertyManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskPropertyManipulator.prototype.setValue = function (id, newValue) {\n var task = this.viewModel.tasks.getItemById(id);\n var oldState = new HistoryItemState_1.HistoryItemState(id, this.getPropertyValue(task));\n this.setPropertyValue(task, newValue);\n var viewItem = this.viewModel.findItem(id);\n if (viewItem) this.viewModel.owner.recreateTaskElement(viewItem.visibleIndex);\n return oldState;\n };\n\n TaskPropertyManipulator.prototype.restoreValue = function (state) {\n if (!state) return;\n var task = this.viewModel.tasks.getItemById(state.id);\n this.setPropertyValue(task, state.value);\n var viewItem = this.viewModel.findItem(state.id);\n if (viewItem) this.viewModel.owner.recreateTaskElement(viewItem.visibleIndex);\n };\n\n return TaskPropertyManipulator;\n }(BaseManipulator);\n\n exports.TaskPropertyManipulator = TaskPropertyManipulator;\n\n var TaskTitleManipulator = function (_super) {\n tslib_1.__extends(TaskTitleManipulator, _super);\n\n function TaskTitleManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskTitleManipulator.prototype.getPropertyValue = function (task) {\n return task.title;\n };\n\n TaskTitleManipulator.prototype.setPropertyValue = function (task, value) {\n task.title = value;\n this.dispatcher.notifyTaskTitleChanged(task.id, value, this.getErrorCallback());\n };\n\n return TaskTitleManipulator;\n }(TaskPropertyManipulator);\n\n var TaskDescriptionManipulator = function (_super) {\n tslib_1.__extends(TaskDescriptionManipulator, _super);\n\n function TaskDescriptionManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskDescriptionManipulator.prototype.getPropertyValue = function (task) {\n return task.description;\n };\n\n TaskDescriptionManipulator.prototype.setPropertyValue = function (task, value) {\n task.description = value;\n this.dispatcher.notifyTaskDescriptionChanged(task.id, value, this.getErrorCallback());\n };\n\n return TaskDescriptionManipulator;\n }(TaskPropertyManipulator);\n\n var TaskProgressManipulator = function (_super) {\n tslib_1.__extends(TaskProgressManipulator, _super);\n\n function TaskProgressManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskProgressManipulator.prototype.getPropertyValue = function (task) {\n return task.progress;\n };\n\n TaskProgressManipulator.prototype.setPropertyValue = function (task, value) {\n value = value < 0 ? 0 : value > 100 ? 100 : value;\n task.progress = value;\n this.dispatcher.notifyTaskProgressChanged(task.id, value, this.getErrorCallback());\n };\n\n return TaskProgressManipulator;\n }(TaskPropertyManipulator);\n\n var TaskStartDateManipulator = function (_super) {\n tslib_1.__extends(TaskStartDateManipulator, _super);\n\n function TaskStartDateManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskStartDateManipulator.prototype.getPropertyValue = function (task) {\n return task.start;\n };\n\n TaskStartDateManipulator.prototype.setPropertyValue = function (task, value) {\n task.start = value;\n this.dispatcher.notifyTaskStartChanged(task.id, value, this.getErrorCallback());\n };\n\n return TaskStartDateManipulator;\n }(TaskPropertyManipulator);\n\n var TaskEndDateManipulator = function (_super) {\n tslib_1.__extends(TaskEndDateManipulator, _super);\n\n function TaskEndDateManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskEndDateManipulator.prototype.getPropertyValue = function (task) {\n return task.end;\n };\n\n TaskEndDateManipulator.prototype.setPropertyValue = function (task, value) {\n task.end = value;\n this.dispatcher.notifyTaskEndChanged(task.id, value, this.getErrorCallback());\n };\n\n return TaskEndDateManipulator;\n }(TaskPropertyManipulator);\n\n var TaskMoveManipulator = function (_super) {\n tslib_1.__extends(TaskMoveManipulator, _super);\n\n function TaskMoveManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskMoveManipulator.prototype.getPropertyValue = function (task) {\n return new DateRange_1.DateRange(task.start, task.end);\n };\n\n TaskMoveManipulator.prototype.setPropertyValue = function (task, value) {\n task.start = value.start;\n task.end = value.end;\n this.dispatcher.notifyTaskStartChanged(task.id, value.start, this.getErrorCallback());\n this.dispatcher.notifyTaskEndChanged(task.id, value.end, this.getErrorCallback());\n };\n\n return TaskMoveManipulator;\n }(TaskPropertyManipulator);\n\n var TaskColorManipulator = function (_super) {\n tslib_1.__extends(TaskColorManipulator, _super);\n\n function TaskColorManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskColorManipulator.prototype.getPropertyValue = function (task) {\n return task.color;\n };\n\n TaskColorManipulator.prototype.setPropertyValue = function (task, value) {\n task.color = value;\n this.dispatcher.notifyTaskColorChanged(task.id, value, this.getErrorCallback());\n };\n\n return TaskColorManipulator;\n }(TaskPropertyManipulator);\n /***/\n\n },\n /* 19 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HandlerStateBase = void 0;\n\n var point_1 = __webpack_require__(4);\n\n var dom_1 = __webpack_require__(3);\n\n var HandlerStateBase = function () {\n function HandlerStateBase(handler) {\n this.handler = handler;\n }\n\n HandlerStateBase.prototype.start = function () {};\n\n HandlerStateBase.prototype.finish = function () {};\n\n HandlerStateBase.prototype.getRelativePos = function (absolutePos) {\n var taskAreaX = dom_1.DomUtils.getAbsolutePositionX(this.handler.control.taskArea);\n var taskAreaY = dom_1.DomUtils.getAbsolutePositionY(this.handler.control.taskArea);\n return new point_1.Point(absolutePos.x - taskAreaX, absolutePos.y - taskAreaY);\n };\n\n return HandlerStateBase;\n }();\n\n exports.HandlerStateBase = HandlerStateBase;\n /***/\n },\n /* 20 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BaseArguments = void 0;\n\n var BaseArguments = function () {\n function BaseArguments(key) {\n this.cancel = false;\n this.values = {};\n this.key = key;\n }\n\n return BaseArguments;\n }();\n\n exports.BaseArguments = BaseArguments;\n /***/\n },\n /* 21 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RemoveDependencyHistoryItem = exports.InsertDependencyHistoryItem = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItem_1 = __webpack_require__(12);\n\n var InsertDependencyHistoryItem = function (_super) {\n tslib_1.__extends(InsertDependencyHistoryItem, _super);\n\n function InsertDependencyHistoryItem(modelManipulator, predecessorId, successorId, type) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.predecessorId = predecessorId;\n _this.successorId = successorId;\n _this.type = type;\n return _this;\n }\n\n InsertDependencyHistoryItem.prototype.redo = function () {\n this.dependency = this.modelManipulator.dependency.insertDependency(this.predecessorId, this.successorId, this.type, this.dependency ? this.dependency.internalId : null);\n };\n\n InsertDependencyHistoryItem.prototype.undo = function () {\n this.modelManipulator.dependency.removeDependency(this.dependency.internalId);\n };\n\n return InsertDependencyHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.InsertDependencyHistoryItem = InsertDependencyHistoryItem;\n\n var RemoveDependencyHistoryItem = function (_super) {\n tslib_1.__extends(RemoveDependencyHistoryItem, _super);\n\n function RemoveDependencyHistoryItem(modelManipulator, dependencyId) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.dependencyId = dependencyId;\n return _this;\n }\n\n RemoveDependencyHistoryItem.prototype.redo = function () {\n this.dependency = this.modelManipulator.dependency.removeDependency(this.dependencyId);\n };\n\n RemoveDependencyHistoryItem.prototype.undo = function () {\n this.modelManipulator.dependency.insertDependency(this.dependency.predecessorId, this.dependency.successorId, this.dependency.type, this.dependencyId);\n };\n\n return RemoveDependencyHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.RemoveDependencyHistoryItem = RemoveDependencyHistoryItem;\n /***/\n },\n /* 22 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeassignResourceHistoryItem = exports.AssignResourceHistoryItem = exports.RemoveResourceHistoryItem = exports.CreateResourceHistoryItem = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItem_1 = __webpack_require__(12);\n\n var CreateResourceHistoryItem = function (_super) {\n tslib_1.__extends(CreateResourceHistoryItem, _super);\n\n function CreateResourceHistoryItem(modelManipulator, text, color, callback) {\n if (color === void 0) {\n color = \"\";\n }\n\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.text = text;\n _this.color = color;\n _this.createCallback = callback;\n return _this;\n }\n\n CreateResourceHistoryItem.prototype.redo = function () {\n this.resource = this.modelManipulator.resource.create(this.text, this.color, this.resource ? this.resource.internalId : null, this.createCallback);\n };\n\n CreateResourceHistoryItem.prototype.undo = function () {\n this.modelManipulator.resource.remove(this.resource.internalId);\n };\n\n return CreateResourceHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.CreateResourceHistoryItem = CreateResourceHistoryItem;\n\n var RemoveResourceHistoryItem = function (_super) {\n tslib_1.__extends(RemoveResourceHistoryItem, _super);\n\n function RemoveResourceHistoryItem(modelManipulator, resourceId) {\n var _this = _super.call(this) || this;\n\n _this.modelManipulator = modelManipulator;\n _this.resourceId = resourceId;\n return _this;\n }\n\n RemoveResourceHistoryItem.prototype.redo = function () {\n _super.prototype.redo.call(this);\n\n this.resource = this.modelManipulator.resource.remove(this.resourceId);\n };\n\n RemoveResourceHistoryItem.prototype.undo = function () {\n var _this = this;\n\n this.modelManipulator.resource.create(this.resource.text, this.resource.color, this.resourceId, function () {\n if (_this.resource.color) _this.modelManipulator.resource.properties.color.setValue(_this.resource.internalId, _this.resource.color);\n\n _super.prototype.undo.call(_this);\n });\n };\n\n RemoveResourceHistoryItem.prototype.undoItemsQuery = function () {\n this.modelManipulator.resource.create(this.resource.text, this.resource.color, this.resourceId, function () {});\n if (this.resource.color) this.modelManipulator.resource.properties.color.setValue(this.resource.internalId, this.resource.color);\n\n _super.prototype.undo.call(this);\n };\n\n return RemoveResourceHistoryItem;\n }(HistoryItem_1.CompositionHistoryItem);\n\n exports.RemoveResourceHistoryItem = RemoveResourceHistoryItem;\n\n var AssignResourceHistoryItem = function (_super) {\n tslib_1.__extends(AssignResourceHistoryItem, _super);\n\n function AssignResourceHistoryItem(modelManipulator, resourceId, taskId) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.resourceId = resourceId;\n _this.taskId = taskId;\n return _this;\n }\n\n AssignResourceHistoryItem.prototype.redo = function () {\n this.assignment = this.modelManipulator.resource.assign(this.resourceId, this.taskId, this.assignment ? this.assignment.internalId : null);\n };\n\n AssignResourceHistoryItem.prototype.undo = function () {\n this.modelManipulator.resource.deassig(this.assignment.internalId);\n };\n\n return AssignResourceHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.AssignResourceHistoryItem = AssignResourceHistoryItem;\n\n var DeassignResourceHistoryItem = function (_super) {\n tslib_1.__extends(DeassignResourceHistoryItem, _super);\n\n function DeassignResourceHistoryItem(modelManipulator, assignmentId) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.assignmentId = assignmentId;\n return _this;\n }\n\n DeassignResourceHistoryItem.prototype.redo = function () {\n this.assignment = this.modelManipulator.resource.deassig(this.assignmentId);\n };\n\n DeassignResourceHistoryItem.prototype.undo = function () {\n this.modelManipulator.resource.assign(this.assignment.resourceId, this.assignment.taskId, this.assignmentId);\n };\n\n return DeassignResourceHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.DeassignResourceHistoryItem = DeassignResourceHistoryItem;\n /***/\n },\n /* 23 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConfirmationDialogParameters = exports.ConfirmationDialog = exports.ConfirmationType = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DialogBase_1 = __webpack_require__(24);\n\n var ConfirmationType;\n\n (function (ConfirmationType) {\n ConfirmationType[ConfirmationType[\"TaskDelete\"] = 0] = \"TaskDelete\";\n ConfirmationType[ConfirmationType[\"DependencyDelete\"] = 1] = \"DependencyDelete\";\n ConfirmationType[ConfirmationType[\"ResourcesDelete\"] = 2] = \"ResourcesDelete\";\n })(ConfirmationType = exports.ConfirmationType || (exports.ConfirmationType = {}));\n\n var ConfirmationDialog = function (_super) {\n tslib_1.__extends(ConfirmationDialog, _super);\n\n function ConfirmationDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ConfirmationDialog.prototype.applyParameters = function (_newParameters, oldParameters) {\n this.history.beginTransaction();\n oldParameters.callback();\n this.history.endTransaction();\n this.control.barManager.updateItemsState([]);\n return true;\n };\n\n ConfirmationDialog.prototype.createParameters = function (options) {\n return options;\n };\n\n ConfirmationDialog.prototype.getDialogName = function () {\n return \"Confirmation\";\n };\n\n return ConfirmationDialog;\n }(DialogBase_1.DialogBase);\n\n exports.ConfirmationDialog = ConfirmationDialog;\n\n var ConfirmationDialogParameters = function (_super) {\n tslib_1.__extends(ConfirmationDialogParameters, _super);\n\n function ConfirmationDialogParameters(type, callback) {\n var _this = _super.call(this) || this;\n\n _this.type = type;\n _this.callback = callback;\n return _this;\n }\n\n ConfirmationDialogParameters.prototype.clone = function () {\n var result = new ConfirmationDialogParameters(this.type, this.callback);\n result.message = this.message;\n return result;\n };\n\n return ConfirmationDialogParameters;\n }(DialogBase_1.DialogParametersBase);\n\n exports.ConfirmationDialogParameters = ConfirmationDialogParameters;\n /***/\n },\n /* 24 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DialogParametersBase = exports.DialogBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var DialogBase = function (_super) {\n tslib_1.__extends(DialogBase, _super);\n\n function DialogBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DialogBase.prototype.executeInternal = function (options) {\n var _this = this;\n\n var params = this.createParameters(options);\n var initParams = params.clone();\n if (!this.onBeforeDialogShow(params)) return false;\n this.control.ganttOwner.showDialog(this.getDialogName(), params, function (result) {\n if (result) _this.applyParameters(result, initParams);\n }, function () {\n _this.afterClosing();\n });\n return true;\n };\n\n DialogBase.prototype.onBeforeDialogShow = function (params) {\n return true;\n };\n\n DialogBase.prototype.applyParameters = function (_newParameters, _oldParameters) {\n return false;\n };\n\n DialogBase.prototype.afterClosing = function () {};\n\n DialogBase.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n return DialogBase;\n }(CommandBase_1.CommandBase);\n\n exports.DialogBase = DialogBase;\n\n var DialogParametersBase = function () {\n function DialogParametersBase() {}\n\n return DialogParametersBase;\n }();\n\n exports.DialogParametersBase = DialogParametersBase;\n /***/\n },\n /* 25 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskColorHistoryItem = exports.TaskMoveHistoryItem = exports.TaskEndHistoryItem = exports.TaskStartHistoryItem = exports.TaskProgressHistoryItem = exports.TaskDescriptionHistoryItem = exports.TaskTitleHistoryItem = exports.TaskPropertiesHistoryItemBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItem_1 = __webpack_require__(12);\n\n var TaskPropertiesHistoryItemBase = function (_super) {\n tslib_1.__extends(TaskPropertiesHistoryItemBase, _super);\n\n function TaskPropertiesHistoryItemBase(modelManipulator, taskId, newValue) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.taskId = taskId;\n _this.newValue = newValue;\n return _this;\n }\n\n TaskPropertiesHistoryItemBase.prototype.redo = function () {\n this.oldState = this.getPropertiesManipulator().setValue(this.taskId, this.newValue);\n };\n\n TaskPropertiesHistoryItemBase.prototype.undo = function () {\n this.getPropertiesManipulator().restoreValue(this.oldState);\n };\n\n TaskPropertiesHistoryItemBase.prototype.getPropertiesManipulator = function () {\n throw new Error(\"Not Implemented\");\n };\n\n return TaskPropertiesHistoryItemBase;\n }(HistoryItem_1.HistoryItem);\n\n exports.TaskPropertiesHistoryItemBase = TaskPropertiesHistoryItemBase;\n\n var TaskTitleHistoryItem = function (_super) {\n tslib_1.__extends(TaskTitleHistoryItem, _super);\n\n function TaskTitleHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskTitleHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.title;\n };\n\n return TaskTitleHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskTitleHistoryItem = TaskTitleHistoryItem;\n\n var TaskDescriptionHistoryItem = function (_super) {\n tslib_1.__extends(TaskDescriptionHistoryItem, _super);\n\n function TaskDescriptionHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskDescriptionHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.description;\n };\n\n return TaskDescriptionHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskDescriptionHistoryItem = TaskDescriptionHistoryItem;\n\n var TaskProgressHistoryItem = function (_super) {\n tslib_1.__extends(TaskProgressHistoryItem, _super);\n\n function TaskProgressHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskProgressHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.progress;\n };\n\n return TaskProgressHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskProgressHistoryItem = TaskProgressHistoryItem;\n\n var TaskStartHistoryItem = function (_super) {\n tslib_1.__extends(TaskStartHistoryItem, _super);\n\n function TaskStartHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskStartHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.start;\n };\n\n return TaskStartHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskStartHistoryItem = TaskStartHistoryItem;\n\n var TaskEndHistoryItem = function (_super) {\n tslib_1.__extends(TaskEndHistoryItem, _super);\n\n function TaskEndHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskEndHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.end;\n };\n\n return TaskEndHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskEndHistoryItem = TaskEndHistoryItem;\n\n var TaskMoveHistoryItem = function (_super) {\n tslib_1.__extends(TaskMoveHistoryItem, _super);\n\n function TaskMoveHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskMoveHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.move;\n };\n\n return TaskMoveHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskMoveHistoryItem = TaskMoveHistoryItem;\n\n var TaskColorHistoryItem = function (_super) {\n tslib_1.__extends(TaskColorHistoryItem, _super);\n\n function TaskColorHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskColorHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.task.properties.color;\n };\n\n return TaskColorHistoryItem;\n }(TaskPropertiesHistoryItemBase);\n\n exports.TaskColorHistoryItem = TaskColorHistoryItem;\n /***/\n },\n /* 26 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceCollection = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CollectionBase_1 = __webpack_require__(13);\n\n var Resource_1 = __webpack_require__(33);\n\n var ResourceCollection = function (_super) {\n tslib_1.__extends(ResourceCollection, _super);\n\n function ResourceCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourceCollection.prototype.createItem = function () {\n return new Resource_1.Resource();\n };\n\n return ResourceCollection;\n }(CollectionBase_1.CollectionBase);\n\n exports.ResourceCollection = ResourceCollection;\n /***/\n },\n /* 27 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var StringUtils = function () {\n function StringUtils() {}\n\n StringUtils.isAlpha = function (ch) {\n return ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z';\n };\n\n StringUtils.isDigit = function (ch) {\n return ch >= '0' && ch <= '9';\n };\n\n StringUtils.stringHashCode = function (str) {\n var hash = 0;\n if (str.length === 0) return hash;\n var strLen = str.length;\n\n for (var i = 0; i < strLen; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash |= 0;\n }\n\n return hash;\n };\n\n StringUtils.endsAt = function (str, template) {\n var strInd = str.length - 1;\n var tmplInd = template.length - 1;\n var strStartInd = strInd - tmplInd;\n if (strStartInd < 0) return false;\n\n for (; strInd >= strStartInd; strInd--, tmplInd--) {\n if (str[strInd] !== template[tmplInd]) return false;\n }\n\n return true;\n };\n\n StringUtils.startsAt = function (str, template) {\n return str.substr(0, template.length) === template;\n };\n\n StringUtils.stringInLowerCase = function (str) {\n return str.toLowerCase() === str;\n };\n\n StringUtils.stringInUpperCase = function (str) {\n return str.toUpperCase() === str;\n };\n\n StringUtils.atLeastOneSymbolInUpperCase = function (str) {\n for (var i = 0, char = void 0; char = str[i]; i++) {\n if (StringUtils.stringInUpperCase(char) && !StringUtils.stringInLowerCase(char)) return true;\n }\n\n return false;\n };\n\n StringUtils.getSymbolFromEnd = function (text, posFromEnd) {\n return text[text.length - posFromEnd];\n };\n\n StringUtils.trim = function (str, trimChars) {\n if (trimChars === undefined) return StringUtils.trimInternal(str, true, true);else {\n var joinedChars = trimChars.join('');\n return str.replace(new RegExp(\"(^[\" + joinedChars + \"]*)|([\" + joinedChars + \"]*$)\", 'g'), '');\n }\n };\n\n StringUtils.trimStart = function (str, trimChars) {\n if (trimChars === undefined) return StringUtils.trimInternal(str, true, false);else {\n var joinedChars = trimChars.join('');\n return str.replace(new RegExp(\"^[\" + joinedChars + \"]*\", 'g'), '');\n }\n };\n\n StringUtils.trimEnd = function (str, trimChars) {\n if (trimChars === undefined) return StringUtils.trimInternal(str, false, true);else {\n var joinedChars = trimChars.join('');\n return str.replace(new RegExp(\"[\" + joinedChars + \"]*$\", 'g'), '');\n }\n };\n\n StringUtils.getDecimalSeparator = function () {\n return 1.1.toLocaleString().substr(1, 1);\n };\n\n StringUtils.repeat = function (str, count) {\n return new Array(count <= 0 ? 0 : count + 1).join(str);\n };\n\n StringUtils.isNullOrEmpty = function (str) {\n return !str || !str.length;\n };\n\n StringUtils.padLeft = function (str, totalWidth, paddingChar) {\n return StringUtils.repeat(paddingChar, Math.max(0, totalWidth - str.length)) + str;\n };\n\n StringUtils.trimInternal = function (source, trimStart, trimEnd) {\n var len = source.length;\n if (!len) return source;\n\n if (len < 0xBABA1) {\n var result = source;\n if (trimStart) result = result.replace(/^\\s+/, '');\n if (trimEnd) result = result.replace(/\\s+$/, '');\n return result;\n } else {\n var start = 0;\n\n if (trimEnd) {\n while (len > 0 && /\\s/.test(source[len - 1])) {\n len--;\n }\n }\n\n if (trimStart && len > 0) {\n while (start < len && /\\s/.test(source[start])) {\n start++;\n }\n }\n\n return source.substring(start, len);\n }\n };\n\n return StringUtils;\n }();\n\n exports.StringUtils = StringUtils;\n /***/\n },\n /* 28 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Size = function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n\n Size.empty = function () {\n return new Size(0, 0);\n };\n\n Size.fromNumber = function (num) {\n return new Size(num, num);\n };\n\n Size.initByCommonAction = function (action) {\n var widthAdp = function widthAdp(s) {\n return s.width;\n };\n\n var heightAdp = function heightAdp(s) {\n return s.height;\n };\n\n return new Size(action(widthAdp, heightAdp), action(heightAdp, widthAdp));\n };\n\n Size.prototype.isEmpty = function () {\n return this.width === 0 && this.height === 0;\n };\n\n Size.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Size.prototype.nonNegativeSize = function () {\n if (this.width < 0) this.width = 0;\n if (this.height < 0) this.height = 0;\n return this;\n };\n\n Size.prototype.offset = function (offsetWidth, offsetHeight) {\n this.width = this.width + offsetWidth;\n this.height = this.height + offsetHeight;\n return this;\n };\n\n Size.prototype.multiply = function (multiplierW, multiplierH) {\n this.width *= multiplierW;\n this.height *= multiplierH;\n return this;\n };\n\n Size.prototype.equals = function (obj) {\n return this.width === obj.width && this.height === obj.height;\n };\n\n Size.prototype.clone = function () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.copyFrom = function (obj) {\n this.width = obj.width;\n this.height = obj.height;\n };\n\n Size.prototype.applyConverter = function (conv) {\n this.width = conv(this.width);\n this.height = conv(this.height);\n return this;\n };\n\n Size.equals = function (a, b) {\n return a.width === b.width && a.height === b.height;\n };\n\n return Size;\n }();\n\n exports.Size = Size;\n /***/\n },\n /* 29 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerStateBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HandlerStateBase_1 = __webpack_require__(19);\n\n var MouseHandlerStateBase = function (_super) {\n tslib_1.__extends(MouseHandlerStateBase, _super);\n\n function MouseHandlerStateBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerStateBase.prototype.onMouseDoubleClick = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseDown = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseUp = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseMove = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseWheel = function (_evt) {};\n\n return MouseHandlerStateBase;\n }(HandlerStateBase_1.HandlerStateBase);\n\n exports.MouseHandlerStateBase = MouseHandlerStateBase;\n /***/\n },\n /* 30 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDragBaseState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var point_1 = __webpack_require__(4);\n\n var evt_1 = __webpack_require__(6);\n\n var MouseHandlerStateBase_1 = __webpack_require__(29);\n\n var MouseHandlerDragBaseState = function (_super) {\n tslib_1.__extends(MouseHandlerDragBaseState, _super);\n\n function MouseHandlerDragBaseState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerDragBaseState.prototype.onMouseDown = function (evt) {\n this.currentPosition = new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt));\n if (this.handler.control.taskEditController.dependencyId != null) this.handler.control.selectDependency(null);\n };\n\n MouseHandlerDragBaseState.prototype.onMouseUp = function (evt) {\n this.onMouseUpInternal(evt);\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerDragBaseState.prototype.onMouseMove = function (evt) {\n evt.preventDefault();\n var position = new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt));\n this.onMouseMoveInternal(position);\n this.currentPosition = position;\n };\n\n MouseHandlerDragBaseState.prototype.onMouseUpInternal = function (_evt) {};\n\n MouseHandlerDragBaseState.prototype.onMouseMoveInternal = function (_position) {};\n\n return MouseHandlerDragBaseState;\n }(MouseHandlerStateBase_1.MouseHandlerStateBase);\n\n exports.MouseHandlerDragBaseState = MouseHandlerDragBaseState;\n /***/\n },\n /* 31 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerDragBaseState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TouchHandlerStateBase_1 = __webpack_require__(49);\n\n var point_1 = __webpack_require__(4);\n\n var touch_1 = __webpack_require__(15);\n\n var TouchHandlerDragBaseState = function (_super) {\n tslib_1.__extends(TouchHandlerDragBaseState, _super);\n\n function TouchHandlerDragBaseState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerDragBaseState.prototype.onTouchStart = function (evt) {\n this.currentPosition = new point_1.Point(touch_1.TouchUtils.getEventX(evt), touch_1.TouchUtils.getEventY(evt));\n if (this.handler.control.taskEditController.dependencyId != null) this.handler.control.selectDependency(null);\n };\n\n TouchHandlerDragBaseState.prototype.onTouchEnd = function (evt) {\n this.onTouchEndInternal(evt);\n this.handler.switchToDefaultState();\n };\n\n TouchHandlerDragBaseState.prototype.onTouchMove = function (evt) {\n evt.preventDefault();\n var position = new point_1.Point(touch_1.TouchUtils.getEventX(evt), touch_1.TouchUtils.getEventY(evt));\n this.onTouchMoveInternal(position);\n this.currentPosition = position;\n };\n\n TouchHandlerDragBaseState.prototype.onTouchEndInternal = function (_evt) {};\n\n TouchHandlerDragBaseState.prototype.onTouchMoveInternal = function (_position) {};\n\n return TouchHandlerDragBaseState;\n }(TouchHandlerStateBase_1.TouchHandlerStateBase);\n\n exports.TouchHandlerDragBaseState = TouchHandlerDragBaseState;\n /***/\n },\n /* 32 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceUnassigningArguments = exports.ResourceAssigningArguments = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var BaseArguments_1 = __webpack_require__(20);\n\n var ResourceAssigningArguments = function (_super) {\n tslib_1.__extends(ResourceAssigningArguments, _super);\n\n function ResourceAssigningArguments(resourceId, taskId) {\n var _this = _super.call(this, null) || this;\n\n _this.values = {\n resourceId: resourceId,\n taskId: taskId\n };\n return _this;\n }\n\n Object.defineProperty(ResourceAssigningArguments.prototype, \"resourceId\", {\n get: function get() {\n return this.values.resourceId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResourceAssigningArguments.prototype, \"taskId\", {\n get: function get() {\n return this.values.taskId;\n },\n enumerable: false,\n configurable: true\n });\n return ResourceAssigningArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.ResourceAssigningArguments = ResourceAssigningArguments;\n\n var ResourceUnassigningArguments = function (_super) {\n tslib_1.__extends(ResourceUnassigningArguments, _super);\n\n function ResourceUnassigningArguments(assignment) {\n var _this = _super.call(this, assignment.internalId) || this;\n\n _this.values = assignment;\n return _this;\n }\n\n return ResourceUnassigningArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.ResourceUnassigningArguments = ResourceUnassigningArguments;\n /***/\n },\n /* 33 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Resource = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var common_1 = __webpack_require__(1);\n\n var DataObject_1 = __webpack_require__(10);\n\n var Resource = function (_super) {\n tslib_1.__extends(Resource, _super);\n\n function Resource() {\n var _this = _super.call(this) || this;\n\n _this.text = \"\";\n _this.color = \"\";\n return _this;\n }\n\n Resource.prototype.assignFromObject = function (sourceObj) {\n if (common_1.isDefined(sourceObj)) {\n _super.prototype.assignFromObject.call(this, sourceObj);\n\n this.text = sourceObj.text;\n if (common_1.isDefined(sourceObj.color)) this.color = sourceObj.color;\n }\n };\n\n return Resource;\n }(DataObject_1.DataObject);\n\n exports.Resource = Resource;\n /***/\n },\n /* 34 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var list_1 = __webpack_require__(59);\n\n var MathUtils = function () {\n function MathUtils() {}\n\n MathUtils.round = function (value, digits) {\n if (digits === void 0) {\n digits = 0;\n }\n\n var factor = MathUtils.powFactor[digits];\n return Math.round(value * factor) / factor;\n };\n\n MathUtils.numberCloseTo = function (num, to, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return Math.abs(num - to) < accuracy;\n };\n\n MathUtils.restrictValue = function (val, minVal, maxVal) {\n if (maxVal < minVal) maxVal = minVal;\n if (val > maxVal) return maxVal;else if (val < minVal) return minVal;\n return val;\n };\n\n MathUtils.getRandomInt = function (min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n };\n\n MathUtils.generateGuid = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n };\n\n MathUtils.powFactor = list_1.ListUtils.initByCallback(20, function (ind) {\n return Math.pow(10, ind);\n });\n MathUtils.somePrimes = [1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003];\n return MathUtils;\n }();\n\n exports.MathUtils = MathUtils;\n /***/\n },\n /* 35 */\n\n /***/\n function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__extends\", function () {\n return __extends;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__assign\", function () {\n return _assign2;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__rest\", function () {\n return __rest;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__decorate\", function () {\n return __decorate;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__param\", function () {\n return __param;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__metadata\", function () {\n return __metadata;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__awaiter\", function () {\n return __awaiter;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__generator\", function () {\n return __generator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__createBinding\", function () {\n return __createBinding;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__exportStar\", function () {\n return __exportStar;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__values\", function () {\n return __values;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__read\", function () {\n return __read;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spread\", function () {\n return __spread;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function () {\n return __spreadArrays;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__await\", function () {\n return __await;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function () {\n return __asyncGenerator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function () {\n return __asyncDelegator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function () {\n return __asyncValues;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function () {\n return __makeTemplateObject;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__importStar\", function () {\n return __importStar;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__importDefault\", function () {\n return __importDefault;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function () {\n return __classPrivateFieldGet;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function () {\n return __classPrivateFieldSet;\n });\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n \r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n \r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\n\n /* global Reflect, Promise */\n\n\n var _extendStatics2 = function extendStatics(d, b) {\n _extendStatics2 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics2(d, b);\n };\n\n function __extends(d, b) {\n _extendStatics2(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n\n var _assign2 = function __assign() {\n _assign2 = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign2.apply(this, arguments);\n };\n\n function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n }\n\n function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n }\n\n function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n }\n\n function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n }\n\n function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n }\n\n function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n }\n\n var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n } : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n };\n\n function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n }\n\n function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n }\n\n function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n }\n\n function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n }\n\n function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n }\n\n ;\n\n function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n }\n\n function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n }\n\n function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n }\n\n function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n }\n\n function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n }\n\n ;\n\n var __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n } : function (o, v) {\n o[\"default\"] = v;\n };\n\n function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n }\n\n function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n }\n\n function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n }\n\n function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n }\n /***/\n\n },\n /* 36 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceAssignment = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DataObject_1 = __webpack_require__(10);\n\n var common_1 = __webpack_require__(1);\n\n var ResourceAssignment = function (_super) {\n tslib_1.__extends(ResourceAssignment, _super);\n\n function ResourceAssignment() {\n var _this = _super.call(this) || this;\n\n _this.taskId = \"\";\n _this.resourceId = \"\";\n return _this;\n }\n\n ResourceAssignment.prototype.assignFromObject = function (sourceObj) {\n if (common_1.isDefined(sourceObj)) {\n _super.prototype.assignFromObject.call(this, sourceObj);\n\n this.taskId = String(sourceObj.taskId);\n this.resourceId = String(sourceObj.resourceId);\n }\n };\n\n return ResourceAssignment;\n }(DataObject_1.DataObject);\n\n exports.ResourceAssignment = ResourceAssignment;\n /***/\n },\n /* 37 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Time = void 0;\n\n var Time = function () {\n function Time(h, min, sec, msec) {\n if (h === void 0) {\n h = 0;\n }\n\n if (min === void 0) {\n min = 0;\n }\n\n if (sec === void 0) {\n sec = 0;\n }\n\n if (msec === void 0) {\n msec = 0;\n }\n\n this._hour = 0;\n this._min = 0;\n this._sec = 0;\n this._msec = 0;\n this._fullmsec = 0;\n this.hour = h;\n this.min = min;\n this.sec = sec;\n this.msec = msec;\n }\n\n Object.defineProperty(Time.prototype, \"hour\", {\n get: function get() {\n return this._hour;\n },\n set: function set(h) {\n if (h >= 0 && h < 24) {\n this._hour = h;\n this.updateFullMilleconds();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Time.prototype, \"min\", {\n get: function get() {\n return this._min;\n },\n set: function set(m) {\n if (m >= 0 && m < 60) {\n this._min = m;\n this.updateFullMilleconds();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Time.prototype, \"sec\", {\n get: function get() {\n return this._sec;\n },\n set: function set(s) {\n if (s >= 0 && s < 60) {\n this._sec = s;\n this.updateFullMilleconds();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Time.prototype, \"msec\", {\n get: function get() {\n return this._msec;\n },\n set: function set(ms) {\n if (ms >= 0 && ms < 1000) {\n this._msec = ms;\n this.updateFullMilleconds();\n }\n },\n enumerable: false,\n configurable: true\n });\n\n Time.prototype.updateFullMilleconds = function () {\n var minutes = this._hour * 60 + this._min;\n var sec = minutes * 60 + this._sec;\n this._fullmsec = sec * 1000 + this._msec;\n };\n\n Time.prototype.getTimeInMilleconds = function () {\n return this._fullmsec;\n };\n\n return Time;\n }();\n\n exports.Time = Time;\n /***/\n },\n /* 38 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TimeRange = void 0;\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var TimeRange = function () {\n function TimeRange(start, end) {\n var diff = DateTimeUtils_1.DateTimeUtils.caclTimeDifference(start, end);\n\n if (diff >= 0) {\n this._start = start;\n this._end = end;\n } else {\n this._start = end;\n this._end = start;\n }\n }\n\n Object.defineProperty(TimeRange.prototype, \"start\", {\n get: function get() {\n return this._start;\n },\n set: function set(time) {\n if (time && DateTimeUtils_1.DateTimeUtils.caclTimeDifference(time, this._end) >= 0) this._start = time;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeRange.prototype, \"end\", {\n get: function get() {\n return this._end;\n },\n set: function set(time) {\n if (time && DateTimeUtils_1.DateTimeUtils.caclTimeDifference(this._start, time) >= 0) this._end = time;\n },\n enumerable: false,\n configurable: true\n });\n\n TimeRange.prototype.isTimeInRange = function (time) {\n return DateTimeUtils_1.DateTimeUtils.caclTimeDifference(this._start, time) >= 0 && DateTimeUtils_1.DateTimeUtils.caclTimeDifference(time, this._end) >= 0;\n };\n\n TimeRange.prototype.hasIntersect = function (range) {\n return this.isTimeInRange(range.start) || this.isTimeInRange(range.end) || range.isTimeInRange(this.start) || range.isTimeInRange(this.end);\n };\n\n TimeRange.prototype.concatWith = function (range) {\n if (!this.hasIntersect(range)) return false;\n this.start = DateTimeUtils_1.DateTimeUtils.getMinTime(this.start, range.start);\n this.end = DateTimeUtils_1.DateTimeUtils.getMaxTime(this.end, range.end);\n return true;\n };\n\n return TimeRange;\n }();\n\n exports.TimeRange = TimeRange;\n /***/\n },\n /* 39 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DayOfWeekMonthlyOccurrence = void 0;\n var DayOfWeekMonthlyOccurrence;\n\n (function (DayOfWeekMonthlyOccurrence) {\n DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence[\"First\"] = 0] = \"First\";\n DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence[\"Second\"] = 1] = \"Second\";\n DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence[\"Third\"] = 2] = \"Third\";\n DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence[\"Forth\"] = 3] = \"Forth\";\n DayOfWeekMonthlyOccurrence[DayOfWeekMonthlyOccurrence[\"Last\"] = 4] = \"Last\";\n })(DayOfWeekMonthlyOccurrence = exports.DayOfWeekMonthlyOccurrence || (exports.DayOfWeekMonthlyOccurrence = {}));\n /***/\n\n },\n /* 40 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RecurrenceFactory = void 0;\n\n var common_1 = __webpack_require__(1);\n\n var Daily_1 = __webpack_require__(41);\n\n var Weekly_1 = __webpack_require__(73);\n\n var Monthly_1 = __webpack_require__(74);\n\n var Yearly_1 = __webpack_require__(76);\n\n var RecurrenceFactory = function () {\n function RecurrenceFactory() {}\n\n RecurrenceFactory.createRecurrenceByType = function (type) {\n if (!type) return null;\n var correctedType = type.toLowerCase();\n\n switch (correctedType) {\n case \"daily\":\n return new Daily_1.Daily();\n\n case \"weekly\":\n return new Weekly_1.Weekly();\n\n case \"monthly\":\n return new Monthly_1.Monthly();\n\n case \"yearly\":\n return new Yearly_1.Yearly();\n }\n\n return null;\n };\n\n RecurrenceFactory.createRecurrenceFromObject = function (sourceObj) {\n if (!sourceObj) return null;\n var recurrence = this.createRecurrenceByType(sourceObj.type);\n if (recurrence) recurrence.assignFromObject(sourceObj);\n return recurrence;\n };\n\n RecurrenceFactory.getEnumValue = function (type, value) {\n if (!common_1.isDefined(type[value])) return null;\n var num = parseInt(value);\n if (!isNaN(num)) return num;\n return type[value];\n };\n\n return RecurrenceFactory;\n }();\n\n exports.RecurrenceFactory = RecurrenceFactory;\n /***/\n },\n /* 41 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Daily = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var RecurrenceBase_1 = __webpack_require__(16);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var Daily = function (_super) {\n tslib_1.__extends(Daily, _super);\n\n function Daily() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Daily.prototype.checkDate = function (date) {\n return true;\n };\n\n Daily.prototype.checkInterval = function (date) {\n return DateTimeUtils_1.DateTimeUtils.getDaysBetween(this.start, date) % this.interval == 0;\n };\n\n Daily.prototype.calculatePointByInterval = function (date) {\n var daysToAdd = this.interval;\n if (!this.isRecurrencePoint(date)) daysToAdd -= DateTimeUtils_1.DateTimeUtils.getDaysBetween(this.start, date) % this.interval;\n return DateTimeUtils_1.DateTimeUtils.addDays(date, daysToAdd);\n };\n\n Daily.prototype.calculateNearestPoint = function (date) {\n return DateTimeUtils_1.DateTimeUtils.addDays(date, 1);\n };\n\n return Daily;\n }(RecurrenceBase_1.RecurrenceBase);\n\n exports.Daily = Daily;\n /***/\n },\n /* 42 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ElementTextHelperCultureInfo = exports.ElementTextHelper = exports.DateUtils = void 0;\n\n var Enums_1 = __webpack_require__(14);\n\n var dom_1 = __webpack_require__(3);\n\n var DateUtils = function () {\n function DateUtils() {}\n\n DateUtils.getDaysInMonth = function (month, year) {\n var d = new Date(year, month + 1, 0);\n return d.getDate();\n };\n\n DateUtils.getOffsetInMonths = function (start, end) {\n return (end.getFullYear() - start.getFullYear()) * 12 + end.getMonth() - start.getMonth();\n };\n\n DateUtils.getOffsetInQuarters = function (start, end) {\n return (end.getFullYear() - start.getFullYear()) * 4 + Math.floor(end.getMonth() / 3) - Math.floor(start.getMonth() / 3);\n };\n\n DateUtils.getNearestScaleTickDate = function (date, range, tickTimeSpan, viewType) {\n var result = new Date();\n var rangeStartTime = range.start.getTime();\n var rangeEndTime = range.end.getTime();\n result.setTime(date.getTime());\n if (date.getTime() < rangeStartTime) result.setTime(rangeStartTime);else if (date.getTime() > rangeEndTime) result.setTime(rangeEndTime);else if (this.needCorrectDate(date, rangeStartTime, tickTimeSpan, viewType)) {\n var nearestLeftTickTime = this.getNearestLeftTickTime(date, rangeStartTime, tickTimeSpan, viewType);\n var nearestRightTickTime = this.getNextTickTime(nearestLeftTickTime, tickTimeSpan, viewType);\n if (Math.abs(date.getTime() - nearestLeftTickTime) > Math.abs(date.getTime() - nearestRightTickTime)) result.setTime(nearestRightTickTime);else result.setTime(nearestLeftTickTime);\n }\n return result;\n };\n\n DateUtils.needCorrectDate = function (date, rangeStartTime, tickTimeSpan, viewType) {\n if (viewType == Enums_1.ViewType.Months) return date.getTime() !== new Date(date.getFullYear(), date.getMonth(), 1).getTime();\n return (date.getTime() - rangeStartTime) % tickTimeSpan !== 0;\n };\n\n DateUtils.getNearestLeftTickTime = function (date, rangeStartTime, tickTimeSpan, viewType) {\n if (viewType == Enums_1.ViewType.Months) return new Date(date.getFullYear(), date.getMonth(), 1).getTime();\n var tickCountAtLeft = Math.floor((date.getTime() - rangeStartTime) / tickTimeSpan);\n return rangeStartTime + tickCountAtLeft * tickTimeSpan;\n };\n\n DateUtils.getNextTickTime = function (currentTickTime, tickTimeSpan, viewType) {\n if (viewType == Enums_1.ViewType.Months) {\n var nextTickDate = new Date();\n nextTickDate.setTime(currentTickTime);\n nextTickDate.setMonth(nextTickDate.getMonth() + 1);\n return nextTickDate.getTime();\n }\n\n return currentTickTime + tickTimeSpan;\n };\n\n DateUtils.adjustStartDateByViewType = function (date, viewType, firstDayOfWeek) {\n if (firstDayOfWeek === void 0) {\n firstDayOfWeek = 0;\n }\n\n switch (viewType) {\n case Enums_1.ViewType.TenMinutes:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());\n\n case Enums_1.ViewType.SixHours:\n case Enums_1.ViewType.Hours:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\n case Enums_1.ViewType.Days:\n case Enums_1.ViewType.Weeks:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + firstDayOfWeek);\n\n case Enums_1.ViewType.Months:\n case Enums_1.ViewType.Quarter:\n case Enums_1.ViewType.Years:\n return new Date(date.getFullYear(), 0, 1);\n\n default:\n return new Date();\n }\n };\n\n DateUtils.adjustEndDateByViewType = function (date, viewType, firstDayOfWeek) {\n if (firstDayOfWeek === void 0) {\n firstDayOfWeek = 0;\n }\n\n switch (viewType) {\n case Enums_1.ViewType.TenMinutes:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() + 1);\n\n case Enums_1.ViewType.SixHours:\n case Enums_1.ViewType.Hours:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n\n case Enums_1.ViewType.Days:\n case Enums_1.ViewType.Weeks:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 7 - date.getDay() + firstDayOfWeek);\n\n case Enums_1.ViewType.Months:\n case Enums_1.ViewType.Quarter:\n case Enums_1.ViewType.Years:\n return new Date(date.getFullYear() + 1, 0, 1);\n\n default:\n return new Date();\n }\n };\n\n DateUtils.roundStartDate = function (date, viewType) {\n switch (viewType) {\n case Enums_1.ViewType.TenMinutes:\n case Enums_1.ViewType.Hours:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours() - 1);\n\n case Enums_1.ViewType.SixHours:\n case Enums_1.ViewType.Days:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - 1);\n\n case Enums_1.ViewType.Weeks:\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());\n\n case Enums_1.ViewType.Months:\n return new Date(date.getFullYear(), date.getMonth() - 1);\n\n case Enums_1.ViewType.Quarter:\n case Enums_1.ViewType.Years:\n return new Date(date.getFullYear() - 1, 0, 1);\n\n default:\n return new Date();\n }\n };\n\n DateUtils.getTickTimeSpan = function (viewType) {\n switch (viewType) {\n case Enums_1.ViewType.TenMinutes:\n return DateUtils.msPerHour / 6;\n\n case Enums_1.ViewType.Hours:\n return DateUtils.msPerHour;\n\n case Enums_1.ViewType.SixHours:\n return DateUtils.msPerHour * 6;\n\n case Enums_1.ViewType.Days:\n return DateUtils.msPerDay;\n\n case Enums_1.ViewType.Weeks:\n return DateUtils.msPerWeek;\n\n case Enums_1.ViewType.Months:\n return DateUtils.msPerMonth;\n\n case Enums_1.ViewType.Quarter:\n return DateUtils.msPerMonth * 3;\n\n case Enums_1.ViewType.Years:\n return DateUtils.msPerYear;\n }\n };\n\n DateUtils.parse = function (data) {\n return typeof data === \"function\" ? new Date(data()) : new Date(data);\n };\n\n DateUtils.getTimezoneOffsetDiff = function (data1, data2) {\n return data2.getTimezoneOffset() - data1.getTimezoneOffset();\n };\n\n DateUtils.msPerHour = 3600000;\n DateUtils.msPerDay = 24 * DateUtils.msPerHour;\n DateUtils.msPerWeek = 7 * DateUtils.msPerDay;\n DateUtils.msPerMonth = 30 * DateUtils.msPerDay;\n DateUtils.msPerYear = 365 * DateUtils.msPerDay;\n DateUtils.ViewTypeToScaleMap = createViewTypeToScaleMap();\n return DateUtils;\n }();\n\n exports.DateUtils = DateUtils;\n\n var ElementTextHelper = function () {\n function ElementTextHelper(cultureInfo) {\n this.longestAbbrMonthName = null;\n this.longestMonthName = null;\n this.longestAbbrDayName = null;\n var canvas = document.createElement(\"canvas\");\n this.textMeasureContext = canvas.getContext(\"2d\");\n this.cultureInfo = cultureInfo;\n }\n\n ElementTextHelper.prototype.setFont = function (fontHolder) {\n var computedStyle = dom_1.DomUtils.getCurrentStyle(fontHolder);\n var font = computedStyle.font ? computedStyle.font : computedStyle.fontStyle + \" \" + computedStyle.fontVariant + \" \" + computedStyle.fontWeight + \" \" + computedStyle.fontSize + \" / \" + computedStyle.lineHeight + \" \" + computedStyle.fontFamily;\n this.textMeasureContext.font = font;\n };\n\n ElementTextHelper.prototype.setSettings = function (startTime, viewType, modelItems) {\n this.startTime = startTime;\n this.viewType = viewType;\n this.modelItems = modelItems;\n };\n\n ElementTextHelper.prototype.getScaleItemStartDate = function (index, scaleType) {\n var result = new Date(this.startTime);\n\n switch (scaleType) {\n case Enums_1.ViewType.TenMinutes:\n result.setTime(this.startTime + index * DateUtils.msPerHour / 6);\n break;\n\n case Enums_1.ViewType.Hours:\n result.setTime(this.startTime + index * DateUtils.msPerHour);\n break;\n\n case Enums_1.ViewType.SixHours:\n result.setTime(this.startTime + index * DateUtils.msPerHour * 6);\n break;\n\n case Enums_1.ViewType.Days:\n result.setTime(this.startTime + index * DateUtils.msPerDay);\n break;\n\n case Enums_1.ViewType.Weeks:\n result.setTime(this.startTime + index * DateUtils.msPerWeek);\n break;\n\n case Enums_1.ViewType.Months:\n result.setMonth(result.getMonth() + index);\n break;\n\n case Enums_1.ViewType.Quarter:\n result.setMonth(result.getMonth() + index * 3);\n break;\n\n case Enums_1.ViewType.Years:\n result.setFullYear(result.getFullYear() + index);\n break;\n\n case Enums_1.ViewType.FiveYears:\n result.setFullYear(result.getFullYear() + index * 5);\n break;\n }\n\n result = this.getScaleStartDateCorrectedWithDST(result);\n return result;\n };\n\n ElementTextHelper.prototype.getScaleStartDateCorrectedWithDST = function (date) {\n var timeZoneDiff = DateUtils.getTimezoneOffsetDiff(new Date(this.startTime), date);\n return timeZoneDiff > 0 ? new Date(date.getTime() + timeZoneDiff * 60000) : date;\n };\n\n ElementTextHelper.prototype.getScaleItemText = function (index, scaleType) {\n var scaleItemStartDate = this.getScaleItemStartDate(index, scaleType);\n var isViewTypeScale = this.viewType.valueOf() == scaleType.valueOf();\n\n switch (scaleType) {\n case Enums_1.ViewType.TenMinutes:\n return this.getTenMinutesScaleItemText(scaleItemStartDate);\n\n case Enums_1.ViewType.Hours:\n case Enums_1.ViewType.SixHours:\n return this.getHoursScaleItemText(scaleItemStartDate);\n\n case Enums_1.ViewType.Days:\n return this.getDaysScaleItemText(scaleItemStartDate, isViewTypeScale);\n\n case Enums_1.ViewType.Weeks:\n return this.getWeeksScaleItemText(scaleItemStartDate, isViewTypeScale);\n\n case Enums_1.ViewType.Months:\n return this.getMonthsScaleItemText(scaleItemStartDate, isViewTypeScale);\n\n case Enums_1.ViewType.Quarter:\n return this.getQuarterScaleItemText(scaleItemStartDate, isViewTypeScale);\n\n case Enums_1.ViewType.Years:\n return this.getYearsScaleItemText(scaleItemStartDate);\n\n case Enums_1.ViewType.FiveYears:\n return this.getFiveYearsScaleItemText(scaleItemStartDate);\n }\n };\n\n ElementTextHelper.prototype.getTenMinutesScaleItemText = function (scaleItemDate) {\n var minutes = scaleItemDate.getMinutes() + 1;\n return (Math.ceil(minutes / 10) * 10).toString();\n };\n\n ElementTextHelper.prototype.getThirtyMinutesScaleItemText = function (scaleItemDate) {\n var minutes = scaleItemDate.getMinutes();\n return minutes < 30 ? \"30\" : \"60\";\n };\n\n ElementTextHelper.prototype.getHoursScaleItemText = function (scaleItemDate) {\n var hours = scaleItemDate.getHours();\n var hourDisplayText = this.getHourDisplayText(hours);\n var amPmText = hours < 12 ? this.getAmText() : this.getPmText();\n return this.getHoursScaleItemTextCore(hourDisplayText, amPmText);\n };\n\n ElementTextHelper.prototype.getDaysScaleItemText = function (scaleItemDate, isViewTypeScale) {\n return this.getDayTotalText(scaleItemDate, true, isViewTypeScale, isViewTypeScale, !isViewTypeScale);\n };\n\n ElementTextHelper.prototype.getWeeksScaleItemText = function (scaleItemDate, isViewTypeScale) {\n var weekLastDayDate = new Date(scaleItemDate.getTime() + DateUtils.msPerWeek - DateUtils.msPerDay);\n return this.getWeeksScaleItemTextCore(this.getDayTotalText(scaleItemDate, isViewTypeScale, true, isViewTypeScale, !isViewTypeScale), this.getDayTotalText(weekLastDayDate, isViewTypeScale, true, isViewTypeScale, !isViewTypeScale));\n };\n\n ElementTextHelper.prototype.getMonthsScaleItemText = function (scaleItemDate, isViewTypeScale) {\n var monthNames = this.getMonthNames();\n var yearDisplayText = !isViewTypeScale ? scaleItemDate.getFullYear().toString() : \"\";\n return this.getMonthsScaleItemTextCore(monthNames[scaleItemDate.getMonth()], yearDisplayText);\n };\n\n ElementTextHelper.prototype.getQuarterScaleItemText = function (scaleItemDate, isViewTypeScale) {\n var quarterNames = this.getQuarterNames();\n var yearDisplayText = !isViewTypeScale ? scaleItemDate.getFullYear().toString() : \"\";\n return this.getMonthsScaleItemTextCore(quarterNames[Math.floor(scaleItemDate.getMonth() / 3)], yearDisplayText);\n };\n\n ElementTextHelper.prototype.getYearsScaleItemText = function (scaleItemDate) {\n return scaleItemDate.getFullYear().toString();\n };\n\n ElementTextHelper.prototype.getFiveYearsScaleItemText = function (scaleItemDate) {\n return scaleItemDate.getFullYear().toString() + \" - \" + (scaleItemDate.getFullYear() + 4).toString();\n };\n\n ElementTextHelper.prototype.getHourDisplayText = function (hours) {\n if (this.hasAmPm()) return (hours == 0 ? 12 : hours <= 12 ? hours : hours - 12).toString();\n return hours < 10 ? \"0\" + hours : hours.toString();\n };\n\n ElementTextHelper.prototype.getDayTotalText = function (scaleItemDate, displayDayName, useAbbrDayNames, useAbbrMonthNames, displayYear) {\n var monthNames = useAbbrMonthNames ? this.getAbbrMonthNames() : this.getMonthNames();\n var dayNames = useAbbrDayNames ? this.getAbbrDayNames() : this.getDayNames();\n var dayNameDisplayText = displayDayName ? dayNames[scaleItemDate.getDay()] : \"\";\n var day = scaleItemDate.getDate();\n var monthName = monthNames[scaleItemDate.getMonth()];\n var yearDisplayText = displayYear ? scaleItemDate.getFullYear().toString() : \"\";\n return this.getDayTotalTextCore(dayNameDisplayText, day.toString(), monthName, yearDisplayText);\n };\n\n ElementTextHelper.prototype.getTaskText = function (index) {\n var item = this.modelItems[index];\n return item ? item.task.title : \"\";\n };\n\n ElementTextHelper.prototype.getTaskVisibility = function (index) {\n var item = this.modelItems[index];\n return !!item && item.getVisible();\n };\n\n ElementTextHelper.prototype.hasAmPm = function () {\n return this.getAmText().length > 0 || this.getPmText().length > 0;\n };\n\n ElementTextHelper.prototype.getScaleItemTextTemplate = function (viewType) {\n switch (viewType) {\n case Enums_1.ViewType.TenMinutes:\n return \"00\";\n\n case Enums_1.ViewType.Hours:\n case Enums_1.ViewType.SixHours:\n return this.getHoursScaleItemTextCore(\"00\", this.getAmText());\n\n case Enums_1.ViewType.Days:\n return this.getDayTextTemplate();\n\n case Enums_1.ViewType.Weeks:\n return this.getWeekTextTemplate();\n\n case Enums_1.ViewType.Months:\n return this.getMonthsScaleItemTextCore(this.getLongestMonthName(), \"\");\n\n case Enums_1.ViewType.Quarter:\n return \"Q4\";\n\n case Enums_1.ViewType.Years:\n return \"0000\";\n }\n };\n\n ElementTextHelper.prototype.getDayTextTemplate = function () {\n return this.getDayTotalTextCore(this.getLongestAbbrDayName(), \"00\", this.getLongestAbbrMonthName(), \"\");\n };\n\n ElementTextHelper.prototype.getWeekTextTemplate = function () {\n var dayTextTemplate = this.getDayTextTemplate();\n return this.getWeeksScaleItemTextCore(dayTextTemplate, dayTextTemplate);\n };\n\n ElementTextHelper.prototype.getHoursScaleItemTextCore = function (hourDisplayText, amPmText) {\n return hourDisplayText + \":00\" + (this.hasAmPm() ? \" \" + amPmText : \"\");\n };\n\n ElementTextHelper.prototype.getDayTotalTextCore = function (dayName, dayValueString, monthName, yearValueString) {\n var result = dayName.length > 0 ? dayName + \", \" : \"\";\n result += dayValueString + \" \" + monthName;\n result += yearValueString.length > 0 ? \" \" + yearValueString : \"\";\n return result;\n };\n\n ElementTextHelper.prototype.getWeeksScaleItemTextCore = function (firstDayOfWeekString, lastDayOfWeekString) {\n return firstDayOfWeekString + \" - \" + lastDayOfWeekString;\n };\n\n ElementTextHelper.prototype.getMonthsScaleItemTextCore = function (monthName, yearValueString) {\n var result = monthName;\n if (yearValueString.length > 0) result += \" \" + yearValueString;\n return result;\n };\n\n ElementTextHelper.prototype.getLongestAbbrMonthName = function () {\n if (this.longestAbbrMonthName == null) this.longestAbbrMonthName = this.getLongestText(this.getAbbrMonthNames());\n return this.longestAbbrMonthName;\n };\n\n ElementTextHelper.prototype.getLongestMonthName = function () {\n if (this.longestMonthName == null) this.longestMonthName = this.getLongestText(this.getMonthNames());\n return this.longestMonthName;\n };\n\n ElementTextHelper.prototype.getLongestAbbrDayName = function () {\n if (this.longestAbbrDayName == null) this.longestAbbrDayName = this.getLongestText(this.getAbbrDayNames());\n return this.longestAbbrDayName;\n };\n\n ElementTextHelper.prototype.getLongestText = function (texts) {\n var _this = this;\n\n var result = \"\";\n var longestTextWidth = 0;\n texts.forEach(function (text) {\n var textWidth = _this.getTextWidth(text);\n\n if (textWidth > longestTextWidth) {\n longestTextWidth = textWidth;\n result = text;\n }\n });\n return result;\n };\n\n ElementTextHelper.prototype.getTextWidth = function (text) {\n return Math.round(this.textMeasureContext.measureText(text).width);\n };\n\n ElementTextHelper.prototype.getAmText = function () {\n return this.cultureInfo.amText;\n };\n\n ElementTextHelper.prototype.getPmText = function () {\n return this.cultureInfo.pmText;\n };\n\n ElementTextHelper.prototype.getQuarterNames = function () {\n return this.cultureInfo.quarterNames;\n };\n\n ElementTextHelper.prototype.getMonthNames = function () {\n return this.cultureInfo.monthNames;\n };\n\n ElementTextHelper.prototype.getDayNames = function () {\n return this.cultureInfo.dayNames;\n };\n\n ElementTextHelper.prototype.getAbbrMonthNames = function () {\n return this.cultureInfo.abbrMonthNames;\n };\n\n ElementTextHelper.prototype.getAbbrDayNames = function () {\n return this.cultureInfo.abbrDayNames;\n };\n\n return ElementTextHelper;\n }();\n\n exports.ElementTextHelper = ElementTextHelper;\n\n var ElementTextHelperCultureInfo = function () {\n function ElementTextHelperCultureInfo() {}\n\n return ElementTextHelperCultureInfo;\n }();\n\n exports.ElementTextHelperCultureInfo = ElementTextHelperCultureInfo;\n\n function createViewTypeToScaleMap() {\n var result = {};\n result[Enums_1.ViewType.TenMinutes] = Enums_1.ViewType.Hours;\n result[Enums_1.ViewType.Hours] = Enums_1.ViewType.Days;\n result[Enums_1.ViewType.SixHours] = Enums_1.ViewType.Days;\n result[Enums_1.ViewType.Days] = Enums_1.ViewType.Weeks;\n result[Enums_1.ViewType.Weeks] = Enums_1.ViewType.Months;\n result[Enums_1.ViewType.Months] = Enums_1.ViewType.Years;\n result[Enums_1.ViewType.Quarter] = Enums_1.ViewType.Years;\n result[Enums_1.ViewType.Years] = Enums_1.ViewType.FiveYears;\n return result;\n }\n /***/\n\n },\n /* 43 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GridElementInfo = void 0;\n\n var point_1 = __webpack_require__(4);\n\n var size_1 = __webpack_require__(28);\n\n var margins_1 = __webpack_require__(78);\n\n var GridElementInfo = function () {\n function GridElementInfo(className, position, size) {\n this.id = GridElementInfo.id++;\n this.position = new point_1.Point(undefined, undefined);\n this.size = new size_1.Size(0, 0);\n this.margins = new margins_1.Margins(undefined, undefined, undefined, undefined);\n this.attr = {};\n this.style = {};\n if (className) this.className = className;\n if (position) this.setPosition(position);\n if (size) this.setSize(size);\n }\n\n GridElementInfo.prototype.setSize = function (size) {\n this.size.width = size.width;\n this.size.height = size.height;\n };\n\n GridElementInfo.prototype.setPosition = function (position) {\n this.position.x = position.x;\n this.position.y = position.y;\n };\n\n GridElementInfo.prototype.assignToElement = function (element) {\n this.assignPosition(element);\n this.assignSize(element);\n this.assignMargins(element);\n if (this.className) element.className = this.className;\n };\n\n GridElementInfo.prototype.assignPosition = function (element) {\n if (this.position.x != null) element.style.left = this.position.x + \"px\";\n if (this.position.y != null) element.style.top = this.position.y + \"px\";\n };\n\n GridElementInfo.prototype.assignSize = function (element) {\n if (this.size.width) element.style.width = this.size.width + \"px\";\n if (this.size.height) element.style.height = this.size.height + \"px\";\n };\n\n GridElementInfo.prototype.assignMargins = function (element) {\n if (this.margins.left) element.style.marginLeft = this.margins.left + \"px\";\n if (this.margins.top) element.style.marginTop = this.margins.top + \"px\";\n if (this.margins.right) element.style.marginRight = this.margins.right + \"px\";\n if (this.margins.bottom) element.style.marginBottom = this.margins.bottom + \"px\";\n };\n\n GridElementInfo.prototype.setAttribute = function (name, value) {\n this.attr[name] = value;\n };\n\n GridElementInfo.id = 0;\n return GridElementInfo;\n }();\n\n exports.GridElementInfo = GridElementInfo;\n /***/\n },\n /* 44 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ValidationSettings = exports.StripLine = exports.StripLineSettings = exports.EditingSettings = exports.Settings = void 0;\n\n var Enums_1 = __webpack_require__(14);\n\n var common_1 = __webpack_require__(1);\n\n var Settings = function () {\n function Settings() {\n this.viewType = undefined;\n this.taskTitlePosition = Enums_1.TaskTitlePosition.Inside;\n this.showResources = true;\n this.areHorizontalBordersEnabled = true;\n this.areVerticalBordersEnabled = true;\n this.areAlternateRowsEnabled = true;\n this.allowSelectTask = true;\n this.firstDayOfWeek = 0;\n this.editing = new EditingSettings();\n this.validation = new ValidationSettings();\n this.stripLines = new StripLineSettings();\n }\n\n Settings.parse = function (settings) {\n var result = new Settings();\n\n if (settings) {\n if (common_1.isDefined(settings.viewType)) result.viewType = settings.viewType;\n if (common_1.isDefined(settings.taskTitlePosition)) result.taskTitlePosition = settings.taskTitlePosition;\n if (common_1.isDefined(settings.showResources)) result.showResources = settings.showResources;\n if (common_1.isDefined(settings.areHorizontalBordersEnabled)) result.areHorizontalBordersEnabled = settings.areHorizontalBordersEnabled;\n if (common_1.isDefined(settings.areVerticalBordersEnabled)) result.areHorizontalBordersEnabled = settings.areHorizontalBordersEnabled;\n if (common_1.isDefined(settings.areAlternateRowsEnabled)) result.areAlternateRowsEnabled = settings.areAlternateRowsEnabled;\n if (common_1.isDefined(settings.allowSelectTask)) result.allowSelectTask = settings.allowSelectTask;\n if (common_1.isDefined(settings.firstDayOfWeek)) result.firstDayOfWeek = settings.firstDayOfWeek;\n if (common_1.isDefined(settings.editing)) result.editing = EditingSettings.parse(settings.editing);\n if (common_1.isDefined(settings.validation)) result.validation = ValidationSettings.parse(settings.validation);\n if (common_1.isDefined(settings.stripLines)) result.stripLines = StripLineSettings.parse(settings.stripLines);\n if (common_1.isDefined(settings.taskTooltipContentTemplate)) result.taskTooltipContentTemplate = settings.taskTooltipContentTemplate;\n }\n\n return result;\n };\n\n Settings.prototype.equal = function (settings) {\n var result = true;\n result = result && this.viewType === settings.viewType;\n result = result && this.taskTitlePosition === settings.taskTitlePosition;\n result = result && this.showResources === settings.showResources;\n result = result && this.areHorizontalBordersEnabled === settings.areHorizontalBordersEnabled;\n result = result && this.areAlternateRowsEnabled === settings.areAlternateRowsEnabled;\n result = result && this.allowSelectTask === settings.allowSelectTask;\n result = result && this.editing.equal(settings.editing);\n result = result && this.validation.equal(settings.validation);\n result = result && this.stripLines.equal(settings.stripLines);\n return result;\n };\n\n return Settings;\n }();\n\n exports.Settings = Settings;\n\n var EditingSettings = function () {\n function EditingSettings() {\n this.enabled = false;\n this.allowDependencyDelete = true;\n this.allowDependencyInsert = true;\n this.allowTaskDelete = true;\n this.allowTaskInsert = true;\n this.allowTaskUpdate = true;\n this.allowResourceDelete = true;\n this.allowResourceInsert = true;\n this.allowResourceUpdate = true;\n this.allowTaskResourceUpdate = true;\n }\n\n EditingSettings.parse = function (settings) {\n var result = new EditingSettings();\n\n if (settings) {\n if (common_1.isDefined(settings.enabled)) result.enabled = settings.enabled;\n if (common_1.isDefined(settings.allowDependencyDelete)) result.allowDependencyDelete = settings.allowDependencyDelete;\n if (common_1.isDefined(settings.allowDependencyInsert)) result.allowDependencyInsert = settings.allowDependencyInsert;\n if (common_1.isDefined(settings.allowTaskDelete)) result.allowTaskDelete = settings.allowTaskDelete;\n if (common_1.isDefined(settings.allowTaskInsert)) result.allowTaskInsert = settings.allowTaskInsert;\n if (common_1.isDefined(settings.allowTaskUpdate)) result.allowTaskUpdate = settings.allowTaskUpdate;\n if (common_1.isDefined(settings.allowResourceDelete)) result.allowResourceDelete = settings.allowResourceDelete;\n if (common_1.isDefined(settings.allowResourceInsert)) result.allowResourceInsert = settings.allowResourceInsert;\n if (common_1.isDefined(settings.allowResourceUpdate)) result.allowResourceUpdate = settings.allowResourceUpdate;\n if (common_1.isDefined(settings.allowTaskResourceUpdate)) result.allowTaskResourceUpdate = settings.allowTaskResourceUpdate;\n }\n\n return result;\n };\n\n EditingSettings.prototype.equal = function (settings) {\n var result = true;\n result = result && this.enabled === settings.enabled;\n result = result && this.allowDependencyDelete === settings.allowDependencyDelete;\n result = result && this.allowDependencyInsert === settings.allowDependencyInsert;\n result = result && this.allowTaskDelete === settings.allowTaskDelete;\n result = result && this.allowTaskInsert === settings.allowTaskInsert;\n result = result && this.allowTaskUpdate === settings.allowTaskUpdate;\n result = result && this.allowResourceDelete === settings.allowResourceDelete;\n result = result && this.allowResourceInsert === settings.allowResourceInsert;\n result = result && this.allowResourceUpdate === settings.allowResourceUpdate;\n result = result && this.allowTaskResourceUpdate === settings.allowTaskResourceUpdate;\n return result;\n };\n\n return EditingSettings;\n }();\n\n exports.EditingSettings = EditingSettings;\n\n var StripLineSettings = function () {\n function StripLineSettings() {\n this.showCurrentTime = false;\n this.currentTimeUpdateInterval = 60000;\n this.stripLines = [];\n }\n\n StripLineSettings.parse = function (settings) {\n var result = new StripLineSettings();\n\n if (settings) {\n if (common_1.isDefined(settings.showCurrentTime)) result.showCurrentTime = settings.showCurrentTime;\n if (common_1.isDefined(settings.currentTimeUpdateInterval)) result.currentTimeUpdateInterval = settings.currentTimeUpdateInterval;\n if (common_1.isDefined(settings.currentTimeTitle)) result.currentTimeTitle = settings.currentTimeTitle;\n if (common_1.isDefined(settings.currentTimeCssClass)) result.currentTimeCssClass = settings.currentTimeCssClass;\n if (common_1.isDefined(settings.stripLines)) for (var i = 0; i < settings.stripLines.length; i++) {\n result.stripLines.push(StripLine.parse(settings.stripLines[i]));\n }\n }\n\n return result;\n };\n\n StripLineSettings.prototype.equal = function (settings) {\n var result = true;\n result = result && this.showCurrentTime == settings.showCurrentTime;\n result = result && this.currentTimeUpdateInterval == settings.currentTimeUpdateInterval;\n result = result && this.currentTimeTitle == settings.currentTimeTitle;\n result = result && this.currentTimeCssClass == settings.currentTimeCssClass;\n result = result && this.stripLines.length === settings.stripLines.length;\n if (result) for (var i = 0; i < settings.stripLines.length; i++) {\n result = result && this.stripLines[i].equal(settings.stripLines[i]);\n }\n return result;\n };\n\n return StripLineSettings;\n }();\n\n exports.StripLineSettings = StripLineSettings;\n\n var StripLine = function () {\n function StripLine(start, end, title, cssClass, isCurrent) {\n this.isCurrent = false;\n this.start = start;\n this.end = end;\n this.title = title;\n this.cssClass = cssClass;\n this.isCurrent = isCurrent;\n }\n\n StripLine.parse = function (settings) {\n var result = new StripLine();\n\n if (settings) {\n if (common_1.isDefined(settings.start)) result.start = settings.start;\n if (common_1.isDefined(settings.end)) result.end = settings.end;\n if (common_1.isDefined(settings.title)) result.title = settings.title;\n if (common_1.isDefined(settings.cssClass)) result.cssClass = settings.cssClass;\n }\n\n return result;\n };\n\n StripLine.prototype.clone = function () {\n return new StripLine(this.start, this.end, this.title, this.cssClass, this.isCurrent);\n };\n\n StripLine.prototype.equal = function (stripLine) {\n var result = true;\n result = result && this.start == stripLine.start;\n result = result && this.end == stripLine.end;\n result = result && this.title == stripLine.title;\n result = result && this.cssClass == stripLine.cssClass;\n return result;\n };\n\n return StripLine;\n }();\n\n exports.StripLine = StripLine;\n\n var ValidationSettings = function () {\n function ValidationSettings() {\n this.validateDependencies = false;\n this.autoUpdateParentTasks = false;\n this.enablePredecessorGap = false;\n }\n\n ValidationSettings.parse = function (settings) {\n var result = new ValidationSettings();\n\n if (settings) {\n if (common_1.isDefined(settings.validateDependencies)) result.validateDependencies = settings.validateDependencies;\n if (common_1.isDefined(settings.autoUpdateParentTasks)) result.autoUpdateParentTasks = settings.autoUpdateParentTasks;\n if (common_1.isDefined(settings.enablePredecessorGap)) result.enablePredecessorGap = settings.enablePredecessorGap;\n }\n\n return result;\n };\n\n ValidationSettings.prototype.equal = function (settings) {\n var result = true;\n result = result && this.validateDependencies === settings.validateDependencies;\n result = result && this.autoUpdateParentTasks === settings.autoUpdateParentTasks;\n result = result && this.enablePredecessorGap === settings.enablePredecessorGap;\n return result;\n };\n\n return ValidationSettings;\n }();\n\n exports.ValidationSettings = ValidationSettings;\n /***/\n },\n /* 45 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskEditController = void 0;\n\n var Enums_1 = __webpack_require__(14);\n\n var DateRange_1 = __webpack_require__(9);\n\n var dom_1 = __webpack_require__(3);\n\n var browser_1 = __webpack_require__(5);\n\n var TaskEditController = function () {\n function TaskEditController(gantt) {\n this.taskIndex = -1;\n this.successorIndex = -1;\n this.editing = false;\n this.gantt = gantt;\n this.createElements();\n }\n\n Object.defineProperty(TaskEditController.prototype, \"taskId\", {\n get: function get() {\n return this.gantt.viewModel.items[this.taskIndex].task.internalId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskEditController.prototype, \"successorId\", {\n get: function get() {\n return this.gantt.viewModel.items[this.successorIndex].task.internalId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskEditController.prototype, \"task\", {\n get: function get() {\n return this.viewItem.task;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskEditController.prototype, \"viewItem\", {\n get: function get() {\n return this.gantt.viewModel.items[this.taskIndex];\n },\n enumerable: false,\n configurable: true\n });\n\n TaskEditController.prototype.show = function (taskIndex) {\n if (!this.editing) {\n this.taskIndex = taskIndex;\n this.updateWrapInfo();\n this.wrapInfo.assignPosition(this.baseElement);\n this.wrapInfo.assignSize(this.baseElement);\n this.gantt.taskArea.appendChild(this.baseElement);\n this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;\n if (!this.gantt.settings.editing.enabled || !this.gantt.settings.editing.allowDependencyInsert) this.baseElement.className = this.baseElement.className + \" hide-dependency\";\n if (this.task.isMilestone()) this.baseElement.className = this.baseElement.className + \" milestone\";else {\n if (!this.gantt.settings.editing.enabled || !this.gantt.settings.editing.allowTaskUpdate || !this.canUpdateTask()) this.baseElement.className = this.baseElement.className + \" hide-updating\";\n this.progressEdit.style.left = this.task.progress / 100 * this.wrapInfo.size.width - this.progressEdit.offsetWidth / 2 + \"px\";\n }\n this.taskDateRange = new DateRange_1.DateRange(this.task.start, this.task.end);\n }\n };\n\n TaskEditController.prototype.hide = function () {\n var parentNode = this.baseElement.parentNode;\n if (parentNode) parentNode.removeChild(this.baseElement);\n this.tooltip.hide();\n };\n\n TaskEditController.prototype.showTaskInfo = function (posX, delay) {\n if (delay === void 0) {\n delay = 500;\n }\n\n this.tooltip.showInfo(this.task, posX, delay, this.gantt.settings.taskTooltipContentTemplate);\n };\n\n TaskEditController.prototype.updateWrapInfo = function () {\n this.wrapInfo = this.getTaskWrapperElementInfo(this.taskIndex);\n this.wrapInfo.position.x--;\n };\n\n TaskEditController.prototype.isAllowedToConnectTasks = function (taskIndex) {\n var isAnotherTask = this.successorIndex !== taskIndex && this.taskIndex !== taskIndex;\n var successorViewItem = this.gantt.viewModel.items[taskIndex];\n var isChild = this.viewItem.children.some(function (c) {\n return c.task.internalId === successorViewItem.task.internalId;\n });\n return isAnotherTask && !isChild;\n };\n\n TaskEditController.prototype.showDependencySuccessor = function (taskIndex) {\n if (this.isAllowedToConnectTasks(taskIndex)) {\n this.successorIndex = taskIndex;\n var wrapInfo = this.getTaskWrapperElementInfo(taskIndex);\n wrapInfo.assignPosition(this.dependencySuccessorBaseElement);\n wrapInfo.assignSize(this.dependencySuccessorBaseElement);\n wrapInfo.assignSize(this.dependencySuccessorFrame);\n this.gantt.taskArea.appendChild(this.dependencySuccessorBaseElement);\n }\n };\n\n TaskEditController.prototype.hideDependencySuccessor = function () {\n var parentNode = this.dependencySuccessorBaseElement.parentNode;\n if (parentNode) parentNode.removeChild(this.dependencySuccessorBaseElement);\n this.successorIndex = -1;\n };\n\n TaskEditController.prototype.processProgress = function (position) {\n this.editing = true;\n var progressOffset = position.x - this.wrapInfo.position.x;\n var progress = 0;\n if (position.x > this.wrapInfo.position.x) if (position.x < this.wrapInfo.position.x + this.wrapInfo.size.width) progress = Math.round(progressOffset / this.baseElement.clientWidth * 100);else progress = 100;\n this.progressEdit.style.left = progress / 100 * this.wrapInfo.size.width - this.progressEdit.offsetWidth / 2 + \"px\";\n this.tooltip.showProgress(progress, dom_1.DomUtils.getAbsolutePositionX(this.progressEdit) + this.progressEdit.offsetWidth / 2);\n };\n\n TaskEditController.prototype.confirmProgress = function () {\n this.editing = false;\n var progress = Math.round((this.progressEdit.offsetLeft + this.progressEdit.offsetWidth / 2) / this.wrapInfo.size.width * 100);\n this.gantt.commandManager.changeTaskProgressCommand.execute(this.taskId, progress);\n };\n\n TaskEditController.prototype.processEnd = function (position) {\n this.baseElement.className = this.baseElement.className + \" move\";\n this.editing = true;\n var positionX = position.x > this.wrapInfo.position.x ? position.x : this.wrapInfo.position.x;\n var width = positionX - this.wrapInfo.position.x;\n this.baseElement.style.width = (width < 1 ? 0 : width) + \"px\";\n var startDate = this.task.start;\n var date = this.gantt.gridLayoutCalculator.getDateByPos(positionX);\n date.setSeconds(0);\n if (date < startDate || width < 1) this.taskDateRange.end.setTime(startDate.getTime());else this.taskDateRange.end = this.getCorrectedDate(this.task.end, date);\n this.tooltip.showTime(startDate, this.taskDateRange.end, dom_1.DomUtils.getAbsolutePositionX(this.baseElement) + this.baseElement.clientWidth);\n };\n\n TaskEditController.prototype.confirmEnd = function () {\n this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;\n this.editing = false;\n this.gantt.commandManager.changeTaskEndCommand.execute(this.taskId, this.taskDateRange.end);\n this.hide();\n this.updateWrapInfo();\n };\n\n TaskEditController.prototype.processStart = function (position) {\n this.baseElement.className = this.baseElement.className + \" move\";\n this.editing = true;\n var positionX = position.x < this.wrapInfo.position.x + this.wrapInfo.size.width ? position.x : this.wrapInfo.position.x + this.wrapInfo.size.width;\n var width = this.wrapInfo.size.width - (positionX - this.wrapInfo.position.x);\n this.baseElement.style.left = positionX + \"px\";\n this.baseElement.style.width = (width < 1 ? 0 : width) + \"px\";\n var endDate = this.task.end;\n var date = this.gantt.gridLayoutCalculator.getDateByPos(positionX);\n date.setSeconds(0);\n if (date > endDate || width < 1) this.taskDateRange.start.setTime(endDate.getTime());else this.taskDateRange.start = this.getCorrectedDate(this.task.start, date);\n this.tooltip.showTime(this.taskDateRange.start, endDate, dom_1.DomUtils.getAbsolutePositionX(this.baseElement));\n };\n\n TaskEditController.prototype.confirmStart = function () {\n this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;\n this.editing = false;\n this.gantt.commandManager.changeTaskStartCommand.execute(this.taskId, this.taskDateRange.start);\n this.hide();\n this.updateWrapInfo();\n };\n\n TaskEditController.prototype.processMove = function (delta) {\n if (this.gantt.settings.editing.enabled && this.gantt.settings.editing.allowTaskUpdate) {\n this.baseElement.className = this.baseElement.className + \" move\";\n var left = this.baseElement.offsetLeft + delta;\n this.baseElement.style.left = left + \"px\";\n var startDate = this.gantt.gridLayoutCalculator.getDateByPos(left);\n this.taskDateRange.start = this.getCorrectedDate(this.task.start, startDate);\n var dateDiff = this.task.start.getTime() - this.taskDateRange.start.getTime();\n var endDate = new Date(this.task.end.getTime() - dateDiff);\n this.taskDateRange.end = endDate;\n this.editing = this.gantt.modelManipulator.dispatcher.raiseTaskMoving(this.task, this.taskDateRange.start, this.taskDateRange.end, this.onTaskMovingCallback.bind(this));\n if (this.editing) this.tooltip.showTime(this.taskDateRange.start, this.taskDateRange.end, dom_1.DomUtils.getAbsolutePositionX(this.baseElement));\n return this.editing;\n }\n\n return true;\n };\n\n TaskEditController.prototype.onTaskMovingCallback = function (newStart, newEnd) {\n if (this.taskDateRange.start === newStart && this.taskDateRange.end === newEnd) return;\n var calculator = this.gantt.gridLayoutCalculator;\n var newLeft = calculator.getPosByDate(newStart);\n var newWidth = calculator.getPosByDate(newEnd) - newLeft;\n this.baseElement.style.left = newLeft + \"px\";\n this.baseElement.style.width = (newWidth < 1 ? 0 : newWidth) + \"px\";\n this.taskDateRange.start = newStart;\n this.taskDateRange.end = newEnd;\n };\n\n TaskEditController.prototype.confirmMove = function () {\n if (this.gantt.settings.editing.enabled && this.gantt.settings.editing.allowTaskUpdate) {\n if (!this.gantt.settings.editing.allowDependencyInsert) this.baseElement.className = this.baseElement.className + \" hide-dependency\";\n\n if (this.editing) {\n this.baseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX;\n this.gantt.commandManager.taskMoveCommand.execute(this.taskId, this.taskDateRange.start, this.taskDateRange.end);\n this.updateWrapInfo();\n this.hide();\n this.editing = false;\n }\n }\n };\n\n TaskEditController.prototype.getCorrectedDate = function (referenceDate, newDate) {\n if (this.gantt.settings.viewType > Enums_1.ViewType.SixHours) {\n var year = newDate.getFullYear();\n var month = newDate.getMonth();\n var day = newDate.getDate();\n var hours = this.gantt.settings.viewType == Enums_1.ViewType.Days ? newDate.getHours() : referenceDate.getHours();\n var minutes = referenceDate.getMinutes();\n var sec = referenceDate.getSeconds();\n var msec = referenceDate.getMilliseconds();\n return new Date(year, month, day, hours, minutes, sec, msec);\n }\n\n return newDate;\n };\n\n TaskEditController.prototype.startDependency = function (pos) {\n this.dependencyLine = document.createElement(\"DIV\");\n this.dependencyLine.className = TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_LINE;\n this.gantt.taskArea.appendChild(this.dependencyLine);\n this.startPosition = pos;\n };\n\n TaskEditController.prototype.processDependency = function (pos) {\n this.editing = true;\n this.drawline(this.startPosition, pos);\n };\n\n TaskEditController.prototype.endDependency = function (type) {\n this.editing = false;\n if (type != null) this.gantt.commandManager.createDependencyCommand.execute(this.task.internalId, this.successorId, type);\n var parentNode = this.dependencyLine.parentNode;\n if (parentNode) parentNode.removeChild(this.dependencyLine);\n this.dependencyLine = null;\n this.hideDependencySuccessor();\n this.hide();\n };\n\n TaskEditController.prototype.selectDependency = function (id) {\n if (this.gantt.settings.editing.allowDependencyDelete) this.dependencyId = id;\n };\n\n TaskEditController.prototype.isDependencySelected = function (id) {\n return this.dependencyId && this.dependencyId == id;\n };\n\n TaskEditController.prototype.deleteSelectedDependency = function () {\n if (this.dependencyId) this.gantt.commandManager.removeDependencyCommand.execute(this.dependencyId);\n };\n\n TaskEditController.prototype.getTaskWrapperElementInfo = function (taskIndex) {\n var calculator = this.gantt.gridLayoutCalculator;\n var info = calculator.getTaskWrapperElementInfo(taskIndex);\n info.size.width = calculator.getTaskWidth(taskIndex);\n info.size.height = calculator.getTaskHeight(taskIndex);\n return info;\n };\n\n TaskEditController.prototype.createElements = function () {\n this.baseElement = document.createElement(\"DIV\");\n this.baseFrame = document.createElement(\"DIV\");\n this.baseFrame.className = TaskEditController.CLASSNAMES.TASK_EDIT_FRAME;\n this.baseElement.appendChild(this.baseFrame);\n this.progressEdit = document.createElement(\"DIV\");\n this.progressEdit.className = TaskEditController.CLASSNAMES.TASK_EDIT_PROGRESS;\n this.baseFrame.appendChild(this.progressEdit);\n this.progressEdit.appendChild(document.createElement(\"DIV\"));\n this.dependencyFinish = document.createElement(\"DIV\");\n this.dependencyFinish.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_RIGTH);\n if (browser_1.Browser.TouchUI) this.dependencyFinish.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_TOUCH);\n this.baseFrame.appendChild(this.dependencyFinish);\n this.dependencyStart = document.createElement(\"DIV\");\n this.dependencyStart.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_LEFT);\n if (browser_1.Browser.TouchUI) this.dependencyStart.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_TOUCH);\n this.baseFrame.appendChild(this.dependencyStart);\n this.startEdit = document.createElement(\"DIV\");\n this.startEdit.className = TaskEditController.CLASSNAMES.TASK_EDIT_START;\n this.baseFrame.appendChild(this.startEdit);\n this.endEdit = document.createElement(\"DIV\");\n this.endEdit.className = TaskEditController.CLASSNAMES.TASK_EDIT_END;\n this.baseFrame.appendChild(this.endEdit);\n this.dependencySuccessorBaseElement = document.createElement(\"DIV\");\n this.dependencySuccessorBaseElement.className = TaskEditController.CLASSNAMES.TASK_EDIT_BOX_SUCCESSOR;\n this.dependencySuccessorFrame = document.createElement(\"DIV\");\n this.dependencySuccessorFrame.className = TaskEditController.CLASSNAMES.TASK_EDIT_FRAME_SUCCESSOR;\n this.dependencySuccessorBaseElement.appendChild(this.dependencySuccessorFrame);\n this.dependencySuccessorStart = document.createElement(\"DIV\");\n this.dependencySuccessorStart.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH);\n if (browser_1.Browser.TouchUI) this.dependencySuccessorStart.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_TOUCH);\n this.dependencySuccessorFrame.appendChild(this.dependencySuccessorStart);\n this.dependencySuccessorFinish = document.createElement(\"DIV\");\n this.dependencySuccessorFinish.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT);\n if (browser_1.Browser.TouchUI) this.dependencySuccessorFinish.classList.add(TaskEditController.CLASSNAMES.TASK_EDIT_TOUCH);\n this.dependencySuccessorFrame.appendChild(this.dependencySuccessorFinish);\n this.tooltip = new TaskEditTooltip(this.baseElement, this.gantt, this.gantt.elementTextHelper.cultureInfo);\n this.attachEvents();\n };\n\n TaskEditController.prototype.attachEvents = function () {\n this.onMouseLeaveHandler = function () {\n if (!this.editing) this.hide();\n }.bind(this);\n\n this.baseElement.addEventListener(\"mouseleave\", this.onMouseLeaveHandler);\n };\n\n TaskEditController.prototype.drawline = function (start, end) {\n if (start.x > end.x) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var angle = Math.atan((start.y - end.y) / (end.x - start.x));\n angle = angle * 180 / Math.PI;\n angle = -angle;\n var length = Math.sqrt((start.x - end.x) * (start.x - end.x) + (start.y - end.y) * (start.y - end.y));\n this.dependencyLine.style.left = start.x + \"px\";\n this.dependencyLine.style.top = start.y + \"px\";\n this.dependencyLine.style.width = length + \"px\";\n this.dependencyLine.style.transform = \"rotate(\" + angle + \"deg)\";\n };\n\n TaskEditController.prototype.canUpdateTask = function () {\n return !this.gantt.viewModel.isTaskToCalculateByChildren(this.task.internalId);\n };\n\n TaskEditController.prototype.detachEvents = function () {\n this.baseElement.removeEventListener(\"mouseleave\", this.onMouseLeaveHandler);\n };\n\n TaskEditController.CLASSNAMES = {\n TASK_EDIT_BOX: \"dx-gantt-task-edit-wrapper\",\n TASK_EDIT_FRAME: \"dx-gantt-task-edit-frame\",\n TASK_EDIT_PROGRESS: \"dx-gantt-task-edit-progress\",\n TASK_EDIT_DEPENDENCY_RIGTH: \"dx-gantt-task-edit-dependency-r\",\n TASK_EDIT_DEPENDENCY_LEFT: \"dx-gantt-task-edit-dependency-l\",\n TASK_EDIT_START: \"dx-gantt-task-edit-start\",\n TASK_EDIT_END: \"dx-gantt-task-edit-end\",\n TASK_EDIT_DEPENDENCY_LINE: \"dx-gantt-task-edit-dependency-line\",\n TASK_EDIT_BOX_SUCCESSOR: \"dx-gantt-task-edit-wrapper-successor\",\n TASK_EDIT_FRAME_SUCCESSOR: \"dx-gantt-task-edit-frame-successor\",\n TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH: \"dx-gantt-task-edit-successor-dependency-r\",\n TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT: \"dx-gantt-task-edit-successor-dependency-l\",\n TASK_EDIT_TOUCH: \"dx-gantt-edit-touch\"\n };\n return TaskEditController;\n }();\n\n exports.TaskEditController = TaskEditController;\n\n var TaskEditTooltip = function () {\n function TaskEditTooltip(parentElement, owner, cultureInfo) {\n this.parentElement = parentElement;\n this.baseElement = document.createElement(\"DIV\");\n this.baseElement.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_PROGRESS_STATUS;\n parentElement.appendChild(this.baseElement);\n this.owner = owner;\n this.cultureInfo = cultureInfo;\n }\n\n TaskEditTooltip.prototype.setDefaultTooltip = function (task) {\n this.defaultTooltip = document.createElement(\"DIV\");\n this.defaultTooltip.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_DEFAULT;\n var titleWrapper = document.createElement(\"DIV\");\n titleWrapper.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_TASK_TITLE;\n var title = document.createElement(\"SPAN\");\n titleWrapper.appendChild(title);\n this.defaultTooltip.appendChild(titleWrapper);\n title.innerText = task.title;\n this.defaultTooltip.appendChild(this.getTimeContent(task.start, task.end));\n\n if (!isNaN(task.progress)) {\n var progressElement = document.createElement(\"DIV\");\n progressElement.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_PROGRESS_STATUS_TIME;\n var progressTitle = document.createElement(\"SPAN\");\n var progressValue = document.createElement(\"SPAN\");\n progressElement.appendChild(progressTitle);\n progressElement.appendChild(progressValue);\n this.defaultTooltip.appendChild(progressElement);\n progressTitle.innerText = (this.cultureInfo.progress ? this.cultureInfo.progress : \"Progress\") + \": \";\n progressValue.innerText = task.progress + \"%\";\n }\n\n this.baseElement.appendChild(this.defaultTooltip);\n };\n\n TaskEditTooltip.prototype.showInfo = function (task, posX, delay, tooltipTemplateFunction) {\n var _this = this;\n\n if (delay === void 0) {\n delay = 0;\n }\n\n var isTooltipShowing = true;\n this.owner.destroyTemplate(this.baseElement);\n if (tooltipTemplateFunction) isTooltipShowing = tooltipTemplateFunction(this.baseElement, task);else this.setDefaultTooltip(task);\n isTooltipShowing = isTooltipShowing && !!this.baseElement.innerHTML;\n\n if (isTooltipShowing) {\n var showInfoFunc = function showInfoFunc() {\n _this.show(posX, false);\n };\n\n if (delay) this.timerId = setTimeout(showInfoFunc, delay);else showInfoFunc();\n }\n };\n\n TaskEditTooltip.prototype.showProgress = function (progress, posX) {\n this.owner.destroyTemplate(this.baseElement);\n this.defaultTooltip = document.createElement(\"DIV\");\n this.defaultTooltip.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_DEFAULT;\n this.defaultTooltip.innerText = progress + \"%\";\n this.baseElement.appendChild(this.defaultTooltip);\n this.show(posX);\n };\n\n TaskEditTooltip.prototype.showTime = function (start, end, posX) {\n this.owner.destroyTemplate(this.baseElement);\n this.defaultTooltip = document.createElement(\"DIV\");\n this.defaultTooltip.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_DEFAULT;\n this.defaultTooltip.appendChild(this.getTimeContent(start, end));\n this.baseElement.appendChild(this.defaultTooltip);\n this.show(posX);\n };\n\n TaskEditTooltip.prototype.show = function (posX, autoHide) {\n var _this = this;\n\n var _a, _b, _c, _d;\n\n if (autoHide === void 0) {\n autoHide = true;\n }\n\n var arrowHeight = 5;\n var heightOffset = 15;\n (_a = this.defaultTooltip) === null || _a === void 0 ? void 0 : _a.classList.remove(TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_ARROW_AFTER);\n (_b = this.defaultTooltip) === null || _b === void 0 ? void 0 : _b.classList.remove(TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_ARROW_BEFORE);\n this.baseElement.style.display = \"block\";\n var absolutePositionY = dom_1.DomUtils.getAbsolutePositionY(this.parentElement);\n var absoluteX = dom_1.DomUtils.getAbsolutePositionX(this.parentElement);\n var leftPosition = posX - absoluteX - 2 * arrowHeight;\n var absoluteDistance = absolutePositionY - this.owner.header.clientHeight - dom_1.DomUtils.getDocumentScrollTop() - heightOffset;\n var isShowingDown = this.baseElement.clientHeight > absoluteDistance || this.baseElement.clientHeight > this.parentElement.offsetTop;\n var topPosition = -this.baseElement.clientHeight - arrowHeight;\n\n if (isShowingDown) {\n topPosition = this.parentElement.clientHeight + arrowHeight;\n (_c = this.defaultTooltip) === null || _c === void 0 ? void 0 : _c.classList.add(TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_ARROW_AFTER);\n } else (_d = this.defaultTooltip) === null || _d === void 0 ? void 0 : _d.classList.add(TaskEditTooltip.CLASSNAMES.TASK_EDIT_TOOLTIP_ARROW_BEFORE);\n\n this.baseElement.style.left = leftPosition + \"px\";\n this.baseElement.style.top = topPosition + \"px\";\n\n if (autoHide) {\n if (this.timerId) clearTimeout(this.timerId);\n this.timerId = setTimeout(function () {\n _this.baseElement.style.display = \"none\";\n }, 1500);\n }\n };\n\n TaskEditTooltip.prototype.hide = function () {\n this.baseElement.style.display = \"none\";\n clearTimeout(this.timerId);\n };\n\n TaskEditTooltip.prototype.getTimeContent = function (start, end) {\n var timeElement = document.createElement(\"TABLE\");\n timeElement.className = TaskEditTooltip.CLASSNAMES.TASK_EDIT_PROGRESS_STATUS_TIME;\n var body = document.createElement(\"TBODY\");\n timeElement.appendChild(body);\n var startEl = document.createElement(\"TR\");\n var startTitle = document.createElement(\"TD\");\n var startValue = document.createElement(\"TD\");\n var endEl = document.createElement(\"TR\");\n var endTitle = document.createElement(\"TD\");\n var endValue = document.createElement(\"TD\");\n startEl.appendChild(startTitle);\n startEl.appendChild(startValue);\n endEl.appendChild(endTitle);\n endEl.appendChild(endValue);\n body.appendChild(startEl);\n body.appendChild(endEl);\n startTitle.innerText = (this.cultureInfo.start ? this.cultureInfo.start : \"Start\") + \": \";\n startValue.innerText = this.formatDate(start);\n endTitle.innerText = (this.cultureInfo.end ? this.cultureInfo.end : \"End\") + \": \";\n endValue.innerText = this.formatDate(end);\n return timeElement;\n };\n\n TaskEditTooltip.prototype.formatDate = function (date) {\n return this.owner.getDateFormat(date);\n };\n\n TaskEditTooltip.CLASSNAMES = {\n TASK_EDIT_PROGRESS_STATUS: \"dx-gantt-task-edit-tooltip\",\n TASK_EDIT_TOOLTIP_DEFAULT: \"dx-gantt-task-edit-tooltip-default\",\n TASK_EDIT_TASK_TITLE: \"dx-gantt-task-title\",\n TASK_EDIT_PROGRESS_STATUS_TIME: \"dx-gantt-status-time\",\n TASK_EDIT_TOOLTIP_ARROW_BEFORE: \"dx-gantt-task-edit-tooltip-before\",\n TASK_EDIT_TOOLTIP_ARROW_AFTER: \"dx-gantt-task-edit-tooltip-after\"\n };\n return TaskEditTooltip;\n }();\n /***/\n\n },\n /* 46 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HistoryItemState = void 0;\n\n var HistoryItemState = function () {\n function HistoryItemState(id, value) {\n this.id = id;\n this.value = value;\n }\n\n return HistoryItemState;\n }();\n\n exports.HistoryItemState = HistoryItemState;\n /***/\n },\n /* 47 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var _a;\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HandlerBase = void 0;\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var TaskEditController_1 = __webpack_require__(45);\n\n var HandlerBase = function () {\n function HandlerBase(control) {\n this.control = control;\n this.switchToDefaultState();\n }\n\n HandlerBase.prototype.switchState = function (state) {\n if (this.state) this.state.finish();\n this.state = state;\n this.state.start();\n };\n\n HandlerBase.prototype.switchToDefaultState = function () {\n throw new Error(\"Not implemented\");\n };\n\n HandlerBase.prototype.getEventSource = function (initSource) {\n var source = initSource.nodeType === Node.ELEMENT_NODE ? initSource : initSource.parentNode;\n var className = source.classList[0];\n return HandlerBase.classToSource[className] || TaskAreaManager_1.MouseEventSource.TaskArea;\n };\n\n HandlerBase.classToSource = (_a = {}, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_PROGRESS] = TaskAreaManager_1.MouseEventSource.TaskEdit_Progress, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_START] = TaskAreaManager_1.MouseEventSource.TaskEdit_Start, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_END] = TaskAreaManager_1.MouseEventSource.TaskEdit_End, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_FRAME] = TaskAreaManager_1.MouseEventSource.TaskEdit_Frame, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_RIGTH] = TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_DEPENDENCY_LEFT] = TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_RIGTH] = TaskAreaManager_1.MouseEventSource.Successor_DependencyStart, _a[TaskEditController_1.TaskEditController.CLASSNAMES.TASK_EDIT_SUCCESSOR_DEPENDENCY_LEFT] = TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish, _a);\n return HandlerBase;\n }();\n\n exports.HandlerBase = HandlerBase;\n /***/\n },\n /* 48 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDependencyState = exports.dependencyMap = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var point_1 = __webpack_require__(4);\n\n var dom_1 = __webpack_require__(3);\n\n var evt_1 = __webpack_require__(6);\n\n var MouseHandlerStateBase_1 = __webpack_require__(29);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var Dependency_1 = __webpack_require__(11);\n\n exports.dependencyMap = [];\n exports.dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart] = [];\n exports.dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish] = [];\n exports.dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart][TaskAreaManager_1.MouseEventSource.Successor_DependencyStart] = Dependency_1.DependencyType.SS;\n exports.dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart][TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish] = Dependency_1.DependencyType.SF;\n exports.dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish][TaskAreaManager_1.MouseEventSource.Successor_DependencyStart] = Dependency_1.DependencyType.FS;\n exports.dependencyMap[TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish][TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish] = Dependency_1.DependencyType.FF;\n\n var MouseHandlerDependencyState = function (_super) {\n tslib_1.__extends(MouseHandlerDependencyState, _super);\n\n function MouseHandlerDependencyState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerDependencyState.prototype.onMouseDown = function (evt) {\n var sourceElement = evt_1.EvtUtils.getEventSource(evt);\n this.source = this.handler.getEventSource(sourceElement);\n var pos = this.getRelativePos(new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(sourceElement) + sourceElement.clientWidth / 2, dom_1.DomUtils.getAbsolutePositionY(sourceElement) + sourceElement.clientHeight / 2));\n this.handler.control.taskEditController.startDependency(pos);\n };\n\n MouseHandlerDependencyState.prototype.onMouseUp = function (evt) {\n if (evt instanceof PointerEvent) {\n var relativePosStart = this.getRelativePos(new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(this.handler.control.taskEditController.dependencySuccessorStart) + this.handler.control.taskEditController.dependencySuccessorStart.clientWidth / 2, dom_1.DomUtils.getAbsolutePositionY(this.handler.control.taskEditController.dependencySuccessorStart) + this.handler.control.taskEditController.dependencySuccessorStart.clientHeight / 2));\n var relativePosEnd = this.getRelativePos(new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(this.handler.control.taskEditController.dependencySuccessorFinish) + this.handler.control.taskEditController.dependencySuccessorFinish.clientWidth / 2, dom_1.DomUtils.getAbsolutePositionY(this.handler.control.taskEditController.dependencySuccessorFinish) + this.handler.control.taskEditController.dependencySuccessorFinish.clientHeight / 2));\n var relativeTouchPos = this.getRelativePos(new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt)));\n var target = this.isTouchNearby(relativeTouchPos, relativePosStart) ? TaskAreaManager_1.MouseEventSource.Successor_DependencyStart : this.isTouchNearby(relativeTouchPos, relativePosEnd) ? TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish : null;\n var type = target === TaskAreaManager_1.MouseEventSource.Successor_DependencyStart || target == TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish ? exports.dependencyMap[this.source][target] : null;\n this.handler.control.taskEditController.endDependency(type);\n } else {\n var target = this.handler.getEventSource(evt_1.EvtUtils.getEventSource(evt));\n var type = target === TaskAreaManager_1.MouseEventSource.Successor_DependencyStart || target == TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish ? exports.dependencyMap[this.source][target] : null;\n this.handler.control.taskEditController.endDependency(type);\n }\n\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerDependencyState.prototype.onMouseMove = function (evt) {\n evt.preventDefault();\n var relativePos = this.getRelativePos(new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt)));\n var hoverTaskIndex = Math.floor(relativePos.y / this.handler.control.tickSize.height);\n this.handler.control.taskEditController.processDependency(relativePos);\n if (this.handler.control.viewModel.tasks.items[hoverTaskIndex]) this.handler.control.taskEditController.showDependencySuccessor(hoverTaskIndex);\n };\n\n MouseHandlerDependencyState.prototype.isTouchNearby = function (touchPos, elementPos) {\n if (Math.abs(elementPos.x - touchPos.x) <= 10 && Math.abs(elementPos.y - touchPos.y) <= 10) return true;\n return false;\n };\n\n return MouseHandlerDependencyState;\n }(MouseHandlerStateBase_1.MouseHandlerStateBase);\n\n exports.MouseHandlerDependencyState = MouseHandlerDependencyState;\n /***/\n },\n /* 49 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerStateBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HandlerStateBase_1 = __webpack_require__(19);\n\n var TouchHandlerStateBase = function (_super) {\n tslib_1.__extends(TouchHandlerStateBase, _super);\n\n function TouchHandlerStateBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerStateBase.prototype.onTouchStart = function (_evt) {};\n\n TouchHandlerStateBase.prototype.onDoubleTap = function (_evt) {};\n\n TouchHandlerStateBase.prototype.onTouchEnd = function (_evt) {};\n\n TouchHandlerStateBase.prototype.onTouchMove = function (_evt) {};\n\n return TouchHandlerStateBase;\n }(HandlerStateBase_1.HandlerStateBase);\n\n exports.TouchHandlerStateBase = TouchHandlerStateBase;\n /***/\n },\n /* 50 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskEditDialogShowingArguments = exports.TaskUpdatingArguments = exports.TaskRemovingArguments = exports.TaskInsertingArguments = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var BaseArguments_1 = __webpack_require__(20);\n\n var TaskInsertingArguments = function (_super) {\n tslib_1.__extends(TaskInsertingArguments, _super);\n\n function TaskInsertingArguments(key, data) {\n var _this = _super.call(this, key) || this;\n\n _this.values = data !== null && data !== void 0 ? data : {};\n return _this;\n }\n\n Object.defineProperty(TaskInsertingArguments.prototype, \"start\", {\n get: function get() {\n return this.values.start;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskInsertingArguments.prototype, \"end\", {\n get: function get() {\n return this.values.end;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskInsertingArguments.prototype, \"title\", {\n get: function get() {\n return this.values.title;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskInsertingArguments.prototype, \"progress\", {\n get: function get() {\n return this.values.progress;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskInsertingArguments.prototype, \"parentId\", {\n get: function get() {\n return this.values.parentId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskInsertingArguments.prototype, \"color\", {\n get: function get() {\n return this.values.color;\n },\n enumerable: false,\n configurable: true\n });\n return TaskInsertingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.TaskInsertingArguments = TaskInsertingArguments;\n\n var TaskRemovingArguments = function (_super) {\n tslib_1.__extends(TaskRemovingArguments, _super);\n\n function TaskRemovingArguments(task) {\n var _this = _super.call(this, task.id) || this;\n\n _this.values = task;\n return _this;\n }\n\n return TaskRemovingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.TaskRemovingArguments = TaskRemovingArguments;\n\n var TaskUpdatingArguments = function (_super) {\n tslib_1.__extends(TaskUpdatingArguments, _super);\n\n function TaskUpdatingArguments(task, fieldNames, newValues) {\n var _this = _super.call(this, task.id) || this;\n\n _this.values = task;\n\n _this.createNewValues(fieldNames, newValues);\n\n return _this;\n }\n\n TaskUpdatingArguments.prototype.createNewValues = function (fieldNames, newValues) {\n var _this = this;\n\n this.newValues = {};\n\n var _loop_1 = function _loop_1(i) {\n var fieldName = fieldNames[i];\n this_1.newValues[fieldName] = newValues[i];\n Object.defineProperty(this_1, fieldName, {\n get: function get() {\n return _this.newValues[fieldName];\n }\n });\n };\n\n var this_1 = this;\n\n for (var i = 0; i < fieldNames.length; i++) {\n _loop_1(i);\n }\n };\n\n return TaskUpdatingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.TaskUpdatingArguments = TaskUpdatingArguments;\n\n var TaskEditDialogShowingArguments = function (_super) {\n tslib_1.__extends(TaskEditDialogShowingArguments, _super);\n\n function TaskEditDialogShowingArguments(params) {\n var _this = _super.call(this, params.id) || this;\n\n _this.values = {\n start: params.start,\n end: params.end,\n title: params.title,\n progress: params.progress\n };\n _this.hiddenFields = params.hiddenFields;\n _this.readOnlyFields = params.readOnlyFields;\n return _this;\n }\n\n return TaskEditDialogShowingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.TaskEditDialogShowingArguments = TaskEditDialogShowingArguments;\n /***/\n },\n /* 51 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RemoveTaskHistoryItem = exports.CreateTaskHistoryItem = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItem_1 = __webpack_require__(12);\n\n var TaskDependencyHistoryItem_1 = __webpack_require__(21);\n\n var CreateTaskHistoryItem = function (_super) {\n tslib_1.__extends(CreateTaskHistoryItem, _super);\n\n function CreateTaskHistoryItem(modelManipulator, data) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.data = data;\n return _this;\n }\n\n CreateTaskHistoryItem.prototype.redo = function () {\n this.taskId = this.modelManipulator.task.create(this.data, this.taskId ? this.taskId : null).internalId;\n };\n\n CreateTaskHistoryItem.prototype.undo = function () {\n this.modelManipulator.task.remove(this.taskId);\n };\n\n return CreateTaskHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.CreateTaskHistoryItem = CreateTaskHistoryItem;\n\n var RemoveTaskHistoryItem = function (_super) {\n tslib_1.__extends(RemoveTaskHistoryItem, _super);\n\n function RemoveTaskHistoryItem(modelManipulator) {\n var _this = _super.call(this) || this;\n\n _this.taskIds = [];\n _this.tasks = [];\n _this.pendingCallbacks = 0;\n _this.modelManipulator = modelManipulator;\n return _this;\n }\n\n RemoveTaskHistoryItem.prototype.redo = function () {\n var _this = this;\n\n _super.prototype.redo.call(this);\n\n this.taskIds.forEach(function (id) {\n _this.tasks.push(_this.modelManipulator.task.remove(id));\n });\n };\n\n RemoveTaskHistoryItem.prototype.undo = function () {\n var _this = this;\n\n var viewModel = this.modelManipulator.task.viewModel;\n viewModel.lockChangesProcessing = this.tasks.length > 0;\n\n if (this.tasks.length) {\n var task_1 = this.tasks.shift();\n this.pendingCallbacks++;\n this.modelManipulator.task.create(task_1, task_1.internalId, function () {\n _this.modelManipulator.task.properties.progress.setValue(task_1.internalId, task_1.progress);\n\n if (task_1.color) _this.modelManipulator.task.properties.color.setValue(task_1.internalId, task_1.color);\n _this.tasks.length ? _this.undo() : _super.prototype.undo.call(_this);\n _this.pendingCallbacks--;\n viewModel.lockChangesProcessing = _this.pendingCallbacks > 0;\n });\n }\n };\n\n RemoveTaskHistoryItem.prototype.undoItemsQuery = function () {\n while (this.tasks.length) {\n var task = this.tasks.shift();\n this.modelManipulator.task.create(task, task.internalId, function () {});\n this.modelManipulator.task.properties.progress.setValue(task.internalId, task.progress);\n if (task.color) this.modelManipulator.task.properties.color.setValue(task.internalId, task.color);\n }\n\n this.modelManipulator.task.viewModel.lockChangesProcessing = false;\n this.pendingCallbacks = 0;\n\n _super.prototype.undo.call(this);\n };\n\n RemoveTaskHistoryItem.prototype.addTask = function (taskId) {\n this.taskIds.push(taskId);\n };\n\n RemoveTaskHistoryItem.prototype.add = function (historyItem) {\n if (historyItem instanceof TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem) {\n var item_1 = historyItem;\n if (!this.historyItems.filter(function (i) {\n return i instanceof TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem && i.dependencyId == item_1.dependencyId;\n }).length) this.historyItems.push(item_1);\n } else _super.prototype.add.call(this, historyItem);\n };\n\n return RemoveTaskHistoryItem;\n }(HistoryItem_1.CompositionHistoryItem);\n\n exports.RemoveTaskHistoryItem = RemoveTaskHistoryItem;\n /***/\n },\n /* 52 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConstraintViolationDialogParameters = exports.ConstraintViolationDialogCommand = exports.ConstraintViolationOption = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DialogBase_1 = __webpack_require__(24);\n\n var TaskDependencyHistoryItem_1 = __webpack_require__(21);\n\n var ConstraintViolationOption;\n\n (function (ConstraintViolationOption) {\n ConstraintViolationOption[ConstraintViolationOption[\"DoNothing\"] = 0] = \"DoNothing\";\n ConstraintViolationOption[ConstraintViolationOption[\"RemoveDependency\"] = 1] = \"RemoveDependency\";\n ConstraintViolationOption[ConstraintViolationOption[\"KeepDependency\"] = 2] = \"KeepDependency\";\n })(ConstraintViolationOption = exports.ConstraintViolationOption || (exports.ConstraintViolationOption = {}));\n\n var ConstraintViolationDialogCommand = function (_super) {\n tslib_1.__extends(ConstraintViolationDialogCommand, _super);\n\n function ConstraintViolationDialogCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ConstraintViolationDialogCommand.prototype.applyParameters = function (newParameters, oldParameters) {\n if (newParameters.option === ConstraintViolationOption.DoNothing) return false;\n\n if (newParameters.option === ConstraintViolationOption.RemoveDependency) {\n this.history.beginTransaction();\n this.history.addAndRedo(new TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem(this.modelManipulator, oldParameters.validationError.dependencyId));\n oldParameters.callback();\n this.history.endTransaction();\n this.control.barManager.updateItemsState([]);\n }\n\n if (newParameters.option === ConstraintViolationOption.KeepDependency) {\n oldParameters.callback();\n this.control.barManager.updateItemsState([]);\n }\n\n return true;\n };\n\n ConstraintViolationDialogCommand.prototype.createParameters = function (options) {\n var dependency = this.control.viewModel.dependencies.getItemById(options.validationError.dependencyId);\n var successorTask = this.control.viewModel.tasks.getItemById(dependency.successorId);\n var predecessorTask = this.control.viewModel.tasks.getItemById(dependency.predecessorId);\n options.successorTaskTitle = successorTask.title;\n options.predecessorTaskTitle = predecessorTask.title;\n return options;\n };\n\n ConstraintViolationDialogCommand.prototype.getDialogName = function () {\n return \"ConstraintViolation\";\n };\n\n return ConstraintViolationDialogCommand;\n }(DialogBase_1.DialogBase);\n\n exports.ConstraintViolationDialogCommand = ConstraintViolationDialogCommand;\n\n var ConstraintViolationDialogParameters = function (_super) {\n tslib_1.__extends(ConstraintViolationDialogParameters, _super);\n\n function ConstraintViolationDialogParameters(validationError, callback) {\n var _this = _super.call(this) || this;\n\n _this.validationError = validationError;\n _this.callback = callback;\n return _this;\n }\n\n ConstraintViolationDialogParameters.prototype.clone = function () {\n var result = new ConstraintViolationDialogParameters(this.validationError, this.callback);\n result.option = this.option;\n return result;\n };\n\n return ConstraintViolationDialogParameters;\n }(DialogBase_1.DialogParametersBase);\n\n exports.ConstraintViolationDialogParameters = ConstraintViolationDialogParameters;\n /***/\n },\n /* 53 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GanttView = exports.default = void 0;\n\n __webpack_require__(54);\n\n var GanttView_1 = __webpack_require__(55);\n\n Object.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return GanttView_1.GanttView;\n }\n });\n Object.defineProperty(exports, \"GanttView\", {\n enumerable: true,\n get: function get() {\n return GanttView_1.GanttView;\n }\n });\n /***/\n },\n /* 54 */\n\n /***/\n function (module, exports, __webpack_require__) {// extracted by mini-css-extract-plugin\n\n /***/\n },\n /* 55 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GanttView = void 0;\n\n var VisualModel_1 = __webpack_require__(56);\n\n var Enums_1 = __webpack_require__(14);\n\n var Utils_1 = __webpack_require__(42);\n\n var dom_1 = __webpack_require__(3);\n\n var DateRange_1 = __webpack_require__(9);\n\n var size_1 = __webpack_require__(28);\n\n var point_1 = __webpack_require__(4);\n\n var GridElementInfo_1 = __webpack_require__(43);\n\n var GridLayoutCalculator_1 = __webpack_require__(17);\n\n var EtalonSizeValues_1 = __webpack_require__(80);\n\n var TaskEditController_1 = __webpack_require__(45);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var ModelManipulator_1 = __webpack_require__(81);\n\n var History_1 = __webpack_require__(86);\n\n var EventManager_1 = __webpack_require__(88);\n\n var TaskAreaContainer_1 = __webpack_require__(103);\n\n var Settings_1 = __webpack_require__(44);\n\n var ModelChangesDispatcher_1 = __webpack_require__(104);\n\n var CommandManager_1 = __webpack_require__(106);\n\n var BarManager_1 = __webpack_require__(122);\n\n var browser_1 = __webpack_require__(5);\n\n var ValidationController_1 = __webpack_require__(123);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var FullScreenModeHelper_1 = __webpack_require__(124);\n\n var TaskHistoryItem_1 = __webpack_require__(51);\n\n var common_1 = __webpack_require__(1);\n\n var ResourceHistoryItem_1 = __webpack_require__(22);\n\n var GanttView = function () {\n function GanttView(element, ganttOwner, settings) {\n var _this = this;\n\n this.timeScaleAreas = new Array();\n this.horTaskAreaBorders = [];\n this.vertTaskAreaBorders = [];\n this.scaleBorders = [];\n this.scaleElements = [];\n this.taskElements = [];\n this.resourcesElements = [];\n this.selectionElements = [];\n this.hlRowElements = [];\n this.renderedRowIndices = [];\n this.renderedColIndices = [];\n this.renderedScaleItemIndices = [];\n this.dependencyMap = [];\n this.invalidTaskDependencies = [];\n this.renderedConnectorLines = [];\n this.connectorLinesToElementsMap = {};\n this.noWorkingIntervalsToElementsMap = {};\n this.renderedNoWorkingIntervals = [];\n this.renderedStripLines = [];\n this.stripLinesMap = [];\n this.gridLayoutCalculator = new GridLayoutCalculator_1.GridLayoutCalculator();\n this.etalonSizeValues = new EtalonSizeValues_1.EtalonSizeValues();\n this.tickSize = new size_1.Size(0, 0);\n this.scaleCount = 2;\n this.isFocus = false;\n this.currentZoom = 1;\n this.maxZoom = 3;\n this.stripLinesUpdaterId = null;\n this.currentSelectedTaskID = \"\";\n this.ganttOwner = ganttOwner;\n this.settings = Settings_1.Settings.parse(settings);\n this.elementTextHelper = new Utils_1.ElementTextHelper(settings.cultureInfo);\n this.validationController = new ValidationController_1.ValidationController(this);\n this.createMainElement(element);\n this.createHeader();\n this.calculateEtalonSizeValues();\n this.createTaskAreaContainer();\n this.loadOptionsFromGanttOwner();\n this.elementTextHelper.setFont(this.mainElement);\n this.setupHelpers();\n this.setSizeForTaskArea();\n this.createTimeScaleContainer();\n this.createTimeScaleAreas();\n this.commandManager = new CommandManager_1.CommandManager(this);\n this.barManager = new BarManager_1.BarManager(this, ganttOwner.bars);\n this.eventManager = new EventManager_1.EventManager(this);\n this.taskEditController = new TaskEditController_1.TaskEditController(this);\n this.history = new History_1.History();\n this.taskAreaManager = new TaskAreaManager_1.TaskAreaManager(this);\n this.fullScreenModeHelper = new FullScreenModeHelper_1.FullScreenModeHelper(this);\n this.onWindowResizelHandler = this.onBrowserWindowResize.bind(this);\n window.addEventListener(\"resize\", this.onWindowResizelHandler);\n this.updateView();\n setTimeout(function () {\n _this.scrollLeftByViewType();\n }, 0);\n this.initializeStripLinesUpdater();\n }\n\n GanttView.prototype.reset = function () {\n this.timeScaleContainer.innerHTML = \"\";\n this.taskArea.innerHTML = \"\";\n this.horTaskAreaBorders = [];\n this.vertTaskAreaBorders = [];\n this.scaleBorders = [];\n this.scaleElements = [];\n this.taskElements = [];\n this.selectionElements = [];\n this.hlRowElements = [];\n this.renderedRowIndices = [];\n this.renderedColIndices = [];\n this.renderedConnectorLines = [];\n this.timeScaleAreas = [];\n this.renderedScaleItemIndices = [];\n this.connectorLinesToElementsMap = {};\n this.renderedNoWorkingIntervals = [];\n this.renderedStripLines = [];\n this.noWorkingIntervalsToElementsMap = {};\n this.invalidTaskDependencies = [];\n };\n\n GanttView.prototype.setupHelpers = function () {\n var size = new size_1.Size(this.taskAreaContainer.getWidth(), this.taskAreaContainer.getHeight());\n var scrollBarHeight = this.taskAreaContainer.getHeight() - this.taskAreaContainer.getElement().clientHeight;\n this.gridLayoutCalculator.setSettings(size, this.tickSize, this.etalonSizeValues, this.range, this.viewModel, this.settings.viewType, scrollBarHeight);\n this.elementTextHelper.setSettings(this.range.start.getTime(), this.settings.viewType, this.viewModel.items);\n };\n\n GanttView.prototype.getDateRange = function (modelStartDate, modelEndDate) {\n var start = new Date(modelStartDate.getTime() - this.getVisibleAreaTime());\n start = Utils_1.DateUtils.adjustStartDateByViewType(start, this.settings.viewType, this.settings.firstDayOfWeek);\n var end = new Date(modelEndDate.getTime() + this.getVisibleAreaTime());\n end = Utils_1.DateUtils.adjustEndDateByViewType(end, this.settings.viewType, this.settings.firstDayOfWeek);\n return new DateRange_1.DateRange(start, end);\n };\n\n GanttView.prototype.getVisibleAreaTime = function () {\n var visibleTickCount = Math.ceil(this.taskAreaContainer.getWidth() / this.tickSize.width);\n return visibleTickCount * Utils_1.DateUtils.getTickTimeSpan(this.settings.viewType);\n };\n\n GanttView.prototype.calculateEtalonSizeValues = function () {\n var etalonElementsContainer = this.createEtalonElementsContainer();\n var etalonElements = this.createEtalonElements(etalonElementsContainer);\n this.calculateEtalonSizeValuesCore(etalonElements);\n this.mainElement.removeChild(etalonElementsContainer);\n };\n\n GanttView.prototype.calculateEtalonSizeValuesCore = function (etalonElements) {\n this.etalonSizeValues.taskHeight = etalonElements[0].firstChild.offsetHeight;\n this.etalonSizeValues.milestoneWidth = etalonElements[1].firstChild.offsetWidth;\n this.etalonSizeValues.taskWrapperTopPadding = dom_1.DomUtils.pxToInt(dom_1.DomUtils.getCurrentStyle(etalonElements[0]).paddingTop);\n this.etalonSizeValues.connectorLineThickness = dom_1.DomUtils.getVerticalBordersWidth(etalonElements[2]);\n this.etalonSizeValues.connectorArrowWidth = dom_1.DomUtils.getHorizontalBordersWidth(etalonElements[3]);\n\n for (var i = 0; i <= Enums_1.ViewType.Years; i++) {\n etalonElements[4].innerText = this.elementTextHelper.getScaleItemTextTemplate(i);\n this.etalonSizeValues.scaleItemWidths[i] = etalonElements[4].offsetWidth;\n }\n\n this.etalonSizeValues.smallTaskWidth = this.getSmallTaskWidth(dom_1.DomUtils.getCurrentStyle(etalonElements[0].firstChild.firstChild).paddingLeft);\n this.etalonSizeValues.outsideTaskTextDefaultWidth = dom_1.DomUtils.pxToFloat(dom_1.DomUtils.getCurrentStyle(etalonElements[5]).width);\n this.etalonSizeValues.scaleItemHeight = this.ganttOwner.getHeaderHeight() / this.scaleCount;\n this.etalonSizeValues.parentTaskHeight = etalonElements[etalonElements.length - 1].firstChild.offsetHeight;\n };\n\n GanttView.prototype.getSmallTaskWidth = function (etalonPaddingLeft) {\n var result = 0;\n\n if (etalonPaddingLeft != null && etalonPaddingLeft != \"\") {\n var indexOfRem = etalonPaddingLeft.indexOf(\"rem\");\n if (indexOfRem > -1) try {\n var remSize = parseFloat(etalonPaddingLeft.substr(0, indexOfRem));\n result = remSize * parseFloat(getComputedStyle(document.documentElement).fontSize);\n } catch (e) {} else result = dom_1.DomUtils.pxToInt(etalonPaddingLeft);\n }\n\n return result * 2;\n };\n\n GanttView.prototype.createEtalonElementsContainer = function () {\n var result = document.createElement(\"DIV\");\n result.style.visibility = \"hidden\";\n result.style.position = \"absolute\";\n result.style.left = \"-1000px\";\n this.mainElement.appendChild(result);\n return result;\n };\n\n GanttView.prototype.createEtalonElements = function (parent) {\n var etalonElements = [];\n var wrapper = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-taskWrapper\"), null, parent);\n var task = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-task\"), null, wrapper);\n var taskTitle = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-taskTitle dx-gantt-titleIn\"), null, task);\n taskTitle.innerText = \"WWW\";\n etalonElements.push(wrapper);\n var milestoneWrapper = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-taskWrapper\"), null, parent);\n this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-task dx-gantt-milestone\"), null, milestoneWrapper);\n etalonElements.push(milestoneWrapper);\n var etalonElementClassNames = [\"dx-gantt-conn-h\", \"dx-gantt-arrow\", \"dx-gantt-si\", \"dx-gantt-taskTitle dx-gantt-titleOut\"];\n\n for (var i = 0; i < etalonElementClassNames.length; i++) {\n var etalonElementInfo = new GridElementInfo_1.GridElementInfo(etalonElementClassNames[i]);\n etalonElements.push(this.createElement(etalonElementInfo, null, parent));\n }\n\n var parentWrapper = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-taskWrapper\"), null, parent);\n var parentTask = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-task dx-gantt-parent\"), null, parentWrapper);\n var parentTaskTitle = this.createElement(new GridElementInfo_1.GridElementInfo(\"dx-gantt-taskTitle dx-gantt-titleIn\"), null, parentTask);\n parentTaskTitle.innerText = \"WWW\";\n etalonElements.push(parentWrapper);\n return etalonElements;\n };\n\n GanttView.prototype.zoomIn = function (leftPos) {\n if (leftPos === void 0) {\n leftPos = this.taskAreaContainer.getWidth() / 2;\n }\n\n var targetDate = this.gridLayoutCalculator.getDateByPos(this.taskAreaContainer.scrollLeft + leftPos);\n\n if (this.currentZoom < this.maxZoom) {\n this.currentZoom++;\n this.updateTickSizeWidth();\n this.resetAndUpdate();\n } else if (this.settings.viewType > Enums_1.ViewType.TenMinutes) {\n this.currentZoom = 1;\n this.setViewType(this.settings.viewType - 1, false);\n }\n\n this.scrollToDate(targetDate, leftPos);\n };\n\n GanttView.prototype.zoomOut = function (leftPos) {\n if (leftPos === void 0) {\n leftPos = this.taskAreaContainer.getWidth() / 2;\n }\n\n var targetDate = this.gridLayoutCalculator.getDateByPos(this.taskAreaContainer.scrollLeft + leftPos);\n\n if (this.currentZoom > 1) {\n this.currentZoom--;\n this.updateTickSizeWidth();\n this.resetAndUpdate();\n } else if (this.settings.viewType < Enums_1.ViewType.Years) {\n this.currentZoom = this.maxZoom;\n this.setViewType(this.settings.viewType + 1, false);\n }\n\n this.scrollToDate(targetDate, leftPos);\n };\n\n GanttView.prototype.scrollToDate = function (date, leftPos) {\n this.taskAreaContainer.scrollLeft = Math.round(this.gridLayoutCalculator.getPosByDate(date)) - leftPos;\n };\n\n GanttView.prototype.scrollLeftByViewType = function () {\n var adjustedStartDate = Utils_1.DateUtils.roundStartDate(this.dataRange.start, this.settings.viewType);\n this.taskAreaContainer.scrollLeft = Math.round(this.gridLayoutCalculator.getPosByDate(adjustedStartDate)) + 1;\n };\n\n GanttView.prototype.onVisualModelChanged = function () {\n this.resetAndUpdate();\n };\n\n GanttView.prototype.initializeStripLinesUpdater = function () {\n var _this = this;\n\n if (this.settings.stripLines.showCurrentTime) this.stripLinesUpdaterId = setInterval(function () {\n if (_this.recreateStripLines) _this.recreateStripLines();\n }, Math.max(this.settings.stripLines.currentTimeUpdateInterval, 100));\n };\n\n GanttView.prototype.clearStripLinesUpdater = function () {\n if (this.stripLinesUpdaterId) clearInterval(this.stripLinesUpdaterId);\n this.stripLinesUpdaterId = null;\n };\n\n GanttView.prototype.getGanttViewStartDate = function (tasks) {\n if (!tasks) return new Date();\n var dates = tasks.map(function (t) {\n return typeof t.start === \"string\" ? new Date(t.start) : t.start;\n }).filter(function (d) {\n return common_1.isDefined(d);\n });\n return dates.length > 0 ? dates.reduce(function (min, d) {\n return d < min ? d : min;\n }, dates[0]) : new Date();\n };\n\n GanttView.prototype.getGanttViewEndDate = function (tasks) {\n if (!tasks) return new Date();\n var dates = tasks.map(function (t) {\n return typeof t.end === \"string\" ? new Date(t.end) : t.end;\n }).filter(function (d) {\n return common_1.isDefined(d);\n });\n return dates.length > 0 ? dates.reduce(function (max, d) {\n return d > max ? d : max;\n }, dates[0]) : new Date();\n };\n\n GanttView.prototype.getTaskAreaWidth = function () {\n return this.gridLayoutCalculator.horizontalTickCount * this.tickSize.width;\n };\n\n GanttView.prototype.getTaskAreaHeight = function () {\n return this.gridLayoutCalculator.getVerticalGridLineHeight();\n };\n\n GanttView.prototype.getVisibleTaskCount = function () {\n return this.viewModel.itemCount;\n };\n\n GanttView.prototype.getTask = function (index) {\n var item = this.viewModel.items[index];\n return item.task;\n };\n\n GanttView.prototype.createMainElement = function (parent) {\n this.mainElement = document.createElement(\"DIV\");\n this.mainElement.style.width = parent.offsetWidth + \"px\";\n this.mainElement.style.height = parent.offsetHeight + \"px\";\n parent.appendChild(this.mainElement);\n };\n\n GanttView.prototype.createHeader = function () {\n this.header = document.createElement(\"DIV\");\n this.header.className = \"dx-gantt-header\";\n this.mainElement.appendChild(this.header);\n };\n\n GanttView.prototype.createTimeScaleContainer = function () {\n this.timeScaleContainer = document.createElement(\"DIV\");\n this.timeScaleContainer.className = \"dx-gantt-tsac\";\n this.timeScaleContainer.style.height = this.etalonSizeValues.scaleItemHeight * this.scaleCount + \"px\";\n this.header.appendChild(this.timeScaleContainer);\n };\n\n GanttView.prototype.createTimeScaleArea = function () {\n var timeScaleArea = document.createElement(\"DIV\");\n timeScaleArea.className = \"dx-gantt-tsa\";\n timeScaleArea.style.width = this.getTaskAreaWidth() + \"px\";\n timeScaleArea.style.height = this.etalonSizeValues.scaleItemHeight + \"px\";\n this.timeScaleContainer.appendChild(timeScaleArea);\n this.timeScaleAreas.unshift(timeScaleArea);\n return timeScaleArea;\n };\n\n GanttView.prototype.createTimeScaleAreas = function () {\n for (var i = 0; i < this.scaleCount; i++) {\n var timeScaleArea = this.createTimeScaleArea();\n if (i == 0 && this.settings.viewType == Enums_1.ViewType.Weeks) this.createMonthsScale(timeScaleArea);\n }\n };\n\n GanttView.prototype.createTaskAreaContainer = function () {\n var element = document.createElement(\"DIV\");\n element.className = \"dx-gantt-tac\";\n this.mainElement.appendChild(element);\n this.createTaskArea(element);\n this.taskAreaContainer = this.ganttOwner.getExternalTaskAreaContainer(element);\n if (this.taskAreaContainer == null) this.taskAreaContainer = new TaskAreaContainer_1.TaskAreaContainer(element, this);\n this.prepareTaskAreaContainer();\n };\n\n GanttView.prototype.prepareTaskAreaContainer = function () {\n var className = \"dx-gantt-tac-hb\";\n var element = this.taskAreaContainer.getElement();\n this.settings.areHorizontalBordersEnabled ? dom_1.DomUtils.addClassName(element, className) : dom_1.DomUtils.removeClassName(element, className);\n var marginTop = parseInt(getComputedStyle(element).getPropertyValue(\"margin-top\")) || 0;\n element.style.height = \"calc(100% - \" + (this.etalonSizeValues.scaleItemHeight * this.scaleCount + marginTop) + \"px)\";\n };\n\n GanttView.prototype.createTaskArea = function (parent) {\n this.taskArea = document.createElement(\"DIV\");\n this.taskArea.id = \"dx-gantt-ta\";\n parent.appendChild(this.taskArea);\n };\n\n GanttView.prototype.setSizeForTaskArea = function () {\n this.taskArea.style.width = this.getTaskAreaWidth() + \"px\";\n this.taskArea.style.height = this.getTaskAreaHeight() + \"px\";\n };\n\n GanttView.prototype.updateTickSizeWidth = function () {\n this.tickSize.width = this.etalonSizeValues.scaleItemWidths[this.settings.viewType] * this.currentZoom;\n };\n\n GanttView.prototype.createMonthsScale = function (parent) {\n var currentDate = new Date();\n currentDate.setTime(this.range.start.getTime());\n var x = 0;\n var index = 0;\n\n while (currentDate.getTime() < this.range.end.getTime()) {\n var dayInMonthCount = Utils_1.DateUtils.getDaysInMonth(currentDate.getMonth(), currentDate.getFullYear());\n var dayCount = dayInMonthCount - currentDate.getDate() + 1;\n var nextDate = new Date();\n nextDate.setTime(currentDate.getTime() + Math.min(dayCount * Utils_1.DateUtils.msPerDay, this.range.end.getTime() - currentDate.getTime()));\n var width = this.gridLayoutCalculator.getWidthByDateRange(currentDate, nextDate);\n var scaleItemInfo = new GridElementInfo_1.GridElementInfo(\"dx-gantt-si\", new point_1.Point(x, undefined), new size_1.Size(width, this.etalonSizeValues.scaleItemHeight));\n var scaleItemElement = this.createElement(scaleItemInfo, null, parent);\n scaleItemElement.innerText = this.elementTextHelper.getScaleItemText(index, Enums_1.ViewType.Months);\n scaleItemElement.style.lineHeight = this.etalonSizeValues.scaleItemHeight + \"px\";\n var scaleBorderInfo = new GridElementInfo_1.GridElementInfo(\"dx-gantt-vb\", new point_1.Point(x + width, undefined), new size_1.Size(0, this.etalonSizeValues.scaleItemHeight));\n this.createElement(scaleBorderInfo, null, parent);\n x += width;\n index++;\n currentDate = nextDate;\n }\n };\n\n GanttView.prototype.updateView = function () {\n this.onBeginUpdateView();\n this.timeScaleContainer.scrollLeft = this.taskAreaContainerScrollLeft;\n this.processScroll(false);\n this.processScroll(true);\n this.ganttOwner.onGanttScroll(this.taskAreaContainerScrollTop);\n this.onEndUpdateView();\n };\n\n GanttView.prototype.onBeginUpdateView = function () {\n this[GanttView.taskAreaScrollTopKey] = this.taskAreaContainer.scrollTop;\n this[GanttView.taskAreaScrollLeftKey] = this.taskAreaContainer.scrollLeft;\n };\n\n GanttView.prototype.onEndUpdateView = function () {\n delete this[GanttView.taskAreaScrollTopKey];\n delete this[GanttView.taskAreaScrollLeftKey];\n delete this[GanttView.taskTextHeightKey];\n };\n\n GanttView.prototype.getTaskTextHeight = function (textElement) {\n textElement.innerText = \"WWW\";\n var height = getComputedStyle(textElement).height;\n textElement.innerText = \"\";\n return height;\n };\n\n Object.defineProperty(GanttView.prototype, \"taskAreaContainerScrollTop\", {\n get: function get() {\n var _a;\n\n return (_a = this[GanttView.taskAreaScrollTopKey]) !== null && _a !== void 0 ? _a : this.taskAreaContainer.scrollTop;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(GanttView.prototype, \"taskAreaContainerScrollLeft\", {\n get: function get() {\n var _a;\n\n return (_a = this[GanttView.taskAreaScrollLeftKey]) !== null && _a !== void 0 ? _a : this.taskAreaContainer.scrollLeft;\n },\n enumerable: false,\n configurable: true\n });\n\n GanttView.prototype.processScroll = function (isVertical) {\n this.taskEditController.tooltip.hide();\n this.recreateTaskAreaBordersAndTaskElements(isVertical);\n if (isVertical) this.recreateConnectorLineElements();else {\n this.recreateNoWorkingIntervalElements();\n this.recreateStripLines();\n this.recreateScalesElements();\n }\n };\n\n GanttView.prototype.recreateTaskAreaBordersAndTaskElements = function (isVertical) {\n var _this = this;\n\n var scrollPos = isVertical ? this.taskAreaContainerScrollTop : this.taskAreaContainerScrollLeft;\n var newRenderedIndices = this.gridLayoutCalculator.getRenderedRowColumnIndices(scrollPos, isVertical);\n var renderedIndices = isVertical ? this.renderedRowIndices : this.renderedColIndices;\n this.recreateElements(renderedIndices, newRenderedIndices, function (index) {\n _this.removeTaskAreaBorderAndTaskElement(index, isVertical);\n }, function (index) {\n _this.createTaskAreaBorderAndTaskElement(index, isVertical);\n });\n if (isVertical) this.renderedRowIndices = newRenderedIndices;else this.renderedColIndices = newRenderedIndices;\n };\n\n GanttView.prototype.recreateNoWorkingIntervalElements = function () {\n var _this = this;\n\n var newRenderedNoWorkingIntervals = this.gridLayoutCalculator.getRenderedNoWorkingIntervals(this.taskAreaContainerScrollLeft);\n this.recreateElements(this.renderedNoWorkingIntervals, newRenderedNoWorkingIntervals, function (info) {\n _this.removeNoWorkingIntervalElement(info);\n }, function (info) {\n _this.createNoWorkingIntervalElement(info);\n });\n this.renderedNoWorkingIntervals = newRenderedNoWorkingIntervals;\n };\n\n GanttView.prototype.recreateStripLines = function () {\n var _this = this;\n\n var newRenderedStripLines = this.gridLayoutCalculator.getRenderedStripLines(this.settings.stripLines);\n this.recreateElements(this.renderedStripLines, newRenderedStripLines, function (info) {\n _this.removeElement(info, null, _this.taskArea, _this.stripLinesMap);\n }, function (info) {\n return _this.createElement(info, null, _this.taskArea, _this.stripLinesMap);\n });\n this.renderedStripLines = newRenderedStripLines;\n };\n\n GanttView.prototype.recreateConnectorLineElements = function () {\n var _this = this;\n\n var newRenderedConnectorLines = this.gridLayoutCalculator.getRenderedConnectorLines(this.taskAreaContainerScrollTop);\n this.recreateElements(this.renderedConnectorLines, newRenderedConnectorLines, function (info) {\n _this.removeConnectorLineElement(info);\n }, function (info) {\n _this.createConnectorLineElement(info);\n });\n this.renderedConnectorLines = newRenderedConnectorLines;\n };\n\n GanttView.prototype.recreateScalesElements = function () {\n this.recreateScaleElements(this.settings.viewType, 0);\n if (this.settings.viewType != Enums_1.ViewType.Weeks) this.recreateScaleElements(Utils_1.DateUtils.ViewTypeToScaleMap[this.settings.viewType], 1);\n };\n\n GanttView.prototype.recreateScaleElements = function (scaleType, scaleIndex) {\n var _this = this;\n\n var newRenderedIndices = this.gridLayoutCalculator.getRenderedScaleItemIndices(scaleType, this.renderedColIndices);\n var renderedIndices = this.renderedScaleItemIndices[scaleType - this.settings.viewType] || [];\n this.recreateElements(renderedIndices, newRenderedIndices, function (index) {\n _this.removeScaleElementAndBorder(index, scaleIndex);\n }, function (index) {\n _this.createScaleElementAndBorder(index, scaleIndex, scaleType);\n });\n this.renderedScaleItemIndices[scaleType - this.settings.viewType] = newRenderedIndices;\n };\n\n GanttView.prototype.recreateElements = function (oldRenderedElementsInfo, newRenderedelementsInfo, removeAction, createAction) {\n oldRenderedElementsInfo.filter(function (info) {\n return newRenderedelementsInfo.indexOf(info) === -1;\n }).forEach(function (info) {\n removeAction(info);\n });\n newRenderedelementsInfo.filter(function (info) {\n return oldRenderedElementsInfo.indexOf(info) === -1;\n }).forEach(function (info) {\n createAction(info);\n });\n };\n\n GanttView.prototype.recreateTaskElement = function (index) {\n var _this = this;\n\n var isVisible = this.renderedRowIndices.filter(function (r) {\n return r === index;\n }).length > 0;\n var viewItem = this.viewModel.items[index];\n var task = viewItem && viewItem.task;\n if (!task) return;\n\n if (isVisible) {\n this.removeTaskElement(index);\n this.createTaskElement(index);\n }\n\n var dependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId == task.internalId || d.successorId == task.internalId;\n });\n if (dependencies.length) dependencies.forEach(function (d) {\n return _this.recreateConnectorLineElement(d.internalId);\n });\n };\n\n GanttView.prototype.recreateConnectorLineElement = function (dependencyId, forceRender) {\n var _this = this;\n\n if (forceRender === void 0) {\n forceRender = false;\n }\n\n var infos = [];\n this.renderedConnectorLines = this.renderedConnectorLines.filter(function (info) {\n if (info.attr[\"dependency-id\"] != dependencyId) return true;\n infos.push(info);\n return false;\n });\n var isRendered = infos.length > 0;\n infos.forEach(function (info) {\n _this.removeConnectorLineElement(info);\n });\n infos = this.gridLayoutCalculator.updateTileToConnectorLinesMap(dependencyId);\n if (isRendered || forceRender) infos.forEach(function (info) {\n _this.createConnectorLineElement(info);\n\n _this.renderedConnectorLines.push(info);\n });\n };\n\n GanttView.prototype.allowTaskAreaBorders = function (isVerticalScroll) {\n return isVerticalScroll ? this.settings.areHorizontalBordersEnabled : this.settings.areVerticalBordersEnabled;\n };\n\n GanttView.prototype.createTaskAreaBorderAndTaskElement = function (index, isVerticalScroll) {\n if (this.allowTaskAreaBorders(isVerticalScroll)) this.createTaskAreaBorder(index, !isVerticalScroll);\n if (isVerticalScroll) this.createTaskElement(index);\n };\n\n GanttView.prototype.removeTaskAreaBorderAndTaskElement = function (index, isVerticalScroll) {\n if (this.allowTaskAreaBorders(isVerticalScroll)) this.removeTaskAreaBorder(index, !isVerticalScroll);\n if (isVerticalScroll) this.removeTaskElement(index);\n };\n\n GanttView.prototype.getTaskAreaBordersDictionary = function (isVertical) {\n return isVertical ? this.vertTaskAreaBorders : this.horTaskAreaBorders;\n };\n\n GanttView.prototype.createTaskAreaBorder = function (index, isVertical) {\n var info = this.gridLayoutCalculator.getTaskAreaBorderInfo(index, isVertical);\n this.createElement(info, index, this.taskArea, this.getTaskAreaBordersDictionary(isVertical));\n };\n\n GanttView.prototype.removeTaskAreaBorder = function (index, isVertical) {\n this.removeElement(null, index, this.taskArea, this.getTaskAreaBordersDictionary(isVertical));\n };\n\n GanttView.prototype.createScaleElementAndBorder = function (index, scaleIndex, scaleType) {\n this.createScaleElement(index, scaleIndex, scaleType);\n this.createScaleBorder(index, scaleIndex, scaleType);\n };\n\n GanttView.prototype.createScaleElement = function (index, scaleIndex, scaleType) {\n var info = this.gridLayoutCalculator.getScaleElementInfo(index, scaleType);\n var scaleElement = this.createScaleElementCore(index, info, scaleIndex, this.scaleElements);\n scaleElement.innerText = this.elementTextHelper.getScaleItemText(index, scaleType);\n scaleElement.style.lineHeight = this.etalonSizeValues.scaleItemHeight + \"px\";\n if (scaleType === Enums_1.ViewType.Quarter) scaleElement.style.padding = \"0\";\n };\n\n GanttView.prototype.createScaleBorder = function (index, scaleIndex, scaleType) {\n var info = this.gridLayoutCalculator.getScaleBorderInfo(index, scaleType);\n this.createScaleElementCore(index, info, scaleIndex, this.scaleBorders);\n };\n\n GanttView.prototype.createScaleElementCore = function (index, info, scaleIndex, dictionary) {\n if (!dictionary[scaleIndex]) dictionary[scaleIndex] = [];\n return this.createElement(info, index, this.timeScaleAreas[scaleIndex], dictionary[scaleIndex]);\n };\n\n GanttView.prototype.removeScaleElementAndBorder = function (index, scaleIndex) {\n this.removeElement(null, index, this.timeScaleAreas[scaleIndex], this.scaleElements[scaleIndex]);\n this.removeElement(null, index, this.timeScaleAreas[scaleIndex], this.scaleBorders[scaleIndex]);\n };\n\n GanttView.prototype.createTaskElement = function (index) {\n var task = this.viewModel.items[index].task;\n if (this.isHighlightRowElementAllowed(index)) this.createHighlightRowElement(index);\n\n if (!task.isValid()) {\n var taskDependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId == task.internalId || d.successorId == task.internalId;\n });\n this.invalidTaskDependencies = this.invalidTaskDependencies.concat(taskDependencies);\n return;\n }\n\n this.createTaskWrapperElement(index);\n if (this.settings.taskTitlePosition == Enums_1.TaskTitlePosition.Outside) this.createTaskTextElement(index, this.taskElements[index]);\n var taskVisualElement = this.createTaskVisualElement(index);\n\n if (!task.isMilestone()) {\n if (this.settings.taskTitlePosition == Enums_1.TaskTitlePosition.Inside) this.createTaskTextElement(index, taskVisualElement);\n this.createTaskProgressElement(index, taskVisualElement);\n }\n\n if (this.settings.showResources) {\n this.createResourcesWrapperElement(index);\n this.createResources(index);\n }\n\n if (this.viewModel.items[index].selected) this.createTaskSelectionElement(index);\n };\n\n GanttView.prototype.isHighlightRowElementAllowed = function (index) {\n return index % 2 !== 0 && this.settings.areAlternateRowsEnabled || this.viewModel.items[index].children.length > 0;\n };\n\n GanttView.prototype.createResourcesWrapperElement = function (index) {\n var resourcesWrapperElementInfo = this.gridLayoutCalculator.getTaskResourcesWrapperElementInfo(index);\n this.createElement(resourcesWrapperElementInfo, index, this.taskArea, this.resourcesElements);\n this.resourcesElements[index].style.display = this.elementTextHelper.getTaskVisibility(index) ? \"\" : \"none\";\n };\n\n GanttView.prototype.createResources = function (index) {\n var resources = this.viewModel.items[index].resources.items;\n\n for (var i = 0; i < resources.length; i++) {\n this.createResourceElement(index, resources[i]);\n }\n };\n\n GanttView.prototype.createTaskWrapperElement = function (index) {\n var taskWrapperInfo = this.gridLayoutCalculator.getTaskWrapperElementInfo(index);\n this.createElement(taskWrapperInfo, index, this.taskArea, this.taskElements);\n this.taskElements[index].style.display = this.elementTextHelper.getTaskVisibility(index) ? \"\" : \"none\";\n };\n\n GanttView.prototype.createTaskVisualElement = function (index) {\n var taskElementInfo = this.gridLayoutCalculator.getTaskElementInfo(index, this.settings.taskTitlePosition !== Enums_1.TaskTitlePosition.Inside);\n var taskElement = this.createElement(taskElementInfo, index, this.taskElements[index]);\n this.taskAreaManager.attachEventsOnTask(taskElement);\n return taskElement;\n };\n\n GanttView.prototype.createTaskProgressElement = function (index, parent) {\n var taskProgressInfo = this.gridLayoutCalculator.getTaskProgressElementInfo(index);\n this.createElement(taskProgressInfo, index, parent);\n };\n\n GanttView.prototype.createTaskTextElement = function (index, parent) {\n var _a;\n\n var _b;\n\n var taskTextInfo = this.gridLayoutCalculator.getTaskTextElementInfo(index, this.settings.taskTitlePosition == Enums_1.TaskTitlePosition.Inside);\n var taskTextElement = this.createElement(taskTextInfo, index, parent);\n var text = this.elementTextHelper.getTaskText(index);\n\n if (!text) {\n (_a = this[_b = GanttView.taskTextHeightKey]) !== null && _a !== void 0 ? _a : this[_b] = this.getTaskTextHeight(taskTextElement);\n taskTextElement.style.height = this[GanttView.taskTextHeightKey];\n }\n\n taskTextElement.innerText = text;\n };\n\n GanttView.prototype.createResourceElement = function (index, resource) {\n var resourceElementInfo = this.gridLayoutCalculator.getTaskResourceElementInfo();\n if (resource.color) resourceElementInfo.style.backgroundColor = resource.color;\n var resElement = this.createElement(resourceElementInfo, index, this.resourcesElements[index]);\n resElement.innerText = resource.text;\n };\n\n GanttView.prototype.createTaskSelectionElement = function (index) {\n var selectionInfo = this.gridLayoutCalculator.getSelectionElementInfo(index);\n if (this.taskAreaContainer.isExternal && !this.settings.areHorizontalBordersEnabled) selectionInfo.size.height++;\n this.createElement(selectionInfo, index, this.taskArea, this.selectionElements);\n };\n\n GanttView.prototype.createHighlightRowElement = function (index) {\n var hlRowInfo = this.gridLayoutCalculator.getHighlightRowInfo(index);\n this.createElement(hlRowInfo, index, this.taskArea, this.hlRowElements);\n };\n\n GanttView.prototype.removeTaskElement = function (index) {\n var task = this.viewModel.items[index].task;\n this.invalidTaskDependencies = this.invalidTaskDependencies.filter(function (d) {\n return d.predecessorId != task.id && d.successorId != task.id;\n });\n this.taskAreaManager.detachEventsOnTask(this.taskElements[index]);\n this.removeElement(null, index, this.taskArea, this.taskElements);\n this.removeElement(null, index, this.taskArea, this.resourcesElements);\n this.removeElement(null, index, this.taskArea, this.selectionElements);\n if (this.isHighlightRowElementAllowed(index)) this.removeElement(null, index, this.taskArea, this.hlRowElements);\n };\n\n GanttView.prototype.createConnectorLineElement = function (info) {\n var dependencyId = info.attr[\"dependency-id\"];\n var isInvalid = this.invalidTaskDependencies.some(function (d) {\n return d.id == dependencyId;\n });\n if (isInvalid) return;\n if (this.taskEditController.isDependencySelected(dependencyId)) info.className = info.className + \" active\";\n return this.createElement(info, null, this.taskArea, this.connectorLinesToElementsMap);\n };\n\n GanttView.prototype.removeConnectorLineElement = function (info) {\n this.removeElement(info, null, this.taskArea, this.connectorLinesToElementsMap);\n };\n\n GanttView.prototype.createNoWorkingIntervalElement = function (info) {\n return this.createElement(info, null, this.taskArea, this.noWorkingIntervalsToElementsMap);\n };\n\n GanttView.prototype.removeNoWorkingIntervalElement = function (info) {\n this.removeElement(info, null, this.taskArea, this.noWorkingIntervalsToElementsMap);\n };\n\n GanttView.prototype.createElement = function (info, index, parent, dictionary) {\n var element = document.createElement(\"DIV\");\n info.assignToElement(element);\n parent.appendChild(element);\n if (dictionary) if (dictionary instanceof Array && index !== null) dictionary[index] = element;else dictionary[info.id] = element;\n\n for (var key in info.attr) {\n if (Object.prototype.hasOwnProperty.call(info.attr, key)) element.setAttribute(key, info.attr[key]);\n }\n\n for (var key in info.style) {\n if (Object.prototype.hasOwnProperty.call(info.style, key)) element.style[key] = info.style[key];\n }\n\n return element;\n };\n\n GanttView.prototype.removeElement = function (info, index, parent, dictionary) {\n var element;\n\n if (dictionary instanceof Array && index !== null) {\n element = dictionary[index];\n delete dictionary[index];\n } else {\n element = dictionary[info.id];\n delete dictionary[info.id];\n }\n\n if (element && element.parentNode == parent) parent.removeChild(element);\n };\n\n GanttView.prototype.calculateAutoViewType = function (startDate, endDate) {\n var diffInHours = (endDate.getTime() - startDate.getTime()) / (1000 * 3600);\n if (diffInHours > 24 * 365) return Enums_1.ViewType.Years;\n if (diffInHours > 24 * 30) return Enums_1.ViewType.Months;\n if (diffInHours > 24 * 7) return Enums_1.ViewType.Weeks;\n if (diffInHours > 24) return Enums_1.ViewType.Days;\n if (diffInHours > 6) return Enums_1.ViewType.SixHours;\n if (diffInHours > 1) return Enums_1.ViewType.Hours;\n return Enums_1.ViewType.TenMinutes;\n };\n\n GanttView.prototype.changeTaskExpanded = function (publicId, expanded) {\n var task = this.getTaskByPublicId(publicId);\n if (task) this.viewModel.changeTaskExpanded(task.internalId, expanded);\n };\n\n GanttView.prototype.expandTask = function (id) {\n this.viewModel.changeTaskExpanded(id, true);\n };\n\n GanttView.prototype.collapseTask = function (id) {\n this.viewModel.changeTaskExpanded(id, false);\n };\n\n GanttView.prototype.showTask = function (id) {\n this.viewModel.changeTaskVisibility(id, true);\n };\n\n GanttView.prototype.hideTask = function (id) {\n this.viewModel.changeTaskVisibility(id, false);\n };\n\n GanttView.prototype.getTaskVisibility = function (id) {\n return this.viewModel.getTaskVisibility(id);\n };\n\n GanttView.prototype.unselectCurrentSelectedTask = function () {\n this.unselectTask(this.currentSelectedTaskID);\n };\n\n GanttView.prototype.getTaskSelected = function (id) {\n return this.viewModel.getTaskSelected(id);\n };\n\n GanttView.prototype.setViewType = function (viewType, autoPositioning) {\n if (autoPositioning === void 0) {\n autoPositioning = true;\n }\n\n if (viewType == undefined) viewType = this.calculateAutoViewType(this.dataRange.start, this.dataRange.end);\n\n if (this.settings.viewType !== viewType) {\n this.settings.viewType = viewType;\n this.updateTickSizeWidth();\n this.resetAndUpdate();\n if (autoPositioning) this.scrollLeftByViewType();\n if (this.ganttOwner.UpdateGanttViewType) this.ganttOwner.UpdateGanttViewType(viewType);\n }\n };\n\n GanttView.prototype.setTaskTitlePosition = function (taskTitlePosition) {\n if (this.settings.taskTitlePosition !== taskTitlePosition) {\n this.settings.taskTitlePosition = taskTitlePosition;\n this.resetAndUpdate();\n }\n };\n\n GanttView.prototype.setShowResources = function (showResources) {\n if (this.settings.showResources !== showResources) {\n this.settings.showResources = showResources;\n this.resetAndUpdate();\n }\n };\n\n GanttView.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {\n if (this.settings.firstDayOfWeek !== firstDayOfWeek) {\n this.settings.firstDayOfWeek = firstDayOfWeek;\n this.resetAndUpdate();\n }\n };\n\n GanttView.prototype.loadOptionsFromGanttOwner = function () {\n var _this = this;\n\n var _a;\n\n this.tickSize.height = this.ganttOwner.getRowHeight();\n var tasksData = this.ganttOwner.getGanttTasksData();\n this.dataRange = new DateRange_1.DateRange(this.getGanttViewStartDate(tasksData), this.getGanttViewEndDate(tasksData));\n if (this.settings.viewType == undefined) this.settings.viewType = this.calculateAutoViewType(this.dataRange.start, this.dataRange.end);\n this.updateTickSizeWidth();\n this.range = this.getDateRange(this.dataRange.start, this.dataRange.end);\n this.dispatcher = new ModelChangesDispatcher_1.ModelChangesDispatcher();\n var modelChangesListener = this.ganttOwner.getModelChangesListener();\n if (modelChangesListener) this.dispatcher.onModelChanged.add(modelChangesListener);\n this.viewModel = new VisualModel_1.ViewVisualModel(this, tasksData, this.ganttOwner.getGanttDependenciesData(), this.ganttOwner.getGanttResourcesData(), this.ganttOwner.getGanttResourceAssignmentsData(), this.range, this.ganttOwner.getGanttWorkTimeRules());\n this.modelManipulator = new ModelManipulator_1.ModelManipulator(this.viewModel, this.dispatcher);\n (_a = this.history) === null || _a === void 0 ? void 0 : _a.historyItems.forEach(function (i) {\n return i.setModelManipulator(_this.modelManipulator);\n });\n };\n\n GanttView.prototype.resetAndUpdate = function () {\n this.reset();\n this.range = this.getDateRange(this.dataRange.start, this.dataRange.end);\n this.viewModel.updateRange(this.range);\n this.setupHelpers();\n this.createTimeScaleAreas();\n this.setSizeForTaskArea();\n if (browser_1.Browser.IE) this.taskEditController.createElements();\n this.updateView();\n };\n\n GanttView.prototype.cleanMarkup = function () {\n this.taskAreaManager.detachEvents();\n this.taskEditController.detachEvents();\n window.removeEventListener(\"resize\", this.onWindowResizelHandler);\n this.clearStripLinesUpdater();\n this.reset();\n };\n\n GanttView.prototype.checkAndProcessModelChanges = function () {\n var tasks = this.ganttOwner.getGanttTasksData();\n var changed = this.viewModel.refreshTaskDataIfRequires(tasks);\n if (changed) this.resetAndUpdate();\n return changed;\n };\n\n GanttView.prototype.updateRowHeights = function (height) {\n if (this.tickSize.height !== height) {\n this.tickSize.height = height;\n var leftPosition = this.taskAreaContainer.scrollLeft;\n this.resetAndUpdate();\n this.taskAreaContainer.scrollLeft = leftPosition;\n }\n };\n\n GanttView.prototype.selectTask = function (id) {\n this.selectDependency(null);\n this.viewModel.changeTaskSelected(id, true);\n this.currentSelectedTaskID = id;\n this.updateBarManager();\n };\n\n GanttView.prototype.unselectTask = function (id) {\n this.viewModel.changeTaskSelected(id, false);\n this.updateBarManager();\n };\n\n GanttView.prototype.selectTaskById = function (publicId) {\n this.unselectCurrentSelectedTask();\n var task = this.getTaskByPublicId(publicId);\n if (task) this.selectTask(task.internalId);\n };\n\n GanttView.prototype.selectDependency = function (id) {\n this.taskEditController.selectDependency(id);\n this.gridLayoutCalculator.createTileToConnectorLinesMap();\n this.recreateConnectorLineElements();\n };\n\n GanttView.prototype.getTaskAreaContainer = function () {\n return this.taskAreaContainer;\n };\n\n GanttView.prototype.setWidth = function (value) {\n this.mainElement.style.width = value + \"px\";\n };\n\n GanttView.prototype.setHeight = function (value) {\n this.mainElement.style.height = value + \"px\";\n };\n\n GanttView.prototype.setAllowSelection = function (value) {\n this.settings.allowSelectTask = value;\n };\n\n GanttView.prototype.setEditingSettings = function (value) {\n this.settings.editing = value;\n this.updateBarManager();\n };\n\n GanttView.prototype.setValidationSettings = function (value) {\n this.settings.validation = value;\n };\n\n GanttView.prototype.setRowLinesVisible = function (value) {\n this.settings.areHorizontalBordersEnabled = value;\n this.prepareTaskAreaContainer();\n this.resetAndUpdate();\n };\n\n GanttView.prototype.setStripLines = function (stripLines) {\n this.settings.stripLines = Settings_1.StripLineSettings.parse(stripLines);\n this.clearStripLinesUpdater();\n this.initializeStripLinesUpdater();\n this.recreateStripLines();\n };\n\n GanttView.prototype.deleteTask = function (key) {\n var task = this.getTaskByPublicId(key.toString());\n if (task) this.commandManager.removeTaskCommand.execute(task.internalId, false, true);\n };\n\n GanttView.prototype.insertTask = function (data) {\n if (data) {\n var parentId = data.parentId != null ? String(data.parentId) : null;\n var parent_1 = this.getTaskByPublicId(parentId);\n var rootId = this.viewModel.getRootTaskId();\n var start = typeof data.start === \"string\" ? new Date(data.start) : data.start;\n var end = typeof data.end === \"string\" ? new Date(data.end) : data.end;\n var taskData = {\n parentId: rootId && parentId === rootId ? parentId : parent_1 === null || parent_1 === void 0 ? void 0 : parent_1.internalId,\n title: data.title,\n start: start,\n end: end,\n progress: parseInt(data.progress) || 0,\n color: data.color\n };\n if (this.commandManager.createTaskCommand.execute(taskData)) return this.getLastInsertedTaskId();\n }\n\n return \"\";\n };\n\n GanttView.prototype.updateTask = function (key, data) {\n var task = this.getTaskByPublicId(key.toString());\n if (task && data) this.commandManager.updateTaskCommand.execute(task.internalId, data);\n };\n\n GanttView.prototype.getTaskData = function (key) {\n var task = this.getTaskByPublicId(key.toString());\n if (task) return this.viewModel.getTaskObjectForDataSource(task);\n };\n\n GanttView.prototype.insertDependency = function (data) {\n if (!data) return;\n var predecessorId = String(data.predecessorId);\n var predecessor = this.getTaskByPublicId(predecessorId);\n var successorId = String(data.successorId);\n var successor = this.getTaskByPublicId(successorId);\n var type = data.type;\n if (predecessor && successor) this.commandManager.createDependencyCommand.execute(predecessor.internalId, successor.internalId, type);\n };\n\n GanttView.prototype.deleteDependency = function (key) {\n var internalKey = this.viewModel.convertPublicToInternalKey(\"dependency\", key);\n if (common_1.isDefined(internalKey)) this.commandManager.removeDependencyCommand.execute(internalKey);\n };\n\n GanttView.prototype.getDependencyData = function (key) {\n return this.viewModel.getDependencyObjectForDataSource(key);\n };\n\n GanttView.prototype.insertResource = function (data, taskKeys) {\n var _this = this;\n\n if (data) {\n var callback = function callback(id) {\n if (common_1.isDefined(taskKeys)) for (var i = 0; i < taskKeys.length; i++) {\n _this.assignResourceToTask(id, taskKeys[i]);\n }\n };\n\n this.commandManager.createResourceCommand.execute(String(data.text), data.color && String(data.color), callback);\n }\n };\n\n GanttView.prototype.deleteResource = function (key) {\n var internalKey = this.viewModel.convertPublicToInternalKey(\"resource\", key);\n if (common_1.isDefined(internalKey)) this.commandManager.removeResourceCommand.execute(internalKey);\n };\n\n GanttView.prototype.assignResourceToTask = function (resourceKey, taskKey) {\n var resourceInternalKey = this.viewModel.convertPublicToInternalKey(\"resource\", resourceKey);\n var taskInternalKey = this.viewModel.convertPublicToInternalKey(\"task\", taskKey);\n if (common_1.isDefined(resourceInternalKey) && common_1.isDefined(taskInternalKey)) this.commandManager.assignResourceCommand.execute(resourceInternalKey, taskInternalKey);\n };\n\n GanttView.prototype.unassignResourceFromTask = function (resourceKey, taskKey) {\n var assignment = this.viewModel.findAssignment(resourceKey, taskKey);\n if (assignment) this.commandManager.deassignResourceCommand.execute(assignment.internalId);\n };\n\n GanttView.prototype.getResourceData = function (key) {\n return this.viewModel.getResourceObjectForDataSource(key);\n };\n\n GanttView.prototype.getResourceAssignmentData = function (key) {\n return this.viewModel.getResourceAssignmentObjectForDataSource(key);\n };\n\n GanttView.prototype.getTaskResources = function (key) {\n var model = this.viewModel;\n var task = model.getItemByPublicId(\"task\", key);\n return task && model.getAssignedResources(task).items;\n };\n\n GanttView.prototype.getVisibleTaskKeys = function () {\n return this.viewModel.getVisibleTasks().map(function (t) {\n return t.id;\n });\n };\n\n GanttView.prototype.getVisibleDependencyKeys = function () {\n return this.viewModel.getVisibleDependencies().map(function (d) {\n return d.id;\n });\n };\n\n GanttView.prototype.getVisibleResourceKeys = function () {\n return this.viewModel.getVisibleResources().map(function (r) {\n return r.id;\n });\n };\n\n GanttView.prototype.getVisibleResourceAssignmentKeys = function () {\n return this.viewModel.getVisibleResourceAssignments().map(function (a) {\n return a.id;\n });\n };\n\n GanttView.prototype.getTasksExpandedState = function () {\n return this.viewModel.getTasksExpandedState();\n };\n\n GanttView.prototype.applyTasksExpandedState = function (state) {\n this.viewModel.applyTasksExpandedState(state);\n };\n\n GanttView.prototype.setTaskValue = function (id, fieldName, newValue) {\n var manager = this.commandManager;\n var task = this.getTaskByPublicId(id);\n\n if (task) {\n if (fieldName === \"title\") {\n var checkedNewValue = newValue ? newValue : \"\";\n return manager.changeTaskTitleCommand.execute(task.internalId, checkedNewValue);\n }\n\n if (fieldName === \"progress\") {\n var newProgress = Math.max(newValue, 0);\n newProgress = Math.min(newValue, 100);\n return manager.changeTaskProgressCommand.execute(task.internalId, newProgress);\n }\n\n if (fieldName === \"start\") return manager.changeTaskStartCommand.execute(task.internalId, DateTimeUtils_1.DateTimeUtils.getMinDate(newValue, task.end));\n if (fieldName === \"end\") return manager.changeTaskEndCommand.execute(task.internalId, DateTimeUtils_1.DateTimeUtils.getMaxDate(newValue, task.start));\n }\n\n return false;\n };\n\n GanttView.prototype.getLastInsertedTaskId = function () {\n var createTaskItems = this.history.historyItems.filter(function (i) {\n return i instanceof TaskHistoryItem_1.CreateTaskHistoryItem;\n });\n var lastItem = createTaskItems[createTaskItems.length - 1];\n return lastItem && lastItem.taskId;\n };\n\n GanttView.prototype.getLastInsertedResource = function () {\n var createTaskItems = this.history.historyItems.filter(function (i) {\n return i instanceof ResourceHistoryItem_1.CreateResourceHistoryItem;\n });\n var lastItem = createTaskItems[createTaskItems.length - 1];\n return lastItem && lastItem.resource;\n };\n\n GanttView.prototype.getTaskByPublicId = function (id) {\n return this.viewModel.tasks.getItemByPublicId(id);\n };\n\n GanttView.prototype.getPrevTask = function (taskId) {\n var item = this.viewModel.findItem(taskId);\n var parent = item.parent || this.viewModel.root;\n var index = parent.children.indexOf(item) - 1;\n return index > -1 ? item.parent.children[index].task : item.parent.task;\n };\n\n GanttView.prototype.updateCreatedTaskIdAfterServerUpdate = function (internalId, id) {\n var item = this.viewModel.findItem(internalId);\n var task = item && item.task;\n if (task) task.id = id;\n };\n\n GanttView.prototype.getTaskIdByInternalId = function (internalId) {\n var item = this.viewModel.findItem(internalId);\n var task = item && item.task;\n return task ? task.id : null;\n };\n\n GanttView.prototype.isTaskHasChildren = function (taskId) {\n var item = this.viewModel.findItem(taskId);\n return item && item.children.length > 0;\n };\n\n GanttView.prototype.requireFirstLoadParentAutoCalc = function () {\n var owner = this.ganttOwner;\n return owner.getRequireFirstLoadParentAutoCalc && owner.getRequireFirstLoadParentAutoCalc();\n };\n\n GanttView.prototype.updateOwnerInAutoParentMode = function () {\n if (this.viewModel.parentAutoCalc) this.dispatcher.notifyParentDataRecalculated(this.viewModel.getCurrentTaskData());\n };\n\n GanttView.prototype.getOwnerControlMainElement = function () {\n var owner = this.ganttOwner;\n return owner.getMainElement && owner.getMainElement();\n };\n\n GanttView.prototype.adjustOwnerControl = function () {\n var owner = this.ganttOwner;\n if (owner.adjustControl) owner.adjustControl();\n };\n\n GanttView.prototype.onBrowserWindowResize = function () {\n if (this.fullScreenModeHelper.isInFullScreenMode) this.fullScreenModeHelper.adjustControlInFullScreenMode();else this.adjustOwnerControl();\n };\n\n GanttView.prototype.applySettings = function (settings, preventViewUpdate) {\n if (preventViewUpdate === void 0) {\n preventViewUpdate = false;\n }\n\n var ganttSettings = Settings_1.Settings.parse(settings);\n var preventUpdate = preventViewUpdate || this.settings.equal(ganttSettings);\n this.settings = ganttSettings;\n if (!preventUpdate) this.resetAndUpdate();\n };\n\n GanttView.prototype.getDataUpdateErrorCallback = function () {\n var _this = this;\n\n var history = this.history;\n var currentHistoryItemInfo = history.getCurrentProcessingItemInfo();\n return function () {\n _this.dispatcher.lock();\n\n history.rollBackAndRemove(currentHistoryItemInfo);\n\n _this.dispatcher.unlock();\n\n _this.updateBarManager();\n };\n };\n\n GanttView.prototype.setTaskTooltipContentTemplate = function (taskTooltipContentTemplate) {\n this.settings.taskTooltipContentTemplate = taskTooltipContentTemplate;\n };\n\n GanttView.prototype.updateBarManager = function () {\n this.barManager.updateItemsState([]);\n };\n\n GanttView.prototype.onTaskClick = function (key, evt) {\n if (!this.ganttOwner.onTaskClick) return true;\n return this.ganttOwner.onTaskClick(key, evt);\n };\n\n GanttView.prototype.onTaskDblClick = function (key, evt) {\n if (!this.ganttOwner.onTaskDblClick) return true;\n return this.ganttOwner.onTaskDblClick(key, evt);\n };\n\n GanttView.prototype.getDateFormat = function (date) {\n return this.ganttOwner.getFormattedDateText ? this.ganttOwner.getFormattedDateText(date) : this.getDefaultDateFormat(date);\n };\n\n GanttView.prototype.getDefaultDateFormat = function (date) {\n return (\"0\" + date.getDate()).slice(-2) + \"/\" + (\"0\" + (date.getMonth() + 1)).slice(-2) + \"/\" + date.getFullYear() + \" \" + (\"0\" + date.getHours()).slice(-2) + \":\" + (\"0\" + date.getMinutes()).slice(-2);\n };\n\n GanttView.prototype.destroyTemplate = function (container) {\n this.ganttOwner.destroyTemplate ? this.ganttOwner.destroyTemplate(container) : container.innerHTML = \"\";\n };\n\n GanttView.cachedPrefix = \"cached_\";\n GanttView.taskAreaScrollTopKey = GanttView.cachedPrefix + \"taskAreaScrollTop\";\n GanttView.taskAreaScrollLeftKey = GanttView.cachedPrefix + \"taskAreaScrollLeft\";\n GanttView.taskTextHeightKey = GanttView.cachedPrefix + \"taskTextHeight\";\n return GanttView;\n }();\n\n exports.GanttView = GanttView;\n /***/\n },\n /* 56 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ViewVisualModel = void 0;\n\n var ResourceCollection_1 = __webpack_require__(26);\n\n var TaskCollection_1 = __webpack_require__(62);\n\n var DependencyCollection_1 = __webpack_require__(64);\n\n var ResourceAssignmentCollection_1 = __webpack_require__(65);\n\n var ViewVisualModelItem_1 = __webpack_require__(66);\n\n var ViewVisualModelDependencyInfo_1 = __webpack_require__(67);\n\n var WorkingTimeCalculator_1 = __webpack_require__(68);\n\n var common_1 = __webpack_require__(1);\n\n var Dependency_1 = __webpack_require__(11);\n\n var Resource_1 = __webpack_require__(33);\n\n var ResourceAssignment_1 = __webpack_require__(36);\n\n var ViewVisualModel = function () {\n function ViewVisualModel(owner, tasks, dependencies, resources, assignments, dateRange, workTimeRules) {\n this._fLockCount = 0;\n this.lockChangesProcessing = false;\n this.owner = owner;\n this.tasks = new TaskCollection_1.TaskCollection();\n this.tasks.importFromObject(tasks);\n this.dependencies = new DependencyCollection_1.DependencyCollection();\n this.dependencies.importFromObject(dependencies);\n this.resources = new ResourceCollection_1.ResourceCollection();\n this.resources.importFromObject(resources);\n this.assignments = new ResourceAssignmentCollection_1.ResourceAssignmentCollection();\n this.assignments.importFromObject(assignments);\n this._itemList = new Array();\n this._viewItemList = new Array();\n this._workTimeCalculator = new WorkingTimeCalculator_1.WorkingTimeCalculator(dateRange, workTimeRules);\n this.updateModel();\n }\n\n ViewVisualModel.prototype.updateModel = function () {\n this._itemList.splice(0, this._itemList.length);\n\n var tasks = this.tasks.items;\n\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n if (task) this._itemList.push(new ViewVisualModelItem_1.ViewVisualModelItem(task, this.getAssignedResources(task)));\n }\n\n this.createHierarchy();\n this.populateItemsForView();\n if (this.owner && this.owner.currentSelectedTaskID) this.changeTaskSelected(this.owner.currentSelectedTaskID, true);\n };\n\n ViewVisualModel.prototype.createHierarchy = function () {\n var _this = this;\n\n this.root = new ViewVisualModelItem_1.ViewVisualModelItem(null, null);\n var list = this._itemList;\n var inverted = list.reduce(function (previous, item) {\n var _a;\n\n var key = (_a = item.task) === null || _a === void 0 ? void 0 : _a.internalId;\n if (common_1.isDefined(key)) previous[key] = item;\n return previous;\n }, {});\n var recalculateParentRequired = this.requireFirstLoadParentAutoCalc;\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var parentId = item.task.parentId;\n var parentItem = inverted[parentId] || this.root;\n item.parent = parentItem;\n parentItem.addChild(item);\n if (recalculateParentRequired) this.owner.validationController.recalculateParents(item, function (data) {\n if (!common_1.isDefined(data.id)) return;\n\n var task = _this.tasks.getItemById(data.id);\n\n if (common_1.isDefined(data.start)) task.start = data.start;\n if (common_1.isDefined(data.end)) task.end = data.end;\n if (common_1.isDefined(data.progress)) task.progress = data.progress;\n });\n }\n\n if (recalculateParentRequired) this.owner.dispatcher.notifyParentDataRecalculated(this.getCurrentTaskData());\n };\n\n ViewVisualModel.prototype.getCurrentTaskData = function () {\n var _this = this;\n\n return this.tasks.items.map(function (t) {\n return _this.getTaskObjectForDataSource(t);\n });\n };\n\n ViewVisualModel.prototype.getTaskObjectForDataSource = function (task) {\n var parentTask = task.parentId && this.tasks.getItemById(task.parentId);\n var rootId = this.getRootTaskId();\n var parentId = rootId && task.parentId === rootId ? task.parentId : parentTask === null || parentTask === void 0 ? void 0 : parentTask.id;\n var taskObject = {\n id: task.id,\n start: task.start,\n end: task.end,\n duration: task.duration,\n description: task.description,\n parentId: parentId,\n progress: task.progress,\n color: task.color,\n taskType: task.taskType,\n title: task.title,\n customFields: task.customFields,\n expanded: task.expanded\n };\n return taskObject;\n };\n\n ViewVisualModel.prototype.getDependencyObjectForDataSource = function (key) {\n var dependency = key instanceof Dependency_1.Dependency ? key : this.getItemByPublicId(\"dependency\", key);\n\n if (dependency) {\n var predecessorId = this.convertInternalToPublicKey(\"task\", dependency.predecessorId);\n var successorId = this.convertInternalToPublicKey(\"task\", dependency.successorId);\n return {\n id: dependency.id,\n predecessorId: common_1.isDefined(predecessorId) ? predecessorId : dependency.predecessorId,\n successorId: common_1.isDefined(successorId) ? successorId : dependency.successorId,\n type: dependency.type\n };\n }\n\n return null;\n };\n\n ViewVisualModel.prototype.getResourceObjectForDataSource = function (key) {\n var resource = key instanceof Resource_1.Resource ? key : this.getItemByPublicId(\"resource\", key);\n if (resource) return {\n id: resource.id,\n text: resource.text,\n color: resource.color\n };\n return null;\n };\n\n ViewVisualModel.prototype.getResourceAssignmentObjectForDataSource = function (key) {\n var assignment = key instanceof ResourceAssignment_1.ResourceAssignment ? key : this.getItemByPublicId(\"assignment\", key);\n\n if (assignment) {\n var taskId = this.convertInternalToPublicKey(\"task\", assignment.taskId);\n var resourceId = this.convertInternalToPublicKey(\"resource\", assignment.resourceId);\n return {\n id: assignment.id,\n taskId: common_1.isDefined(taskId) ? taskId : assignment.taskId,\n resourceId: common_1.isDefined(resourceId) ? resourceId : assignment.resourceId\n };\n }\n\n return null;\n };\n\n ViewVisualModel.prototype.populateItemsForView = function () {\n this._viewItemList.splice(0, this._viewItemList.length);\n\n this.populateVisibleItems(this.root);\n this.updateVisibleItemDependencies();\n };\n\n ViewVisualModel.prototype.populateVisibleItems = function (item) {\n var _this = this;\n\n var isRoot = item === this.root;\n if (!item || !item.task && !isRoot) return;\n\n if (!isRoot) {\n this._viewItemList.push(item);\n\n item.visibleIndex = this._viewItemList.length - 1;\n }\n\n if (item.getExpanded() || item === this.root) item.children.forEach(function (n) {\n return _this.populateVisibleItems(n);\n });\n };\n\n ViewVisualModel.prototype.updateVisibleItemDependencies = function () {\n var list = this._viewItemList;\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var visibleDependencies = this.getTasVisibleDependencies(item.task);\n item.setDependencies(visibleDependencies);\n }\n };\n\n ViewVisualModel.prototype.getAssignedResources = function (task) {\n var _this = this;\n\n var res = new ResourceCollection_1.ResourceCollection();\n var assignments = this.assignments.items.filter(function (value) {\n return value.taskId == task.internalId;\n });\n assignments.forEach(function (assignment) {\n res.add(_this.resources.getItemById(assignment.resourceId));\n });\n return res;\n };\n\n ViewVisualModel.prototype.getTasVisibleDependencies = function (task) {\n var res = new Array();\n var id = task.internalId;\n var dependencies = this.dependencies.items.filter(function (value) {\n return value.successorId == id;\n });\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n var item = this.findItem(dependency.predecessorId);\n if (item && item.getVisible()) res.push(new ViewVisualModelDependencyInfo_1.ViewVisualModelDependencyInfo(dependency.internalId, item, dependency.type));\n }\n\n return res;\n };\n\n ViewVisualModel.prototype.changeTaskExpanded = function (id, expanded) {\n var task = this.tasks.getItemById(String(id));\n\n if (task) {\n task.expanded = expanded;\n this.changed();\n }\n };\n\n ViewVisualModel.prototype.changeTaskVisibility = function (id, visible) {\n var item = this.findItem(id);\n\n if (item) {\n item.visible = visible;\n this.changed();\n }\n };\n\n ViewVisualModel.prototype.changeTaskSelected = function (id, selected) {\n var item = this._itemList.filter(function (value) {\n return value.task && value.task.internalId === id;\n })[0];\n\n if (item) {\n item.selected = selected;\n var viewItem = this.findItem(id);\n var taskIndex = viewItem && viewItem.visibleIndex;\n if (taskIndex > -1) this.owner.recreateTaskElement(taskIndex);\n }\n };\n\n ViewVisualModel.prototype.beginUpdate = function () {\n this._fLockCount++;\n };\n\n ViewVisualModel.prototype.endUpdate = function () {\n this._fLockCount--;\n if (this._fLockCount == 0) this.changed();\n };\n\n ViewVisualModel.prototype.compareTaskOrder = function (taskModel) {\n var newTasks = new TaskCollection_1.TaskCollection();\n newTasks.importFromObject(taskModel);\n var newItems = newTasks.items;\n var oldItems = this.tasks.items;\n if (newItems.length !== oldItems.length) return false;\n\n for (var i = 0; i < newItems.length; i++) {\n var newTask = newItems[i];\n var oldTask = oldItems[i];\n if (newTask.id !== oldTask.id) return false;\n }\n\n return true;\n };\n\n ViewVisualModel.prototype.refreshTaskDataIfRequires = function (tasks) {\n var changed = !this.lockChangesProcessing && !this.compareTaskOrder(tasks);\n\n if (changed) {\n var hash = this.saveTaskInternalIds();\n this.tasks.importFromObject(tasks);\n this.restoreTaskInternalIds(hash);\n this.updateModel();\n }\n\n return changed;\n };\n\n ViewVisualModel.prototype.saveTaskInternalIds = function () {\n var hash = {};\n this.tasks.items.map(function (t) {\n return hash[t.id] = t.internalId;\n });\n return hash;\n };\n\n ViewVisualModel.prototype.restoreTaskInternalIds = function (hash) {\n for (var id in hash) {\n if (!Object.prototype.hasOwnProperty.call(hash, id)) continue;\n var task = this.tasks.getItemByPublicId(id);\n if (task) task.internalId = hash[id];\n }\n };\n\n ViewVisualModel.prototype.getTasksExpandedState = function () {\n var items = this.tasks.items;\n var state = {};\n items.forEach(function (t) {\n return state[t.id] = t.expanded;\n });\n return state;\n };\n\n ViewVisualModel.prototype.applyTasksExpandedState = function (state) {\n if (!state) return;\n this.beginUpdate();\n\n for (var key in state) {\n if (Object.prototype.hasOwnProperty.call(state, key)) this.changeTaskExpanded(key, state[key]);\n }\n\n this.endUpdate();\n };\n\n ViewVisualModel.prototype.changed = function () {\n if (this._fLockCount !== 0) return;\n this.populateItemsForView();\n if (this.owner && this.owner.onVisualModelChanged) this.owner.onVisualModelChanged();\n };\n\n ViewVisualModel.prototype.findItem = function (taskId) {\n return this._viewItemList.filter(function (value) {\n return value.task && value.task.internalId === taskId;\n })[0];\n };\n\n Object.defineProperty(ViewVisualModel.prototype, \"items\", {\n get: function get() {\n return this._viewItemList;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewVisualModel.prototype, \"itemCount\", {\n get: function get() {\n return this.items.length;\n },\n enumerable: false,\n configurable: true\n });\n\n ViewVisualModel.prototype.getTaskVisibility = function (id) {\n var item = this.findItem(id);\n return !!item && item.getVisible();\n };\n\n ViewVisualModel.prototype.getTaskSelected = function (id) {\n var item = this.findItem(id);\n return !!item && item.selected;\n };\n\n Object.defineProperty(ViewVisualModel.prototype, \"noWorkingIntervals\", {\n get: function get() {\n return this._workTimeCalculator.noWorkingIntervals;\n },\n enumerable: false,\n configurable: true\n });\n\n ViewVisualModel.prototype.updateRange = function (range) {\n this._workTimeCalculator.updateRange(range);\n };\n\n ViewVisualModel.prototype.taskHasChildrenByIndex = function (index) {\n return this._viewItemList[index].children.length > 0;\n };\n\n ViewVisualModel.prototype.taskHasChildren = function (id) {\n var item = this.findItem(id);\n return item && item.children.length > 0;\n };\n\n Object.defineProperty(ViewVisualModel.prototype, \"parentAutoCalc\", {\n get: function get() {\n var settings = this.owner && this.owner.settings;\n return settings && settings.validation && settings.validation.autoUpdateParentTasks;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewVisualModel.prototype, \"enablePredecessorGap\", {\n get: function get() {\n var settings = this.owner && this.owner.settings;\n return settings && settings.validation && settings.validation.enablePredecessorGap;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewVisualModel.prototype, \"requireFirstLoadParentAutoCalc\", {\n get: function get() {\n return this.parentAutoCalc && this.owner.requireFirstLoadParentAutoCalc();\n },\n enumerable: false,\n configurable: true\n });\n\n ViewVisualModel.prototype.isTaskToCalculateByChildren = function (id) {\n return this.parentAutoCalc && this.taskHasChildren(id);\n };\n\n ViewVisualModel.prototype.hasTasks = function () {\n return this.tasks.length > 0;\n };\n\n ViewVisualModel.prototype.getDataUpdateErrorCallback = function () {\n return this.owner.getDataUpdateErrorCallback && this.owner.getDataUpdateErrorCallback();\n };\n\n ViewVisualModel.prototype.convertPublicToInternalKey = function (dataType, publicKey) {\n var item = this.getItemByPublicId(dataType, publicKey);\n return item && item.internalId;\n };\n\n ViewVisualModel.prototype.convertInternalToPublicKey = function (dataType, internalId) {\n var item = this.getItemByInternalId(dataType, internalId);\n return item && item.id;\n };\n\n ViewVisualModel.prototype.getItemByPublicId = function (dataType, publicKey) {\n var strKey = publicKey.toString();\n\n switch (dataType) {\n case \"task\":\n return this.tasks.getItemByPublicId(strKey);\n\n case \"dependency\":\n return this.dependencies.getItemByPublicId(strKey);\n\n case \"resource\":\n return this.resources.getItemByPublicId(strKey);\n\n case \"assignment\":\n return this.assignments.getItemByPublicId(strKey);\n }\n\n return null;\n };\n\n ViewVisualModel.prototype.getItemByInternalId = function (dataType, internalId) {\n switch (dataType) {\n case \"task\":\n return this.tasks.getItemById(internalId);\n\n case \"dependency\":\n return this.dependencies.getItemById(internalId);\n\n case \"resource\":\n return this.resources.getItemById(internalId);\n\n case \"assignment\":\n return this.assignments.getItemById(internalId);\n }\n\n return null;\n };\n\n ViewVisualModel.prototype.findAssignment = function (resourceKey, taskKey) {\n var resourceInternalKey = this.convertPublicToInternalKey(\"resource\", resourceKey);\n var taskInternalKey = this.convertPublicToInternalKey(\"task\", taskKey);\n return this.assignments.items.filter(function (val) {\n return val.resourceId === resourceInternalKey && val.taskId === taskInternalKey;\n })[0];\n };\n\n ViewVisualModel.prototype.getVisibleTasks = function () {\n var _this = this;\n\n return this.tasks.items.filter(function (t) {\n return t && _this.getTaskVisibility(t.internalId) && t.isValid();\n });\n };\n\n ViewVisualModel.prototype.getVisibleDependencies = function () {\n var visibleTasksKeys = this.getVisibleTasks().map(function (t) {\n return t.internalId;\n });\n return this.dependencies.items.filter(function (d) {\n return d && visibleTasksKeys.indexOf(d.successorId) > -1 && visibleTasksKeys.indexOf(d.predecessorId) > -1;\n });\n };\n\n ViewVisualModel.prototype.getVisibleResourceAssignments = function () {\n var visibleTasksKeys = this.getVisibleTasks().map(function (t) {\n return t.internalId;\n });\n return this.assignments.items.filter(function (a) {\n return a && visibleTasksKeys.indexOf(a.taskId) > -1;\n });\n };\n\n ViewVisualModel.prototype.getVisibleResources = function () {\n var visibleResources = [];\n var visibleAssignments = this.getVisibleResourceAssignments();\n\n for (var i = 0; i < visibleAssignments.length; i++) {\n var resource = this.getItemByInternalId(\"resource\", visibleAssignments[i].resourceId);\n if (resource && visibleResources.indexOf(resource) === -1) visibleResources.push(resource);\n }\n\n return visibleResources;\n };\n\n ViewVisualModel.prototype.getRootTaskId = function () {\n var _a;\n\n (_a = this.rootTaskId) !== null && _a !== void 0 ? _a : this.rootTaskId = this.calculateRootTaskId();\n return this.rootTaskId;\n };\n\n ViewVisualModel.prototype.calculateRootTaskId = function () {\n var item = this.items[0];\n if (!item) return null;\n\n while (item.parent && item.task) {\n item = item.parent;\n }\n\n return item.children[0].task.parentId;\n };\n\n return ViewVisualModel;\n }();\n\n exports.ViewVisualModel = ViewVisualModel;\n /***/\n },\n /* 57 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GanttJsonUtils = void 0;\n\n var json_1 = __webpack_require__(58);\n\n var GanttJsonUtils = function () {\n function GanttJsonUtils() {}\n\n GanttJsonUtils.parseJson = function (json) {\n return json_1.JsonUtils.isValid(json) ? JSON.parse(json) : null;\n };\n\n return GanttJsonUtils;\n }();\n\n exports.GanttJsonUtils = GanttJsonUtils;\n /***/\n },\n /* 58 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var JsonUtils = function () {\n function JsonUtils() {}\n\n JsonUtils.isValid = function (json) {\n return !/[^,:{}[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/.test(json.replace(/\"(\\\\.|[^\"\\\\])*\"/g, ''));\n };\n\n return JsonUtils;\n }();\n\n exports.JsonUtils = JsonUtils;\n /***/\n },\n /* 59 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var min_max_1 = __webpack_require__(60);\n\n var comparers_1 = __webpack_require__(61);\n\n var ListUtils = function () {\n function ListUtils() {}\n\n ListUtils.remove = function (list, element) {\n var index = list.indexOf(element, 0);\n if (index >= 0) list.splice(index, 1);\n };\n\n ListUtils.removeBy = function (list, callback) {\n var len = list.length;\n\n for (var index = 0; index < len; index++) {\n if (callback(list[index], index)) return list.splice(index, 1)[0];\n }\n\n return null;\n };\n\n ListUtils.shallowCopy = function (list) {\n return list.slice();\n };\n\n ListUtils.deepCopy = function (list) {\n return ListUtils.map(list, function (val) {\n return val.clone();\n });\n };\n\n ListUtils.initByValue = function (numElements, initValue) {\n var result = [];\n\n for (; numElements > 0; numElements--) {\n result.push(initValue);\n }\n\n return result;\n };\n\n ListUtils.initByCallback = function (numElements, initCallback) {\n var result = [];\n\n for (var index = 0; index < numElements; index++) {\n result.push(initCallback(index));\n }\n\n return result;\n };\n\n ListUtils.forEachOnInterval = function (interval, callback) {\n var end = interval.end;\n\n for (var index = interval.start; index < end; index++) {\n callback(index);\n }\n };\n\n ListUtils.reverseForEachOnInterval = function (interval, callback) {\n var start = interval.start;\n\n for (var index = interval.end - 1; index >= start; index--) {\n callback(index);\n }\n };\n\n ListUtils.reducedMap = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var result = [];\n\n for (var index = startIndex; index < endIndex; index++) {\n var newItem = callback(list[index], index);\n if (newItem !== null) result.push(newItem);\n }\n\n return result;\n };\n\n ListUtils.filter = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var result = [];\n\n for (var index = startIndex; index < endIndex; index++) {\n var item = list[index];\n if (callback(item, index)) result.push(item);\n }\n\n return result;\n };\n\n ListUtils.map = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var result = [];\n\n for (var index = startIndex; index < endIndex; index++) {\n result.push(callback(list[index], index));\n }\n\n return result;\n };\n\n ListUtils.indexBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var ind = startIndex; ind < endIndex; ind++) {\n if (callback(list[ind], ind)) return ind;\n }\n\n return -1;\n };\n\n ListUtils.reverseIndexBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var ind = startIndex; ind >= endIndex; ind--) {\n if (callback(list[ind], ind)) return ind;\n }\n\n return -1;\n };\n\n ListUtils.elementBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var ind = ListUtils.indexBy(list, callback, startIndex, endIndex);\n return ind < 0 ? null : list[ind];\n };\n\n ListUtils.reverseElementBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n var ind = ListUtils.reverseIndexBy(list, callback, startIndex, endIndex);\n return ind < 0 ? null : list[ind];\n };\n\n ListUtils.last = function (list) {\n return list[list.length - 1];\n };\n\n ListUtils.setLast = function (list, newVal) {\n return list[list.length - 1] = newVal;\n };\n\n ListUtils.incLast = function (list) {\n return ++list[list.length - 1];\n };\n\n ListUtils.decLast = function (list) {\n return --list[list.length - 1];\n };\n\n ListUtils.equals = function (a, b) {\n return a.length === b.length && ListUtils.allOf2(a, b, function (a, b) {\n return a.equals(b);\n });\n };\n\n ListUtils.equalsByReference = function (a, b) {\n var aLen = a.length;\n var bLen = a.length;\n if (aLen !== bLen) return false;\n\n for (var i = 0; i < aLen; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n };\n\n ListUtils.unique = function (list, cmp, equal, finalizeObj) {\n if (equal === void 0) {\n equal = cmp;\n }\n\n if (finalizeObj === void 0) {\n finalizeObj = function finalizeObj() {};\n }\n\n var len = list.length;\n if (len === 0) return [];\n list = list.sort(cmp);\n var prevValue = list[0];\n var result = ListUtils.reducedMap(list, function (v) {\n if (equal(prevValue, v) !== 0) {\n prevValue = v;\n return v;\n }\n\n finalizeObj(v);\n return null;\n }, 1, len);\n result.unshift(list[0]);\n return result;\n };\n\n ListUtils.uniqueNumber = function (list) {\n list = list.sort(comparers_1.Comparers.number);\n var prevValue = Number.NaN;\n\n for (var i = list.length - 1; i >= 0; i--) {\n if (prevValue === list[i]) list.splice(i, 1);else prevValue = list[i];\n }\n\n return list;\n };\n\n ListUtils.forEach = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n callback(list[index], index);\n }\n };\n\n ListUtils.forEach2 = function (listA, listB, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = listA.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n callback(listA[index], listB[index], index);\n }\n };\n\n ListUtils.reverseForEach = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n callback(list[index], index);\n }\n };\n\n ListUtils.reverseIndexOf = function (list, element, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n if (list[index] === element) return index;\n }\n\n return -1;\n };\n\n ListUtils.accumulate = function (list, initAccValue, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var acc = initAccValue;\n\n for (var ind = startIndex; ind < endIndex; ind++) {\n acc = callback(acc, list[ind], ind);\n }\n\n return acc;\n };\n\n ListUtils.accumulateNumber = function (list, callback, initAccValue, startIndex, endIndex) {\n if (initAccValue === void 0) {\n initAccValue = 0;\n }\n\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var acc = initAccValue;\n\n for (var ind = startIndex; ind < endIndex; ind++) {\n acc += callback(list[ind], ind, acc);\n }\n\n return acc;\n };\n\n ListUtils.anyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (callback(list[index], index)) return true;\n }\n\n return false;\n };\n\n ListUtils.unsafeAnyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n var currResult = callback(list[index], index);\n if (currResult) return currResult;\n }\n\n return null;\n };\n\n ListUtils.reverseAnyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n if (callback(list[index], index)) return true;\n }\n\n return false;\n };\n\n ListUtils.unsafeReverseAnyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n var currResult = callback(list[index], index);\n if (currResult) return currResult;\n }\n\n return null;\n };\n\n ListUtils.anyOf2 = function (listA, listB, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = listA.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (callback(listA[index], listB[index], index)) return true;\n }\n\n return false;\n };\n\n ListUtils.allOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (!callback(list[index], index)) return false;\n }\n\n return true;\n };\n\n ListUtils.allOf2 = function (listA, listB, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = listA.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (!callback(listA[index], listB[index], index)) return false;\n }\n\n return true;\n };\n\n ListUtils.allOfOnInterval = function (interval, callback) {\n var endIndex = interval.end;\n\n for (var index = interval.start; index < endIndex; index++) {\n if (!callback(index)) return false;\n }\n\n return true;\n };\n\n ListUtils.addListOnTail = function (resultList, addedList) {\n for (var i = 0, elem = void 0; elem = addedList[i]; i++) {\n resultList.push(elem);\n }\n\n return resultList;\n };\n\n ListUtils.joinLists = function (converter) {\n var lists = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n lists[_i - 1] = arguments[_i];\n }\n\n return ListUtils.accumulate(lists, [], function (accList, list) {\n ListUtils.addListOnTail(accList, converter(list));\n return accList;\n });\n };\n\n ListUtils.push = function (list, element) {\n list.push(element);\n return list;\n };\n\n ListUtils.countIf = function (list, callback) {\n return ListUtils.accumulateNumber(list, function (elem, ind) {\n return callback(elem, ind) ? 1 : 0;\n });\n };\n\n ListUtils.clear = function (list) {\n list.splice(0);\n };\n\n ListUtils.merge = function (list, cmp, shouldMerge, merge, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n list = list.slice(startIndex, endIndex);\n if (endIndex - startIndex < 2) return list;\n list = list.sort(cmp);\n var prevObj = list[startIndex];\n var result = [prevObj];\n\n for (var ind = startIndex + 1; ind < endIndex; ind++) {\n var obj = list[ind];\n if (shouldMerge(prevObj, obj)) merge(prevObj, obj);else {\n prevObj = obj;\n result.push(prevObj);\n }\n }\n\n return result;\n };\n\n ListUtils.min = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var res = ListUtils.minExtended(list, getValue, startIndex, endIndex);\n return res ? res.minElement : null;\n };\n\n ListUtils.max = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var res = ListUtils.maxExtended(list, getValue, startIndex, endIndex);\n return res ? res.maxElement : null;\n };\n\n ListUtils.minMax = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var res = ListUtils.minMaxExtended(list, getValue, startIndex, endIndex);\n return res ? new min_max_1.MinMax(res.minElement, res.maxElement) : null;\n };\n\n ListUtils.minExtended = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var minElement = list[startIndex];\n var minValue = getValue(minElement);\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var elemValue = getValue(elem);\n\n if (elemValue < minValue) {\n minValue = elemValue;\n minElement = elem;\n }\n }\n\n return new min_max_1.ExtendedMin(minElement, minValue);\n };\n\n ListUtils.maxExtended = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var maxElement = list[startIndex];\n var maxValue = getValue(maxElement);\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var elemValue = getValue(elem);\n\n if (elemValue > maxValue) {\n maxValue = elemValue;\n maxElement = elem;\n }\n }\n\n return new min_max_1.ExtendedMax(maxElement, maxValue);\n };\n\n ListUtils.minMaxExtended = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var minElement = list[startIndex];\n var maxElement = minElement;\n var minValue = getValue(minElement);\n var maxValue = minValue;\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var elemValue = getValue(elem);\n\n if (elemValue < minValue) {\n minValue = elemValue;\n minElement = elem;\n } else if (elemValue > maxValue) {\n maxValue = elemValue;\n maxElement = elem;\n }\n }\n\n return new min_max_1.ExtendedMinMax(minElement, minValue, maxElement, maxValue);\n };\n\n ListUtils.minByCmp = function (list, cmp, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var found = list[startIndex];\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n if (cmp(elem, found) < 0) found = elem;\n }\n\n return found;\n };\n\n ListUtils.maxByCmp = function (list, cmp, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var found = list[startIndex];\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n if (cmp(elem, found) > 0) found = elem;\n }\n\n return found;\n };\n\n ListUtils.minMaxByCmp = function (list, cmp, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var min = list[startIndex];\n var max = min;\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var res = cmp(elem, min);\n if (res > 0) max = elem;else if (res < 0) min = elem;\n }\n\n return new min_max_1.MinMax(min, max);\n };\n\n return ListUtils;\n }();\n\n exports.ListUtils = ListUtils;\n /***/\n },\n /* 60 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var tslib_1 = __webpack_require__(35);\n\n var MinMax = function () {\n function MinMax(minElement, maxElement) {\n this.minElement = minElement;\n this.maxElement = maxElement;\n }\n\n return MinMax;\n }();\n\n exports.MinMax = MinMax;\n\n var MinMaxNumber = function (_super) {\n tslib_1.__extends(MinMaxNumber, _super);\n\n function MinMaxNumber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(MinMaxNumber.prototype, \"length\", {\n get: function get() {\n return this.maxElement - this.minElement;\n },\n enumerable: true,\n configurable: true\n });\n return MinMaxNumber;\n }(MinMax);\n\n exports.MinMaxNumber = MinMaxNumber;\n\n var ExtendedMin = function () {\n function ExtendedMin(minElement, minValue) {\n this.minElement = minElement;\n this.minValue = minValue;\n }\n\n return ExtendedMin;\n }();\n\n exports.ExtendedMin = ExtendedMin;\n\n var ExtendedMax = function () {\n function ExtendedMax(maxElement, maxValue) {\n this.maxElement = maxElement;\n this.maxValue = maxValue;\n }\n\n return ExtendedMax;\n }();\n\n exports.ExtendedMax = ExtendedMax;\n\n var ExtendedMinMax = function (_super) {\n tslib_1.__extends(ExtendedMinMax, _super);\n\n function ExtendedMinMax(minElement, minValue, maxElement, maxValue) {\n var _this = _super.call(this, minElement, maxElement) || this;\n\n _this.minValue = minValue;\n _this.maxValue = maxValue;\n return _this;\n }\n\n return ExtendedMinMax;\n }(MinMax);\n\n exports.ExtendedMinMax = ExtendedMinMax;\n /***/\n },\n /* 61 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Comparers = function () {\n function Comparers() {}\n\n Comparers.number = function (a, b) {\n return a - b;\n };\n\n Comparers.string = function (a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n };\n\n Comparers.stringIgnoreCase = function (a, b) {\n a = a.toLowerCase();\n b = b.toLowerCase();\n return a === b ? 0 : a > b ? 1 : -1;\n };\n\n return Comparers;\n }();\n\n exports.Comparers = Comparers;\n\n var Equals = function () {\n function Equals() {}\n\n Equals.simpleType = function (a, b) {\n return a === b;\n };\n\n Equals.object = function (a, b) {\n return a && b && (a === b || a.equals(b));\n };\n\n return Equals;\n }();\n\n exports.Equals = Equals;\n /***/\n },\n /* 62 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskCollection = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var Task_1 = __webpack_require__(63);\n\n var CollectionBase_1 = __webpack_require__(13);\n\n var TaskCollection = function (_super) {\n tslib_1.__extends(TaskCollection, _super);\n\n function TaskCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskCollection.prototype.createItem = function () {\n return new Task_1.Task();\n };\n\n return TaskCollection;\n }(CollectionBase_1.CollectionBase);\n\n exports.TaskCollection = TaskCollection;\n /***/\n },\n /* 63 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Task = exports.TaskType = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var common_1 = __webpack_require__(1);\n\n var DataObject_1 = __webpack_require__(10);\n\n var TaskType;\n\n (function (TaskType) {\n TaskType[TaskType[\"Regular\"] = 0] = \"Regular\";\n TaskType[TaskType[\"Summary\"] = 1] = \"Summary\";\n TaskType[TaskType[\"Milestone\"] = 2] = \"Milestone\";\n })(TaskType = exports.TaskType || (exports.TaskType = {}));\n\n var Task = function (_super) {\n tslib_1.__extends(Task, _super);\n\n function Task() {\n var _this = _super.call(this) || this;\n\n _this.start = null;\n _this.end = null;\n _this.duration = null;\n _this.description = \"\";\n _this.parentId = null;\n _this.title = \"\";\n _this.owner = null;\n _this.progress = 0;\n _this.taskType = null;\n _this.customFields = {};\n _this.expanded = true;\n _this.color = \"\";\n return _this;\n }\n\n Task.prototype.assignFromObject = function (sourceObj) {\n if (common_1.isDefined(sourceObj)) {\n _super.prototype.assignFromObject.call(this, sourceObj);\n\n this.owner = sourceObj.owner;\n this.parentId = common_1.isDefined(sourceObj.parentId) ? String(sourceObj.parentId) : null;\n this.description = sourceObj.description;\n this.title = sourceObj.title;\n this.start = typeof sourceObj.start === \"string\" ? new Date(sourceObj.start) : sourceObj.start || new Date(0);\n this.end = typeof sourceObj.end === \"string\" ? new Date(sourceObj.end) : sourceObj.end || new Date(0);\n this.duration = sourceObj.duration;\n this.progress = sourceObj.progress;\n this.taskType = sourceObj.taskType;\n if (common_1.isDefined(sourceObj.expanded)) this.expanded = !!sourceObj.expanded;\n if (common_1.isDefined(sourceObj.color)) this.color = sourceObj.color;\n this.assignCustomFields(sourceObj.customFields);\n }\n };\n\n Task.prototype.assignCustomFields = function (sourceObj) {\n if (!sourceObj) return;\n\n for (var property in sourceObj) {\n if (!Object.prototype.hasOwnProperty.call(sourceObj, property)) continue;\n this.customFields[property] = sourceObj[property];\n }\n };\n\n Task.prototype.isMilestone = function () {\n return this.start.getTime() === this.end.getTime();\n };\n\n Task.prototype.getDuration = function () {\n return this.end.getTime() - this.start.getTime();\n };\n\n Task.prototype.isValid = function () {\n return !!this.start.getTime() && !!this.end.getTime();\n };\n\n return Task;\n }(DataObject_1.DataObject);\n\n exports.Task = Task;\n /***/\n },\n /* 64 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DependencyCollection = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CollectionBase_1 = __webpack_require__(13);\n\n var Dependency_1 = __webpack_require__(11);\n\n var DependencyCollection = function (_super) {\n tslib_1.__extends(DependencyCollection, _super);\n\n function DependencyCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DependencyCollection.prototype.createItem = function () {\n return new Dependency_1.Dependency();\n };\n\n return DependencyCollection;\n }(CollectionBase_1.CollectionBase);\n\n exports.DependencyCollection = DependencyCollection;\n /***/\n },\n /* 65 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceAssignmentCollection = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CollectionBase_1 = __webpack_require__(13);\n\n var ResourceAssignment_1 = __webpack_require__(36);\n\n var ResourceAssignmentCollection = function (_super) {\n tslib_1.__extends(ResourceAssignmentCollection, _super);\n\n function ResourceAssignmentCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourceAssignmentCollection.prototype.createItem = function () {\n return new ResourceAssignment_1.ResourceAssignment();\n };\n\n return ResourceAssignmentCollection;\n }(CollectionBase_1.CollectionBase);\n\n exports.ResourceAssignmentCollection = ResourceAssignmentCollection;\n /***/\n },\n /* 66 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ViewVisualModelItem = void 0;\n\n var common_1 = __webpack_require__(1);\n\n var ViewVisualModelItem = function () {\n function ViewVisualModelItem(task, resources) {\n this.dependencies = new Array();\n this.parent = null;\n this.visible = true;\n this.selected = false;\n this.visibleIndex = -1;\n this.task = task;\n this.resources = resources;\n this.children = new Array();\n }\n\n Object.defineProperty(ViewVisualModelItem.prototype, \"resourceText\", {\n get: function get() {\n var text = \"\";\n this.resources.items.forEach(function (r) {\n return text += r.text + \" \";\n });\n return text;\n },\n enumerable: false,\n configurable: true\n });\n\n ViewVisualModelItem.prototype.addChild = function (child) {\n if (common_1.isDefined(child) && this.children.indexOf(child) < 0) this.children.push(child);\n };\n\n ViewVisualModelItem.prototype.removeChild = function (child) {\n var index = this.children.indexOf(child);\n if (index > -1) this.children.splice(index, 1);\n };\n\n ViewVisualModelItem.prototype.getExpanded = function () {\n return !!this.task && this.task.expanded;\n };\n\n ViewVisualModelItem.prototype.getVisible = function () {\n if (!this.visible) return false;\n var parentItem = this.parent;\n\n while (parentItem) {\n if (!parentItem.visible) return false;\n parentItem = parentItem.parent;\n }\n\n return true;\n };\n\n ViewVisualModelItem.prototype.changeVisibility = function (visible) {\n this.visible = visible;\n };\n\n ViewVisualModelItem.prototype.changeSelection = function (selected) {\n this.selected = selected;\n };\n\n ViewVisualModelItem.prototype.setDependencies = function (dependencies) {\n if (dependencies) this.dependencies = dependencies.slice();\n };\n\n return ViewVisualModelItem;\n }();\n\n exports.ViewVisualModelItem = ViewVisualModelItem;\n /***/\n },\n /* 67 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ViewVisualModelDependencyInfo = void 0;\n\n var ViewVisualModelDependencyInfo = function () {\n function ViewVisualModelDependencyInfo(id, predecessor, type) {\n this.id = id;\n this.predecessor = predecessor;\n this.type = type;\n }\n\n return ViewVisualModelDependencyInfo;\n }();\n\n exports.ViewVisualModelDependencyInfo = ViewVisualModelDependencyInfo;\n /***/\n },\n /* 68 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.WorkingTimeCalculator = void 0;\n\n var GanttWorkingDayRuleCollection_1 = __webpack_require__(69);\n\n var DayWorkingTimeInfo_1 = __webpack_require__(77);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var WorkingTimeCalculator = function () {\n function WorkingTimeCalculator(range, rules) {\n this._workingRules = new GanttWorkingDayRuleCollection_1.WorkingDayRuleCollection();\n this._workDayList = new Array();\n this._calculationRange = range;\n\n this._workingRules.importFromObject(rules);\n }\n\n WorkingTimeCalculator.prototype.calculateWorkDayList = function () {\n if (!this._calculationRange) return;\n this.clearList();\n var rules = this._workingRules.items;\n\n for (var i = 0; i < rules.length; i++) {\n this.processRule(rules[i]);\n }\n\n this.sortList();\n };\n\n WorkingTimeCalculator.prototype.processRule = function (rule) {\n var points = rule.recurrence.calculatePoints(this._calculationRange.start, this._calculationRange.end);\n\n var _loop_1 = function _loop_1(i) {\n var point = points[i];\n var dayNum = DateTimeUtils_1.DateTimeUtils.getDayNumber(point);\n\n var dayInfo = this_1._workDayList.filter(function (i) {\n return i.dayNumber == dayNum;\n })[0];\n\n if (dayInfo) {\n dayInfo.isWorkDay = dayInfo.isWorkDay && rule.isWorkDay;\n dayInfo.addWorkingIntervals(rule.workTimeRanges);\n } else this_1._workDayList.push(new DayWorkingTimeInfo_1.DayWorkingTimeInfo(dayNum, rule.isWorkDay, rule.workTimeRanges));\n };\n\n var this_1 = this;\n\n for (var i = 0; i < points.length; i++) {\n _loop_1(i);\n }\n };\n\n WorkingTimeCalculator.prototype.sortList = function () {\n this._workDayList.sort(function (d1, d2) {\n return d1.dayNumber - d2.dayNumber;\n });\n };\n\n WorkingTimeCalculator.prototype.clearList = function () {\n this._workDayList.splice(0, this._workDayList.length);\n };\n\n WorkingTimeCalculator.prototype.calculateNoWorkTimeIntervals = function () {\n var _this = this;\n\n var res = new Array();\n if (this._workDayList.length == 0) this.calculateWorkDayList();\n\n this._workDayList.forEach(function (d) {\n return res = res.concat(_this.getNoWorkTimeRangesFromDay(d));\n });\n\n return this.concatJointedRanges(res);\n };\n\n WorkingTimeCalculator.prototype.concatJointedRanges = function (list) {\n var res = new Array();\n\n for (var i = 0; i < list.length; i++) {\n var interval = list[i];\n var needExpandPrevInterval = res.length > 0 && DateTimeUtils_1.DateTimeUtils.compareDates(res[res.length - 1].end, interval.start) < 2;\n if (needExpandPrevInterval) res[res.length - 1].end = interval.end;else res.push(interval);\n }\n\n return res;\n };\n\n WorkingTimeCalculator.prototype.getNoWorkTimeRangesFromDay = function (day) {\n return day.noWorkingIntervals.map(function (i) {\n return DateTimeUtils_1.DateTimeUtils.convertTimeRangeToDateRange(i, day.dayNumber);\n });\n };\n\n Object.defineProperty(WorkingTimeCalculator.prototype, \"noWorkingIntervals\", {\n get: function get() {\n if (!this._noWorkingIntervals) this._noWorkingIntervals = this.calculateNoWorkTimeIntervals();\n return this._noWorkingIntervals.slice();\n },\n enumerable: false,\n configurable: true\n });\n\n WorkingTimeCalculator.prototype.updateRange = function (range) {\n this._calculationRange = range;\n this.invalidate();\n };\n\n WorkingTimeCalculator.prototype.invalidate = function () {\n this._noWorkingIntervals = null;\n this.clearList();\n };\n\n return WorkingTimeCalculator;\n }();\n\n exports.WorkingTimeCalculator = WorkingTimeCalculator;\n /***/\n },\n /* 69 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.WorkingDayRuleCollection = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CollectionBase_1 = __webpack_require__(13);\n\n var WorkingTimeRule_1 = __webpack_require__(70);\n\n var WorkingDayRuleCollection = function (_super) {\n tslib_1.__extends(WorkingDayRuleCollection, _super);\n\n function WorkingDayRuleCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n WorkingDayRuleCollection.prototype.createItem = function () {\n return new WorkingTimeRule_1.WorkingTimeRule();\n };\n\n return WorkingDayRuleCollection;\n }(CollectionBase_1.CollectionBase);\n\n exports.WorkingDayRuleCollection = WorkingDayRuleCollection;\n /***/\n },\n /* 70 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.WorkingTimeRule = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DataObject_1 = __webpack_require__(10);\n\n var common_1 = __webpack_require__(1);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var RecurrenceFactory_1 = __webpack_require__(40);\n\n var Daily_1 = __webpack_require__(41);\n\n var WorkingTimeRule = function (_super) {\n tslib_1.__extends(WorkingTimeRule, _super);\n\n function WorkingTimeRule(recurrence, isWorkDay, workTimeRanges) {\n if (recurrence === void 0) {\n recurrence = null;\n }\n\n if (isWorkDay === void 0) {\n isWorkDay = true;\n }\n\n if (workTimeRanges === void 0) {\n workTimeRanges = null;\n }\n\n var _this = _super.call(this) || this;\n\n _this.isWorkDay = true;\n _this.workTimeRanges = new Array();\n _this.recurrence = recurrence;\n _this.isWorkDay = isWorkDay;\n if (workTimeRanges) _this.workTimeRanges.concat(workTimeRanges);\n return _this;\n }\n\n WorkingTimeRule.prototype.assignFromObject = function (sourceObj) {\n if (common_1.isDefined(sourceObj)) {\n _super.prototype.assignFromObject.call(this, sourceObj);\n\n this.recurrence = RecurrenceFactory_1.RecurrenceFactory.createRecurrenceByType(sourceObj.recurrenceType) || new Daily_1.Daily();\n if (common_1.isDefined(sourceObj.recurrence)) this.recurrence.assignFromObject(sourceObj.recurrence);\n if (common_1.isDefined(sourceObj.isWorkDay)) this.isWorkDay = !!sourceObj.isWorkDay;\n var ranges = DateTimeUtils_1.DateTimeUtils.convertToTimeRanges(sourceObj.workTimeRanges);\n if (ranges) this.workTimeRanges = ranges;\n }\n };\n\n return WorkingTimeRule;\n }(DataObject_1.DataObject);\n\n exports.WorkingTimeRule = WorkingTimeRule;\n /***/\n },\n /* 71 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DayOfWeek = void 0;\n var DayOfWeek;\n\n (function (DayOfWeek) {\n DayOfWeek[DayOfWeek[\"Sunday\"] = 0] = \"Sunday\";\n DayOfWeek[DayOfWeek[\"Monday\"] = 1] = \"Monday\";\n DayOfWeek[DayOfWeek[\"Tuesday\"] = 2] = \"Tuesday\";\n DayOfWeek[DayOfWeek[\"Wednesday\"] = 3] = \"Wednesday\";\n DayOfWeek[DayOfWeek[\"Thursday\"] = 4] = \"Thursday\";\n DayOfWeek[DayOfWeek[\"Friday\"] = 5] = \"Friday\";\n DayOfWeek[DayOfWeek[\"Saturday\"] = 6] = \"Saturday\";\n })(DayOfWeek = exports.DayOfWeek || (exports.DayOfWeek = {}));\n /***/\n\n },\n /* 72 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Month = void 0;\n var Month;\n\n (function (Month) {\n Month[Month[\"January\"] = 0] = \"January\";\n Month[Month[\"February\"] = 1] = \"February\";\n Month[Month[\"March\"] = 2] = \"March\";\n Month[Month[\"April\"] = 3] = \"April\";\n Month[Month[\"May\"] = 4] = \"May\";\n Month[Month[\"June\"] = 5] = \"June\";\n Month[Month[\"July\"] = 6] = \"July\";\n Month[Month[\"August\"] = 7] = \"August\";\n Month[Month[\"September\"] = 8] = \"September\";\n Month[Month[\"October\"] = 9] = \"October\";\n Month[Month[\"November\"] = 10] = \"November\";\n Month[Month[\"December\"] = 11] = \"December\";\n })(Month = exports.Month || (exports.Month = {}));\n /***/\n\n },\n /* 73 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Weekly = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var RecurrenceBase_1 = __webpack_require__(16);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var Weekly = function (_super) {\n tslib_1.__extends(Weekly, _super);\n\n function Weekly() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Weekly.prototype.checkDate = function (date) {\n return DateTimeUtils_1.DateTimeUtils.checkDayOfWeek(this.dayOfWeekInternal, date);\n };\n\n Weekly.prototype.checkInterval = function (date) {\n return DateTimeUtils_1.DateTimeUtils.getWeeksBetween(this.start, date) % this.interval == 0;\n };\n\n Weekly.prototype.calculatePointByInterval = function (date) {\n var weeksFromStart = DateTimeUtils_1.DateTimeUtils.getWeeksBetween(this.start, date);\n var intervalCount = Math.floor(weeksFromStart / this.interval);\n var remainder = weeksFromStart % this.interval;\n var isPointOnNewWeek = remainder > 0 || date.getDay() >= this.dayOfWeekInternal;\n if (isPointOnNewWeek) intervalCount++;\n var weeksToAdd = intervalCount * this.interval;\n return this.calcNextPointWithWeekCount(this.start, weeksToAdd);\n };\n\n Weekly.prototype.calculateNearestPoint = function (date) {\n var diff = this.dayOfWeekInternal - date.getDay();\n if (diff > 0) return DateTimeUtils_1.DateTimeUtils.addDays(new Date(date), diff);\n return this.calcNextPointWithWeekCount(date, 1);\n };\n\n Weekly.prototype.calcNextPointWithWeekCount = function (date, weekCount) {\n if (weekCount === void 0) {\n weekCount = 1;\n }\n\n var daysToAdd = weekCount * 7 + this.dayOfWeekInternal - date.getDay();\n return DateTimeUtils_1.DateTimeUtils.addDays(new Date(date), daysToAdd);\n };\n\n Object.defineProperty(Weekly.prototype, \"dayOfWeek\", {\n get: function get() {\n return this.dayOfWeekInternal;\n },\n set: function set(value) {\n this.dayOfWeekInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n return Weekly;\n }(RecurrenceBase_1.RecurrenceBase);\n\n exports.Weekly = Weekly;\n /***/\n },\n /* 74 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Monthly = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var RecurrenceBase_1 = __webpack_require__(16);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var MonthInfo_1 = __webpack_require__(75);\n\n var Monthly = function (_super) {\n tslib_1.__extends(Monthly, _super);\n\n function Monthly() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Monthly.prototype.checkDate = function (date) {\n if (this._calculateByDayOfWeek) return DateTimeUtils_1.DateTimeUtils.checkDayOfWeekOccurrenceInMonth(date, this.dayOfWeekInternal, this.dayOfWeekOccurrenceInternal);\n return DateTimeUtils_1.DateTimeUtils.checkDayOfMonth(this.dayInternal, date);\n };\n\n Monthly.prototype.checkInterval = function (date) {\n return DateTimeUtils_1.DateTimeUtils.getMonthsDifference(this.start, date) % this.interval == 0;\n };\n\n Monthly.prototype.calculatePointByInterval = function (date) {\n var start = this.start;\n var monthFromStart = DateTimeUtils_1.DateTimeUtils.getMonthsDifference(start, date);\n var monthToAdd = Math.floor(monthFromStart / this.interval) * this.interval;\n var info = new MonthInfo_1.MonthInfo(start.getMonth(), start.getFullYear());\n info.addMonths(monthToAdd);\n var point = this.getSpecDayInMonth(info.year, info.month);\n\n if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) {\n info.addMonths(this.interval);\n point = this.getSpecDayInMonth(info.year, info.month);\n }\n\n return point;\n };\n\n Monthly.prototype.calculateNearestPoint = function (date) {\n var month = date.getMonth();\n var year = date.getFullYear();\n var point = this.getSpecDayInMonth(year, month);\n\n if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) {\n var info = new MonthInfo_1.MonthInfo(month, year);\n info.addMonths(1);\n point = this.getSpecDayInMonth(info.year, info.month);\n }\n\n return point;\n };\n\n Object.defineProperty(Monthly.prototype, \"day\", {\n get: function get() {\n return this.dayInternal;\n },\n set: function set(value) {\n this.dayInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Monthly.prototype, \"dayOfWeek\", {\n get: function get() {\n return this.dayOfWeekInternal;\n },\n set: function set(value) {\n this.dayOfWeekInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Monthly.prototype, \"dayOfWeekOccurrence\", {\n get: function get() {\n return this.dayOfWeekOccurrenceInternal;\n },\n set: function set(value) {\n this.dayOfWeekOccurrenceInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Monthly.prototype, \"calculateByDayOfWeek\", {\n get: function get() {\n return this._calculateByDayOfWeek;\n },\n set: function set(value) {\n this._calculateByDayOfWeek = value;\n },\n enumerable: false,\n configurable: true\n });\n return Monthly;\n }(RecurrenceBase_1.RecurrenceBase);\n\n exports.Monthly = Monthly;\n /***/\n },\n /* 75 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MonthInfo = void 0;\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var MonthInfo = function () {\n function MonthInfo(month, year) {\n this.month = month;\n this.year = year;\n }\n\n MonthInfo.prototype.addMonths = function (months) {\n var nextMonth = DateTimeUtils_1.DateTimeUtils.getNextMonth(this.month, months);\n var yearInc = Math.floor(months / 12);\n if (nextMonth < this.month) ++yearInc;\n this.month = nextMonth;\n this.year += yearInc;\n };\n\n return MonthInfo;\n }();\n\n exports.MonthInfo = MonthInfo;\n /***/\n },\n /* 76 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Yearly = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var RecurrenceBase_1 = __webpack_require__(16);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var Yearly = function (_super) {\n tslib_1.__extends(Yearly, _super);\n\n function Yearly() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Yearly.prototype.checkDate = function (date) {\n if (!DateTimeUtils_1.DateTimeUtils.checkMonth(this.month, date)) return false;\n if (this._calculateByDayOfWeek) return DateTimeUtils_1.DateTimeUtils.checkDayOfWeekOccurrenceInMonth(date, this.dayOfWeekInternal, this.dayOfWeekOccurrenceInternal);\n return DateTimeUtils_1.DateTimeUtils.checkDayOfMonth(this.dayInternal, date);\n };\n\n Yearly.prototype.checkInterval = function (date) {\n return DateTimeUtils_1.DateTimeUtils.getYearsDifference(this.start, date) % this.interval == 0;\n };\n\n Yearly.prototype.calculatePointByInterval = function (date) {\n var yearFromStart = DateTimeUtils_1.DateTimeUtils.getYearsDifference(this.start, date);\n var yearInc = Math.floor(yearFromStart / this.interval) * this.interval;\n var newYear = this.start.getFullYear() + yearInc;\n var point = this.getSpecDayInMonth(newYear, this.monthInternal);\n\n if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) {\n newYear += this.interval;\n point = this.getSpecDayInMonth(newYear, this.monthInternal);\n }\n\n return point;\n };\n\n Yearly.prototype.calculateNearestPoint = function (date) {\n var year = date.getFullYear();\n var point = this.getSpecDayInMonth(year, this.monthInternal);\n if (DateTimeUtils_1.DateTimeUtils.compareDates(point, date) >= 0) point = this.getSpecDayInMonth(++year, this.monthInternal);\n return point;\n };\n\n Object.defineProperty(Yearly.prototype, \"month\", {\n get: function get() {\n return this.monthInternal;\n },\n set: function set(value) {\n this.monthInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Yearly.prototype, \"day\", {\n get: function get() {\n return this.dayInternal;\n },\n set: function set(value) {\n this.dayInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Yearly.prototype, \"dayOfWeek\", {\n get: function get() {\n return this.dayOfWeekInternal;\n },\n set: function set(value) {\n this.dayOfWeekInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Yearly.prototype, \"dayOfWeekOccurrence\", {\n get: function get() {\n return this.dayOfWeekOccurrenceInternal;\n },\n set: function set(value) {\n this.dayOfWeekOccurrenceInternal = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Yearly.prototype, \"calculateByDayOfWeek\", {\n get: function get() {\n return this._calculateByDayOfWeek;\n },\n set: function set(value) {\n this._calculateByDayOfWeek = value;\n },\n enumerable: false,\n configurable: true\n });\n return Yearly;\n }(RecurrenceBase_1.RecurrenceBase);\n\n exports.Yearly = Yearly;\n /***/\n },\n /* 77 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DayWorkingTimeInfo = void 0;\n\n var TimeRange_1 = __webpack_require__(38);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var Time_1 = __webpack_require__(37);\n\n var DayWorkingTimeInfo = function () {\n function DayWorkingTimeInfo(dayNumber, isWorkDay, intervals) {\n if (dayNumber === void 0) {\n dayNumber = 0;\n }\n\n if (isWorkDay === void 0) {\n isWorkDay = true;\n }\n\n if (intervals === void 0) {\n intervals = null;\n }\n\n this._workingIntervals = new Array();\n this.dayNumber = dayNumber;\n this.isWorkDay = isWorkDay;\n this.addWorkingIntervals(intervals);\n }\n\n DayWorkingTimeInfo.prototype.addWorkingIntervals = function (intervals) {\n if (!intervals) return;\n this._workingIntervals = this._workingIntervals.concat(intervals.filter(function (r) {\n return !!r;\n }));\n this.rearrangeWorkingIntervals();\n };\n\n DayWorkingTimeInfo.prototype.rearrangeWorkingIntervals = function () {\n for (var i = 0; i < this._workingIntervals.length; i++) {\n this.concatWithIntersectedRanges(this._workingIntervals[i]);\n }\n\n this.sortIntervals();\n };\n\n DayWorkingTimeInfo.prototype.concatWithIntersectedRanges = function (range) {\n var _this = this;\n\n var intersectedRanges = this.getIntersectedIntervals(range);\n intersectedRanges.forEach(function (r) {\n range.concatWith(r);\n\n _this.removeInterval(r);\n });\n };\n\n DayWorkingTimeInfo.prototype.getIntersectedIntervals = function (range) {\n return this._workingIntervals.filter(function (r) {\n return r.hasIntersect(range) && r !== range;\n });\n };\n\n DayWorkingTimeInfo.prototype.sortIntervals = function () {\n this._workingIntervals.sort(function (r1, r2) {\n return DateTimeUtils_1.DateTimeUtils.caclTimeDifference(r2.start, r1.start);\n });\n };\n\n DayWorkingTimeInfo.prototype.removeInterval = function (element) {\n var index = this._workingIntervals.indexOf(element);\n\n if (index > -1 && index < this._workingIntervals.length) this._workingIntervals.splice(index, 1);\n };\n\n DayWorkingTimeInfo.prototype.clearIntervals = function () {\n this._workingIntervals.splice(0, this._workingIntervals.length);\n };\n\n Object.defineProperty(DayWorkingTimeInfo.prototype, \"workingIntervals\", {\n get: function get() {\n return this._workingIntervals.slice();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DayWorkingTimeInfo.prototype, \"noWorkingIntervals\", {\n get: function get() {\n var res = new Array();\n if (this.isWorkDay && this._workingIntervals.length == 0) return res;\n\n var starts = this._workingIntervals.map(function (r) {\n return r.end;\n });\n\n starts.splice(0, 0, new Time_1.Time());\n\n var ends = this._workingIntervals.map(function (r) {\n return r.start;\n });\n\n ends.push(DateTimeUtils_1.DateTimeUtils.getLastTimeOfDay());\n\n for (var i = 0; i < starts.length; i++) {\n var start = starts[i];\n var end = ends[i];\n if (!DateTimeUtils_1.DateTimeUtils.areTimesEqual(start, end)) res.push(new TimeRange_1.TimeRange(start, end));\n }\n\n return res;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DayWorkingTimeInfo.prototype, \"isWorkDay\", {\n get: function get() {\n return this._isWorkDay;\n },\n set: function set(value) {\n this._isWorkDay = value;\n if (!value) this.clearIntervals();\n },\n enumerable: false,\n configurable: true\n });\n return DayWorkingTimeInfo;\n }();\n\n exports.DayWorkingTimeInfo = DayWorkingTimeInfo;\n /***/\n },\n /* 78 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var tslib_1 = __webpack_require__(35);\n\n var offsets_1 = __webpack_require__(79);\n\n var Margins = function (_super) {\n tslib_1.__extends(Margins, _super);\n\n function Margins() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Margins.empty = function () {\n return new Margins(0, 0, 0, 0);\n };\n\n Margins.prototype.clone = function () {\n return new Margins(this.left, this.right, this.top, this.bottom);\n };\n\n return Margins;\n }(offsets_1.Offsets);\n\n exports.Margins = Margins;\n /***/\n },\n /* 79 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Offsets = function () {\n function Offsets(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n\n Offsets.empty = function () {\n return new Offsets(0, 0, 0, 0);\n };\n\n Object.defineProperty(Offsets.prototype, \"horizontal\", {\n get: function get() {\n return this.left + this.right;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Offsets.prototype, \"vertical\", {\n get: function get() {\n return this.top + this.bottom;\n },\n enumerable: true,\n configurable: true\n });\n\n Offsets.fromNumber = function (offset) {\n return new Offsets(offset, offset, offset, offset);\n };\n\n Offsets.fromOffsets = function (offsets) {\n return new Offsets(offsets.left, offsets.right, offsets.top, offsets.bottom);\n };\n\n Offsets.fromSide = function (horizontal, vertical) {\n return new Offsets(horizontal, horizontal, vertical, vertical);\n };\n\n Offsets.prototype.normalize = function () {\n this.left = Math.max(0, this.left);\n this.right = Math.max(0, this.right);\n this.top = Math.max(0, this.top);\n this.bottom = Math.max(0, this.bottom);\n return this;\n };\n\n Offsets.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Offsets.prototype.isEmpty = function () {\n return this.left === 0 && this.right === 0 && this.top === 0 && this.bottom === 0;\n };\n\n Offsets.prototype.offset = function (offset) {\n this.left += offset.left;\n this.right += offset.right;\n this.top += offset.top;\n this.bottom += offset.bottom;\n return this;\n };\n\n Offsets.prototype.multiply = function (multLeft, multRight, multTop, multBottom) {\n switch (arguments.length) {\n case 1:\n {\n this.left *= multLeft;\n this.right *= multLeft;\n this.top *= multLeft;\n this.bottom *= multLeft;\n return this;\n }\n\n case 2:\n {\n this.left *= multLeft;\n this.right *= multLeft;\n this.top *= multRight;\n this.bottom *= multRight;\n return this;\n }\n\n case 4:\n {\n this.left *= multLeft;\n this.right *= multRight;\n this.top *= multTop;\n this.bottom *= multBottom;\n return this;\n }\n }\n\n return this;\n };\n\n Offsets.prototype.clone = function () {\n return new Offsets(this.left, this.right, this.top, this.bottom);\n };\n\n Offsets.prototype.copyFrom = function (obj) {\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top;\n this.bottom = obj.bottom;\n };\n\n Offsets.prototype.equals = function (obj) {\n return this.top === obj.top && this.bottom === obj.bottom && this.right === obj.right && this.left === obj.left;\n };\n\n Offsets.prototype.applyConverter = function (converter) {\n this.left = converter(this.left);\n this.right = converter(this.right);\n this.top = converter(this.top);\n this.bottom = converter(this.bottom);\n return this;\n };\n\n return Offsets;\n }();\n\n exports.Offsets = Offsets;\n /***/\n },\n /* 80 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EtalonSizeValues = void 0;\n\n var EtalonSizeValues = function () {\n function EtalonSizeValues() {\n this.scaleItemWidths = {};\n }\n\n return EtalonSizeValues;\n }();\n\n exports.EtalonSizeValues = EtalonSizeValues;\n /***/\n },\n /* 81 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ModelManipulator = void 0;\n\n var DependencyManipulator_1 = __webpack_require__(82);\n\n var ResourcesManipulator_1 = __webpack_require__(83);\n\n var TaskManipulator_1 = __webpack_require__(85);\n\n var ModelManipulator = function () {\n function ModelManipulator(viewModel, dispatcher) {\n this.task = new TaskManipulator_1.TaskManipulator(viewModel, dispatcher);\n this.dependency = new DependencyManipulator_1.TaskDependencyManipulator(viewModel, dispatcher);\n this.resource = new ResourcesManipulator_1.ResourcesManipulator(viewModel, dispatcher);\n this.dispatcher = dispatcher;\n }\n\n return ModelManipulator;\n }();\n\n exports.ModelManipulator = ModelManipulator;\n /***/\n },\n /* 82 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskDependencyManipulator = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TaskPropertiesManipulator_1 = __webpack_require__(18);\n\n var TaskDependencyManipulator = function (_super) {\n tslib_1.__extends(TaskDependencyManipulator, _super);\n\n function TaskDependencyManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskDependencyManipulator.prototype.insertDependency = function (predecessorId, successorId, type, id) {\n var dependency = this.viewModel.dependencies.createItem();\n dependency.predecessorId = predecessorId;\n dependency.successorId = successorId;\n dependency.type = type;\n if (id) dependency.internalId = id;\n dependency.id = dependency.internalId;\n this.viewModel.dependencies.add(dependency);\n this.dispatcher.notifyDependencyInserted(this.getObjectForDataSource(dependency), function (id) {\n return dependency.id = id;\n }, this.getErrorCallback());\n this.viewModel.updateVisibleItemDependencies();\n this.viewModel.owner.recreateConnectorLineElement(dependency.internalId, true);\n return dependency;\n };\n\n TaskDependencyManipulator.prototype.removeDependency = function (dependencyId) {\n var dependency = this.viewModel.dependencies.getItemById(dependencyId);\n this.viewModel.dependencies.remove(dependency);\n this.dispatcher.notifyDependencyRemoved(dependency.id, this.getErrorCallback(), this.viewModel.getDependencyObjectForDataSource(dependency));\n this.viewModel.updateVisibleItemDependencies();\n this.viewModel.owner.recreateConnectorLineElement(dependency.internalId);\n return dependency;\n };\n\n TaskDependencyManipulator.prototype.getObjectForDataSource = function (dependency) {\n var predecessor = this.viewModel.tasks.getItemById(dependency.predecessorId);\n var successor = this.viewModel.tasks.getItemById(dependency.successorId);\n var dependencyObject = {\n id: dependency.id,\n predecessorId: predecessor.id,\n successorId: successor.id,\n type: dependency.type\n };\n return dependencyObject;\n };\n\n return TaskDependencyManipulator;\n }(TaskPropertiesManipulator_1.BaseManipulator);\n\n exports.TaskDependencyManipulator = TaskDependencyManipulator;\n /***/\n },\n /* 83 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourcesManipulator = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TaskPropertiesManipulator_1 = __webpack_require__(18);\n\n var ResourcePropertiesManipulator_1 = __webpack_require__(84);\n\n var ResourcesManipulator = function (_super) {\n tslib_1.__extends(ResourcesManipulator, _super);\n\n function ResourcesManipulator(viewModel, dispatcher) {\n var _this = _super.call(this, viewModel, dispatcher) || this;\n\n _this.properties = new ResourcePropertiesManipulator_1.ResourcePropertiesManipulator(viewModel, dispatcher);\n return _this;\n }\n\n ResourcesManipulator.prototype.create = function (text, color, id, callback) {\n var resource = this.viewModel.resources.createItem();\n resource.text = text;\n if (color) resource.color = color;\n if (id) resource.internalId = id;\n resource.id = resource.internalId;\n this.viewModel.resources.add(resource);\n this.dispatcher.notifyResourceCreated(this.getResourceObjectForDataSource(resource), function (id) {\n resource.id = id;\n if (callback) callback(id);\n }, this.getErrorCallback());\n return resource;\n };\n\n ResourcesManipulator.prototype.remove = function (resourceId) {\n var resource = this.viewModel.resources.getItemById(resourceId);\n if (!resource) throw new Error(\"Invalid resource id\");\n var assignments = this.viewModel.assignments.items.filter(function (a) {\n return a.resourceId == resourceId;\n });\n if (assignments.length) throw new Error(\"Can't delete assigned resource\");\n this.viewModel.resources.remove(resource);\n this.dispatcher.notifyResourceRemoved(resource.id, this.getErrorCallback(), this.viewModel.getResourceObjectForDataSource(resource));\n return resource;\n };\n\n ResourcesManipulator.prototype.assign = function (resourceID, taskId, id) {\n var assignment = this.viewModel.assignments.createItem();\n assignment.resourceId = resourceID;\n assignment.taskId = taskId;\n if (id) assignment.internalId = id;\n assignment.id = assignment.internalId;\n this.viewModel.assignments.add(assignment);\n this.dispatcher.notifyResourceAssigned(this.getResourceAssignmentObjectForDataSource(assignment), function (id) {\n return assignment.id = id;\n }, this.getErrorCallback());\n this.viewModel.updateModel();\n this.viewModel.owner.resetAndUpdate();\n return assignment;\n };\n\n ResourcesManipulator.prototype.deassig = function (assignmentId) {\n var assignment = this.viewModel.assignments.getItemById(assignmentId);\n this.viewModel.assignments.remove(assignment);\n this.dispatcher.notifyResourceUnassigned(assignment.id, this.getErrorCallback(), this.viewModel.getResourceAssignmentObjectForDataSource(assignment));\n this.viewModel.updateModel();\n this.viewModel.owner.resetAndUpdate();\n return assignment;\n };\n\n ResourcesManipulator.prototype.getResourceObjectForDataSource = function (resource) {\n return {\n id: resource.id,\n text: resource.text\n };\n };\n\n ResourcesManipulator.prototype.getResourceAssignmentObjectForDataSource = function (resourceAssignment) {\n return {\n id: resourceAssignment.id,\n taskId: this.viewModel.tasks.getItemById(resourceAssignment.taskId).id,\n resourceId: this.viewModel.resources.getItemById(resourceAssignment.resourceId).id\n };\n };\n\n return ResourcesManipulator;\n }(TaskPropertiesManipulator_1.BaseManipulator);\n\n exports.ResourcesManipulator = ResourcesManipulator;\n /***/\n },\n /* 84 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourcePropertyManipulator = exports.ResourcePropertiesManipulator = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TaskPropertiesManipulator_1 = __webpack_require__(18);\n\n var HistoryItemState_1 = __webpack_require__(46);\n\n var ResourcePropertiesManipulator = function (_super) {\n tslib_1.__extends(ResourcePropertiesManipulator, _super);\n\n function ResourcePropertiesManipulator(viewModel, dispatcher) {\n var _this = _super.call(this, viewModel, dispatcher) || this;\n\n _this.color = new ResourceColorManipulator(viewModel, dispatcher);\n return _this;\n }\n\n return ResourcePropertiesManipulator;\n }(TaskPropertiesManipulator_1.BaseManipulator);\n\n exports.ResourcePropertiesManipulator = ResourcePropertiesManipulator;\n\n var ResourcePropertyManipulator = function (_super) {\n tslib_1.__extends(ResourcePropertyManipulator, _super);\n\n function ResourcePropertyManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourcePropertyManipulator.prototype.setValue = function (id, newValue) {\n var _this = this;\n\n var resource = this.viewModel.resources.getItemById(id);\n var oldState = new HistoryItemState_1.HistoryItemState(id, this.getPropertyValue(resource));\n this.setPropertyValue(resource, newValue);\n var assignments = this.viewModel.assignments.items.filter(function (a) {\n return a.resourceId == resource.internalId;\n });\n assignments.forEach(function (a) {\n var viewItem = _this.viewModel.findItem(a.taskId);\n\n var index = viewItem.visibleIndex;\n\n _this.viewModel.owner.recreateTaskElement(index);\n });\n return oldState;\n };\n\n ResourcePropertyManipulator.prototype.restoreValue = function (state) {\n var _this = this;\n\n if (!state) return;\n var stateValue = state.value;\n var resource = this.viewModel.resources.getItemById(state.id);\n this.setPropertyValue(resource, stateValue);\n var assignments = this.viewModel.assignments.items.filter(function (a) {\n return a.resourceId == resource.internalId;\n });\n assignments.forEach(function (a) {\n var viewItem = _this.viewModel.findItem(a.taskId);\n\n var index = viewItem.visibleIndex;\n\n _this.viewModel.owner.recreateTaskElement(index);\n });\n };\n\n return ResourcePropertyManipulator;\n }(TaskPropertiesManipulator_1.BaseManipulator);\n\n exports.ResourcePropertyManipulator = ResourcePropertyManipulator;\n\n var ResourceColorManipulator = function (_super) {\n tslib_1.__extends(ResourceColorManipulator, _super);\n\n function ResourceColorManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourceColorManipulator.prototype.getPropertyValue = function (resource) {\n return resource.color;\n };\n\n ResourceColorManipulator.prototype.setPropertyValue = function (resource, value) {\n resource.color = value;\n this.dispatcher.notifyResourceColorChanged(resource.id, value, this.getErrorCallback());\n };\n\n return ResourceColorManipulator;\n }(ResourcePropertyManipulator);\n /***/\n\n },\n /* 85 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskManipulator = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TaskPropertiesManipulator_1 = __webpack_require__(18);\n\n var TaskManipulator = function (_super) {\n tslib_1.__extends(TaskManipulator, _super);\n\n function TaskManipulator(viewModel, dispatcher) {\n var _this = _super.call(this, viewModel, dispatcher) || this;\n\n _this.properties = new TaskPropertiesManipulator_1.TaskPropertiesManipulator(viewModel, dispatcher);\n return _this;\n }\n\n TaskManipulator.prototype.create = function (data, id, callback) {\n var _this = this;\n\n var task = this.viewModel.tasks.createItem();\n task.start = data.start;\n task.end = data.end;\n task.title = data.title;\n task.progress = data.progress;\n if (data.color) task.color = data.color;\n var parentItem = this.viewModel.tasks.getItemById(data.parentId);\n if (parentItem) parentItem.expanded = true;\n task.parentId = data.parentId;\n if (id) task.internalId = id;\n task.id = task.internalId;\n this.viewModel.tasks.add(task);\n this.viewModel.updateModel();\n this.dispatcher.notifyTaskCreated(this.getObjectForDataSource(task), function (id) {\n task.id = id;\n if (callback) callback();\n\n if (_this.viewModel.requireFirstLoadParentAutoCalc) {\n var data_1 = _this.viewModel.getCurrentTaskData().map(function (t) {\n if (t.parentId === \"\") t.parentId = null;\n return t;\n });\n\n _this.dispatcher.notifyParentDataRecalculated(data_1);\n }\n }, this.getErrorCallback());\n this.viewModel.owner.resetAndUpdate();\n return task;\n };\n\n TaskManipulator.prototype.remove = function (taskId) {\n var task = this.viewModel.tasks.getItemById(taskId);\n if (!task) throw new Error(\"Invalid task id\");\n var dependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId == taskId || d.successorId == taskId;\n });\n if (dependencies.length) throw new Error(\"Can't delete task with dependency\");\n var assignments = this.viewModel.assignments.items.filter(function (a) {\n return a.taskId == taskId;\n });\n if (assignments.length) throw new Error(\"Can't delete task with assigned resource\");\n this.viewModel.tasks.remove(task);\n this.dispatcher.notifyTaskRemoved(task.id, this.getErrorCallback(), this.viewModel.getTaskObjectForDataSource(task));\n this.viewModel.updateModel();\n this.viewModel.owner.resetAndUpdate();\n return task;\n };\n\n TaskManipulator.prototype.getObjectForDataSource = function (task) {\n return this.viewModel.getTaskObjectForDataSource(task);\n };\n\n return TaskManipulator;\n }(TaskPropertiesManipulator_1.BaseManipulator);\n\n exports.TaskManipulator = TaskManipulator;\n /***/\n },\n /* 86 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.History = void 0;\n\n var HistoryItem_1 = __webpack_require__(12);\n\n var HistoryItemInfo_1 = __webpack_require__(87);\n\n var History = function () {\n function History() {\n this.historyItems = [];\n this.currentIndex = -1;\n this.currentProcessingItemInfo = null;\n this.transaction = null;\n this.transactionLevel = -1;\n }\n\n History.prototype.undo = function () {\n if (this.canUndo()) {\n this.activateItem(this.historyItems[this.currentIndex], true);\n this.currentIndex--;\n }\n };\n\n History.prototype.redo = function () {\n if (this.canRedo()) {\n this.currentIndex++;\n this.activateItem(this.historyItems[this.currentIndex]);\n }\n };\n\n History.prototype.beginTransaction = function () {\n this.transactionLevel++;\n if (this.transactionLevel == 0) this.transaction = new HistoryItem_1.CompositionHistoryItem();\n };\n\n History.prototype.endTransaction = function () {\n if (--this.transactionLevel >= 0) return;\n var transactionLength = this.transaction.historyItems.length;\n if (transactionLength > 1) this.addInternal(this.transaction);else if (transactionLength == 1) this.addInternal(this.transaction.historyItems.pop());\n this.transaction = null;\n };\n\n History.prototype.addAndRedo = function (historyItem) {\n this.add(historyItem);\n this.activateItem(historyItem);\n };\n\n History.prototype.add = function (historyItem) {\n if (this.transactionLevel >= 0) this.transaction.add(historyItem);else this.addInternal(historyItem);\n };\n\n History.prototype.canUndo = function () {\n return this.currentIndex >= 0;\n };\n\n History.prototype.canRedo = function () {\n return this.currentIndex < this.historyItems.length - 1;\n };\n\n History.prototype.addInternal = function (historyItem) {\n if (this.currentIndex < this.historyItems.length - 1) this.historyItems.splice(this.currentIndex + 1);\n this.historyItems.push(historyItem);\n this.currentIndex++;\n this.deleteOldItems();\n };\n\n History.prototype.deleteOldItems = function () {\n var exceedItemsCount = this.historyItems.length - History.MAX_HISTORY_ITEM_COUNT;\n\n if (exceedItemsCount > 0 && this.currentIndex > exceedItemsCount) {\n this.historyItems.splice(0, exceedItemsCount);\n this.currentIndex -= exceedItemsCount;\n }\n };\n\n History.prototype.clear = function () {\n this.currentIndex = -1;\n this.historyItems = [];\n };\n\n History.prototype.activateItem = function (historyItem, isUndo) {\n if (isUndo === void 0) {\n isUndo = false;\n }\n\n this.currentProcessingItemInfo = new HistoryItemInfo_1.HistoryItemInfo(historyItem, isUndo);\n if (isUndo) historyItem.undo();else historyItem.redo();\n this.currentProcessingItemInfo = null;\n };\n\n History.prototype.getCurrentProcessingItemInfo = function () {\n return this.currentProcessingItemInfo;\n };\n\n History.prototype.rollBackAndRemove = function (info) {\n var item = info.item;\n if (!this.checkAndRemoveItem(item)) return;\n if (info.isUndo) item.redo();else if (item instanceof HistoryItem_1.CompositionHistoryItem) item.undoItemsQuery();else item.undo();\n };\n\n History.prototype.checkAndRemoveItem = function (item) {\n var index = this.historyItems.indexOf(item);\n\n if (index > -1) {\n this.historyItems.splice(index, 1);\n this.currentIndex--;\n } else if (this.transaction) {\n index = this.transaction.historyItems.indexOf(item);\n if (index > -1) this.transaction.historyItems.splice(index, 1);\n }\n\n return index > -1;\n };\n\n History.MAX_HISTORY_ITEM_COUNT = 100;\n return History;\n }();\n\n exports.History = History;\n /***/\n },\n /* 87 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HistoryItemInfo = void 0;\n\n var HistoryItemInfo = function () {\n function HistoryItemInfo(item, isUndo) {\n if (isUndo === void 0) {\n isUndo = false;\n }\n\n this.item = item;\n this.isUndo = isUndo;\n }\n\n return HistoryItemInfo;\n }();\n\n exports.HistoryItemInfo = HistoryItemInfo;\n /***/\n },\n /* 88 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EventManager = void 0;\n\n var MouseHandler_1 = __webpack_require__(89);\n\n var key_1 = __webpack_require__(94);\n\n var browser_1 = __webpack_require__(5);\n\n var TouchHandler_1 = __webpack_require__(96);\n\n var EventManager = function () {\n function EventManager(control) {\n this.control = control;\n this.mouseHandler = new MouseHandler_1.MouseHandler(control);\n this.touchHandler = new TouchHandler_1.TouchHandler(control);\n }\n\n EventManager.prototype.onMouseDown = function (evt) {\n this.mouseHandler.onMouseDown(evt);\n };\n\n EventManager.prototype.onMouseMove = function (evt) {\n this.mouseHandler.onMouseMove(evt);\n };\n\n EventManager.prototype.onMouseUp = function (evt) {\n this.mouseHandler.onMouseUp(evt);\n };\n\n EventManager.prototype.onMouseDblClick = function (evt) {\n this.mouseHandler.onMouseDoubleClick(evt);\n };\n\n EventManager.prototype.onMouseWheel = function (evt) {\n this.mouseHandler.onMouseWheel(evt);\n };\n\n EventManager.prototype.onTouchStart = function (evt) {\n this.touchHandler.onTouchStart(evt);\n };\n\n EventManager.prototype.onTouchEnd = function (evt) {\n this.touchHandler.onTouchEnd(evt);\n };\n\n EventManager.prototype.onTouchMove = function (evt) {\n this.touchHandler.onTouchMove(evt);\n };\n\n EventManager.prototype.onDoubleTap = function (evt) {\n this.touchHandler.onDoubleTap(evt);\n };\n\n EventManager.prototype.onKeyDown = function (evt) {\n if (this.control.isFocus) {\n var code = this.getShortcutCode(evt);\n if (code == (key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_z)) this.control.history.undo();\n if (code == (key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_y)) this.control.history.redo();\n if (code == key_1.KeyCode.Delete) this.control.taskEditController.deleteSelectedDependency();\n }\n };\n\n EventManager.prototype.getShortcutCode = function (evt) {\n var keyCode = key_1.KeyUtils.getEventKeyCode(evt);\n var modifiers = 0;\n if (evt.altKey) modifiers |= key_1.ModifierKey.Alt;\n if (evt.ctrlKey) modifiers |= key_1.ModifierKey.Ctrl;\n if (evt.shiftKey) modifiers |= key_1.ModifierKey.Shift;\n if (evt.metaKey && browser_1.Browser.MacOSPlatform) modifiers |= key_1.ModifierKey.Meta;\n return modifiers | keyCode;\n };\n\n return EventManager;\n }();\n\n exports.EventManager = EventManager;\n /***/\n },\n /* 89 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandler = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HandlerBase_1 = __webpack_require__(47);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var MouseHandlerDefaultState_1 = __webpack_require__(90);\n\n var evt_1 = __webpack_require__(6);\n\n var MouseHandlerMoveTaskState_1 = __webpack_require__(91);\n\n var MouseHandlerProgressTaskState_1 = __webpack_require__(92);\n\n var MouseHandlerTimestampTaskState_1 = __webpack_require__(93);\n\n var MouseHandlerDependencyState_1 = __webpack_require__(48);\n\n var MouseHandler = function (_super) {\n tslib_1.__extends(MouseHandler, _super);\n\n function MouseHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandler.prototype.onMouseDoubleClick = function (evt) {\n this.state.onMouseDoubleClick(evt);\n };\n\n MouseHandler.prototype.onMouseDown = function (evt) {\n var source = this.getEventSource(evt_1.EvtUtils.getEventSource(evt));\n\n switch (source) {\n case TaskAreaManager_1.MouseEventSource.TaskEdit_Frame:\n this.switchState(new MouseHandlerMoveTaskState_1.MouseHandlerMoveTaskState(this));\n break;\n\n case TaskAreaManager_1.MouseEventSource.TaskEdit_Progress:\n this.switchState(new MouseHandlerProgressTaskState_1.MouseHandlerProgressTaskState(this));\n break;\n\n case TaskAreaManager_1.MouseEventSource.TaskEdit_Start:\n case TaskAreaManager_1.MouseEventSource.TaskEdit_End:\n this.switchState(new MouseHandlerTimestampTaskState_1.MouseHandlerTimestampTaskState(this));\n break;\n\n case TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart:\n case TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish:\n this.switchState(new MouseHandlerDependencyState_1.MouseHandlerDependencyState(this));\n break;\n }\n\n this.state.onMouseDown(evt);\n };\n\n MouseHandler.prototype.onMouseUp = function (evt) {\n this.state.onMouseUp(evt);\n };\n\n MouseHandler.prototype.onMouseMove = function (evt) {\n this.state.onMouseMove(evt);\n };\n\n MouseHandler.prototype.onMouseWheel = function (evt) {\n this.state.onMouseWheel(evt);\n };\n\n MouseHandler.prototype.switchToDefaultState = function () {\n this.state = new MouseHandlerDefaultState_1.MouseHandlerDefaultState(this);\n };\n\n return MouseHandler;\n }(HandlerBase_1.HandlerBase);\n\n exports.MouseHandler = MouseHandler;\n /***/\n },\n /* 90 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GanttMovingHelper = exports.MouseHandlerDefaultState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var dom_1 = __webpack_require__(3);\n\n var evt_1 = __webpack_require__(6);\n\n var MouseHandlerStateBase_1 = __webpack_require__(29);\n\n var GridLayoutCalculator_1 = __webpack_require__(17);\n\n var point_1 = __webpack_require__(4);\n\n var browser_1 = __webpack_require__(5);\n\n var MouseHandlerDefaultState = function (_super) {\n tslib_1.__extends(MouseHandlerDefaultState, _super);\n\n function MouseHandlerDefaultState(handler) {\n var _this = _super.call(this, handler) || this;\n\n _this.isInScrolling = false;\n _this.ganttMovingHelper = new GanttMovingHelper(_this.handler.control);\n return _this;\n }\n\n MouseHandlerDefaultState.prototype.onMouseDown = function (evt) {\n evt.preventDefault();\n var source = evt_1.EvtUtils.getEventSource(evt);\n\n if (dom_1.DomUtils.hasClassName(source, GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL) || dom_1.DomUtils.hasClassName(source, GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL)) {\n var id = source.getAttribute(\"dependency-id\");\n\n if (this.handler.control.taskEditController.dependencyId != id) {\n this.handler.control.selectDependency(id);\n\n if (evt instanceof PointerEvent) {\n var info = {\n event: evt,\n type: \"dependency\",\n key: id,\n position: new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt))\n };\n this.handler.control.ganttOwner.showPopupMenu(info);\n }\n }\n } else {\n if (evt_1.EvtUtils.isLeftButtonPressed(evt)) this.ganttMovingHelper.startMoving(evt);\n if (this.handler.control.taskEditController.dependencyId != null) this.handler.control.selectDependency(null);\n }\n };\n\n MouseHandlerDefaultState.prototype.onMouseUp = function (evt) {\n this.ganttMovingHelper.onMouseUp(evt);\n };\n\n MouseHandlerDefaultState.prototype.onMouseMove = function (evt) {\n if (this.ganttMovingHelper.movingInfo) {\n this.handler.control.taskEditController.hide();\n this.ganttMovingHelper.onMouseMove(evt);\n evt.preventDefault();\n }\n };\n\n MouseHandlerDefaultState.prototype.onMouseWheel = function (evt) {\n var _this = this;\n\n if (evt.ctrlKey) {\n evt.preventDefault();\n evt.stopPropagation();\n\n if (!this.isInScrolling) {\n this.isInScrolling = true;\n setTimeout(function () {\n _this.isInScrolling = false;\n }, 50);\n var increase = evt_1.EvtUtils.getWheelDelta(evt) > 0;\n var leftPos = evt_1.EvtUtils.getEventX(evt) - dom_1.DomUtils.getAbsolutePositionX(this.handler.control.taskAreaContainer.getElement());\n if (increase) this.handler.control.zoomIn(leftPos);else this.handler.control.zoomOut(leftPos);\n }\n }\n };\n\n return MouseHandlerDefaultState;\n }(MouseHandlerStateBase_1.MouseHandlerStateBase);\n\n exports.MouseHandlerDefaultState = MouseHandlerDefaultState;\n\n var GanttMovingHelper = function () {\n function GanttMovingHelper(gantt) {\n this.gantt = gantt;\n this.movingInfo = null;\n }\n\n GanttMovingHelper.prototype.startMoving = function (e) {\n this.movingInfo = this.calcMovingInfo(e);\n this.updateGanttAreaCursor(true);\n };\n\n GanttMovingHelper.prototype.cancelMoving = function () {\n this.movingInfo = null;\n };\n\n GanttMovingHelper.prototype.onMouseMove = function (e) {\n this.move(e);\n };\n\n GanttMovingHelper.prototype.onMouseUp = function (e) {\n this.cancelMoving();\n this.updateGanttAreaCursor(false);\n };\n\n GanttMovingHelper.prototype.move = function (e) {\n this.updateScrollPosition(e);\n };\n\n GanttMovingHelper.prototype.updateScrollPosition = function (e) {\n var newEventX = Math.round(evt_1.EvtUtils.getEventX(e));\n var newEventY = Math.round(evt_1.EvtUtils.getEventY(e));\n var deltaX = newEventX - this.movingInfo.eventX;\n var deltaY = newEventY - this.movingInfo.eventY;\n var dirX = deltaX < 0 ? -1 : 1;\n var dirY = deltaY < 0 ? -1 : 1;\n var maxDeltaX = dirX < 0 ? this.movingInfo.maxRightDelta : this.movingInfo.maxLeftDelta;\n var maxDeltaY = dirY < 0 ? this.movingInfo.maxBottomDelta : this.movingInfo.maxTopDelta;\n if (Math.abs(deltaX) > maxDeltaX) deltaX = maxDeltaX * dirX;\n if (Math.abs(deltaY) > maxDeltaY) deltaY = maxDeltaY * dirY;\n var newScrollLeft = this.movingInfo.scrollLeft - deltaX;\n var newScrollTop = this.movingInfo.scrollTop - deltaY;\n var taskAreaContainer = this.gantt.taskAreaContainer;\n if (taskAreaContainer.scrollLeft !== newScrollLeft) taskAreaContainer.scrollLeft = newScrollLeft;\n if (taskAreaContainer.scrollTop !== newScrollTop) taskAreaContainer.scrollTop = newScrollTop;\n };\n\n GanttMovingHelper.prototype.calcMovingInfo = function (e) {\n var taskAreaContainer = this.gantt.taskAreaContainer;\n return {\n eventX: evt_1.EvtUtils.getEventX(e),\n eventY: evt_1.EvtUtils.getEventY(e),\n scrollLeft: taskAreaContainer.scrollLeft,\n scrollTop: taskAreaContainer.scrollTop,\n maxLeftDelta: taskAreaContainer.scrollLeft,\n maxRightDelta: taskAreaContainer.scrollWidth - taskAreaContainer.scrollLeft - taskAreaContainer.getElement().offsetWidth,\n maxTopDelta: taskAreaContainer.scrollTop,\n maxBottomDelta: taskAreaContainer.scrollHeight - taskAreaContainer.scrollTop - taskAreaContainer.getElement().offsetHeight\n };\n };\n\n GanttMovingHelper.prototype.updateGanttAreaCursor = function (drag) {\n if (browser_1.Browser.IE) this.gantt.taskAreaContainer.getElement().style.cursor = drag ? \"move\" : \"default\";else this.gantt.taskAreaContainer.getElement().style.cursor = drag ? \"grabbing\" : \"default\";\n };\n\n return GanttMovingHelper;\n }();\n\n exports.GanttMovingHelper = GanttMovingHelper;\n /***/\n },\n /* 91 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveTaskState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var MouseHandlerDragTaskBaseState_1 = __webpack_require__(30);\n\n var MouseHandlerMoveTaskState = function (_super) {\n tslib_1.__extends(MouseHandlerMoveTaskState, _super);\n\n function MouseHandlerMoveTaskState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerMoveTaskState.prototype.onMouseUpInternal = function (_evt) {\n this.handler.control.taskEditController.confirmMove();\n };\n\n MouseHandlerMoveTaskState.prototype.onMouseMoveInternal = function (position) {\n if (!this.handler.control.taskEditController.processMove(position.x - this.currentPosition.x)) this.handler.switchToDefaultState();\n };\n\n return MouseHandlerMoveTaskState;\n }(MouseHandlerDragTaskBaseState_1.MouseHandlerDragBaseState);\n\n exports.MouseHandlerMoveTaskState = MouseHandlerMoveTaskState;\n /***/\n },\n /* 92 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerProgressTaskState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var MouseHandlerDragTaskBaseState_1 = __webpack_require__(30);\n\n var MouseHandlerProgressTaskState = function (_super) {\n tslib_1.__extends(MouseHandlerProgressTaskState, _super);\n\n function MouseHandlerProgressTaskState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerProgressTaskState.prototype.onMouseUpInternal = function (_evt) {\n this.handler.control.taskEditController.confirmProgress();\n };\n\n MouseHandlerProgressTaskState.prototype.onMouseMoveInternal = function (position) {\n var relativePosition = this.getRelativePos(position);\n this.handler.control.taskEditController.processProgress(relativePosition);\n };\n\n return MouseHandlerProgressTaskState;\n }(MouseHandlerDragTaskBaseState_1.MouseHandlerDragBaseState);\n\n exports.MouseHandlerProgressTaskState = MouseHandlerProgressTaskState;\n /***/\n },\n /* 93 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerTimestampTaskState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var evt_1 = __webpack_require__(6);\n\n var MouseHandlerDragTaskBaseState_1 = __webpack_require__(30);\n\n var MouseHandlerTimestampTaskState = function (_super) {\n tslib_1.__extends(MouseHandlerTimestampTaskState, _super);\n\n function MouseHandlerTimestampTaskState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerTimestampTaskState.prototype.onMouseDown = function (evt) {\n _super.prototype.onMouseDown.call(this, evt);\n\n this.source = this.handler.getEventSource(evt_1.EvtUtils.getEventSource(evt));\n };\n\n MouseHandlerTimestampTaskState.prototype.onMouseUpInternal = function (_evt) {\n if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_Start) this.handler.control.taskEditController.confirmStart();else this.handler.control.taskEditController.confirmEnd();\n };\n\n MouseHandlerTimestampTaskState.prototype.onMouseMoveInternal = function (position) {\n var relativePosition = this.getRelativePos(position);\n if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_Start) this.handler.control.taskEditController.processStart(relativePosition);\n if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_End) this.handler.control.taskEditController.processEnd(relativePosition);\n };\n\n return MouseHandlerTimestampTaskState;\n }(MouseHandlerDragTaskBaseState_1.MouseHandlerDragBaseState);\n\n exports.MouseHandlerTimestampTaskState = MouseHandlerTimestampTaskState;\n /***/\n },\n /* 94 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(5);\n\n var encode_1 = __webpack_require__(95);\n\n var string_1 = __webpack_require__(27);\n\n var KeyUtils = function () {\n function KeyUtils() {}\n\n KeyUtils.getKeyModifiers = function (evt) {\n var result = 0;\n if (evt.altKey) result |= ModifierKey.Alt;\n if (evt.ctrlKey) result |= ModifierKey.Ctrl;\n if (evt.shiftKey) result |= ModifierKey.Shift;\n return result;\n };\n\n KeyUtils.getShortcutCode = function (keyCode, isCtrlKey, isShiftKey, isAltKey, isMetaKey) {\n var value = keyCode;\n value |= isCtrlKey ? ModifierKey.Ctrl : 0;\n value |= isShiftKey ? ModifierKey.Shift : 0;\n value |= isAltKey ? ModifierKey.Alt : 0;\n value |= isMetaKey ? ModifierKey.Meta : 0;\n return value;\n };\n\n KeyUtils.getShortcutCodeByEvent = function (evt) {\n return KeyUtils.getShortcutCode(KeyUtils.getEventKeyCode(evt), evt.ctrlKey, evt.shiftKey, evt.altKey, browser_1.Browser.MacOSPlatform ? evt.metaKey : false);\n };\n\n KeyUtils.getEventKeyCode = function (evt) {\n return browser_1.Browser.NetscapeFamily || browser_1.Browser.Opera ? evt.which : evt.keyCode;\n };\n\n KeyUtils.parseShortcutString = function (shortcutString) {\n if (!shortcutString) return 0;\n var isCtrlKey = false;\n var isShiftKey = false;\n var isAltKey = false;\n var isMetaKey = false;\n var keyCode = null;\n var shcKeys = shortcutString.toString().split('+');\n\n if (shcKeys.length > 0) {\n for (var i = 0; i < shcKeys.length; i++) {\n var key = string_1.StringUtils.trim(shcKeys[i].toUpperCase());\n\n switch (key) {\n case 'CONTROL':\n case 'CONTROLKEY':\n case 'CTRL':\n isCtrlKey = true;\n break;\n\n case 'SHIFT':\n case 'SHIFTKEY':\n isShiftKey = true;\n break;\n\n case 'ALT':\n isAltKey = true;\n break;\n\n case 'CMD':\n isMetaKey = true;\n break;\n\n case 'F1':\n keyCode = KeyCode.F1;\n break;\n\n case 'F2':\n keyCode = KeyCode.F2;\n break;\n\n case 'F3':\n keyCode = KeyCode.F3;\n break;\n\n case 'F4':\n keyCode = KeyCode.F4;\n break;\n\n case 'F5':\n keyCode = KeyCode.F5;\n break;\n\n case 'F6':\n keyCode = KeyCode.F6;\n break;\n\n case 'F7':\n keyCode = KeyCode.F7;\n break;\n\n case 'F8':\n keyCode = KeyCode.F8;\n break;\n\n case 'F9':\n keyCode = KeyCode.F9;\n break;\n\n case 'F10':\n keyCode = KeyCode.F10;\n break;\n\n case 'F11':\n keyCode = KeyCode.F11;\n break;\n\n case 'F12':\n keyCode = KeyCode.F12;\n break;\n\n case 'RETURN':\n case 'ENTER':\n keyCode = KeyCode.Enter;\n break;\n\n case 'HOME':\n keyCode = KeyCode.Home;\n break;\n\n case 'END':\n keyCode = KeyCode.End;\n break;\n\n case 'LEFT':\n keyCode = KeyCode.Left;\n break;\n\n case 'RIGHT':\n keyCode = KeyCode.Right;\n break;\n\n case 'UP':\n keyCode = KeyCode.Up;\n break;\n\n case 'DOWN':\n keyCode = KeyCode.Down;\n break;\n\n case 'PAGEUP':\n keyCode = KeyCode.PageUp;\n break;\n\n case 'PAGEDOWN':\n keyCode = KeyCode.PageDown;\n break;\n\n case 'SPACE':\n keyCode = KeyCode.Space;\n break;\n\n case 'TAB':\n keyCode = KeyCode.Tab;\n break;\n\n case 'BACKSPACE':\n case 'BACK':\n keyCode = KeyCode.Backspace;\n break;\n\n case 'CONTEXT':\n keyCode = KeyCode.ContextMenu;\n break;\n\n case 'ESCAPE':\n case 'ESC':\n keyCode = KeyCode.Esc;\n break;\n\n case 'DELETE':\n case 'DEL':\n keyCode = KeyCode.Delete;\n break;\n\n case 'INSERT':\n case 'INS':\n keyCode = KeyCode.Insert;\n break;\n\n case 'PLUS':\n keyCode = '+'.charCodeAt(0);\n break;\n\n default:\n keyCode = key.charCodeAt(0);\n break;\n }\n }\n } else alert(encode_1.EncodeUtils.decodeViaTextArea('Invalid shortcut'));\n\n return KeyUtils.getShortcutCode(keyCode, isCtrlKey, isShiftKey, isAltKey, isMetaKey);\n };\n\n return KeyUtils;\n }();\n\n exports.KeyUtils = KeyUtils;\n var ModifierKey;\n\n (function (ModifierKey) {\n ModifierKey[ModifierKey[\"None\"] = 0] = \"None\";\n ModifierKey[ModifierKey[\"Ctrl\"] = 65536] = \"Ctrl\";\n ModifierKey[ModifierKey[\"Shift\"] = 262144] = \"Shift\";\n ModifierKey[ModifierKey[\"Alt\"] = 1048576] = \"Alt\";\n ModifierKey[ModifierKey[\"Meta\"] = 16777216] = \"Meta\";\n })(ModifierKey = exports.ModifierKey || (exports.ModifierKey = {}));\n\n var KeyCode;\n\n (function (KeyCode) {\n KeyCode[KeyCode[\"Backspace\"] = 8] = \"Backspace\";\n KeyCode[KeyCode[\"Tab\"] = 9] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 13] = \"Enter\";\n KeyCode[KeyCode[\"Pause\"] = 19] = \"Pause\";\n KeyCode[KeyCode[\"CapsLock\"] = 20] = \"CapsLock\";\n KeyCode[KeyCode[\"Esc\"] = 27] = \"Esc\";\n KeyCode[KeyCode[\"Space\"] = 32] = \"Space\";\n KeyCode[KeyCode[\"PageUp\"] = 33] = \"PageUp\";\n KeyCode[KeyCode[\"PageDown\"] = 34] = \"PageDown\";\n KeyCode[KeyCode[\"End\"] = 35] = \"End\";\n KeyCode[KeyCode[\"Home\"] = 36] = \"Home\";\n KeyCode[KeyCode[\"Left\"] = 37] = \"Left\";\n KeyCode[KeyCode[\"Up\"] = 38] = \"Up\";\n KeyCode[KeyCode[\"Right\"] = 39] = \"Right\";\n KeyCode[KeyCode[\"Down\"] = 40] = \"Down\";\n KeyCode[KeyCode[\"Insert\"] = 45] = \"Insert\";\n KeyCode[KeyCode[\"Delete\"] = 46] = \"Delete\";\n KeyCode[KeyCode[\"Key_0\"] = 48] = \"Key_0\";\n KeyCode[KeyCode[\"Key_1\"] = 49] = \"Key_1\";\n KeyCode[KeyCode[\"Key_2\"] = 50] = \"Key_2\";\n KeyCode[KeyCode[\"Key_3\"] = 51] = \"Key_3\";\n KeyCode[KeyCode[\"Key_4\"] = 52] = \"Key_4\";\n KeyCode[KeyCode[\"Key_5\"] = 53] = \"Key_5\";\n KeyCode[KeyCode[\"Key_6\"] = 54] = \"Key_6\";\n KeyCode[KeyCode[\"Key_7\"] = 55] = \"Key_7\";\n KeyCode[KeyCode[\"Key_8\"] = 56] = \"Key_8\";\n KeyCode[KeyCode[\"Key_9\"] = 57] = \"Key_9\";\n KeyCode[KeyCode[\"Key_a\"] = 65] = \"Key_a\";\n KeyCode[KeyCode[\"Key_b\"] = 66] = \"Key_b\";\n KeyCode[KeyCode[\"Key_c\"] = 67] = \"Key_c\";\n KeyCode[KeyCode[\"Key_d\"] = 68] = \"Key_d\";\n KeyCode[KeyCode[\"Key_e\"] = 69] = \"Key_e\";\n KeyCode[KeyCode[\"Key_f\"] = 70] = \"Key_f\";\n KeyCode[KeyCode[\"Key_g\"] = 71] = \"Key_g\";\n KeyCode[KeyCode[\"Key_h\"] = 72] = \"Key_h\";\n KeyCode[KeyCode[\"Key_i\"] = 73] = \"Key_i\";\n KeyCode[KeyCode[\"Key_j\"] = 74] = \"Key_j\";\n KeyCode[KeyCode[\"Key_k\"] = 75] = \"Key_k\";\n KeyCode[KeyCode[\"Key_l\"] = 76] = \"Key_l\";\n KeyCode[KeyCode[\"Key_m\"] = 77] = \"Key_m\";\n KeyCode[KeyCode[\"Key_n\"] = 78] = \"Key_n\";\n KeyCode[KeyCode[\"Key_o\"] = 79] = \"Key_o\";\n KeyCode[KeyCode[\"Key_p\"] = 80] = \"Key_p\";\n KeyCode[KeyCode[\"Key_q\"] = 81] = \"Key_q\";\n KeyCode[KeyCode[\"Key_r\"] = 82] = \"Key_r\";\n KeyCode[KeyCode[\"Key_s\"] = 83] = \"Key_s\";\n KeyCode[KeyCode[\"Key_t\"] = 84] = \"Key_t\";\n KeyCode[KeyCode[\"Key_u\"] = 85] = \"Key_u\";\n KeyCode[KeyCode[\"Key_v\"] = 86] = \"Key_v\";\n KeyCode[KeyCode[\"Key_w\"] = 87] = \"Key_w\";\n KeyCode[KeyCode[\"Key_x\"] = 88] = \"Key_x\";\n KeyCode[KeyCode[\"Key_y\"] = 89] = \"Key_y\";\n KeyCode[KeyCode[\"Key_z\"] = 90] = \"Key_z\";\n KeyCode[KeyCode[\"Windows\"] = 91] = \"Windows\";\n KeyCode[KeyCode[\"ContextMenu\"] = 93] = \"ContextMenu\";\n KeyCode[KeyCode[\"Numpad_0\"] = 96] = \"Numpad_0\";\n KeyCode[KeyCode[\"Numpad_1\"] = 97] = \"Numpad_1\";\n KeyCode[KeyCode[\"Numpad_2\"] = 98] = \"Numpad_2\";\n KeyCode[KeyCode[\"Numpad_3\"] = 99] = \"Numpad_3\";\n KeyCode[KeyCode[\"Numpad_4\"] = 100] = \"Numpad_4\";\n KeyCode[KeyCode[\"Numpad_5\"] = 101] = \"Numpad_5\";\n KeyCode[KeyCode[\"Numpad_6\"] = 102] = \"Numpad_6\";\n KeyCode[KeyCode[\"Numpad_7\"] = 103] = \"Numpad_7\";\n KeyCode[KeyCode[\"Numpad_8\"] = 104] = \"Numpad_8\";\n KeyCode[KeyCode[\"Numpad_9\"] = 105] = \"Numpad_9\";\n KeyCode[KeyCode[\"Multiply\"] = 106] = \"Multiply\";\n KeyCode[KeyCode[\"Add\"] = 107] = \"Add\";\n KeyCode[KeyCode[\"Subtract\"] = 109] = \"Subtract\";\n KeyCode[KeyCode[\"Decimal\"] = 110] = \"Decimal\";\n KeyCode[KeyCode[\"Divide\"] = 111] = \"Divide\";\n KeyCode[KeyCode[\"F1\"] = 112] = \"F1\";\n KeyCode[KeyCode[\"F2\"] = 113] = \"F2\";\n KeyCode[KeyCode[\"F3\"] = 114] = \"F3\";\n KeyCode[KeyCode[\"F4\"] = 115] = \"F4\";\n KeyCode[KeyCode[\"F5\"] = 116] = \"F5\";\n KeyCode[KeyCode[\"F6\"] = 117] = \"F6\";\n KeyCode[KeyCode[\"F7\"] = 118] = \"F7\";\n KeyCode[KeyCode[\"F8\"] = 119] = \"F8\";\n KeyCode[KeyCode[\"F9\"] = 120] = \"F9\";\n KeyCode[KeyCode[\"F10\"] = 121] = \"F10\";\n KeyCode[KeyCode[\"F11\"] = 122] = \"F11\";\n KeyCode[KeyCode[\"F12\"] = 123] = \"F12\";\n KeyCode[KeyCode[\"NumLock\"] = 144] = \"NumLock\";\n KeyCode[KeyCode[\"ScrollLock\"] = 145] = \"ScrollLock\";\n KeyCode[KeyCode[\"Semicolon\"] = 186] = \"Semicolon\";\n KeyCode[KeyCode[\"Equals\"] = 187] = \"Equals\";\n KeyCode[KeyCode[\"Comma\"] = 188] = \"Comma\";\n KeyCode[KeyCode[\"Dash\"] = 189] = \"Dash\";\n KeyCode[KeyCode[\"Period\"] = 190] = \"Period\";\n KeyCode[KeyCode[\"ForwardSlash\"] = 191] = \"ForwardSlash\";\n KeyCode[KeyCode[\"GraveAccent\"] = 192] = \"GraveAccent\";\n KeyCode[KeyCode[\"OpenBracket\"] = 219] = \"OpenBracket\";\n KeyCode[KeyCode[\"BackSlash\"] = 220] = \"BackSlash\";\n KeyCode[KeyCode[\"CloseBracket\"] = 221] = \"CloseBracket\";\n KeyCode[KeyCode[\"SingleQuote\"] = 222] = \"SingleQuote\";\n })(KeyCode = exports.KeyCode || (exports.KeyCode = {}));\n /***/\n\n },\n /* 95 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var EncodeUtils = function () {\n function EncodeUtils() {}\n\n EncodeUtils.encodeHtml = function (text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n };\n\n EncodeUtils.decodeHtml = function (text) {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n };\n\n EncodeUtils.prepareTextForRequest = function (text) {\n return text.replace(/%/g, '%25').replace(/&/g, '%26amp;').replace(/\\+/g, '%2B').replace(//g, '%26gt;').replace(/\"/g, '%26quot;');\n };\n\n EncodeUtils.prepareTextForCallBackRequest = function (text) {\n return text.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"');\n };\n\n EncodeUtils.decodeViaTextArea = function (html) {\n var textArea = document.createElement('TEXTAREA');\n textArea.innerHTML = html;\n return textArea.value;\n };\n\n return EncodeUtils;\n }();\n\n exports.EncodeUtils = EncodeUtils;\n /***/\n },\n /* 96 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandler = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HandlerBase_1 = __webpack_require__(47);\n\n var evt_1 = __webpack_require__(6);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var TouchHandlerMoveTaskState_1 = __webpack_require__(97);\n\n var TouchHandlerDefaultState_1 = __webpack_require__(98);\n\n var TouchHandlerProgressTaskState_1 = __webpack_require__(99);\n\n var TouchHandlerTimestampTaskState_1 = __webpack_require__(100);\n\n var TouchHandlerDependencyState_1 = __webpack_require__(101);\n\n var TouchHandlerZoomState_1 = __webpack_require__(102);\n\n var TouchHandler = function (_super) {\n tslib_1.__extends(TouchHandler, _super);\n\n function TouchHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandler.prototype.onTouchStart = function (evt) {\n if (evt.touches.length > 1) evt.preventDefault();\n var source = this.getEventSource(evt_1.EvtUtils.getEventSource(evt));\n\n switch (source) {\n case TaskAreaManager_1.MouseEventSource.TaskEdit_Frame:\n this.switchState(new TouchHandlerMoveTaskState_1.TouchHandlerMoveTaskState(this));\n break;\n\n case TaskAreaManager_1.MouseEventSource.TaskEdit_Progress:\n this.switchState(new TouchHandlerProgressTaskState_1.TouchHandlerProgressTaskState(this));\n break;\n\n case TaskAreaManager_1.MouseEventSource.TaskEdit_Start:\n case TaskAreaManager_1.MouseEventSource.TaskEdit_End:\n this.switchState(new TouchHandlerTimestampTaskState_1.TouchHandlerTimestampTaskState(this));\n break;\n\n case TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyStart:\n case TaskAreaManager_1.MouseEventSource.TaskEdit_DependencyFinish:\n this.switchState(new TouchHandlerDependencyState_1.TouchHandlerDependencyState(this));\n break;\n }\n\n this.state.onTouchStart(evt);\n };\n\n TouchHandler.prototype.onDoubleTap = function (evt) {\n this.state.onDoubleTap(evt);\n };\n\n TouchHandler.prototype.onTouchEnd = function (evt) {\n this.state.onTouchEnd(evt);\n };\n\n TouchHandler.prototype.onTouchMove = function (evt) {\n if (evt.touches.length > 1) if (!(this.state instanceof TouchHandlerZoomState_1.TouchHandlerZoomState)) this.switchState(new TouchHandlerZoomState_1.TouchHandlerZoomState(this));\n this.state.onTouchMove(evt);\n };\n\n TouchHandler.prototype.switchToDefaultState = function () {\n this.state = new TouchHandlerDefaultState_1.TouchHandlerDefaultState(this);\n };\n\n return TouchHandler;\n }(HandlerBase_1.HandlerBase);\n\n exports.TouchHandler = TouchHandler;\n /***/\n },\n /* 97 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerMoveTaskState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TouchHandlerDragBaseState_1 = __webpack_require__(31);\n\n var TouchHandlerMoveTaskState = function (_super) {\n tslib_1.__extends(TouchHandlerMoveTaskState, _super);\n\n function TouchHandlerMoveTaskState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerMoveTaskState.prototype.onTouchEndInternal = function (_evt) {\n this.handler.control.taskEditController.confirmMove();\n };\n\n TouchHandlerMoveTaskState.prototype.onTouchMoveInternal = function (position) {\n if (!this.handler.control.taskEditController.processMove(position.x - this.currentPosition.x)) this.handler.switchToDefaultState();\n };\n\n return TouchHandlerMoveTaskState;\n }(TouchHandlerDragBaseState_1.TouchHandlerDragBaseState);\n\n exports.TouchHandlerMoveTaskState = TouchHandlerMoveTaskState;\n /***/\n },\n /* 98 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerDefaultState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var point_1 = __webpack_require__(4);\n\n var dom_1 = __webpack_require__(3);\n\n var evt_1 = __webpack_require__(6);\n\n var touch_1 = __webpack_require__(15);\n\n var GridLayoutCalculator_1 = __webpack_require__(17);\n\n var HandlerStateBase_1 = __webpack_require__(19);\n\n var TouchHandlerDefaultState = function (_super) {\n tslib_1.__extends(TouchHandlerDefaultState, _super);\n\n function TouchHandlerDefaultState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerDefaultState.prototype.onTouchStart = function (evt) {\n var _this = this;\n\n this.preventSelect = false;\n clearTimeout(this.popupTimer);\n\n if (evt.touches.length === 1) {\n var source = evt_1.EvtUtils.getEventSource(evt);\n var info_1 = {\n event: evt,\n position: new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt))\n };\n\n if (dom_1.DomUtils.hasClassName(source, GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_HORIZONTAL) || dom_1.DomUtils.hasClassName(source, GridLayoutCalculator_1.GridLayoutCalculator.CLASSNAMES.CONNECTOR_VERTICAL)) {\n this.preventSelect = true;\n var id = source.getAttribute(\"dependency-id\");\n if (this.handler.control.taskEditController.dependencyId != id) this.handler.control.selectDependency(id);\n info_1[\"type\"] = \"dependency\";\n info_1[\"key\"] = id;\n this.handler.control.ganttOwner.showPopupMenu(info_1);\n } else this.popupTimer = setTimeout(function () {\n var index = _this.getTaskIndex(evt);\n\n _this.changeTaskSelection(index);\n\n var item = _this.handler.control.viewModel.items[index];\n info_1[\"type\"] = \"task\";\n info_1[\"key\"] = item && item.task.id;\n\n _this.handler.control.ganttOwner.showPopupMenu(info_1);\n }, 500);\n }\n };\n\n TouchHandlerDefaultState.prototype.onDoubleTap = function (_evt) {};\n\n TouchHandlerDefaultState.prototype.onTouchEnd = function (evt) {\n clearTimeout(this.popupTimer);\n if (!this.preventSelect) this.changeTaskSelection(this.getTaskIndex(evt));\n };\n\n TouchHandlerDefaultState.prototype.onTouchMove = function (_evt) {\n clearTimeout(this.popupTimer);\n this.preventSelect = true;\n };\n\n TouchHandlerDefaultState.prototype.getTaskIndex = function (evt) {\n var y = touch_1.TouchUtils.getEventY(evt);\n var taskAreaY = dom_1.DomUtils.getAbsolutePositionY(this.handler.control.taskArea);\n var relativeY = y - taskAreaY;\n return Math.floor(relativeY / this.handler.control.tickSize.height);\n };\n\n TouchHandlerDefaultState.prototype.changeTaskSelection = function (index) {\n var clickedTask = this.handler.control.viewModel.items[index];\n if (clickedTask) this.handler.control.ganttOwner.changeGanttTaskSelection(clickedTask.task.id, true);\n };\n\n return TouchHandlerDefaultState;\n }(HandlerStateBase_1.HandlerStateBase);\n\n exports.TouchHandlerDefaultState = TouchHandlerDefaultState;\n /***/\n },\n /* 99 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerProgressTaskState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TouchHandlerDragBaseState_1 = __webpack_require__(31);\n\n var TouchHandlerProgressTaskState = function (_super) {\n tslib_1.__extends(TouchHandlerProgressTaskState, _super);\n\n function TouchHandlerProgressTaskState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerProgressTaskState.prototype.onTouchEndInternal = function (_evt) {\n this.handler.control.taskEditController.confirmProgress();\n };\n\n TouchHandlerProgressTaskState.prototype.onTouchMoveInternal = function (position) {\n var relativePosition = this.getRelativePos(position);\n this.handler.control.taskEditController.processProgress(relativePosition);\n };\n\n return TouchHandlerProgressTaskState;\n }(TouchHandlerDragBaseState_1.TouchHandlerDragBaseState);\n\n exports.TouchHandlerProgressTaskState = TouchHandlerProgressTaskState;\n /***/\n },\n /* 100 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerTimestampTaskState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TouchHandlerDragBaseState_1 = __webpack_require__(31);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var evt_1 = __webpack_require__(6);\n\n var TouchHandlerTimestampTaskState = function (_super) {\n tslib_1.__extends(TouchHandlerTimestampTaskState, _super);\n\n function TouchHandlerTimestampTaskState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerTimestampTaskState.prototype.onTouchStart = function (evt) {\n _super.prototype.onTouchStart.call(this, evt);\n\n this.source = this.handler.getEventSource(evt_1.EvtUtils.getEventSource(evt));\n };\n\n TouchHandlerTimestampTaskState.prototype.onTouchEndInternal = function (_evt) {\n if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_Start) this.handler.control.taskEditController.confirmStart();else this.handler.control.taskEditController.confirmEnd();\n };\n\n TouchHandlerTimestampTaskState.prototype.onTouchMoveInternal = function (position) {\n var relativePosition = this.getRelativePos(position);\n if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_Start) this.handler.control.taskEditController.processStart(relativePosition);\n if (this.source == TaskAreaManager_1.MouseEventSource.TaskEdit_End) this.handler.control.taskEditController.processEnd(relativePosition);\n };\n\n return TouchHandlerTimestampTaskState;\n }(TouchHandlerDragBaseState_1.TouchHandlerDragBaseState);\n\n exports.TouchHandlerTimestampTaskState = TouchHandlerTimestampTaskState;\n /***/\n },\n /* 101 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerDependencyState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var TouchHandlerStateBase_1 = __webpack_require__(49);\n\n var TaskAreaManager_1 = __webpack_require__(8);\n\n var dom_1 = __webpack_require__(3);\n\n var evt_1 = __webpack_require__(6);\n\n var point_1 = __webpack_require__(4);\n\n var MouseHandlerDependencyState_1 = __webpack_require__(48);\n\n var touch_1 = __webpack_require__(15);\n\n var TouchHandlerDependencyState = function (_super) {\n tslib_1.__extends(TouchHandlerDependencyState, _super);\n\n function TouchHandlerDependencyState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerDependencyState.prototype.onTouchStart = function (evt) {\n evt.preventDefault();\n var sourceElement = evt_1.EvtUtils.getEventSource(evt);\n this.source = this.handler.getEventSource(sourceElement);\n var pos = this.getRelativePos(new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(sourceElement) + sourceElement.clientWidth / 2, dom_1.DomUtils.getAbsolutePositionY(sourceElement) + sourceElement.clientHeight / 2));\n this.handler.control.taskEditController.startDependency(pos);\n };\n\n TouchHandlerDependencyState.prototype.onTouchEnd = function (evt) {\n var relativePosStart = this.getRelativePos(new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(this.handler.control.taskEditController.dependencySuccessorStart) + this.handler.control.taskEditController.dependencySuccessorStart.clientWidth / 2, dom_1.DomUtils.getAbsolutePositionY(this.handler.control.taskEditController.dependencySuccessorStart) + this.handler.control.taskEditController.dependencySuccessorStart.clientHeight / 2));\n var relativePosEnd = this.getRelativePos(new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(this.handler.control.taskEditController.dependencySuccessorFinish) + this.handler.control.taskEditController.dependencySuccessorFinish.clientWidth / 2, dom_1.DomUtils.getAbsolutePositionY(this.handler.control.taskEditController.dependencySuccessorFinish) + this.handler.control.taskEditController.dependencySuccessorFinish.clientHeight / 2));\n var relativeTouchPos = this.getRelativePos(new point_1.Point(touch_1.TouchUtils.getEventX(evt), touch_1.TouchUtils.getEventY(evt)));\n var target = this.isTouchNearby(relativeTouchPos, relativePosStart) ? TaskAreaManager_1.MouseEventSource.Successor_DependencyStart : this.isTouchNearby(relativeTouchPos, relativePosEnd) ? TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish : null;\n var type = target === TaskAreaManager_1.MouseEventSource.Successor_DependencyStart || target == TaskAreaManager_1.MouseEventSource.Successor_DependencyFinish ? MouseHandlerDependencyState_1.dependencyMap[this.source][target] : null;\n this.handler.control.taskEditController.endDependency(type);\n this.handler.switchToDefaultState();\n };\n\n TouchHandlerDependencyState.prototype.onTouchMove = function (evt) {\n evt.preventDefault();\n var relativePos = this.getRelativePos(new point_1.Point(touch_1.TouchUtils.getEventX(evt), touch_1.TouchUtils.getEventY(evt)));\n var hoverTaskIndex = Math.floor(relativePos.y / this.handler.control.tickSize.height);\n this.handler.control.taskEditController.processDependency(relativePos);\n if (this.handler.control.viewModel.tasks.items[hoverTaskIndex]) this.handler.control.taskEditController.showDependencySuccessor(hoverTaskIndex);\n };\n\n TouchHandlerDependencyState.prototype.isTouchNearby = function (touchPos, elementPos) {\n if (Math.abs(elementPos.x - touchPos.x) <= 10 && Math.abs(elementPos.y - touchPos.y) <= 10) return true;\n return false;\n };\n\n return TouchHandlerDependencyState;\n }(TouchHandlerStateBase_1.TouchHandlerStateBase);\n\n exports.TouchHandlerDependencyState = TouchHandlerDependencyState;\n /***/\n },\n /* 102 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TouchHandlerZoomState = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HandlerStateBase_1 = __webpack_require__(19);\n\n var point_1 = __webpack_require__(4);\n\n var dom_1 = __webpack_require__(3);\n\n var PINCH_CHANGE_DISTANCE = 3;\n\n var TouchHandlerZoomState = function (_super) {\n tslib_1.__extends(TouchHandlerZoomState, _super);\n\n function TouchHandlerZoomState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TouchHandlerZoomState.prototype.onTouchStart = function (_evt) {};\n\n TouchHandlerZoomState.prototype.onDoubleTap = function (_evt) {};\n\n TouchHandlerZoomState.prototype.onTouchEnd = function (_evt) {\n this.prevDistance = null;\n this.handler.switchToDefaultState();\n };\n\n TouchHandlerZoomState.prototype.onTouchMove = function (evt) {\n evt.stopPropagation();\n evt.preventDefault();\n\n if (evt.touches.length > 1) {\n var distance = this.getTouchDistance(evt);\n\n if (this.prevDistance) {\n var diff = this.prevDistance - distance;\n\n if (Math.abs(diff) > PINCH_CHANGE_DISTANCE) {\n var offsetX = this.getMiddleAbsPoint(evt).x;\n if (diff > 0) this.handler.control.zoomOut(offsetX);else this.handler.control.zoomIn(offsetX);\n this.prevDistance = distance;\n }\n } else this.prevDistance = distance;\n }\n };\n\n TouchHandlerZoomState.prototype.getTouchDistance = function (evt) {\n var pt0 = new point_1.Point(evt.touches[0].clientX, evt.touches[0].clientY);\n var pt1 = new point_1.Point(evt.touches[1].clientX, evt.touches[1].clientY);\n return this.getDistance(pt0, pt1);\n };\n\n TouchHandlerZoomState.prototype.getDistance = function (a, b) {\n return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));\n };\n\n TouchHandlerZoomState.prototype.getMiddleAbsPoint = function (evt) {\n var _this = this;\n\n return this.getMiddlePointByEvent(evt, function (touch) {\n return new point_1.Point(touch.pageX - dom_1.DomUtils.getAbsolutePositionX(_this.handler.control.taskAreaContainer.getElement()), touch.pageY - dom_1.DomUtils.getAbsolutePositionY(_this.handler.control.taskAreaContainer.getElement()));\n });\n };\n\n TouchHandlerZoomState.prototype.getMiddlePointByEvent = function (evt, getPoint) {\n if (evt.touches.length > 1) return new point_1.Point((getPoint(evt.touches[0]).x + getPoint(evt.touches[1]).x) / 2, (getPoint(evt.touches[0]).y + getPoint(evt.touches[1]).y) / 2);\n };\n\n return TouchHandlerZoomState;\n }(HandlerStateBase_1.HandlerStateBase);\n\n exports.TouchHandlerZoomState = TouchHandlerZoomState;\n /***/\n },\n /* 103 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskAreaContainer = void 0;\n\n var TaskAreaContainer = function () {\n function TaskAreaContainer(element, ganttView) {\n this.element = element;\n\n this.onScrollHandler = function () {\n ganttView.updateView();\n };\n\n this.element.addEventListener(\"scroll\", this.onScrollHandler);\n }\n\n Object.defineProperty(TaskAreaContainer.prototype, \"scrollTop\", {\n get: function get() {\n return this.element.scrollTop;\n },\n set: function set(value) {\n this.element.scrollTop = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskAreaContainer.prototype, \"scrollLeft\", {\n get: function get() {\n return this.element.scrollLeft;\n },\n set: function set(value) {\n this.element.scrollLeft = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskAreaContainer.prototype, \"scrollWidth\", {\n get: function get() {\n return this.element.scrollWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskAreaContainer.prototype, \"scrollHeight\", {\n get: function get() {\n return this.element.scrollHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TaskAreaContainer.prototype, \"isExternal\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n TaskAreaContainer.prototype.getWidth = function () {\n return this.element.offsetWidth;\n };\n\n TaskAreaContainer.prototype.getHeight = function () {\n return this.element.offsetHeight;\n };\n\n TaskAreaContainer.prototype.getElement = function () {\n return this.element;\n };\n\n TaskAreaContainer.prototype.detachEvents = function () {\n this.element.removeEventListener(\"scroll\", this.onScrollHandler);\n };\n\n return TaskAreaContainer;\n }();\n\n exports.TaskAreaContainer = TaskAreaContainer;\n /***/\n },\n /* 104 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ModelChangesDispatcher = void 0;\n\n var EventDispatcher_1 = __webpack_require__(105);\n\n var TaskArguments_1 = __webpack_require__(50);\n\n var AssignmentArguments_1 = __webpack_require__(32);\n\n var ModelChangesDispatcher = function () {\n function ModelChangesDispatcher() {\n this.onModelChanged = new EventDispatcher_1.EventDispatcher();\n this.isLocked = false;\n }\n\n ModelChangesDispatcher.prototype.notifyTaskCreating = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskCreating\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskCreated = function (task, callback, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskCreated\", task, callback, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskRemoving = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskRemoving\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskRemoved = function (taskID, errorCallback, task) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskRemoved\", taskID, errorCallback, task);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskUpdating = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskUpdating\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskMoving = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskMoving\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskEditDialogShowing = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskEditDialogShowing\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskTitleChanged = function (taskID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskTitleChanged\", taskID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskDescriptionChanged = function (taskID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskDescriptionChanged\", taskID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskStartChanged = function (taskID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskStartChanged\", taskID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskEndChanged = function (taskID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskEndChanged\", taskID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskProgressChanged = function (taskID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskProgressChanged\", taskID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyTaskColorChanged = function (taskID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyTaskColorChanged\", taskID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyParentTaskUpdated = function (task, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyParentTaskUpdated\", task, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyDependencyInserting = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyDependencyInserting\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyDependencyInserted = function (dependency, callback, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyDependencyInserted\", dependency, callback, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyDependencyRemoving = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyDependencyRemoving\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyDependencyRemoved = function (dependencyID, errorCallback, dependency) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyDependencyRemoved\", dependencyID, errorCallback, dependency);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceCreating = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceCreating\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceCreated = function (resource, callback, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceCreated\", resource, callback, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceRemoving = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceRemoving\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceRemoved = function (resourceID, errorCallback, resource) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceRemoved\", resourceID, errorCallback, resource);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceColorChanged = function (resourceID, newValue, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceColorChanged\", resourceID, newValue, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceAssigning = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceAssigning\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceAssigned = function (assignment, callback, errorCallback) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceAssigned\", assignment, callback, errorCallback);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceUnassigning = function (args) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceUnassigning\", args);\n };\n\n ModelChangesDispatcher.prototype.notifyResourceUnassigned = function (assignmentID, errorCallback, assignment) {\n if (!this.isLocked) this.onModelChanged.raise(\"NotifyResourceUnassigned\", assignmentID, errorCallback, assignment);\n };\n\n ModelChangesDispatcher.prototype.notifyParentDataRecalculated = function (data) {\n this.onModelChanged.raise(\"NotifyParentDataRecalculated\", data);\n };\n\n ModelChangesDispatcher.prototype.fireResourceUnassigning = function (assignment) {\n var args = new AssignmentArguments_1.ResourceUnassigningArguments(assignment);\n this.notifyResourceUnassigning(args);\n return !args.cancel;\n };\n\n ModelChangesDispatcher.prototype.raiseTaskTitleUpdating = function (task, value, callback) {\n return this.raiseTaskUpdating(task, \"title\", value, callback);\n };\n\n ModelChangesDispatcher.prototype.raiseTaskDescriptionUpdating = function (task, value, callback) {\n return this.raiseTaskUpdating(task, \"description\", value, callback);\n };\n\n ModelChangesDispatcher.prototype.raiseTaskProgressUpdating = function (task, value, callback) {\n return this.raiseTaskUpdating(task, \"progress\", value, callback);\n };\n\n ModelChangesDispatcher.prototype.raiseTaskColorUpdating = function (task, value, callback) {\n return this.raiseTaskUpdating(task, \"color\", value, callback);\n };\n\n ModelChangesDispatcher.prototype.raiseTaskStartUpdating = function (task, value, callback) {\n return this.raiseTaskUpdating(task, \"start\", value, callback);\n };\n\n ModelChangesDispatcher.prototype.raiseTaskEndUpdating = function (task, value, callback) {\n return this.raiseTaskUpdating(task, \"end\", value, callback);\n };\n\n ModelChangesDispatcher.prototype.raiseTaskStartAndEndUpdating = function (task, newStart, newEnd, callback) {\n var args = new TaskArguments_1.TaskUpdatingArguments(task, [\"start\", \"end\"], [newStart, newEnd]);\n this.notifyTaskUpdating(args);\n\n if (!args.cancel) {\n callback(args[\"start\"], args[\"end\"]);\n return true;\n }\n\n return false;\n };\n\n ModelChangesDispatcher.prototype.raiseTaskUpdating = function (task, fieldName, newValue, callback) {\n var oldValue = task[fieldName];\n\n if (oldValue !== newValue) {\n var args = new TaskArguments_1.TaskUpdatingArguments(task, [fieldName], [newValue]);\n this.notifyTaskUpdating(args);\n\n if (!args.cancel && oldValue !== args[fieldName]) {\n callback(args[fieldName]);\n return true;\n }\n }\n\n return false;\n };\n\n ModelChangesDispatcher.prototype.raiseTaskMultipleUpdating = function (task, newValues, callback) {\n var fields = [\"title\", \"progress\", \"start\", \"end\", \"color\"];\n var values = fields.map(function (f) {\n return newValues[f];\n });\n var args = new TaskArguments_1.TaskUpdatingArguments(task, fields, values);\n this.notifyTaskUpdating(args);\n\n if (!args.cancel) {\n callback(args.newValues);\n return true;\n }\n\n return false;\n };\n\n ModelChangesDispatcher.prototype.raiseTaskMoving = function (task, newStart, newEnd, callback) {\n var args = new TaskArguments_1.TaskUpdatingArguments(task, [\"start\", \"end\"], [newStart, newEnd]);\n this.notifyTaskMoving(args);\n\n if (!args.cancel) {\n callback(args[\"start\"], args[\"end\"]);\n return true;\n }\n\n return false;\n };\n\n ModelChangesDispatcher.prototype.raiseTaskTaskEditDialogShowing = function (params, callback) {\n var args = new TaskArguments_1.TaskEditDialogShowingArguments(params);\n this.notifyTaskEditDialogShowing(args);\n\n if (!args.cancel) {\n callback(args);\n return true;\n }\n\n return false;\n };\n\n ModelChangesDispatcher.prototype.lock = function () {\n this.isLocked = true;\n };\n\n ModelChangesDispatcher.prototype.unlock = function () {\n this.isLocked = false;\n };\n\n return ModelChangesDispatcher;\n }();\n\n exports.ModelChangesDispatcher = ModelChangesDispatcher;\n /***/\n },\n /* 105 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EventDispatcher = void 0;\n\n var EventDispatcher = function () {\n function EventDispatcher() {\n this.listeners = [];\n }\n\n EventDispatcher.prototype.add = function (listener) {\n if (!listener) throw new Error(\"Error\");\n if (!this.hasEventListener(listener)) this.listeners.push(listener);\n };\n\n EventDispatcher.prototype.remove = function (listener) {\n for (var i = 0, currentListener = void 0; currentListener = this.listeners[i]; i++) {\n if (currentListener === listener) {\n this.listeners.splice(i, 1);\n break;\n }\n }\n };\n\n EventDispatcher.prototype.raise = function (funcName) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n for (var i = 0, listener = void 0; listener = this.listeners[i]; i++) {\n var func = listener[funcName];\n func === null || func === void 0 ? void 0 : func.apply(listener, args);\n }\n };\n\n EventDispatcher.prototype.hasEventListener = function (listener) {\n for (var i = 0, l = this.listeners.length; i < l; i++) {\n if (this.listeners[i] === listener) return true;\n }\n\n return false;\n };\n\n return EventDispatcher;\n }();\n\n exports.EventDispatcher = EventDispatcher;\n /***/\n },\n /* 106 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CommandManager = void 0;\n\n var TaskCommands_1 = __webpack_require__(107);\n\n var TaskPropertiesCommands_1 = __webpack_require__(108);\n\n var DependencyCommands_1 = __webpack_require__(109);\n\n var ResourceCommands_1 = __webpack_require__(111);\n\n var TaskEditDialog_1 = __webpack_require__(113);\n\n var ConstraintViolationDialog_1 = __webpack_require__(52);\n\n var ResourcesDialog_1 = __webpack_require__(114);\n\n var ClientCommand_1 = __webpack_require__(115);\n\n var HistoryCommands_1 = __webpack_require__(116);\n\n var ZoomCommands_1 = __webpack_require__(117);\n\n var FullScreenCommand_1 = __webpack_require__(118);\n\n var CollapseExpandCommands_1 = __webpack_require__(119);\n\n var ConfirmationDialog_1 = __webpack_require__(23);\n\n var ResourcePropertiesCommands_1 = __webpack_require__(120);\n\n var CommandManager = function () {\n function CommandManager(control) {\n this.control = control;\n this.commands = {};\n this.createCommand(ClientCommand_1.GanttClientCommand.CreateTask, this.createTaskCommand);\n this.createCommand(ClientCommand_1.GanttClientCommand.CreateSubTask, this.createSubTaskCommand);\n this.createCommand(ClientCommand_1.GanttClientCommand.RemoveTask, this.removeTaskCommand);\n this.createCommand(ClientCommand_1.GanttClientCommand.RemoveDependency, this.removeDependencyCommand);\n this.createCommand(ClientCommand_1.GanttClientCommand.TaskInformation, this.showTaskEditDialog);\n this.createCommand(ClientCommand_1.GanttClientCommand.TaskAddContextItem, new TaskCommands_1.TaskAddContextItemCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.Undo, new HistoryCommands_1.UndoCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.Redo, new HistoryCommands_1.RedoCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.ZoomIn, new ZoomCommands_1.ZoomInCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.ZoomOut, new ZoomCommands_1.ZoomOutCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.FullScreen, new FullScreenCommand_1.ToggleFullScreenCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.CollapseAll, new CollapseExpandCommands_1.CollapseAllCommand(this.control));\n this.createCommand(ClientCommand_1.GanttClientCommand.ExpandAll, new CollapseExpandCommands_1.ExpandAllCommand(this.control));\n }\n\n Object.defineProperty(CommandManager.prototype, \"createTaskCommand\", {\n get: function get() {\n return new TaskCommands_1.CreateTaskCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"createSubTaskCommand\", {\n get: function get() {\n return new TaskCommands_1.CreateSubTaskCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"removeTaskCommand\", {\n get: function get() {\n return new TaskCommands_1.RemoveTaskCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeTaskTitleCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskTitleCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeTaskDescriptionCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskDescriptionCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeTaskProgressCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskProgressCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeTaskColorCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskColorCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeTaskStartCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskStartCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"taskMoveCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskMoveCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeTaskEndCommand\", {\n get: function get() {\n return new TaskPropertiesCommands_1.TaskEndCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"updateTaskCommand\", {\n get: function get() {\n return new TaskCommands_1.UpdateTaskCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"createDependencyCommand\", {\n get: function get() {\n return new DependencyCommands_1.CreateDependencyCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"removeDependencyCommand\", {\n get: function get() {\n return new DependencyCommands_1.RemoveDependencyCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"createResourceCommand\", {\n get: function get() {\n return new ResourceCommands_1.CreateResourceCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"removeResourceCommand\", {\n get: function get() {\n return new ResourceCommands_1.RemoveResourceCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"assignResourceCommand\", {\n get: function get() {\n return new ResourceCommands_1.AssignResourceCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"deassignResourceCommand\", {\n get: function get() {\n return new ResourceCommands_1.DeassignResourceCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"changeResourceColorCommand\", {\n get: function get() {\n return new ResourcePropertiesCommands_1.ResourceColorCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"showTaskEditDialog\", {\n get: function get() {\n return new TaskEditDialog_1.TaskEditDialogCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"showConstraintViolationDialog\", {\n get: function get() {\n return new ConstraintViolationDialog_1.ConstraintViolationDialogCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"showConfirmationDialog\", {\n get: function get() {\n return new ConfirmationDialog_1.ConfirmationDialog(this.control);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandManager.prototype, \"showResourcesDialog\", {\n get: function get() {\n return new ResourcesDialog_1.ResourcesDialogCommand(this.control);\n },\n enumerable: false,\n configurable: true\n });\n\n CommandManager.prototype.getCommand = function (key) {\n return this.commands[key];\n };\n\n CommandManager.prototype.createCommand = function (commandId, command) {\n this.commands[commandId] = command;\n };\n\n return CommandManager;\n }();\n\n exports.CommandManager = CommandManager;\n /***/\n },\n /* 107 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskAddContextItemCommand = exports.UpdateTaskCommand = exports.RemoveTaskCommand = exports.CreateSubTaskCommand = exports.CreateTaskCommand = exports.TaskCommandBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var TaskHistoryItem_1 = __webpack_require__(51);\n\n var TaskDependencyHistoryItem_1 = __webpack_require__(21);\n\n var ResourceHistoryItem_1 = __webpack_require__(22);\n\n var ConfirmationDialog_1 = __webpack_require__(23);\n\n var TaskArguments_1 = __webpack_require__(50);\n\n var TaskPropertiesHistoryItem_1 = __webpack_require__(25);\n\n var common_1 = __webpack_require__(1);\n\n var TaskCommandBase = function (_super) {\n tslib_1.__extends(TaskCommandBase, _super);\n\n function TaskCommandBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.isApiCall = false;\n return _this;\n }\n\n TaskCommandBase.prototype.getState = function () {\n var state = new CommandBase_1.SimpleCommandState(this.isEnabled());\n state.visible = this.control.settings.editing.enabled && !this.control.taskEditController.dependencyId;\n return state;\n };\n\n TaskCommandBase.prototype.updateParent = function (parent) {\n var isAutoUpdateParentTask = this.validationController._parentAutoCalc;\n\n if (isAutoUpdateParentTask && parent && parent.children.length > 0) {\n this.control.validationController.updateParentsIfRequired(parent.children[0].task.internalId);\n\n while (!!parent && !!parent.task) {\n this.modelManipulator.dispatcher.notifyParentTaskUpdated(parent.task, this.control.viewModel.getDataUpdateErrorCallback());\n parent = parent.parent;\n }\n }\n };\n\n return TaskCommandBase;\n }(CommandBase_1.CommandBase);\n\n exports.TaskCommandBase = TaskCommandBase;\n\n var CreateTaskCommand = function (_super) {\n tslib_1.__extends(CreateTaskCommand, _super);\n\n function CreateTaskCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CreateTaskCommand.prototype.execute = function (data) {\n return _super.prototype.execute.call(this, data);\n };\n\n CreateTaskCommand.prototype.executeInternal = function (data) {\n var _a, _b;\n\n data !== null && data !== void 0 ? data : data = {};\n\n if (!data.parentId) {\n var item = this.control.viewModel.findItem(this.control.currentSelectedTaskID);\n var selectedTask = item && item.task;\n if (selectedTask) data.parentId = selectedTask.parentId;\n }\n\n var referenceItem = this.control.viewModel.findItem(data.parentId) || this.control.viewModel.items[0];\n var referenceTask = referenceItem && referenceItem.task;\n if (!data.start) data.start = referenceTask ? new Date(referenceTask.start.getTime()) : new Date(this.control.range.start.getTime());\n if (!data.end) data.end = referenceTask ? new Date(referenceTask.end.getTime()) : new Date(this.control.range.end.getTime());\n (_a = data.title) !== null && _a !== void 0 ? _a : data.title = \"New task\";\n (_b = data.progress) !== null && _b !== void 0 ? _b : data.progress = 0;\n var args = new TaskArguments_1.TaskInsertingArguments(null, data);\n this.modelManipulator.dispatcher.notifyTaskCreating(args);\n\n if (!args.cancel) {\n this.history.addAndRedo(new TaskHistoryItem_1.CreateTaskHistoryItem(this.modelManipulator, args));\n var parentItem = this.control.viewModel.findItem(data.parentId);\n this.updateParent(parentItem);\n }\n\n return !args.cancel;\n };\n\n CreateTaskCommand.prototype.getState = function () {\n var state = _super.prototype.getState.call(this);\n\n state.visible = state.visible && this.control.settings.editing.allowTaskInsert;\n return state;\n };\n\n return CreateTaskCommand;\n }(TaskCommandBase);\n\n exports.CreateTaskCommand = CreateTaskCommand;\n\n var CreateSubTaskCommand = function (_super) {\n tslib_1.__extends(CreateSubTaskCommand, _super);\n\n function CreateSubTaskCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CreateSubTaskCommand.prototype.execute = function (parentId) {\n return _super.prototype.execute.call(this, parentId);\n };\n\n CreateSubTaskCommand.prototype.executeInternal = function (parentId) {\n parentId = parentId || this.control.currentSelectedTaskID;\n var selectedItem = this.control.viewModel.findItem(parentId);\n\n if (selectedItem.selected) {\n var data = {\n start: new Date(selectedItem.task.start.getTime()),\n end: new Date(selectedItem.task.end.getTime()),\n title: \"New task\",\n progress: 0,\n parentId: parentId\n };\n var args = new TaskArguments_1.TaskInsertingArguments(null, data);\n this.modelManipulator.dispatcher.notifyTaskCreating(args);\n\n if (!args.cancel) {\n this.history.addAndRedo(new TaskHistoryItem_1.CreateTaskHistoryItem(this.modelManipulator, args));\n var parentItem = this.control.viewModel.findItem(data.parentId);\n this.updateParent(parentItem);\n }\n\n return !args.cancel;\n }\n\n return false;\n };\n\n CreateSubTaskCommand.prototype.isEnabled = function () {\n var gantt = this.control;\n var selectedItem = gantt.viewModel.findItem(gantt.currentSelectedTaskID);\n return _super.prototype.isEnabled.call(this) && !!selectedItem && selectedItem.selected;\n };\n\n CreateSubTaskCommand.prototype.getState = function () {\n var state = _super.prototype.getState.call(this);\n\n var gantt = this.control;\n state.visible = state.visible && gantt.settings.editing.allowTaskInsert;\n return state;\n };\n\n return CreateSubTaskCommand;\n }(TaskCommandBase);\n\n exports.CreateSubTaskCommand = CreateSubTaskCommand;\n\n var RemoveTaskCommand = function (_super) {\n tslib_1.__extends(RemoveTaskCommand, _super);\n\n function RemoveTaskCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveTaskCommand.prototype.execute = function (id, confirmRequired, isApiCall, isUpdateParentTaskRequired, historyItem) {\n var _this = this;\n\n if (confirmRequired === void 0) {\n confirmRequired = true;\n }\n\n if (isApiCall === void 0) {\n isApiCall = false;\n }\n\n if (isUpdateParentTaskRequired === void 0) {\n isUpdateParentTaskRequired = true;\n }\n\n this.isApiCall = isApiCall;\n this.isUpdateParentTaskRequired = isUpdateParentTaskRequired;\n\n if (confirmRequired) {\n this.control.commandManager.showConfirmationDialog.execute(new ConfirmationDialog_1.ConfirmationDialogParameters(ConfirmationDialog_1.ConfirmationType.TaskDelete, function () {\n _this.executeInternal(id, historyItem);\n }));\n return false;\n }\n\n return _super.prototype.execute.call(this, id, historyItem);\n };\n\n RemoveTaskCommand.prototype.executeInternal = function (id, historyItem) {\n var _this = this;\n\n id = id || this.control.currentSelectedTaskID;\n var item = this.control.viewModel.findItem(id);\n var task = item ? item.task : this.control.viewModel.tasks.getItemById(id);\n var args = new TaskArguments_1.TaskRemovingArguments(task);\n this.modelManipulator.dispatcher.notifyTaskRemoving(args);\n if (args.cancel) return false;\n this.control.viewModel.beginUpdate();\n var removeTaskHistoryItem = historyItem || new TaskHistoryItem_1.RemoveTaskHistoryItem(this.modelManipulator);\n removeTaskHistoryItem.addTask(id);\n var childTasks = this.control.viewModel.tasks.items.filter(function (t) {\n return t.parentId == id;\n });\n childTasks.forEach(function (t) {\n return new RemoveTaskCommand(_this.control).execute(t.internalId, false, true, false, removeTaskHistoryItem);\n });\n var parent = item && item.parent;\n var dependencies = this.control.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId == id || d.successorId == id;\n });\n if (dependencies.length) if (this.control.settings.editing.allowDependencyDelete) {\n dependencies = dependencies.filter(function (d) {\n return childTasks.filter(function (c) {\n return c.internalId == d.predecessorId || c.internalId == d.successorId;\n }).length == 0;\n });\n dependencies.forEach(function (d) {\n return removeTaskHistoryItem.add(new TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem(_this.modelManipulator, d.internalId));\n });\n } else return false;\n var assignments = this.control.viewModel.assignments.items.filter(function (a) {\n return a.taskId == id;\n });\n assignments.forEach(function (a) {\n if (_this.modelManipulator.dispatcher.fireResourceUnassigning(a)) removeTaskHistoryItem.add(new ResourceHistoryItem_1.DeassignResourceHistoryItem(_this.modelManipulator, a.internalId));\n });\n if (!historyItem) this.history.addAndRedo(removeTaskHistoryItem);\n if (this.isUpdateParentTaskRequired) this.updateParent(parent);\n this.control.viewModel.endUpdate();\n return true;\n };\n\n RemoveTaskCommand.prototype.isEnabled = function () {\n var gantt = this.control;\n var selectedItem = gantt.viewModel.findItem(gantt.currentSelectedTaskID);\n var result = _super.prototype.isEnabled.call(this) && (!!selectedItem && selectedItem.selected || this.isApiCall);\n return result;\n };\n\n RemoveTaskCommand.prototype.getState = function () {\n var state = _super.prototype.getState.call(this);\n\n var gantt = this.control;\n state.visible = state.visible && gantt.settings.editing.allowTaskDelete;\n return state;\n };\n\n return RemoveTaskCommand;\n }(TaskCommandBase);\n\n exports.RemoveTaskCommand = RemoveTaskCommand;\n\n var UpdateTaskCommand = function (_super) {\n tslib_1.__extends(UpdateTaskCommand, _super);\n\n function UpdateTaskCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UpdateTaskCommand.prototype.execute = function (id, newValues) {\n return _super.prototype.execute.call(this, id, newValues);\n };\n\n UpdateTaskCommand.prototype.executeInternal = function (id, newValues) {\n var task = this.control.viewModel.tasks.getItemById(id);\n if (!task) return false;\n var success = this.control.modelManipulator.dispatcher.raiseTaskMultipleUpdating(task, newValues, function (changedNewValues) {\n newValues.title = changedNewValues.title;\n newValues.progress = changedNewValues.progress;\n newValues.start = changedNewValues.start;\n newValues.end = changedNewValues.end;\n newValues.color = changedNewValues.color;\n });\n\n if (success) {\n this.history.beginTransaction();\n var needRecalculateParents = false;\n if (common_1.isDefined(newValues.title) && newValues.title !== task.title) this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskTitleHistoryItem(this.modelManipulator, id, newValues.title));\n\n if (common_1.isDefined(newValues.progress) && newValues.progress !== task.progress) {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskProgressHistoryItem(this.modelManipulator, id, newValues.progress));\n needRecalculateParents = true;\n }\n\n if (common_1.isDefined(newValues.start) && common_1.isDefined(newValues.end) && newValues.end.getTime() < newValues.start.getTime()) newValues.end = newValues.start;\n\n if (common_1.isDefined(newValues.start) && newValues.start !== task.start) {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.modelManipulator, id, newValues.start));\n needRecalculateParents = true;\n if (this.control.settings.validation.validateDependencies) this.control.validationController.moveStartDependTasks(id, task.start);\n }\n\n if (common_1.isDefined(newValues.end) && newValues.end !== task.end) {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.modelManipulator, id, newValues.end));\n needRecalculateParents = true;\n if (this.control.settings.validation.validateDependencies) this.control.validationController.moveEndDependTasks(id, task.end);\n }\n\n if (common_1.isDefined(newValues.color) && newValues.color !== task.color) this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskColorHistoryItem(this.modelManipulator, id, newValues.color));\n if (needRecalculateParents) this.validationController.updateParentsIfRequired(id);else this.control.updateOwnerInAutoParentMode();\n this.history.endTransaction();\n }\n\n return success;\n };\n\n UpdateTaskCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskUpdate;\n };\n\n return UpdateTaskCommand;\n }(TaskCommandBase);\n\n exports.UpdateTaskCommand = UpdateTaskCommand;\n\n var TaskAddContextItemCommand = function (_super) {\n tslib_1.__extends(TaskAddContextItemCommand, _super);\n\n function TaskAddContextItemCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskAddContextItemCommand.prototype.getState = function () {\n var state = _super.prototype.getState.call(this);\n\n state.visible = state.visible && this.control.settings.editing.allowTaskInsert;\n return state;\n };\n\n TaskAddContextItemCommand.prototype.execute = function () {\n return false;\n };\n\n return TaskAddContextItemCommand;\n }(TaskCommandBase);\n\n exports.TaskAddContextItemCommand = TaskAddContextItemCommand;\n /***/\n },\n /* 108 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskMoveCommand = exports.TaskEndCommand = exports.TaskStartCommand = exports.TaskPropertyCommandValidation = exports.TaskColorCommand = exports.TaskProgressCommand = exports.TaskDescriptionCommand = exports.TaskTitleCommand = exports.TaskPropertyCommandBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var TaskPropertiesHistoryItem_1 = __webpack_require__(25);\n\n var ConstraintViolationDialog_1 = __webpack_require__(52);\n\n var DateRange_1 = __webpack_require__(9);\n\n var TaskPropertyCommandBase = function (_super) {\n tslib_1.__extends(TaskPropertyCommandBase, _super);\n\n function TaskPropertyCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskPropertyCommandBase.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n TaskPropertyCommandBase.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskUpdate;\n };\n\n TaskPropertyCommandBase.prototype.getTask = function (id) {\n return this.control.viewModel.tasks.getItemById(id);\n };\n\n return TaskPropertyCommandBase;\n }(CommandBase_1.CommandBase);\n\n exports.TaskPropertyCommandBase = TaskPropertyCommandBase;\n\n var TaskTitleCommand = function (_super) {\n tslib_1.__extends(TaskTitleCommand, _super);\n\n function TaskTitleCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskTitleCommand.prototype.execute = function (id, value) {\n return _super.prototype.execute.call(this, id, value);\n };\n\n TaskTitleCommand.prototype.executeInternal = function (id, value) {\n var _this = this;\n\n return this.modelManipulator.dispatcher.raiseTaskTitleUpdating(this.getTask(id), value, function (newTitle) {\n _this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskTitleHistoryItem(_this.modelManipulator, id, newTitle));\n });\n };\n\n return TaskTitleCommand;\n }(TaskPropertyCommandBase);\n\n exports.TaskTitleCommand = TaskTitleCommand;\n\n var TaskDescriptionCommand = function (_super) {\n tslib_1.__extends(TaskDescriptionCommand, _super);\n\n function TaskDescriptionCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskDescriptionCommand.prototype.execute = function (id, value) {\n return _super.prototype.execute.call(this, id, value);\n };\n\n TaskDescriptionCommand.prototype.executeInternal = function (id, value) {\n var _this = this;\n\n return this.modelManipulator.dispatcher.raiseTaskDescriptionUpdating(this.getTask(id), value, function (newDescription) {\n _this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskDescriptionHistoryItem(_this.modelManipulator, id, newDescription));\n });\n };\n\n return TaskDescriptionCommand;\n }(TaskPropertyCommandBase);\n\n exports.TaskDescriptionCommand = TaskDescriptionCommand;\n\n var TaskProgressCommand = function (_super) {\n tslib_1.__extends(TaskProgressCommand, _super);\n\n function TaskProgressCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskProgressCommand.prototype.execute = function (id, value) {\n return _super.prototype.execute.call(this, id, value);\n };\n\n TaskProgressCommand.prototype.executeInternal = function (id, value) {\n var _this = this;\n\n return this.modelManipulator.dispatcher.raiseTaskProgressUpdating(this.getTask(id), value, function (newValue) {\n _this.control.history.beginTransaction();\n\n _this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskProgressHistoryItem(_this.modelManipulator, id, newValue));\n\n _this.validationController.updateParentsIfRequired(id);\n\n _this.control.history.endTransaction();\n });\n };\n\n return TaskProgressCommand;\n }(TaskPropertyCommandBase);\n\n exports.TaskProgressCommand = TaskProgressCommand;\n\n var TaskColorCommand = function (_super) {\n tslib_1.__extends(TaskColorCommand, _super);\n\n function TaskColorCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskColorCommand.prototype.execute = function (id, value) {\n return _super.prototype.execute.call(this, id, value);\n };\n\n TaskColorCommand.prototype.executeInternal = function (id, value) {\n var _this = this;\n\n return this.modelManipulator.dispatcher.raiseTaskColorUpdating(this.getTask(id), value, function (newValue) {\n _this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskColorHistoryItem(_this.modelManipulator, id, newValue));\n });\n };\n\n return TaskColorCommand;\n }(TaskPropertyCommandBase);\n\n exports.TaskColorCommand = TaskColorCommand;\n\n var TaskPropertyCommandValidation = function (_super) {\n tslib_1.__extends(TaskPropertyCommandValidation, _super);\n\n function TaskPropertyCommandValidation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskPropertyCommandValidation.prototype.executeInternal = function () {\n var _this = this;\n\n var parameters = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n\n var validationErrors = this.control.settings.validation.validateDependencies ? this.validate.apply(this, parameters) : [];\n var criticalErrors = validationErrors.filter(function (e) {\n return e.critical;\n });\n if (!validationErrors.length || validationErrors.length > 1 && criticalErrors.length === 0) return this.executeCore.apply(this, parameters);else if (validationErrors.length === 1) this.control.commandManager.showConstraintViolationDialog.execute(new ConstraintViolationDialog_1.ConstraintViolationDialogParameters(validationErrors[0], function () {\n _this.executeCore.apply(_this, parameters);\n }));\n return false;\n };\n\n TaskPropertyCommandValidation.prototype.executeCore = function () {\n var parameters = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n\n return false;\n };\n\n TaskPropertyCommandValidation.prototype.validate = function () {\n var parameters = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n\n return [];\n };\n\n return TaskPropertyCommandValidation;\n }(TaskPropertyCommandBase);\n\n exports.TaskPropertyCommandValidation = TaskPropertyCommandValidation;\n\n var TaskStartCommand = function (_super) {\n tslib_1.__extends(TaskStartCommand, _super);\n\n function TaskStartCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskStartCommand.prototype.execute = function (id, value) {\n var success = this.modelManipulator.dispatcher.raiseTaskStartUpdating(this.getTask(id), value, function (newStart) {\n value = newStart;\n });\n return success && _super.prototype.execute.call(this, id, value);\n };\n\n TaskStartCommand.prototype.executeInternal = function (id, value) {\n return _super.prototype.executeInternal.call(this, id, value);\n };\n\n TaskStartCommand.prototype.executeCore = function (id, value) {\n var oldStart = this.control.viewModel.tasks.getItemById(id).start;\n if (oldStart.getTime() == value.getTime()) return false;\n this.control.history.beginTransaction();\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.modelManipulator, id, value));\n if (this.control.settings.validation.validateDependencies) this.control.validationController.moveStartDependTasks(id, oldStart);\n this.validationController.updateParentsIfRequired(id);\n this.control.history.endTransaction();\n var minStartTask = this.control.viewModel.tasks.items.reduce(function (prev, curr) {\n if (!curr.isValid()) return prev;\n if (!prev.isValid()) return curr;\n return prev.start.getTime() < curr.start.getTime() ? prev : curr;\n });\n\n if (minStartTask.start < this.control.dataRange.start) {\n this.control.dataRange.start = minStartTask.start;\n this.control.resetAndUpdate();\n }\n\n return true;\n };\n\n TaskStartCommand.prototype.validate = function (id, value) {\n return this.control.validationController.checkStartDependencies(id, value);\n };\n\n return TaskStartCommand;\n }(TaskPropertyCommandValidation);\n\n exports.TaskStartCommand = TaskStartCommand;\n\n var TaskEndCommand = function (_super) {\n tslib_1.__extends(TaskEndCommand, _super);\n\n function TaskEndCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskEndCommand.prototype.execute = function (id, value) {\n var success = this.modelManipulator.dispatcher.raiseTaskEndUpdating(this.getTask(id), value, function (newStart) {\n value = newStart;\n });\n return success && _super.prototype.execute.call(this, id, value);\n };\n\n TaskEndCommand.prototype.executeInternal = function (id, value) {\n return _super.prototype.executeInternal.call(this, id, value);\n };\n\n TaskEndCommand.prototype.executeCore = function (id, value) {\n var oldEnd = this.control.viewModel.tasks.getItemById(id).end;\n if (oldEnd.getTime() == value.getTime()) return false;\n this.control.history.beginTransaction();\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.modelManipulator, id, value));\n if (this.control.settings.validation.validateDependencies) this.control.validationController.moveEndDependTasks(id, oldEnd);\n this.validationController.updateParentsIfRequired(id);\n this.control.history.endTransaction();\n var maxEndTask = this.control.viewModel.tasks.items.reduce(function (prev, curr) {\n if (!curr.isValid()) return prev;\n return prev.end.getTime() > curr.end.getTime() ? prev : curr;\n });\n\n if (maxEndTask.end > this.control.dataRange.end) {\n this.control.dataRange.end = maxEndTask.end;\n this.control.resetAndUpdate();\n }\n\n return true;\n };\n\n TaskEndCommand.prototype.validate = function (id, value) {\n return this.control.validationController.checkEndDependencies(id, value);\n };\n\n return TaskEndCommand;\n }(TaskPropertyCommandValidation);\n\n exports.TaskEndCommand = TaskEndCommand;\n\n var TaskMoveCommand = function (_super) {\n tslib_1.__extends(TaskMoveCommand, _super);\n\n function TaskMoveCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskMoveCommand.prototype.execute = function (id, start, end) {\n var success = this.modelManipulator.dispatcher.raiseTaskStartAndEndUpdating(this.getTask(id), start, end, function (newStart, newEnd) {\n start = newStart;\n end = newEnd;\n });\n return success && _super.prototype.execute.call(this, id, start, end);\n };\n\n TaskMoveCommand.prototype.executeInternal = function (id, start, end) {\n return _super.prototype.executeInternal.call(this, id, start, end);\n };\n\n TaskMoveCommand.prototype.executeCore = function (id, start, end) {\n var task = this.control.viewModel.tasks.getItemById(id);\n var oldDateRange = new DateRange_1.DateRange(new Date(task.start.getTime()), new Date(task.end.getTime()));\n this.control.history.beginTransaction();\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskMoveHistoryItem(this.modelManipulator, id, new DateRange_1.DateRange(start, end)));\n this.validationController.correctParentsOnChildMoving(id, start.getTime() - oldDateRange.start.getTime());\n\n if (this.control.settings.validation.validateDependencies) {\n this.control.validationController.moveStartDependTasks(id, oldDateRange.start);\n this.control.validationController.moveEndDependTasks(id, oldDateRange.end);\n }\n\n this.control.history.endTransaction();\n var maxEndTask = this.control.viewModel.tasks.items.reduce(function (prev, curr) {\n if (!curr.isValid()) return prev;\n return prev.end.getTime() > curr.end.getTime() ? prev : curr;\n });\n\n if (maxEndTask.end > this.control.dataRange.end) {\n this.control.dataRange.end = maxEndTask.end;\n this.control.resetAndUpdate();\n }\n\n var minStartTask = this.control.viewModel.tasks.items.reduce(function (prev, curr) {\n if (!curr.isValid()) return prev;\n if (!prev.isValid()) return curr;\n return prev.start.getTime() < curr.start.getTime() ? prev : curr;\n });\n\n if (minStartTask.start < this.control.dataRange.start) {\n this.control.dataRange.start = minStartTask.start;\n this.control.resetAndUpdate();\n }\n\n return true;\n };\n\n TaskMoveCommand.prototype.validate = function (id, start, end) {\n var startErrors = this.control.validationController.checkStartDependencies(id, start);\n var endErrors = this.control.validationController.checkEndDependencies(id, end);\n return tslib_1.__spreadArray(tslib_1.__spreadArray([], startErrors), endErrors);\n };\n\n return TaskMoveCommand;\n }(TaskPropertyCommandValidation);\n\n exports.TaskMoveCommand = TaskMoveCommand;\n /***/\n },\n /* 109 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RemoveDependencyCommand = exports.CreateDependencyCommand = exports.DependencyCommandBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var TaskDependencyHistoryItem_1 = __webpack_require__(21);\n\n var Dependency_1 = __webpack_require__(11);\n\n var ConfirmationDialog_1 = __webpack_require__(23);\n\n var DependencyArguments_1 = __webpack_require__(110);\n\n var DependencyCommandBase = function (_super) {\n tslib_1.__extends(DependencyCommandBase, _super);\n\n function DependencyCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DependencyCommandBase.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n return DependencyCommandBase;\n }(CommandBase_1.CommandBase);\n\n exports.DependencyCommandBase = DependencyCommandBase;\n\n var CreateDependencyCommand = function (_super) {\n tslib_1.__extends(CreateDependencyCommand, _super);\n\n function CreateDependencyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CreateDependencyCommand.prototype.execute = function (predecessorId, successorId, type) {\n return _super.prototype.execute.call(this, predecessorId, successorId, type);\n };\n\n CreateDependencyCommand.prototype.executeInternal = function (predecessorId, successorId, type) {\n if (this.control.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId == predecessorId && d.successorId == successorId || d.successorId == predecessorId && d.predecessorId == successorId;\n }).length) return false;\n var args = new DependencyArguments_1.DependencyInsertingArguments(predecessorId, successorId, type);\n this.modelManipulator.dispatcher.notifyDependencyInserting(args);\n if (args.cancel) return false;\n predecessorId = args.predecessorId;\n successorId = args.successorId;\n type = args.type;\n this.control.history.beginTransaction();\n this.history.addAndRedo(new TaskDependencyHistoryItem_1.InsertDependencyHistoryItem(this.modelManipulator, predecessorId, successorId, type));\n\n if (this.control.settings.validation.validateDependencies) {\n var predecessorTask = this.control.viewModel.tasks.getItemById(predecessorId);\n if (type === Dependency_1.DependencyType.SF || type === Dependency_1.DependencyType.SS) this.control.validationController.moveStartDependTasks(predecessorId, predecessorTask.start);else this.control.validationController.moveEndDependTasks(predecessorId, predecessorTask.end);\n }\n\n this.control.history.endTransaction();\n return true;\n };\n\n CreateDependencyCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowDependencyInsert;\n };\n\n return CreateDependencyCommand;\n }(DependencyCommandBase);\n\n exports.CreateDependencyCommand = CreateDependencyCommand;\n\n var RemoveDependencyCommand = function (_super) {\n tslib_1.__extends(RemoveDependencyCommand, _super);\n\n function RemoveDependencyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveDependencyCommand.prototype.execute = function (id, confirmRequired) {\n var _this = this;\n\n if (confirmRequired === void 0) {\n confirmRequired = true;\n }\n\n if (confirmRequired) {\n this.control.commandManager.showConfirmationDialog.execute(new ConfirmationDialog_1.ConfirmationDialogParameters(ConfirmationDialog_1.ConfirmationType.DependencyDelete, function () {\n _this.executeInternal(id);\n }));\n return false;\n }\n\n return _super.prototype.execute.call(this, id);\n };\n\n RemoveDependencyCommand.prototype.executeInternal = function (id) {\n id = id || this.control.taskEditController.dependencyId;\n\n if (id != null) {\n var dependency = this.control.viewModel.dependencies.items.filter(function (d) {\n return d.internalId == id;\n })[0];\n\n if (dependency) {\n var args = new DependencyArguments_1.DependencyRemovingArguments(dependency);\n this.modelManipulator.dispatcher.notifyDependencyRemoving(args);\n\n if (!args.cancel) {\n this.history.addAndRedo(new TaskDependencyHistoryItem_1.RemoveDependencyHistoryItem(this.modelManipulator, id));\n if (id === this.control.taskEditController.dependencyId) this.control.taskEditController.selectDependency(null);\n this.control.barManager.updateItemsState([]);\n return true;\n }\n }\n }\n\n return false;\n };\n\n RemoveDependencyCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowDependencyDelete;\n };\n\n RemoveDependencyCommand.prototype.getState = function () {\n var state = _super.prototype.getState.call(this);\n\n state.visible = state.enabled && this.control.taskEditController.dependencyId != null;\n return state;\n };\n\n return RemoveDependencyCommand;\n }(DependencyCommandBase);\n\n exports.RemoveDependencyCommand = RemoveDependencyCommand;\n /***/\n },\n /* 110 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DependencyRemovingArguments = exports.DependencyInsertingArguments = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var BaseArguments_1 = __webpack_require__(20);\n\n var DependencyInsertingArguments = function (_super) {\n tslib_1.__extends(DependencyInsertingArguments, _super);\n\n function DependencyInsertingArguments(predecessorId, successorId, type) {\n var _this = _super.call(this, null) || this;\n\n _this.values = {\n predecessorId: predecessorId,\n successorId: successorId,\n type: type\n };\n return _this;\n }\n\n Object.defineProperty(DependencyInsertingArguments.prototype, \"predecessorId\", {\n get: function get() {\n return this.values.predecessorId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DependencyInsertingArguments.prototype, \"successorId\", {\n get: function get() {\n return this.values.successorId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DependencyInsertingArguments.prototype, \"type\", {\n get: function get() {\n return this.values.type;\n },\n enumerable: false,\n configurable: true\n });\n return DependencyInsertingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.DependencyInsertingArguments = DependencyInsertingArguments;\n\n var DependencyRemovingArguments = function (_super) {\n tslib_1.__extends(DependencyRemovingArguments, _super);\n\n function DependencyRemovingArguments(dependency) {\n var _this = _super.call(this, dependency.id) || this;\n\n _this.values = dependency;\n return _this;\n }\n\n return DependencyRemovingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.DependencyRemovingArguments = DependencyRemovingArguments;\n /***/\n },\n /* 111 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeassignResourceCommand = exports.AssignResourceCommand = exports.RemoveResourceCommand = exports.CreateResourceCommand = exports.ResourceCommandBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var ResourceHistoryItem_1 = __webpack_require__(22);\n\n var ResourceArguments_1 = __webpack_require__(112);\n\n var AssignmentArguments_1 = __webpack_require__(32);\n\n var ResourceCommandBase = function (_super) {\n tslib_1.__extends(ResourceCommandBase, _super);\n\n function ResourceCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourceCommandBase.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n return ResourceCommandBase;\n }(CommandBase_1.CommandBase);\n\n exports.ResourceCommandBase = ResourceCommandBase;\n\n var CreateResourceCommand = function (_super) {\n tslib_1.__extends(CreateResourceCommand, _super);\n\n function CreateResourceCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CreateResourceCommand.prototype.execute = function (text, color, callback) {\n if (color === void 0) {\n color = \"\";\n }\n\n return _super.prototype.execute.call(this, text, color, callback);\n };\n\n CreateResourceCommand.prototype.executeInternal = function (text, color, callback) {\n if (color === void 0) {\n color = \"\";\n }\n\n var args = new ResourceArguments_1.ResourceInsertingArguments(text, color);\n this.modelManipulator.dispatcher.notifyResourceCreating(args);\n if (!args.cancel) this.history.addAndRedo(new ResourceHistoryItem_1.CreateResourceHistoryItem(this.modelManipulator, args.text, args.color, callback));\n return !args.cancel;\n };\n\n CreateResourceCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowResourceInsert;\n };\n\n return CreateResourceCommand;\n }(ResourceCommandBase);\n\n exports.CreateResourceCommand = CreateResourceCommand;\n\n var RemoveResourceCommand = function (_super) {\n tslib_1.__extends(RemoveResourceCommand, _super);\n\n function RemoveResourceCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RemoveResourceCommand.prototype.execute = function (id) {\n return _super.prototype.execute.call(this, id);\n };\n\n RemoveResourceCommand.prototype.executeInternal = function (id) {\n var _this = this;\n\n var resource = this.control.viewModel.resources.items.filter(function (r) {\n return r.internalId == id;\n })[0];\n\n if (resource) {\n var args = new ResourceArguments_1.ResourceRemovingArguments(resource);\n this.modelManipulator.dispatcher.notifyResourceRemoving(args);\n\n if (!args.cancel) {\n var removeResourceHistoryItem_1 = new ResourceHistoryItem_1.RemoveResourceHistoryItem(this.modelManipulator, id);\n var assignments = this.control.viewModel.assignments.items.filter(function (a) {\n return a.resourceId == id;\n });\n assignments.forEach(function (a) {\n if (_this.modelManipulator.dispatcher.fireResourceUnassigning(a)) removeResourceHistoryItem_1.add(new ResourceHistoryItem_1.DeassignResourceHistoryItem(_this.modelManipulator, a.internalId));\n });\n this.history.addAndRedo(removeResourceHistoryItem_1);\n return true;\n }\n }\n\n return false;\n };\n\n RemoveResourceCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowResourceDelete;\n };\n\n return RemoveResourceCommand;\n }(ResourceCommandBase);\n\n exports.RemoveResourceCommand = RemoveResourceCommand;\n\n var AssignResourceCommand = function (_super) {\n tslib_1.__extends(AssignResourceCommand, _super);\n\n function AssignResourceCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AssignResourceCommand.prototype.execute = function (resourceId, taskId) {\n return _super.prototype.execute.call(this, resourceId, taskId);\n };\n\n AssignResourceCommand.prototype.executeInternal = function (resourceId, taskId) {\n var assignment = this.control.viewModel.assignments.items.filter(function (r) {\n return r.resourceId == resourceId && r.taskId == taskId;\n })[0];\n\n if (!assignment) {\n var converter = this.control.viewModel;\n var args = new AssignmentArguments_1.ResourceAssigningArguments(converter.convertInternalToPublicKey(\"resource\", resourceId), converter.convertInternalToPublicKey(\"task\", taskId));\n this.modelManipulator.dispatcher.notifyResourceAssigning(args);\n\n if (!args.cancel) {\n this.history.addAndRedo(new ResourceHistoryItem_1.AssignResourceHistoryItem(this.modelManipulator, converter.convertPublicToInternalKey(\"resource\", args.resourceId), converter.convertPublicToInternalKey(\"task\", args.taskId)));\n return true;\n }\n }\n\n return false;\n };\n\n AssignResourceCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskResourceUpdate;\n };\n\n return AssignResourceCommand;\n }(ResourceCommandBase);\n\n exports.AssignResourceCommand = AssignResourceCommand;\n\n var DeassignResourceCommand = function (_super) {\n tslib_1.__extends(DeassignResourceCommand, _super);\n\n function DeassignResourceCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DeassignResourceCommand.prototype.execute = function (assignmentId) {\n return _super.prototype.execute.call(this, assignmentId);\n };\n\n DeassignResourceCommand.prototype.executeInternal = function (assignmentId) {\n var assignment = this.control.viewModel.assignments.items.filter(function (r) {\n return r.internalId == assignmentId;\n })[0];\n\n if (assignment && this.modelManipulator.dispatcher.fireResourceUnassigning(assignment)) {\n this.history.addAndRedo(new ResourceHistoryItem_1.DeassignResourceHistoryItem(this.modelManipulator, assignmentId));\n return true;\n }\n\n return false;\n };\n\n DeassignResourceCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowTaskResourceUpdate;\n };\n\n return DeassignResourceCommand;\n }(ResourceCommandBase);\n\n exports.DeassignResourceCommand = DeassignResourceCommand;\n /***/\n },\n /* 112 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceRemovingArguments = exports.ResourceInsertingArguments = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var BaseArguments_1 = __webpack_require__(20);\n\n var ResourceInsertingArguments = function (_super) {\n tslib_1.__extends(ResourceInsertingArguments, _super);\n\n function ResourceInsertingArguments(text, color) {\n if (color === void 0) {\n color = \"\";\n }\n\n var _this = _super.call(this, null) || this;\n\n _this.values = {\n text: text,\n color: color\n };\n return _this;\n }\n\n Object.defineProperty(ResourceInsertingArguments.prototype, \"text\", {\n get: function get() {\n return this.values.text;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResourceInsertingArguments.prototype, \"color\", {\n get: function get() {\n return this.values.color;\n },\n enumerable: false,\n configurable: true\n });\n return ResourceInsertingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.ResourceInsertingArguments = ResourceInsertingArguments;\n\n var ResourceRemovingArguments = function (_super) {\n tslib_1.__extends(ResourceRemovingArguments, _super);\n\n function ResourceRemovingArguments(resource) {\n var _this = _super.call(this, resource.id) || this;\n\n _this.values = resource;\n return _this;\n }\n\n return ResourceRemovingArguments;\n }(BaseArguments_1.BaseArguments);\n\n exports.ResourceRemovingArguments = ResourceRemovingArguments;\n /***/\n },\n /* 113 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TaskEditParameters = exports.TaskEditDialogCommand = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DialogBase_1 = __webpack_require__(24);\n\n var TaskPropertiesHistoryItem_1 = __webpack_require__(25);\n\n var ResourceCollection_1 = __webpack_require__(26);\n\n var ResourceHistoryItem_1 = __webpack_require__(22);\n\n var AssignmentArguments_1 = __webpack_require__(32);\n\n var TaskEditDialogCommand = function (_super) {\n tslib_1.__extends(TaskEditDialogCommand, _super);\n\n function TaskEditDialogCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TaskEditDialogCommand.prototype.onBeforeDialogShow = function (params) {\n return this.modelManipulator.dispatcher.raiseTaskTaskEditDialogShowing(params, function (args) {\n var newValues = args.values;\n params.start = newValues.start;\n params.end = newValues.end;\n params.progress = newValues.progress;\n params.title = newValues.title;\n params.readOnlyFields = args.readOnlyFields;\n params.hiddenFields = args.hiddenFields;\n });\n };\n\n TaskEditDialogCommand.prototype.applyParameters = function (newParameters, oldParameters) {\n this.history.beginTransaction();\n var success = this.control.modelManipulator.dispatcher.raiseTaskMultipleUpdating(this.control.viewModel.tasks.getItemById(oldParameters.id), newParameters, function (newValues) {\n newParameters.title = newValues.title ? newValues.title : \"\";\n newParameters.progress = newValues.progress;\n newParameters.start = typeof newValues.start === \"string\" ? new Date(newValues.start) : newValues.start || new Date(0);\n newParameters.end = typeof newValues.end === \"string\" ? new Date(newValues.end) : newValues.end || new Date(0);\n });\n\n if (success) {\n if (newParameters.title !== oldParameters.title) this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskTitleHistoryItem(this.modelManipulator, oldParameters.id, newParameters.title));\n if (newParameters.progress !== oldParameters.progress) this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskProgressHistoryItem(this.modelManipulator, oldParameters.id, newParameters.progress));\n if (newParameters.end.getTime() < newParameters.start.getTime()) newParameters.end = newParameters.start;\n\n if (newParameters.start !== oldParameters.start) {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.modelManipulator, oldParameters.id, newParameters.start));\n if (this.control.settings.validation.validateDependencies) this.control.validationController.moveStartDependTasks(oldParameters.id, oldParameters.start);\n }\n\n if (newParameters.end !== oldParameters.end) {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.modelManipulator, oldParameters.id, newParameters.end));\n if (this.control.settings.validation.validateDependencies) this.control.validationController.moveEndDependTasks(oldParameters.id, oldParameters.end);\n }\n }\n\n for (var i = 0; i < newParameters.assigned.length; i++) {\n var resource = oldParameters.assigned.getItemById(newParameters.assigned.getItem(i).internalId);\n\n if (!resource) {\n var resourceId = newParameters.assigned.getItem(i).internalId;\n var taskId = oldParameters.id;\n var args = new AssignmentArguments_1.ResourceAssigningArguments(resourceId, taskId);\n this.modelManipulator.dispatcher.notifyResourceAssigning(args);\n if (!args.cancel) this.history.addAndRedo(new ResourceHistoryItem_1.AssignResourceHistoryItem(this.modelManipulator, args.resourceId, args.taskId));\n }\n }\n\n var _loop_1 = function _loop_1(i) {\n var assigned = oldParameters.assigned.getItem(i);\n var resource = newParameters.assigned.getItemById(assigned.internalId);\n\n if (!resource) {\n var assignment = this_1.control.viewModel.assignments.items.filter(function (assignment) {\n return assignment.resourceId == assigned.internalId && assignment.taskId == oldParameters.id;\n })[0];\n if (this_1.modelManipulator.dispatcher.fireResourceUnassigning(assignment)) this_1.history.addAndRedo(new ResourceHistoryItem_1.DeassignResourceHistoryItem(this_1.modelManipulator, assignment.internalId));\n }\n };\n\n var this_1 = this;\n\n for (var i = 0; i < oldParameters.assigned.length; i++) {\n _loop_1(i);\n }\n\n var updateParents = newParameters.start !== oldParameters.start || newParameters.end !== oldParameters.end || newParameters.progress !== oldParameters.progress || newParameters.title !== oldParameters.title;\n if (success && updateParents) this.validationController.updateParentsIfRequired(oldParameters.id);\n this.history.endTransaction();\n return false;\n };\n\n TaskEditDialogCommand.prototype.createParameters = function (options) {\n options = options || this.control.viewModel.tasks.getItemById(this.control.currentSelectedTaskID);\n var param = new TaskEditParameters();\n param.id = options.internalId;\n param.title = options.title;\n param.progress = options.progress;\n param.start = options.start;\n param.end = options.end;\n param.assigned = this.control.viewModel.getAssignedResources(options);\n param.resources = new ResourceCollection_1.ResourceCollection();\n param.resources.addRange(this.control.viewModel.resources.items);\n param.showResourcesDialogCommand = this.control.commandManager.showResourcesDialog;\n param.showTaskEditDialogCommand = this.control.commandManager.showTaskEditDialog;\n param.enableEdit = this.isTaskEditEnabled();\n param.enableRangeEdit = this.isTaskRangeEditEnabled(options);\n return param;\n };\n\n TaskEditDialogCommand.prototype.isTaskEditEnabled = function () {\n var settings = this.control.settings;\n return settings.editing.enabled && settings.editing.allowTaskUpdate;\n };\n\n TaskEditDialogCommand.prototype.isTaskRangeEditEnabled = function (task) {\n return !this.control.viewModel.isTaskToCalculateByChildren(task.internalId);\n };\n\n TaskEditDialogCommand.prototype.isEnabled = function () {\n var gantt = this.control;\n var selectedItem = gantt.viewModel.findItem(gantt.currentSelectedTaskID);\n return !!selectedItem && selectedItem.selected;\n };\n\n TaskEditDialogCommand.prototype.getState = function () {\n var state = _super.prototype.getState.call(this);\n\n state.visible = state.visible && !this.control.taskEditController.dependencyId;\n return state;\n };\n\n TaskEditDialogCommand.prototype.getDialogName = function () {\n return \"TaskEdit\";\n };\n\n return TaskEditDialogCommand;\n }(DialogBase_1.DialogBase);\n\n exports.TaskEditDialogCommand = TaskEditDialogCommand;\n\n var TaskEditParameters = function (_super) {\n tslib_1.__extends(TaskEditParameters, _super);\n\n function TaskEditParameters() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.enableEdit = true;\n _this.enableRangeEdit = true;\n _this.hiddenFields = [];\n _this.readOnlyFields = [];\n return _this;\n }\n\n TaskEditParameters.prototype.clone = function () {\n var clone = new TaskEditParameters();\n clone.id = this.id;\n clone.title = this.title;\n clone.progress = this.progress;\n clone.start = this.start;\n clone.end = this.end;\n clone.assigned = new ResourceCollection_1.ResourceCollection();\n clone.assigned.addRange(this.assigned.items);\n clone.resources = new ResourceCollection_1.ResourceCollection();\n clone.resources.addRange(this.resources.items);\n clone.showResourcesDialogCommand = this.showResourcesDialogCommand;\n clone.showTaskEditDialogCommand = this.showTaskEditDialogCommand;\n clone.enableEdit = this.enableEdit;\n clone.enableRangeEdit = this.enableRangeEdit;\n clone.hiddenFields = this.hiddenFields.slice();\n clone.readOnlyFields = this.readOnlyFields.slice();\n return clone;\n };\n\n return TaskEditParameters;\n }(DialogBase_1.DialogParametersBase);\n\n exports.TaskEditParameters = TaskEditParameters;\n /***/\n },\n /* 114 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourcesDialogParameters = exports.ResourcesDialogCommand = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var DialogBase_1 = __webpack_require__(24);\n\n var ResourceCollection_1 = __webpack_require__(26);\n\n var ConfirmationDialog_1 = __webpack_require__(23);\n\n var ResourcesDialogCommand = function (_super) {\n tslib_1.__extends(ResourcesDialogCommand, _super);\n\n function ResourcesDialogCommand() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.resourcesForDelete = [];\n return _this;\n }\n\n ResourcesDialogCommand.prototype.applyParameters = function (newParameters, oldParameters) {\n this.history.beginTransaction();\n\n for (var i = 0; i < newParameters.resources.length; i++) {\n var resource = oldParameters.resources.getItemById(newParameters.resources.getItem(i).internalId);\n if (!resource) this.control.commandManager.createResourceCommand.execute(newParameters.resources.getItem(i).text);\n }\n\n for (var i = 0; i < oldParameters.resources.length; i++) {\n var resource = newParameters.resources.getItemById(oldParameters.resources.getItem(i).internalId);\n if (!resource) this.resourcesForDelete.push(oldParameters.resources.getItem(i));\n }\n\n this.history.endTransaction();\n return false;\n };\n\n ResourcesDialogCommand.prototype.createParameters = function (callBack) {\n this.callBack = callBack;\n var param = new ResourcesDialogParameters();\n param.resources = new ResourceCollection_1.ResourceCollection();\n param.resources.addRange(this.control.viewModel.resources.items);\n return param;\n };\n\n ResourcesDialogCommand.prototype.afterClosing = function () {\n var _this = this;\n\n if (this.resourcesForDelete.length) {\n var confirmationDialog = this.control.commandManager.showConfirmationDialog;\n var confirmationDialogParameters = new ConfirmationDialog_1.ConfirmationDialogParameters(ConfirmationDialog_1.ConfirmationType.ResourcesDelete, function () {\n _this.history.beginTransaction();\n\n for (var i = 0; i < _this.resourcesForDelete.length; i++) {\n _this.control.commandManager.removeResourceCommand.execute(_this.resourcesForDelete[i].internalId);\n }\n\n _this.history.endTransaction();\n });\n confirmationDialogParameters.message = this.resourcesForDelete.reduce(function (a, b) {\n return tslib_1.__spreadArray(tslib_1.__spreadArray([], a), [b.text]);\n }, []).join(\", \");\n if (this.callBack) confirmationDialog.afterClosing = function () {\n return _this.callBack();\n };\n confirmationDialog.execute(confirmationDialogParameters);\n } else if (this.callBack) this.callBack();\n };\n\n ResourcesDialogCommand.prototype.getDialogName = function () {\n return \"Resources\";\n };\n\n return ResourcesDialogCommand;\n }(DialogBase_1.DialogBase);\n\n exports.ResourcesDialogCommand = ResourcesDialogCommand;\n\n var ResourcesDialogParameters = function (_super) {\n tslib_1.__extends(ResourcesDialogParameters, _super);\n\n function ResourcesDialogParameters() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourcesDialogParameters.prototype.clone = function () {\n var clone = new ResourcesDialogParameters();\n clone.resources = new ResourceCollection_1.ResourceCollection();\n clone.resources.addRange(this.resources.items);\n return clone;\n };\n\n return ResourcesDialogParameters;\n }(DialogBase_1.DialogParametersBase);\n\n exports.ResourcesDialogParameters = ResourcesDialogParameters;\n /***/\n },\n /* 115 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GanttClientCommand = void 0;\n var GanttClientCommand;\n\n (function (GanttClientCommand) {\n GanttClientCommand[GanttClientCommand[\"CreateTask\"] = 0] = \"CreateTask\";\n GanttClientCommand[GanttClientCommand[\"CreateSubTask\"] = 1] = \"CreateSubTask\";\n GanttClientCommand[GanttClientCommand[\"RemoveTask\"] = 2] = \"RemoveTask\";\n GanttClientCommand[GanttClientCommand[\"RemoveDependency\"] = 3] = \"RemoveDependency\";\n GanttClientCommand[GanttClientCommand[\"TaskInformation\"] = 4] = \"TaskInformation\";\n GanttClientCommand[GanttClientCommand[\"TaskAddContextItem\"] = 5] = \"TaskAddContextItem\";\n GanttClientCommand[GanttClientCommand[\"Undo\"] = 6] = \"Undo\";\n GanttClientCommand[GanttClientCommand[\"Redo\"] = 7] = \"Redo\";\n GanttClientCommand[GanttClientCommand[\"ZoomIn\"] = 8] = \"ZoomIn\";\n GanttClientCommand[GanttClientCommand[\"ZoomOut\"] = 9] = \"ZoomOut\";\n GanttClientCommand[GanttClientCommand[\"FullScreen\"] = 10] = \"FullScreen\";\n GanttClientCommand[GanttClientCommand[\"CollapseAll\"] = 11] = \"CollapseAll\";\n GanttClientCommand[GanttClientCommand[\"ExpandAll\"] = 12] = \"ExpandAll\";\n })(GanttClientCommand = exports.GanttClientCommand || (exports.GanttClientCommand = {}));\n /***/\n\n },\n /* 116 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RedoCommand = exports.UndoCommand = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var UndoCommand = function (_super) {\n tslib_1.__extends(UndoCommand, _super);\n\n function UndoCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UndoCommand.prototype.getState = function () {\n var state = new CommandBase_1.SimpleCommandState(this.isEnabled());\n state.visible = this.control.settings.editing.enabled;\n return state;\n };\n\n UndoCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n UndoCommand.prototype.executeInternal = function () {\n this.history.undo();\n return true;\n };\n\n UndoCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.history.canUndo();\n };\n\n return UndoCommand;\n }(CommandBase_1.CommandBase);\n\n exports.UndoCommand = UndoCommand;\n\n var RedoCommand = function (_super) {\n tslib_1.__extends(RedoCommand, _super);\n\n function RedoCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RedoCommand.prototype.getState = function () {\n var state = new CommandBase_1.SimpleCommandState(this.isEnabled());\n state.visible = this.control.settings.editing.enabled;\n return state;\n };\n\n RedoCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n RedoCommand.prototype.executeInternal = function () {\n this.history.redo();\n return true;\n };\n\n RedoCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.history.canRedo();\n };\n\n return RedoCommand;\n }(CommandBase_1.CommandBase);\n\n exports.RedoCommand = RedoCommand;\n /***/\n },\n /* 117 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ZoomOutCommand = exports.ZoomInCommand = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var ZoomInCommand = function (_super) {\n tslib_1.__extends(ZoomInCommand, _super);\n\n function ZoomInCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ZoomInCommand.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(true);\n };\n\n ZoomInCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n ZoomInCommand.prototype.executeInternal = function () {\n this.control.zoomIn();\n return true;\n };\n\n return ZoomInCommand;\n }(CommandBase_1.CommandBase);\n\n exports.ZoomInCommand = ZoomInCommand;\n\n var ZoomOutCommand = function (_super) {\n tslib_1.__extends(ZoomOutCommand, _super);\n\n function ZoomOutCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ZoomOutCommand.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(true);\n };\n\n ZoomOutCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n ZoomOutCommand.prototype.executeInternal = function () {\n this.control.zoomOut();\n return true;\n };\n\n return ZoomOutCommand;\n }(CommandBase_1.CommandBase);\n\n exports.ZoomOutCommand = ZoomOutCommand;\n /***/\n },\n /* 118 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleFullScreenCommand = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var ToggleFullScreenCommand = function (_super) {\n tslib_1.__extends(ToggleFullScreenCommand, _super);\n\n function ToggleFullScreenCommand() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.isInFullScreenMode = false;\n _this.fullScreenTempVars = {};\n return _this;\n }\n\n ToggleFullScreenCommand.prototype.getState = function () {\n var state = new CommandBase_1.SimpleCommandState(true);\n state.value = this.control.fullScreenModeHelper.isInFullScreenMode;\n return state;\n };\n\n ToggleFullScreenCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n ToggleFullScreenCommand.prototype.executeInternal = function () {\n this.control.fullScreenModeHelper.toggle();\n return true;\n };\n\n return ToggleFullScreenCommand;\n }(CommandBase_1.CommandBase);\n\n exports.ToggleFullScreenCommand = ToggleFullScreenCommand;\n /***/\n },\n /* 119 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExpandAllCommand = exports.CollapseAllCommand = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var CollapseAllCommand = function (_super) {\n tslib_1.__extends(CollapseAllCommand, _super);\n\n function CollapseAllCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CollapseAllCommand.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n CollapseAllCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n CollapseAllCommand.prototype.executeInternal = function () {\n this.control.ganttOwner.collapseAll();\n return true;\n };\n\n CollapseAllCommand.prototype.isEnabled = function () {\n return true;\n };\n\n return CollapseAllCommand;\n }(CommandBase_1.CommandBase);\n\n exports.CollapseAllCommand = CollapseAllCommand;\n\n var ExpandAllCommand = function (_super) {\n tslib_1.__extends(ExpandAllCommand, _super);\n\n function ExpandAllCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExpandAllCommand.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n ExpandAllCommand.prototype.execute = function () {\n return _super.prototype.execute.call(this);\n };\n\n ExpandAllCommand.prototype.executeInternal = function () {\n this.control.ganttOwner.expandAll();\n return true;\n };\n\n ExpandAllCommand.prototype.isEnabled = function () {\n return true;\n };\n\n return ExpandAllCommand;\n }(CommandBase_1.CommandBase);\n\n exports.ExpandAllCommand = ExpandAllCommand;\n /***/\n },\n /* 120 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceColorCommand = exports.ResourcePropertyCommandBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var CommandBase_1 = __webpack_require__(7);\n\n var ResourcePropertiesHistoryItem_1 = __webpack_require__(121);\n\n var ResourcePropertyCommandBase = function (_super) {\n tslib_1.__extends(ResourcePropertyCommandBase, _super);\n\n function ResourcePropertyCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourcePropertyCommandBase.prototype.getState = function () {\n return new CommandBase_1.SimpleCommandState(this.isEnabled());\n };\n\n ResourcePropertyCommandBase.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.settings.editing.allowResourceUpdate;\n };\n\n return ResourcePropertyCommandBase;\n }(CommandBase_1.CommandBase);\n\n exports.ResourcePropertyCommandBase = ResourcePropertyCommandBase;\n\n var ResourceColorCommand = function (_super) {\n tslib_1.__extends(ResourceColorCommand, _super);\n\n function ResourceColorCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourceColorCommand.prototype.execute = function (id, value) {\n return _super.prototype.execute.call(this, id, value);\n };\n\n ResourceColorCommand.prototype.executeInternal = function (id, value) {\n var oldColor = this.control.viewModel.resources.getItemById(id).color;\n if (oldColor == value) return false;\n this.history.addAndRedo(new ResourcePropertiesHistoryItem_1.ResourceColorHistoryItem(this.modelManipulator, id, value));\n return true;\n };\n\n return ResourceColorCommand;\n }(ResourcePropertyCommandBase);\n\n exports.ResourceColorCommand = ResourceColorCommand;\n /***/\n },\n /* 121 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResourceColorHistoryItem = exports.ResourcePropertiesHistoryItemBase = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var HistoryItem_1 = __webpack_require__(12);\n\n var ResourcePropertiesHistoryItemBase = function (_super) {\n tslib_1.__extends(ResourcePropertiesHistoryItemBase, _super);\n\n function ResourcePropertiesHistoryItemBase(modelManipulator, resourceId, newValue) {\n var _this = _super.call(this, modelManipulator) || this;\n\n _this.resourceId = resourceId;\n _this.newValue = newValue;\n return _this;\n }\n\n ResourcePropertiesHistoryItemBase.prototype.redo = function () {\n this.oldState = this.getPropertiesManipulator().setValue(this.resourceId, this.newValue);\n };\n\n ResourcePropertiesHistoryItemBase.prototype.undo = function () {\n this.getPropertiesManipulator().restoreValue(this.oldState);\n };\n\n ResourcePropertiesHistoryItemBase.prototype.getPropertiesManipulator = function () {\n throw new Error(\"Not Implemented\");\n };\n\n return ResourcePropertiesHistoryItemBase;\n }(HistoryItem_1.HistoryItem);\n\n exports.ResourcePropertiesHistoryItemBase = ResourcePropertiesHistoryItemBase;\n\n var ResourceColorHistoryItem = function (_super) {\n tslib_1.__extends(ResourceColorHistoryItem, _super);\n\n function ResourceColorHistoryItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ResourceColorHistoryItem.prototype.getPropertiesManipulator = function () {\n return this.modelManipulator.resource.properties.color;\n };\n\n return ResourceColorHistoryItem;\n }(ResourcePropertiesHistoryItemBase);\n\n exports.ResourceColorHistoryItem = ResourceColorHistoryItem;\n /***/\n },\n /* 122 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BarManager = void 0;\n\n var BarManager = function () {\n function BarManager(control, bars) {\n this.control = control;\n this.bars = bars;\n }\n\n BarManager.prototype.updateContextMenu = function () {\n for (var i = 0, bar = void 0; bar = this.bars[i]; i++) {\n if (bar.isContextMenu()) {\n bar.updateItemsList();\n var commandKeys = bar.getCommandKeys();\n\n for (var j = 0; j < commandKeys.length; j++) {\n this.updateBarItem(bar, commandKeys[j]);\n }\n }\n }\n };\n\n BarManager.prototype.updateItemsState = function (queryCommands) {\n var anyQuerySended = !!queryCommands.length;\n\n var _loop_1 = function _loop_1(i, bar) {\n if (bar.isVisible()) {\n var commandKeys_1 = bar.getCommandKeys();\n\n var _loop_2 = function _loop_2(j) {\n if (anyQuerySended && !queryCommands.filter(function (q) {\n return q == commandKeys_1[j];\n }).length) return \"continue\";\n this_1.updateBarItem(bar, commandKeys_1[j]);\n };\n\n for (var j = 0; j < commandKeys_1.length; j++) {\n _loop_2(j);\n }\n\n bar.completeUpdate();\n }\n };\n\n var this_1 = this;\n\n for (var i = 0, bar = void 0; bar = this.bars[i]; i++) {\n _loop_1(i, bar);\n }\n };\n\n BarManager.prototype.updateBarItem = function (bar, commandKey) {\n var command = this.control.commandManager.getCommand(commandKey);\n\n if (command) {\n var commandState = command.getState();\n bar.setItemVisible(commandKey, commandState.visible);\n\n if (commandState.visible) {\n bar.setItemEnabled(commandKey, commandState.enabled);\n bar.setItemValue(commandKey, commandState.value);\n }\n }\n };\n\n return BarManager;\n }();\n\n exports.BarManager = BarManager;\n /***/\n },\n /* 123 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ValidationController = exports.ValidationError = void 0;\n\n var tslib_1 = __webpack_require__(0);\n\n var Dependency_1 = __webpack_require__(11);\n\n var TaskPropertiesHistoryItem_1 = __webpack_require__(25);\n\n var DateRange_1 = __webpack_require__(9);\n\n var DateTimeUtils_1 = __webpack_require__(2);\n\n var common_1 = __webpack_require__(1);\n\n var ValidationError = function () {\n function ValidationError(dependencyId, critical) {\n if (critical === void 0) {\n critical = false;\n }\n\n this.dependencyId = dependencyId;\n this.critical = critical;\n }\n\n return ValidationError;\n }();\n\n exports.ValidationError = ValidationError;\n\n var ValidationController = function () {\n function ValidationController(gantt) {\n this.lockPredecessorToSuccessor = true;\n this.gantt = gantt;\n }\n\n Object.defineProperty(ValidationController.prototype, \"viewModel\", {\n get: function get() {\n return this.gantt.viewModel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValidationController.prototype, \"history\", {\n get: function get() {\n return this.gantt.history;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValidationController.prototype, \"enablePredecessorGap\", {\n get: function get() {\n return this.viewModel.enablePredecessorGap;\n },\n enumerable: false,\n configurable: true\n });\n\n ValidationController.prototype.checkStartDependencies = function (taskId, date) {\n var _this = this;\n\n var result = [];\n var task = this.gantt.viewModel.tasks.getItemById(taskId);\n var dependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.successorId === taskId;\n });\n dependencies.forEach(function (dep) {\n var predecessorTask = _this.gantt.viewModel.tasks.getItemById(dep.predecessorId);\n\n if (dep.type === Dependency_1.DependencyType.FS && predecessorTask.end > date || dep.type === Dependency_1.DependencyType.SS && predecessorTask.start > date) result.push(new ValidationError(dep.internalId, true));\n if (dep.type === Dependency_1.DependencyType.FS && predecessorTask.end.valueOf() === task.start.valueOf() && date > predecessorTask.end || dep.type === Dependency_1.DependencyType.SS && predecessorTask.start.valueOf() === task.start.valueOf() && date > predecessorTask.start) result.push(new ValidationError(dep.internalId));\n });\n return result;\n };\n\n ValidationController.prototype.checkEndDependencies = function (taskId, date) {\n var _this = this;\n\n var result = [];\n var task = this.gantt.viewModel.tasks.getItemById(taskId);\n var dependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.successorId === taskId;\n });\n dependencies.forEach(function (dep) {\n var predecessorTask = _this.gantt.viewModel.tasks.getItemById(dep.predecessorId);\n\n if (dep.type === Dependency_1.DependencyType.SF && predecessorTask.start > date || dep.type === Dependency_1.DependencyType.FF && predecessorTask.end > date) result.push(new ValidationError(dep.internalId, true));\n if (dep.type === Dependency_1.DependencyType.SF && predecessorTask.start.valueOf() === task.end.valueOf() && date > predecessorTask.start || dep.type === Dependency_1.DependencyType.FF && predecessorTask.end.valueOf() === task.end.valueOf() && date > predecessorTask.end) result.push(new ValidationError(dep.internalId));\n });\n return result;\n };\n\n ValidationController.prototype.moveEndDependTasks = function (predecessorTaskId, predecessorPreviousEndDate, isAfterCorrectParents) {\n var _this = this;\n\n if (isAfterCorrectParents === void 0) {\n isAfterCorrectParents = false;\n }\n\n var dependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId === predecessorTaskId && !d.isStartDependency;\n });\n var predecessorTask = this.gantt.viewModel.tasks.getItemById(predecessorTaskId);\n dependencies.forEach(function (dependency) {\n var successorTask = _this.gantt.viewModel.tasks.getItemById(dependency.successorId);\n\n var isMoveNotRequired = !successorTask || isAfterCorrectParents && predecessorTask.parentId === successorTask.parentId || successorTask.parentId == predecessorTask.id;\n if (isMoveNotRequired) return;\n var successorRangeBeforeMove = new DateRange_1.DateRange(new Date(successorTask.start.getTime()), new Date(successorTask.end.getTime()));\n var validTaskRange = new DateRange_1.DateRange(new Date(successorTask.start.getTime()), new Date(successorTask.end.getTime()));\n var delta = predecessorTask.end.getTime() - predecessorPreviousEndDate.getTime();\n var predecessorEnd = _this.enablePredecessorGap ? predecessorTask.end : predecessorPreviousEndDate;\n\n if (dependency.type === Dependency_1.DependencyType.FS && (successorTask.start < predecessorEnd || _this.lockPredecessorToSuccessor && successorTask.start.getTime() === predecessorPreviousEndDate.getTime())) {\n validTaskRange.start.setTime(predecessorTask.end.getTime());\n validTaskRange.end.setTime(validTaskRange.start.getTime() + (successorTask.end.getTime() - successorTask.start.getTime()));\n\n _this.correctMoving(successorTask.internalId, validTaskRange);\n } else if (dependency.type === Dependency_1.DependencyType.FF && (successorTask.end < predecessorEnd || _this.lockPredecessorToSuccessor && successorTask.end.getTime() === predecessorPreviousEndDate.getTime())) {\n validTaskRange.start.setTime(predecessorTask.end.getTime() - (successorTask.end.getTime() - successorTask.start.getTime()));\n validTaskRange.end.setTime(predecessorTask.end.getTime());\n\n _this.correctMoving(successorTask.internalId, validTaskRange);\n } else if (!_this.enablePredecessorGap) {\n validTaskRange.start.setTime(successorTask.start.getTime() + delta);\n validTaskRange.end.setTime(successorTask.end.getTime() + delta);\n }\n\n if (!successorRangeBeforeMove.equal(validTaskRange)) {\n _this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskMoveHistoryItem(_this.gantt.modelManipulator, dependency.successorId, validTaskRange));\n\n _this.moveRelatedTasks(dependency, successorRangeBeforeMove, successorTask, validTaskRange);\n }\n });\n };\n\n ValidationController.prototype.moveStartDependTasks = function (predecessorTaskId, predecessorPreviousStartDate, isAfterCorrectParents) {\n var _this = this;\n\n if (isAfterCorrectParents === void 0) {\n isAfterCorrectParents = false;\n }\n\n var dependencies = this.viewModel.dependencies.items.filter(function (d) {\n return d.predecessorId === predecessorTaskId && d.isStartDependency;\n });\n var predecessorTask = this.gantt.viewModel.tasks.getItemById(predecessorTaskId);\n dependencies.forEach(function (dependency) {\n var successorTask = _this.gantt.viewModel.tasks.getItemById(dependency.successorId);\n\n var isMoveNotRequired = !successorTask || isAfterCorrectParents && predecessorTask.parentId === successorTask.parentId || successorTask.parentId == predecessorTask.id;\n if (isMoveNotRequired) return;\n var successorRangeBeforeMove = new DateRange_1.DateRange(new Date(successorTask.start.getTime()), new Date(successorTask.end.getTime()));\n var validTaskRange = new DateRange_1.DateRange(new Date(successorTask.start.getTime()), new Date(successorTask.end.getTime()));\n var delta = predecessorTask.start.getTime() - predecessorPreviousStartDate.getTime();\n var predecessorStart = _this.enablePredecessorGap ? predecessorTask.start : predecessorPreviousStartDate;\n\n if (dependency.type === Dependency_1.DependencyType.SF && (successorTask.end < predecessorStart || _this.lockPredecessorToSuccessor && successorTask.end.getTime() === predecessorPreviousStartDate.getTime())) {\n validTaskRange.start.setTime(predecessorTask.start.getTime() - (successorTask.end.getTime() - successorTask.start.getTime()));\n validTaskRange.end.setTime(predecessorTask.start.getTime());\n\n _this.correctMoving(successorTask.internalId, validTaskRange);\n } else if (dependency.type === Dependency_1.DependencyType.SS && (successorTask.start < predecessorStart || _this.lockPredecessorToSuccessor && successorTask.start.getTime() === predecessorPreviousStartDate.getTime())) {\n validTaskRange.start.setTime(predecessorTask.start.getTime());\n validTaskRange.end.setTime(predecessorTask.start.getTime() + (successorTask.end.getTime() - successorTask.start.getTime()));\n\n _this.correctMoving(successorTask.internalId, validTaskRange);\n } else if (!_this.enablePredecessorGap) {\n validTaskRange.start.setTime(successorTask.start.getTime() + delta);\n validTaskRange.end.setTime(successorTask.end.getTime() + delta);\n }\n\n if (!successorRangeBeforeMove.equal(validTaskRange)) {\n _this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskMoveHistoryItem(_this.gantt.modelManipulator, dependency.successorId, validTaskRange));\n\n _this.moveRelatedTasks(dependency, successorRangeBeforeMove, successorTask, validTaskRange);\n }\n });\n };\n\n ValidationController.prototype.moveRelatedTasks = function (dependency, successorRangeBeforeMove, successorTask, validTaskRange) {\n var delta = validTaskRange.start.getTime() - successorRangeBeforeMove.start.getTime();\n this.correctParentsOnChildMoving(successorTask.internalId, delta);\n this.moveStartDependTasks(dependency.successorId, successorRangeBeforeMove.start);\n this.moveEndDependTasks(dependency.successorId, successorRangeBeforeMove.end);\n };\n\n ValidationController.prototype.correctMoving = function (taskId, dateRange) {\n var _this = this;\n\n var deltaDate = dateRange.end.getTime() - dateRange.start.getTime();\n\n var validationErrors = tslib_1.__spreadArray(tslib_1.__spreadArray([], this.checkStartDependencies(taskId, dateRange.start)), this.checkEndDependencies(taskId, dateRange.end));\n\n var criticalErrors = validationErrors.filter(function (e) {\n return e.critical;\n });\n criticalErrors.forEach(function (error) {\n var dependency = _this.gantt.viewModel.dependencies.getItemById(error.dependencyId);\n\n var predecessorTask = _this.gantt.viewModel.tasks.getItemById(dependency.predecessorId);\n\n if (dependency.type === Dependency_1.DependencyType.FS) if (dateRange.start < predecessorTask.end) {\n dateRange.start.setTime(predecessorTask.end.getTime());\n dateRange.end.setTime(dateRange.start.getTime() + deltaDate);\n }\n if (dependency.type === Dependency_1.DependencyType.SS) if (dateRange.start < predecessorTask.start) {\n dateRange.start.setTime(predecessorTask.start.getTime());\n dateRange.end.setTime(dateRange.start.getTime() + deltaDate);\n }\n if (dependency.type === Dependency_1.DependencyType.FF) if (dateRange.end < predecessorTask.end) {\n dateRange.end.setTime(predecessorTask.end.getTime());\n dateRange.start.setTime(dateRange.end.getTime() - deltaDate);\n }\n if (dependency.type === Dependency_1.DependencyType.SF) if (dateRange.end < predecessorTask.start) {\n dateRange.end.setTime(predecessorTask.start.getTime());\n dateRange.start.setTime(dateRange.end.getTime() - deltaDate);\n }\n });\n return dateRange;\n };\n\n ValidationController.prototype.recalculateParents = function (child, calcStepCallback) {\n var parent = child && child.parent;\n\n while (parent && parent.task) {\n var children = parent.children;\n var start = this.gantt.range.end;\n var end = this.gantt.range.start;\n var progress = 0;\n var totalDuration = 0;\n var data = {\n id: parent.task.internalId\n };\n\n for (var i = 0; i < children.length; i++) {\n var childTask = children[i].task;\n if (!childTask.isValid()) continue;\n start = DateTimeUtils_1.DateTimeUtils.getMinDate(start, childTask.start);\n end = DateTimeUtils_1.DateTimeUtils.getMaxDate(end, childTask.end);\n var duration = childTask.getDuration();\n progress += childTask.progress * duration;\n totalDuration += duration;\n }\n\n if (!DateTimeUtils_1.DateTimeUtils.areDatesEqual(parent.task.start, start)) data[\"start\"] = start;\n if (!DateTimeUtils_1.DateTimeUtils.areDatesEqual(parent.task.end, end)) data[\"end\"] = end;\n data[\"oldStart\"] = parent.task.start;\n data[\"oldEnd\"] = parent.task.end;\n progress = totalDuration > 0 ? Math.round(progress / totalDuration) : 0;\n if (progress !== parent.task.progress) data[\"progress\"] = progress;\n calcStepCallback(data);\n parent = parent.parent;\n }\n };\n\n ValidationController.prototype.updateParentsRangeByChild = function (taskId) {\n var _this = this;\n\n this.recalculateParents(this.viewModel.findItem(taskId), function (data) {\n if (!common_1.isDefined(data.id)) return;\n var history = _this.history;\n var manipulator = _this.gantt.modelManipulator;\n\n if (common_1.isDefined(data.start)) {\n history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(manipulator, data.id, data.start));\n\n _this.moveStartDependTasks(data.id, data.oldStart);\n }\n\n if (common_1.isDefined(data.end)) {\n history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(manipulator, data.id, data.end));\n\n _this.moveEndDependTasks(data.id, data.oldEnd);\n }\n\n if (common_1.isDefined(data.progress)) history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskProgressHistoryItem(manipulator, data.id, data.progress));\n });\n };\n\n ValidationController.prototype.updateChildRangeByParent = function (parentId, delta, changedTasks) {\n var item = this.viewModel.findItem(parentId);\n if (!item || item.children.length === 0) return;\n var children = item.children;\n\n for (var i = 0; i < children.length; i++) {\n var childTask = children[i].task;\n var newStart = new Date(childTask.start.getTime() + delta);\n var newEnd = new Date(childTask.end.getTime() + delta);\n changedTasks.push({\n id: childTask.internalId,\n start: childTask.start,\n end: childTask.end\n });\n\n if (newStart < childTask.end) {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.gantt.modelManipulator, childTask.internalId, newStart));\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.gantt.modelManipulator, childTask.internalId, newEnd));\n } else {\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskEndHistoryItem(this.gantt.modelManipulator, childTask.internalId, newEnd));\n this.history.addAndRedo(new TaskPropertiesHistoryItem_1.TaskStartHistoryItem(this.gantt.modelManipulator, childTask.internalId, newStart));\n }\n\n this.updateChildRangeByParent(childTask.internalId, delta, changedTasks);\n }\n };\n\n ValidationController.prototype.updateParentsIfRequired = function (childId) {\n if (this._parentAutoCalc) {\n this.updateParentsRangeByChild(childId);\n this.gantt.updateOwnerInAutoParentMode();\n }\n };\n\n ValidationController.prototype.correctParentsOnChildMoving = function (taskId, delta) {\n var _this = this;\n\n if (this._parentAutoCalc && delta !== 0) {\n this.updateParentsRangeByChild(taskId);\n var changedTasks = [];\n this.updateChildRangeByParent(taskId, delta, changedTasks);\n if (this.gantt.settings.validation.validateDependencies) changedTasks.forEach(function (i) {\n _this.moveStartDependTasks(i.id, i.start, true);\n\n _this.moveEndDependTasks(i.id, i.end, true);\n });\n this.gantt.updateOwnerInAutoParentMode();\n }\n };\n\n Object.defineProperty(ValidationController.prototype, \"_parentAutoCalc\", {\n get: function get() {\n return this.viewModel.parentAutoCalc;\n },\n enumerable: false,\n configurable: true\n });\n return ValidationController;\n }();\n\n exports.ValidationController = ValidationController;\n /***/\n },\n /* 124 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FullScreenModeHelper = void 0;\n\n var browser_1 = __webpack_require__(5);\n\n var attr_1 = __webpack_require__(125);\n\n var dom_1 = __webpack_require__(3);\n\n var FullScreenModeHelper = function () {\n function FullScreenModeHelper(gantt) {\n this._isInFullScreenMode = false;\n this.fullScreenTempVars = {};\n this.gantt = gantt;\n }\n\n Object.defineProperty(FullScreenModeHelper.prototype, \"isInFullScreenMode\", {\n get: function get() {\n return this._isInFullScreenMode;\n },\n enumerable: false,\n configurable: true\n });\n\n FullScreenModeHelper.prototype.toggle = function () {\n this._isInFullScreenMode = !this._isInFullScreenMode;\n if (this._isInFullScreenMode) this.setFullScreenMode();else this.setNormalMode();\n return true;\n };\n\n FullScreenModeHelper.prototype.setFullScreenMode = function () {\n this.prepareFullScreenMode();\n this.adjustControlInFullScreenMode();\n };\n\n FullScreenModeHelper.prototype.prepareFullScreenMode = function () {\n var mainElement = this.getMainElement();\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"border-top-width\", \"0px\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"border-left-width\", \"0px\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"border-right-width\", \"0px\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"border-bottom-width\", \"0px\");\n this.fullScreenTempVars.scrollTop = dom_1.DomUtils.getDocumentScrollTop();\n this.fullScreenTempVars.scrollLeft = dom_1.DomUtils.getDocumentScrollLeft();\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"background-color\", \"white\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"position\", \"fixed\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"top\", \"0px\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"left\", \"0px\");\n attr_1.AttrUtils.changeElementStyleAttribute(mainElement, \"z-index\", \"1010\");\n attr_1.AttrUtils.changeElementStyleAttribute(document.documentElement, \"position\", \"static\");\n attr_1.AttrUtils.changeElementStyleAttribute(document.documentElement, \"overflow\", \"hidden\");\n this.fullScreenTempVars.bodyMargin = document.body.style.margin;\n document.body.style.margin = \"0\";\n this.fullScreenTempVars.width = mainElement.style.width;\n this.fullScreenTempVars.height = mainElement.style.height || mainElement.clientHeight;\n if (window.self !== window.top) this.requestFullScreen(document.body);\n };\n\n FullScreenModeHelper.prototype.setNormalMode = function () {\n this.cancelFullScreen(document);\n var mainElement = this.getMainElement();\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"left\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"top\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"background-color\");\n attr_1.AttrUtils.restoreElementStyleAttribute(document.documentElement, \"overflow\");\n attr_1.AttrUtils.restoreElementStyleAttribute(document.documentElement, \"position\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"z-index\");\n document.body.style.margin = this.fullScreenTempVars.bodyMargin;\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"position\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"border-top-width\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"border-left-width\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"border-right-width\");\n attr_1.AttrUtils.restoreElementStyleAttribute(mainElement, \"border-bottom-width\");\n this.setHeight(this.fullScreenTempVars.height);\n this.setWidth(this.fullScreenTempVars.width);\n document.documentElement.scrollTop = this.fullScreenTempVars.scrollTop;\n document.documentElement.scrollLeft = this.fullScreenTempVars.scrollLeft;\n this.adjustControl();\n };\n\n FullScreenModeHelper.prototype.adjustControlInFullScreenMode = function () {\n var documentWidth = document.documentElement.clientWidth == 0 ? document.body.clientWidth : document.documentElement.clientWidth;\n var documentHeight = document.documentElement.clientHeight == 0 ? document.body.clientHeight : document.documentElement.clientHeight;\n this.setWidth(documentWidth);\n this.setHeight(documentHeight);\n this.adjustControl();\n };\n\n FullScreenModeHelper.prototype.requestFullScreen = function (element) {\n if (element.requestFullscreen) element.requestFullscreen();else if (element.mozRequestFullScreen) element.mozRequestFullScreen();else if (element.webkitRequestFullscreen) element.webkitRequestFullscreen();else if (element.msRequestFullscreen) element.msRequestFullscreen();\n };\n\n FullScreenModeHelper.prototype.cancelFullScreen = function (document) {\n if (browser_1.Browser.Firefox && !this.getFullScreenElement(document)) return;\n if (document.webkitExitFullscreen) document.webkitExitFullscreen();else if (document.mozCancelFullScreen) document.mozCancelFullScreen();else if (document.msExitFullscreen) document.msExitFullscreen();else if (document.exitFullscreen) document.exitFullscreen();\n };\n\n FullScreenModeHelper.prototype.getFullScreenElement = function (document) {\n return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n };\n\n FullScreenModeHelper.prototype.setWidth = function (width) {\n var mainElement = this.getMainElement();\n mainElement.style.width = this.isNumber(width) ? width + \"px\" : width;\n };\n\n FullScreenModeHelper.prototype.setHeight = function (height) {\n var mainElement = this.getMainElement();\n mainElement.style.height = this.isNumber(height) ? height + \"px\" : height;\n };\n\n FullScreenModeHelper.prototype.isNumber = function (str) {\n return !isNaN(parseFloat(str)) && isFinite(str);\n };\n\n FullScreenModeHelper.prototype.getMainElement = function () {\n return this.gantt.getOwnerControlMainElement();\n };\n\n FullScreenModeHelper.prototype.adjustControl = function () {\n this.gantt.adjustOwnerControl();\n };\n\n return FullScreenModeHelper;\n }();\n\n exports.FullScreenModeHelper = FullScreenModeHelper;\n /***/\n },\n /* 125 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(5);\n\n var AttrUtils = function () {\n function AttrUtils() {}\n\n AttrUtils.setElementAttribute = function (obj, attrName, value) {\n if (obj.setAttribute) {\n if (browser_1.Browser.IE && browser_1.Browser.MajorVersion >= 11 && attrName.toLowerCase() === 'src') obj.setAttribute(attrName, '');\n obj.setAttribute(attrName, value);\n }\n };\n\n AttrUtils.setStyleAttribute = function (obj, attrName, value) {\n if (obj.setProperty) obj.setProperty(attrName, value, '');\n };\n\n AttrUtils.getElementAttribute = function (obj, attrName) {\n return obj.getAttribute(attrName);\n };\n\n AttrUtils.getStyleAttribute = function (obj, attrName) {\n if (obj.getPropertyValue) {\n if (browser_1.Browser.Firefox) {\n try {\n return obj.getPropertyValue(attrName);\n } catch (e) {\n return obj[attrName];\n }\n }\n\n return obj.getPropertyValue(attrName);\n }\n\n return null;\n };\n\n AttrUtils.removeElementAttribute = function (obj, attrName) {\n if (obj.removeAttribute) obj.removeAttribute(attrName);\n };\n\n AttrUtils.removeStyleAttribute = function (obj, attrName) {\n if (obj.removeProperty) obj.removeProperty(attrName);\n };\n\n AttrUtils.changeElementStyleAttribute = function (obj, attrName, newValue) {\n AttrUtils.saveStyleAttributeInElement(obj, attrName);\n AttrUtils.setStyleAttribute(obj.style, attrName, newValue);\n };\n\n AttrUtils.restoreElementStyleAttribute = function (obj, attrName) {\n var savedAttrName = \"saved\" + attrName;\n var style = obj.style;\n\n if (AttrUtils.isExistsAttributeInElement(obj, savedAttrName)) {\n var oldValue = AttrUtils.getElementAttribute(obj, savedAttrName);\n if (oldValue === AttrUtils.emptyObject || oldValue === null) AttrUtils.removeStyleAttribute(style, attrName);else AttrUtils.setStyleAttribute(style, attrName, oldValue);\n AttrUtils.removeElementAttribute(obj, savedAttrName);\n return true;\n }\n\n return false;\n };\n\n AttrUtils.saveStyleAttributeInElement = function (obj, attrName) {\n var savedAttrName = \"saved\" + attrName;\n var style = obj.style;\n\n if (!AttrUtils.isExistsAttributeInElement(obj, savedAttrName)) {\n var oldValue = AttrUtils.getStyleAttribute(style, attrName);\n AttrUtils.setElementAttribute(obj, savedAttrName, AttrUtils.isAttributeExists(oldValue) ? oldValue : AttrUtils.emptyObject);\n }\n };\n\n AttrUtils.isExistsAttributeInElement = function (obj, attrName) {\n var value = AttrUtils.getElementAttribute(obj, attrName);\n return AttrUtils.isAttributeExists(value);\n };\n\n AttrUtils.isAttributeExists = function (attrValue) {\n return attrValue !== null && attrValue !== '';\n };\n\n AttrUtils.emptyObject = 'DxEmptyValue';\n return AttrUtils;\n }();\n\n exports.AttrUtils = AttrUtils;\n /***/\n }\n /******/\n ])\n );\n});"],"sourceRoot":""}