{"version":3,"file":"ng-devui-gantt.mjs","sources":["../../devui/gantt/gantt.model.ts","../../devui/gantt/gantt.service.ts","../../devui/gantt/gantt-bar-parent/gantt-bar-parent.component.ts","../../devui/gantt/gantt-bar-parent/gantt-bar-parent.component.html","../../devui/gantt/gantt-bar/gantt-bar.component.ts","../../devui/gantt/gantt-bar/gantt-bar.component.html","../../devui/gantt/gantt-marker.directive.ts","../../devui/gantt/gantt-milestone/gantt-milestone.component.ts","../../devui/gantt/gantt-milestone/gantt-milestone.component.html","../../devui/gantt/gantt-scale/gantt-scale.component.ts","../../devui/gantt/gantt-scale/gantt-scale.component.html","../../devui/gantt/gantt-tools/gantt-tools.component.ts","../../devui/gantt/gantt-tools/gantt-tools.component.html","../../devui/gantt/resize-handle.directive.ts","../../devui/gantt/gantt.module.ts","../../devui/gantt/ng-devui-gantt.ts"],"sourcesContent":["export interface GanttScaleDateInfo {\n  dayOfMonthLabel: string;\n  dayOfWeekLabel: string;\n  monthLabel: string;\n  yearLabel: string;\n  date: Date;\n  monthStart?: boolean;\n  weekend?: boolean;\n  today?: boolean;\n  highlight?: boolean;\n  highlightStart?: boolean;\n  milestone?: string;\n  scaleStartVisable?: boolean;\n  index?: number;\n}\n\nexport enum GanttScaleUnit {\n  day = 'day',\n  week = 'week',\n  month = 'month',\n}\nexport interface GanttBarStatus {\n  focused: boolean;\n  startDate: Date;\n  endDate: Date;\n}\n\nexport interface GanttScaleConfig {\n  startDate?: Date;\n  endDate?: Date;\n  unit?: GanttScaleUnit;\n  viewChange?: boolean;\n}\n\nexport enum GanttMarkerType {\n  milestone = 'milestone',\n  month = 'month',\n  week = 'week',\n}\n\nexport interface GanttMilestone {\n  date: Date;\n  lable: string;\n}\n\nexport interface GanttTaskInfo {\n  id: string;\n  startDate: Date;\n  endDate: Date;\n  title?: string;\n  progress: string;\n  duration: string;\n  moveOffset?: number;\n  left?: number;\n  width?: number;\n}\n\nexport enum UnitRole {\n  day = 10,\n  week = 20,\n  month = 30,\n}\n\nexport type GanttRailStatus = 'normal' | 'overdue' | 'done';\n","import { Injectable } from '@angular/core';\nimport { fromEvent, merge, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { pluck } from 'rxjs/operators';\nimport { GanttBarStatus, GanttScaleConfig, GanttScaleUnit } from './gantt.model';\n\n@Injectable()\nexport class GanttService {\n  static DAY_DURATION = 24 * 60 * 60 * 1000;\n  scaleUnit = GanttScaleUnit.day;\n  scaleStartDate: Date;\n  scaleEndDate: Date;\n  ganttBarStatusChange = new Subject<GanttBarStatus>();\n  ganttScaleConfigChange = new ReplaySubject<GanttScaleConfig>(1);\n\n  mouseDownListener: Observable<number>;\n  mouseMoveListener = new Observable();\n  mouseEndListener = new Observable();\n\n  constructor() {}\n  changeGanttBarStatus(status: GanttBarStatus) {\n    this.ganttBarStatusChange.next(status);\n  }\n\n  registContainerEvents(scrollContainer: HTMLElement) {\n    // 背景拖拽\n    this.mouseDownListener = fromEvent(scrollContainer, 'mousedown').pipe(pluck<MouseEvent, 'pageX'>('pageX'));\n\n    this.mouseMoveListener = fromEvent(scrollContainer, 'mousemove').pipe(pluck<MouseEvent, 'pageX'>('pageX'));\n\n    this.mouseEndListener = merge(fromEvent(scrollContainer, 'mouseup'), fromEvent(scrollContainer, 'mouseout')).pipe(\n      pluck<MouseEvent, 'pageX'>('pageX')\n    );\n  }\n\n  changeGanttScaleConfig(status: GanttScaleConfig) {\n    this.ganttScaleConfigChange.next(status);\n  }\n\n  setScaleConfig(config: GanttScaleConfig) {\n    if (config.startDate) {\n      this.scaleStartDate = config.startDate;\n    }\n    if (config.endDate) {\n      this.scaleEndDate = config.endDate;\n    }\n    if (config.unit) {\n      this.scaleUnit = config.unit;\n    }\n    this.changeGanttScaleConfig(config);\n  }\n\n  getScaleUnitPixel() {\n    switch (this.scaleUnit) {\n    case GanttScaleUnit.day:\n      return 40;\n      break;\n    case GanttScaleUnit.week:\n      return 30;\n      break;\n    case GanttScaleUnit.month:\n      return 20;\n      break;\n    default:\n      break;\n    }\n  }\n\n  getDatePostionOffset(date: Date): number {\n    if (date && this.scaleStartDate) {\n      const timeOffset = date.getTime() - this.scaleStartDate.getTime();\n      const units = timeOffset / GanttService.DAY_DURATION;\n      return units * this.getScaleUnitPixel();\n    }\n  }\n\n  getDuration(startDate: Date, endDate: Date): number {\n    if (startDate && endDate) {\n      const timeOffset = endDate.getTime() - startDate.getTime();\n      const duration = timeOffset / GanttService.DAY_DURATION + 1;\n      return Math.round(duration);\n    }\n  }\n\n  getDurationWidth(startDate: Date, endDate: Date): number {\n    if (startDate && endDate) {\n      const duration = this.getDuration(startDate, endDate);\n      return duration * this.getScaleUnitPixel();\n    }\n  }\n\n  isSomeDate(date: Date, compareDate: Date) {\n    if (date.getFullYear() !== compareDate.getFullYear()) {\n      return false;\n    }\n\n    if (date.getMonth() !== compareDate.getMonth()) {\n      return false;\n    }\n\n    if (date.getDate() !== compareDate.getDate()) {\n      return false;\n    }\n    return true;\n  }\n\n  roundDate(date: Date) {\n    if (date.getHours() >= 12) {\n      date.setDate(date.getDate() + 1);\n      date.setHours(0, 0, 0);\n    } else if (date.getHours() < 12) {\n      date.setHours(0, 0, 0);\n    }\n  }\n\n  unRegistContainerEvents() {}\n}\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  SimpleChanges,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { GanttService } from '../gantt.service';\r\n\r\n@Component({\r\n  selector: 'd-gantt-bar-parent',\r\n  templateUrl: './gantt-bar-parent.component.html',\r\n  styleUrls: ['./gantt-bar-parent.component.scss'],\r\n})\r\nexport class GanttBarParentComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n  @ViewChild('ganttBarProgress') ganttBarProgress: ElementRef;\r\n  @ViewChild('ganttBarTrack') ganttBarTrack: ElementRef;\r\n  @ViewChild('ganttBarRail') ganttBarRail: ElementRef;\r\n  @Input() startDate: Date;\r\n  @Input() endDate: Date;\r\n  @Input() progressRate = 0;\r\n  @Input() data: any;\r\n  @Input() id: string;\r\n  @Input() tip: string;\r\n\r\n  private ganttScaleStatusHandler: Subscription;\r\n  public tipHovered = false;\r\n  percentage: number;\r\n  left = 0;\r\n  width = 0;\r\n  private max = 100;\r\n  private min = 0;\r\n  public duration: string;\r\n\r\n  constructor(private cdr: ChangeDetectorRef, private ganttService: GanttService) {}\r\n\r\n  ngOnInit() {\r\n    if (this.progressRate === null) {\r\n      this.setValue(this.ensureValueInRange(null));\r\n    }\r\n    this.duration = this.ganttService.getDuration(this.startDate, this.endDate) + 'd';\r\n\r\n    this.ganttScaleStatusHandler = this.ganttService.ganttScaleConfigChange.subscribe((config) => {\r\n      if (config.startDate) {\r\n        this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n      }\r\n      if (config.unit) {\r\n        this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n        this.width = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { progressRate, startDate, endDate } = changes;\r\n    if (progressRate && this.progressRate > 0) {\r\n      this.updateTrackAndHandle();\r\n    }\r\n\r\n    if (startDate) {\r\n      this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n      this.width = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n    }\r\n\r\n    if (endDate) {\r\n      this.width = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.progressRate && this.progressRate > 0) {\r\n      this.updateTrackAndHandle();\r\n    }\r\n  }\r\n\r\n  private setValue(value: number | null): void {\r\n    if (this.progressRate !== value) {\r\n      this.progressRate = value;\r\n      this.updateTrackAndHandle();\r\n    }\r\n  }\r\n\r\n  private ensureValueInRange(value: number | null): number {\r\n    let safeValue;\r\n    if (!this.valueMustBeValid(value)) {\r\n      safeValue = this.min;\r\n    } else {\r\n      safeValue = this.clamp(this.min, value as number, this.max);\r\n    }\r\n    return safeValue;\r\n  }\r\n\r\n  private valueMustBeValid(value: number): boolean {\r\n    return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\r\n  }\r\n\r\n  private clamp(min: number, n: number, max: number) {\r\n    return Math.max(min, Math.min(n, max));\r\n  }\r\n\r\n  private updateTrackAndHandle(): void {\r\n    const value = this.progressRate;\r\n    const offset = this.valueToOffset(value);\r\n    this.updateStyle(offset / 100);\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  private valueToOffset(value: number): number {\r\n    return ((value - this.min) / (this.max - this.min)) * 100;\r\n  }\r\n\r\n  private updateStyle(percentage) {\r\n    this.percentage = Math.min(1, Math.max(0, percentage));\r\n    if (this.ganttBarTrack && this.ganttBarTrack.nativeElement) {\r\n      this.ganttBarTrack.nativeElement.style.width = `${this.percentage * 100}%`;\r\n    }\r\n\r\n    if (this.ganttBarProgress && this.ganttBarProgress.nativeElement) {\r\n      this.ganttBarProgress.nativeElement.style.left = `${this.percentage * 100}%`;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.ganttScaleStatusHandler) {\r\n      this.ganttScaleStatusHandler.unsubscribe();\r\n      this.ganttScaleStatusHandler = null;\r\n    }\r\n  }\r\n}\r\n","<div\n  *ngIf=\"startDate && endDate\"\n  #ganttBar\n  class=\"devui-gantt-bar-parent\"\n  [style.left]=\"left + 'px'\"\n  [style.width]=\"width + 'px'\"\n  dTooltip\n  [content]=\"tip\"\n>\n  <div class=\"devui-gantt-bar-rail\" #ganttBarRail></div>\n  <div class=\"devui-gantt-bar-track\" [ngClass]=\"{ head: percentage > 0, tail: percentage === 1 }\" #ganttBarTrack></div>\n</div>\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { Observable, Subscription, fromEvent } from 'rxjs';\r\nimport { distinctUntilChanged, map, pluck, takeUntil, tap } from 'rxjs/operators';\r\nimport { GanttRailStatus, GanttTaskInfo } from '../gantt.model';\r\nimport { GanttService } from '../gantt.service';\r\n\r\n@Component({\r\n  selector: 'd-gantt-bar',\r\n  templateUrl: './gantt-bar.component.html',\r\n  styleUrls: ['./gantt-bar.component.scss'],\r\n})\r\nexport class GanttBarComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n  private moveBarStartListener: Observable<number>;\r\n  private resizeBarLeftStartListener: Observable<number>;\r\n  private resizeBarRightStartListener: Observable<number>;\r\n  private dragProgressStartListener: Observable<number>;\r\n  private mouseMoveListener: Observable<number>;\r\n  private mouseEndListener: Observable<Event>;\r\n\r\n  private moveBarStartHandler: Subscription | null;\r\n  private resizeBarLeftStartHandler: Subscription | null;\r\n  private resizeBarRightStartHandler: Subscription | null;\r\n  private dragProgressStartHandler: Subscription | null;\r\n  private mouseMoveHandler: Subscription | null;\r\n  private mouseEndHandler: Subscription | null;\r\n  private mouseOverProgressHandler: Subscription | null;\r\n  private mouseLeaveProgressHandler: Subscription | null;\r\n  mouseMoveTimer: any = null;\r\n  mouseLeaveTimer: any = null;\r\n\r\n  dragProgressStart: boolean;\r\n  moveBarStart: boolean;\r\n  private resizeBarLeftStart: boolean;\r\n  private resizeBarRightStart: boolean;\r\n\r\n  private barMoveStartPageX: number;\r\n  private barResizeStartPageX: number;\r\n  private barOriginLeft: number;\r\n  private barOriginWidth: string;\r\n  private originStartDate: Date;\r\n  private originEndDate: Date;\r\n\r\n  private barHovering = false;\r\n  private progressHovering = false;\r\n\r\n  private ganttScaleStatusHandler: Subscription;\r\n  public focused = false;\r\n  private MIN_WIDTH = 10;\r\n  left = 0;\r\n  width = 0;\r\n  private EARLYOFFSET = 3;\r\n\r\n  cdkOverlayOffsetX = 0;\r\n\r\n  @ViewChild('ganttBar') ganttBar: ElementRef;\r\n  @ViewChild('ganttBarMain') ganttBarMain: ElementRef;\r\n  @ViewChild('ganttBarProgress') ganttBarProgress: ElementRef;\r\n  @ViewChild('ganttBarTrack') ganttBarTrack: ElementRef;\r\n  @ViewChild('ganttBarRail') ganttBarRail: ElementRef;\r\n  @ViewChild('ganttBarDarggerLeft') ganttBarDarggerLeft: ElementRef;\r\n  @ViewChild('ganttBarDarggerRight') ganttBarDarggerRight: ElementRef;\r\n  private max = 100;\r\n  private min = 0;\r\n  private step = 1;\r\n  private mouseEventDalay = 100;\r\n\r\n  public duration: string;\r\n  public tipHovered = false;\r\n  public mouseMoveOnBar = false;\r\n  percentage: number;\r\n  private movedOut = false;\r\n  private mouseenterHandler: Subscription;\r\n  private mouseleaveHandler: Subscription;\r\n  private scrollTimer = null;\r\n  private SCROLL_STEP = 10;\r\n  private outDirection = 'right';\r\n  private scrollViewRange = [0, 0];\r\n\r\n  @Input() barMoveDisabled = false;\r\n  @Input() barResizeDisabled = false;\r\n  @Input() progressDisabled = false;\r\n\r\n  @Input() startDate: Date;\r\n  @Input() endDate: Date;\r\n  @Input() progressRate = 0;\r\n  @Input() tipTemplateRef: TemplateRef<any>;\r\n  @Input() titleTemplateRef: TemplateRef<any>;\r\n  @Input() data: any;\r\n\r\n  @Input() originOffsetX = 0;\r\n\r\n  @Input() id: string;\r\n\r\n  @Input() title: string;\r\n\r\n  @Input() showTitle = false;\r\n\r\n  @Input() customBarClass = '';\r\n\r\n  @Input() customBgClass = '';\r\n\r\n  @Input() customTitleClass = '';\r\n\r\n  @Input() scrollElement: HTMLElement;\r\n\r\n  @Input() status: GanttRailStatus = 'normal';\r\n\r\n  @Output() barMoveStartEvent = new EventEmitter<GanttTaskInfo>();\r\n  @Output() barMovingEvent = new EventEmitter<GanttTaskInfo>();\r\n  @Output() barMoveEndEvent = new EventEmitter<GanttTaskInfo>();\r\n\r\n  @Output() barResizeStartEvent = new EventEmitter<GanttTaskInfo>();\r\n  @Output() barResizingEvent = new EventEmitter<GanttTaskInfo>();\r\n  @Output() barResizeEndEvent = new EventEmitter<GanttTaskInfo>();\r\n\r\n  @Output() barProgressEvent = new EventEmitter<number>();\r\n\r\n  constructor(private cdr: ChangeDetectorRef, private ganttService: GanttService, private ele: ElementRef) {}\r\n\r\n  ngOnInit() {\r\n    this.checkRangeValues(this.min, this.max);\r\n    this.checkStepValue();\r\n    if (this.progressRate === null) {\r\n      this.setValue(this.ensureValueInRange(null));\r\n    }\r\n    this.originStartDate = this.startDate;\r\n    this.originEndDate = this.endDate;\r\n    this.duration = this.ganttService.getDuration(this.startDate, this.endDate) + 'd';\r\n\r\n    this.ganttScaleStatusHandler = this.ganttService.ganttScaleConfigChange.subscribe((config) => {\r\n      if (config.startDate) {\r\n        this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n      }\r\n      if (config.unit) {\r\n        this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n        this.width = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { progressRate, startDate, endDate, barMoveDisabled, barResizeDisabled, progressDisabled } = changes;\r\n    if (\r\n      Object.prototype.hasOwnProperty.call(changes, 'min') ||\r\n      Object.prototype.hasOwnProperty.call(changes, 'max') ||\r\n      Object.prototype.hasOwnProperty.call(changes, 'step')\r\n    ) {\r\n      this.checkRangeValues(this.min, this.max);\r\n      this.checkStepValue();\r\n    }\r\n\r\n    if (progressRate && this.progressRate >= 0) {\r\n      this.updateTrackAndHandle();\r\n    }\r\n\r\n    if (startDate) {\r\n      this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n      this.width = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n    }\r\n\r\n    if (endDate) {\r\n      this.width = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n    }\r\n\r\n    if (barMoveDisabled) {\r\n      if (this.barMoveDisabled) {\r\n        this.unsubscribeMouseActions(['start'], ['barMove']);\r\n      } else {\r\n        this.subscribeMouseActions(['start'], ['barMove']);\r\n      }\r\n    }\r\n\r\n    if (barResizeDisabled) {\r\n      if (this.barResizeDisabled) {\r\n        this.unsubscribeMouseActions(['start'], ['barResize']);\r\n      } else {\r\n        this.subscribeMouseActions(['start'], ['barResize']);\r\n      }\r\n    }\r\n\r\n    if (progressDisabled) {\r\n      if (this.progressDisabled) {\r\n        this.unsubscribeMouseActions(['start'], ['progress']);\r\n      } else {\r\n        this.subscribeMouseActions(['start'], ['progress']);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.startDate && this.endDate) {\r\n      this.registerMouseEventsListeners();\r\n      this.registerHandleHoverPopoverListener();\r\n      if (!this.barMoveDisabled) {\r\n        this.subscribeMouseActions(['start'], ['barMove']);\r\n      }\r\n\r\n      if (!this.barResizeDisabled) {\r\n        this.subscribeMouseActions(['start'], ['barResize']);\r\n      }\r\n\r\n      if (!this.progressDisabled) {\r\n        this.subscribeMouseActions(['start'], ['progress']);\r\n      }\r\n    }\r\n\r\n    if (this.progressRate && this.progressRate > 0) {\r\n      this.updateTrackAndHandle();\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChangeCallback = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouchedCallback = fn;\r\n  }\r\n\r\n  writeValue(newValue: number): void {\r\n    this.setValue(this.ensureValueInRange(newValue));\r\n  }\r\n\r\n  private onTouchedCallback = (v: any) => {};\r\n\r\n  private onChangeCallback = (v: any) => {};\r\n\r\n  private checkRangeValues(minValue, maxValue) {\r\n    if (maxValue <= minValue) {\r\n      throw new Error(`max value must be greater than min value`);\r\n    }\r\n  }\r\n\r\n  private checkStepValue() {\r\n    if (this.step < 0 || !this.step) {\r\n      throw new Error('step value must be greater than 0.');\r\n    } else if ((this.max - this.min) % this.step) {\r\n      throw new Error('(max - min) must be divisible by step.');\r\n    }\r\n  }\r\n\r\n  private ratioToValue(ratio: number, min: number, max: number, step: number): number {\r\n    let value = (max - min) * ratio + min;\r\n    if (step > 0) {\r\n      value = Math.round(value / step) * step;\r\n    }\r\n    return this.clamp(min, value, max);\r\n  }\r\n\r\n  private convertHandlePositionToRatio(handleX: number, startX: number, totalLength: number): number {\r\n    return this.clamp(0, (handleX - startX) / totalLength, 1);\r\n  }\r\n\r\n  private clamp(min: number, n: number, max: number) {\r\n    return Math.max(min, Math.min(n, max));\r\n  }\r\n\r\n  private updateStyle(percentage) {\r\n    this.percentage = Math.min(1, Math.max(0, percentage));\r\n    if (this.ganttBarTrack && this.ganttBarTrack.nativeElement) {\r\n      this.ganttBarTrack.nativeElement.style.width = `${this.percentage * 100}%`;\r\n    }\r\n\r\n    if (this.ganttBarProgress && this.ganttBarProgress.nativeElement) {\r\n      this.ganttBarProgress.nativeElement.style.left = `${this.percentage * 100}%`;\r\n    }\r\n  }\r\n\r\n  private registerMouseEventsListeners(): void {\r\n    this.moveBarStartListener = fromEvent(this.ganttBarMain.nativeElement, 'mousedown').pipe(\r\n      tap((e: Event) => {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n      }),\r\n      pluck<MouseEvent, 'pageX'>('pageX')\r\n    );\r\n\r\n    this.dragProgressStartListener = fromEvent(this.ganttBarProgress.nativeElement, 'mousedown').pipe(\r\n      tap((e: Event) => {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n      }),\r\n      pluck<MouseEvent, 'pageX'>('pageX'),\r\n      map((position: number) => this.mousePositionToAdaptiveValue(position))\r\n    );\r\n\r\n    this.resizeBarLeftStartListener = fromEvent(this.ganttBarDarggerLeft.nativeElement, 'mousedown').pipe(\r\n      tap((e: Event) => {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n      }),\r\n      pluck<MouseEvent, 'pageX'>('pageX')\r\n    );\r\n\r\n    this.resizeBarRightStartListener = fromEvent(this.ganttBarDarggerRight.nativeElement, 'mousedown').pipe(\r\n      tap((e: Event) => {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n      }),\r\n      pluck<MouseEvent, 'pageX'>('pageX')\r\n    );\r\n\r\n    this.mouseEndListener = fromEvent(document, 'mouseup');\r\n    this.mouseMoveListener = fromEvent(document, 'mousemove').pipe(\r\n      tap((e: Event) => {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n      }),\r\n      pluck<MouseEvent, 'pageX'>('pageX'),\r\n      distinctUntilChanged(),\r\n      takeUntil(this.mouseEndListener)\r\n    );\r\n  }\r\n\r\n  private getSliderPagePosition(): number {\r\n    const rect = this.ganttBar.nativeElement.getBoundingClientRect();\r\n    const window = this.ganttBar.nativeElement.ownerDocument.defaultView;\r\n    return rect.left + window.pageXOffset;\r\n  }\r\n\r\n  private getRailLength(): number {\r\n    return this.ganttBarRail.nativeElement.clientWidth;\r\n  }\r\n\r\n  private mousePositionToAdaptiveValue(handleX: number): number {\r\n    const sliderStartX = this.getSliderPagePosition();\r\n    const sliderLength = this.getRailLength();\r\n    const ratio = this.convertHandlePositionToRatio(handleX, sliderStartX, sliderLength);\r\n    const value = this.ratioToValue(ratio, this.min, this.max, this.step);\r\n    return parseFloat(value.toFixed(this.getDecimals(this.step)));\r\n  }\r\n\r\n  private getDecimals(value: number): number {\r\n    const valueString = value.toString();\r\n    const integerLength = valueString.indexOf('.') + 1;\r\n    return integerLength >= 0 ? valueString.length - integerLength : 0;\r\n  }\r\n\r\n  private progressStartDrag(value: number): void {\r\n    this.dragProgressStart = true;\r\n    this.handleController(true);\r\n    this.setValue(value);\r\n  }\r\n\r\n  private barStartMoving(value: number): void {\r\n    this.scrollViewRange = [\r\n      this.scrollElement.getBoundingClientRect().left + this.originOffsetX,\r\n      this.scrollElement.getBoundingClientRect().right,\r\n    ];\r\n    this.moveBarStart = true;\r\n    this.barMoveStartPageX = value;\r\n    this.barOriginLeft = parseInt(this.ganttBar.nativeElement.style.left, 10);\r\n    this.handleController(true);\r\n    this.barMoveStartEvent.emit(this.getGanttTaskInfo());\r\n  }\r\n\r\n  private barLeftStartResizing(value: number): void {\r\n    this.resizeBarLeftStart = true;\r\n    this.barResizeStartPageX = value;\r\n    this.barOriginLeft = parseInt(this.ganttBar.nativeElement.style.left, 10);\r\n    this.barOriginWidth = this.ganttBar.nativeElement.style.width;\r\n    this.handleController(true);\r\n    this.barResizeStartEvent.emit(this.getGanttTaskInfo());\r\n  }\r\n\r\n  private barRightStartResizing(value: number): void {\r\n    this.resizeBarRightStart = true;\r\n    this.barResizeStartPageX = value;\r\n    this.barOriginLeft = parseInt(this.ganttBar.nativeElement.style.left, 10);\r\n    this.barOriginWidth = this.ganttBar.nativeElement.style.width;\r\n    this.handleController(true);\r\n    this.barResizeStartEvent.emit(this.getGanttTaskInfo());\r\n  }\r\n\r\n  private mouseMoving(value: number): void {\r\n    if (this.dragProgressStart) {\r\n      this.setValue(this.mousePositionToAdaptiveValue(value));\r\n      this.cdr.markForCheck();\r\n    }\r\n\r\n    if (this.resizeBarLeftStart) {\r\n      this.mouseMoveOnBar = true;\r\n      const offset = value - this.barResizeStartPageX;\r\n      const finalWidth = parseInt(this.barOriginWidth, 10) - Math.round(offset);\r\n\r\n      if (finalWidth < this.MIN_WIDTH) {\r\n        return;\r\n      }\r\n\r\n      const timeOffset = Math.round((offset / this.ganttService.getScaleUnitPixel()) * GanttService.DAY_DURATION);\r\n      this.startDate = new Date(this.originStartDate.getTime() + timeOffset);\r\n      this.ganttService.roundDate(this.startDate);\r\n      if (this.endDate < this.startDate) {\r\n        this.startDate = this.endDate;\r\n      }\r\n\r\n      const earlyDateTime = this.startDate.getTime() - this.EARLYOFFSET * GanttService.DAY_DURATION;\r\n      if (offset < 0 && earlyDateTime < this.ganttService.scaleStartDate.getTime()) {\r\n        this.ganttService.setScaleConfig({ startDate: new Date(earlyDateTime) });\r\n        this.barOriginLeft = this.EARLYOFFSET * this.ganttService.getScaleUnitPixel() - Math.round(offset);\r\n      }\r\n      const finalLeft = this.barOriginLeft + Math.round(offset);\r\n      this.left = finalLeft;\r\n\r\n      this.width = finalWidth;\r\n      this.dispatchGanttBarStatus();\r\n      const info = this.getGanttTaskInfo();\r\n      info.moveOffset = offset;\r\n      this.barResizingEvent.emit(info);\r\n    }\r\n\r\n    if (this.resizeBarRightStart) {\r\n      this.mouseMoveOnBar = true;\r\n      const offset = value - this.barResizeStartPageX;\r\n      const finalWidth = parseInt(this.barOriginWidth, 10) + Math.round(offset);\r\n\r\n      if (finalWidth < this.MIN_WIDTH) {\r\n        return;\r\n      }\r\n\r\n      const timeOffset = Math.round((offset / this.ganttService.getScaleUnitPixel()) * GanttService.DAY_DURATION);\r\n      this.endDate = new Date(this.originEndDate.getTime() + timeOffset);\r\n      this.ganttService.roundDate(this.endDate);\r\n      if (this.endDate < this.startDate) {\r\n        this.endDate = this.startDate;\r\n      }\r\n\r\n      const lateDateTime = this.endDate.getTime() + this.EARLYOFFSET * GanttService.DAY_DURATION;\r\n      if (offset > 0 && lateDateTime > this.ganttService.scaleEndDate.getTime()) {\r\n        this.ganttService.setScaleConfig({ endDate: new Date(lateDateTime) });\r\n      }\r\n\r\n      this.width = finalWidth;\r\n      this.dispatchGanttBarStatus();\r\n      const info = this.getGanttTaskInfo();\r\n      info.moveOffset = offset;\r\n      this.barResizingEvent.emit(info);\r\n    }\r\n\r\n    if (this.moveBarStart) {\r\n      this.checkIsOut(value);\r\n      if (this.movedOut) {\r\n        return;\r\n      }\r\n      this.mouseMoveOnBar = true;\r\n      const offset = value - this.barMoveStartPageX;\r\n\r\n      const timeOffset = Math.round((Math.round(offset) / this.ganttService.getScaleUnitPixel()) * GanttService.DAY_DURATION);\r\n\r\n      const newStartDate = new Date(this.originStartDate.getTime() + timeOffset);\r\n      this.ganttService.roundDate(newStartDate);\r\n      this.startDate = newStartDate;\r\n\r\n      const newEndDate = new Date(this.originEndDate.getTime() + timeOffset);\r\n      this.ganttService.roundDate(newEndDate);\r\n      this.endDate = newEndDate;\r\n\r\n      const earlyDateTime = this.startDate.getTime() - this.EARLYOFFSET * GanttService.DAY_DURATION;\r\n      const lateDateTime = this.endDate.getTime() + this.EARLYOFFSET * GanttService.DAY_DURATION;\r\n      if (earlyDateTime < this.ganttService.scaleStartDate.getTime()) {\r\n        this.ganttService.setScaleConfig({ startDate: new Date(earlyDateTime) });\r\n      } else if (lateDateTime > this.ganttService.scaleEndDate.getTime()) {\r\n        this.ganttService.setScaleConfig({ endDate: new Date(lateDateTime) });\r\n      }\r\n      const finalLeft = this.barOriginLeft + Math.round(offset);\r\n      this.left = finalLeft;\r\n\r\n      this.dispatchGanttBarStatus();\r\n      const info = this.getGanttTaskInfo();\r\n      info.moveOffset = offset;\r\n      this.barMovingEvent.emit(info);\r\n    }\r\n  }\r\n\r\n  private checkIsOut(value) {\r\n    this.outDirection = value - this.barMoveStartPageX > 0 ? 'right' : 'left';\r\n    if (this.outDirection === 'left') {\r\n      this.movedOut = value < this.scrollViewRange[0];\r\n    } else {\r\n      this.movedOut = value > this.scrollViewRange[1];\r\n    }\r\n    if (this.movedOut) {\r\n      this.autoScroll();\r\n    } else if (this.scrollTimer) {\r\n      const left =\r\n        this.outDirection === 'left'\r\n          ? this.scrollElement.scrollLeft + (value - this.scrollElement.getBoundingClientRect().left) - this.originOffsetX\r\n          : this.scrollElement.scrollLeft + this.scrollElement.clientWidth - this.originOffsetX;\r\n      this.setLeft(Math.round(left));\r\n      this.stopAutoScroll();\r\n      this.barMoveStartPageX = value;\r\n    }\r\n  }\r\n\r\n  private autoScroll() {\r\n    if (!this.scrollTimer) {\r\n      this.scrollTimer = setInterval(() => {\r\n        this.outDirection === 'left'\r\n          ? (this.scrollElement.scrollLeft -= this.SCROLL_STEP)\r\n          : (this.scrollElement.scrollLeft += this.SCROLL_STEP);\r\n      }, 10);\r\n    }\r\n  }\r\n\r\n  private stopAutoScroll() {\r\n    clearInterval(this.scrollTimer);\r\n    this.scrollTimer = null;\r\n  }\r\n\r\n  private setLeft(left) {\r\n    const offset = left - this.left;\r\n    const timeOffset = (Math.round(offset) / this.ganttService.getScaleUnitPixel()) * GanttService.DAY_DURATION;\r\n\r\n    const newStartDate = new Date(this.startDate.getTime() + timeOffset);\r\n    this.ganttService.roundDate(newStartDate);\r\n    this.startDate = newStartDate;\r\n\r\n    const newEndDate = new Date(this.endDate.getTime() + timeOffset);\r\n    this.ganttService.roundDate(newEndDate);\r\n    this.endDate = newEndDate;\r\n\r\n    this.originStartDate = this.startDate;\r\n    this.originEndDate = this.endDate;\r\n    this.barOriginLeft = left;\r\n    this.left = left;\r\n  }\r\n\r\n  private getGanttTaskInfo(): GanttTaskInfo {\r\n    this.duration = this.ganttService.getDuration(this.startDate, this.endDate) + 'd';\r\n    const progress = this.progressRate + '%';\r\n    const taskInfo = {\r\n      id: this.id,\r\n      startDate: this.startDate,\r\n      endDate: this.endDate,\r\n      duration: this.duration,\r\n      progress: progress,\r\n      left: this.left,\r\n      width: this.width,\r\n    };\r\n    return taskInfo;\r\n  }\r\n  private mouseStopMoving(): void {\r\n    this.mouseMoveOnBar = false;\r\n    this.ganttService.roundDate(this.startDate);\r\n    this.ganttService.roundDate(this.endDate);\r\n    this.originStartDate = this.startDate;\r\n    this.originEndDate = this.endDate;\r\n    const taskInfo = this.getGanttTaskInfo();\r\n    if (this.moveBarStart) {\r\n      const finalLeft = this.ganttService.getDatePostionOffset(this.startDate);\r\n      this.left = finalLeft > 0 ? finalLeft : 0;\r\n      this.barMoveEndEvent.emit(taskInfo);\r\n    }\r\n    if (this.resizeBarLeftStart) {\r\n      const finalLeft = this.ganttService.getDatePostionOffset(this.startDate);\r\n      const finalWidth = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n      this.left = finalLeft > 0 ? finalLeft : 0;\r\n      this.width = finalWidth;\r\n      this.barResizeEndEvent.emit(taskInfo);\r\n    }\r\n    if (this.resizeBarRightStart) {\r\n      const finalWidth = this.ganttService.getDurationWidth(this.startDate, this.endDate);\r\n      this.width = finalWidth;\r\n      this.barResizeEndEvent.emit(taskInfo);\r\n    }\r\n    if (this.dragProgressStart) {\r\n      this.barProgressEvent.emit(this.progressRate);\r\n    }\r\n    this.handleController(false);\r\n    this.stopAutoScroll();\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  private subscribeMouseActions(\r\n    mouseActions: string[] = ['start', 'move', 'end'],\r\n    events: string[] = ['barMove', 'barResize', 'progress']\r\n  ): void {\r\n    if (\r\n      mouseActions.indexOf('start') !== -1 &&\r\n      this.dragProgressStartListener &&\r\n      !this.dragProgressStartHandler &&\r\n      events.indexOf('progress') !== -1\r\n    ) {\r\n      this.dragProgressStartHandler = this.dragProgressStartListener.subscribe(this.progressStartDrag.bind(this));\r\n    }\r\n\r\n    if (\r\n      mouseActions.indexOf('start') !== -1 &&\r\n      this.moveBarStartListener &&\r\n      !this.moveBarStartHandler &&\r\n      events.indexOf('barMove') !== -1\r\n    ) {\r\n      this.moveBarStartHandler = this.moveBarStartListener.subscribe(this.barStartMoving.bind(this));\r\n    }\r\n\r\n    if (\r\n      mouseActions.indexOf('start') !== -1 &&\r\n      this.resizeBarLeftStartListener &&\r\n      !this.resizeBarLeftStartHandler &&\r\n      events.indexOf('barResize') !== -1\r\n    ) {\r\n      this.resizeBarLeftStartHandler = this.resizeBarLeftStartListener.subscribe(this.barLeftStartResizing.bind(this));\r\n    }\r\n\r\n    if (\r\n      mouseActions.indexOf('start') !== -1 &&\r\n      this.resizeBarRightStartListener &&\r\n      !this.resizeBarRightStartHandler &&\r\n      events.indexOf('barResize') !== -1\r\n    ) {\r\n      this.resizeBarRightStartHandler = this.resizeBarRightStartListener.subscribe(this.barRightStartResizing.bind(this));\r\n    }\r\n\r\n    if (mouseActions.indexOf('move') !== -1 && this.mouseMoveListener && !this.mouseMoveHandler) {\r\n      this.mouseMoveHandler = this.mouseMoveListener.subscribe(this.mouseMoving.bind(this));\r\n    }\r\n\r\n    if (mouseActions.indexOf('end') !== -1 && this.mouseEndListener && !this.mouseEndHandler) {\r\n      this.mouseEndHandler = this.mouseEndListener.subscribe(this.mouseStopMoving.bind(this));\r\n    }\r\n  }\r\n\r\n  private unsubscribeMouseActions(\r\n    dragStages: string[] = ['start', 'move', 'end'],\r\n    events: string[] = ['barMove', 'barResize', 'progress']\r\n  ): void {\r\n    if (dragStages.indexOf('start') !== -1 && events.indexOf('progress') !== -1 && this.dragProgressStartHandler) {\r\n      this.dragProgressStartHandler.unsubscribe();\r\n      this.dragProgressStartHandler = null;\r\n    }\r\n\r\n    if (dragStages.indexOf('start') !== -1 && events.indexOf('barMove') !== -1 && this.moveBarStartHandler) {\r\n      this.moveBarStartHandler.unsubscribe();\r\n      this.moveBarStartHandler = null;\r\n    }\r\n\r\n    if (dragStages.indexOf('start') !== -1 && events.indexOf('barResize') !== -1 && this.resizeBarLeftStartHandler) {\r\n      this.resizeBarLeftStartHandler.unsubscribe();\r\n      this.resizeBarLeftStartHandler = null;\r\n    }\r\n\r\n    if (dragStages.indexOf('start') !== -1 && events.indexOf('barResize') !== -1 && this.resizeBarRightStartHandler) {\r\n      this.resizeBarRightStartHandler.unsubscribe();\r\n      this.resizeBarRightStartHandler = null;\r\n    }\r\n\r\n    if (dragStages.indexOf('move') !== -1 && this.mouseMoveHandler) {\r\n      this.mouseMoveHandler.unsubscribe();\r\n      this.mouseMoveHandler = null;\r\n    }\r\n\r\n    if (dragStages.indexOf('end') !== -1 && this.mouseEndHandler) {\r\n      this.mouseEndHandler.unsubscribe();\r\n      this.mouseEndHandler = null;\r\n    }\r\n  }\r\n\r\n  private handleController(movable: boolean): void {\r\n    if (movable) {\r\n      this.focused = this.focusController();\r\n      this.subscribeMouseActions(['move', 'end']);\r\n    } else {\r\n      this.dragProgressStart = false;\r\n      this.moveBarStart = false;\r\n      this.resizeBarLeftStart = false;\r\n      this.resizeBarRightStart = false;\r\n      this.focused = this.focusController();\r\n      this.unsubscribeMouseActions(['move', 'end']);\r\n    }\r\n  }\r\n\r\n  private setValue(value: number | null): void {\r\n    if (this.progressRate !== value) {\r\n      this.progressRate = value;\r\n      this.updateTrackAndHandle();\r\n    }\r\n    this.onChangeCallback(this.progressRate);\r\n  }\r\n\r\n  private ensureValueInRange(value: number | null): number {\r\n    let safeValue;\r\n    if (!this.valueMustBeValid(value)) {\r\n      safeValue = this.min;\r\n    } else {\r\n      safeValue = this.clamp(this.min, value as number, this.max);\r\n    }\r\n    return safeValue;\r\n  }\r\n\r\n  private updateTrackAndHandle(): void {\r\n    const value = this.progressRate;\r\n    const offset = this.valueToOffset(value);\r\n    this.updateStyle(offset / 100);\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  private valueMustBeValid(value: number): boolean {\r\n    return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\r\n  }\r\n\r\n  private valueToOffset(value: number): number {\r\n    return ((value - this.min) / (this.max - this.min)) * 100;\r\n  }\r\n\r\n  private registerHandleHoverPopoverListener() {\r\n    const mouseOverProgressListener = fromEvent(this.ganttBarProgress.nativeElement, 'mouseover');\r\n    const mouseLeaveProgressListener = fromEvent(this.ganttBarProgress.nativeElement, 'mouseout');\r\n    this.mouseOverProgressHandler = mouseOverProgressListener.subscribe(this.ganttProgressPopoverOnMouseHover.bind(this));\r\n    this.mouseLeaveProgressHandler = mouseLeaveProgressListener.subscribe(this.ganttProgressPopoverOnMouseLeave.bind(this));\r\n  }\r\n\r\n  ganttBarPopoverOnMouseHover($event) {\r\n    if (this.mouseLeaveTimer) {\r\n      clearTimeout(this.mouseLeaveTimer);\r\n    }\r\n    this.mouseMoveTimer = setTimeout(() => {\r\n      const barLeft = this.ganttBar.nativeElement.getClientRects()[0].left;\r\n      const eventLeft = $event.clientX;\r\n      this.cdkOverlayOffsetX = eventLeft - barLeft;\r\n\r\n      this.barHovering = true;\r\n      this.focused = this.focusController();\r\n      this.dispatchGanttBarStatus();\r\n      this.cdr.markForCheck();\r\n    }, this.mouseEventDalay);\r\n  }\r\n\r\n  ganttBarPopoverOnMouseLeave() {\r\n    if (this.mouseMoveTimer) {\r\n      clearTimeout(this.mouseMoveTimer);\r\n    }\r\n    this.mouseLeaveTimer = setTimeout(() => {\r\n      this.barHovering = false;\r\n      this.focused = this.focusController();\r\n      this.dispatchGanttBarStatus();\r\n      this.cdr.markForCheck();\r\n    }, this.mouseEventDalay);\r\n  }\r\n\r\n  mouseLeaveTip() {\r\n    setTimeout(() => {\r\n      this.tipHovered = false;\r\n    }, this.mouseEventDalay);\r\n  }\r\n\r\n  private ganttProgressPopoverOnMouseHover() {\r\n    this.progressHovering = true;\r\n  }\r\n\r\n  private ganttProgressPopoverOnMouseLeave() {\r\n    this.progressHovering = false;\r\n  }\r\n\r\n  private unregisterHandleHoverTooltip() {\r\n    if (this.mouseOverProgressHandler) {\r\n      this.mouseOverProgressHandler.unsubscribe();\r\n      this.mouseOverProgressHandler = null;\r\n    }\r\n\r\n    if (this.mouseLeaveProgressHandler) {\r\n      this.mouseLeaveProgressHandler.unsubscribe();\r\n      this.mouseLeaveProgressHandler = null;\r\n    }\r\n  }\r\n\r\n  private clearTimer() {\r\n    if (this.mouseLeaveTimer) {\r\n      clearTimeout(this.mouseLeaveTimer);\r\n    }\r\n    if (this.mouseMoveTimer) {\r\n      clearTimeout(this.mouseMoveTimer);\r\n    }\r\n  }\r\n\r\n  private focusController() {\r\n    return this.dragProgressStart || this.moveBarStart || this.resizeBarLeftStart || this.resizeBarRightStart || this.barHovering;\r\n  }\r\n\r\n  dispatchGanttBarStatus() {\r\n    const status = {\r\n      focused: this.focused,\r\n      startDate: this.startDate,\r\n      endDate: this.endDate,\r\n    };\r\n    this.ganttService.changeGanttBarStatus(status);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.clearTimer();\r\n    this.unsubscribeMouseActions();\r\n    this.unregisterHandleHoverTooltip();\r\n    if (this.ganttScaleStatusHandler) {\r\n      this.ganttScaleStatusHandler.unsubscribe();\r\n      this.ganttScaleStatusHandler = null;\r\n    }\r\n  }\r\n}\r\n","<div\n  *ngIf=\"startDate && endDate\"\n  class=\"devui-gantt-bar {{ customBarClass }}\"\n  #ganttBar\n  cdk-overlay-origin\n  #progress=\"cdkOverlayOrigin\"\n  [style.left]=\"left + 'px'\"\n  [style.width]=\"width + 'px'\"\n  (mouseover)=\"ganttBarPopoverOnMouseHover($event)\"\n  (mouseleave)=\"ganttBarPopoverOnMouseLeave()\"\n>\n  <div class=\"devui-gantt-hover-layer\" [style.width]=\"width + 24 + 'px'\" [style.display]=\"focused ? 'block' : 'none'\">\n    <div #ganttBarDarggerLeft class=\"devui-gantt-dragger left\">\n      <div class=\"handle\" [ngClass]=\"{ disabled: barResizeDisabled }\"></div>\n    </div>\n    <div #ganttBarDarggerRight class=\"devui-gantt-dragger right\">\n      <div class=\"handle\" [ngClass]=\"{ disabled: barResizeDisabled }\"></div>\n    </div>\n  </div>\n  <div #ganttBarMain class=\"devui-gantt-main\" [ngClass]=\"{ disabled: barMoveDisabled }\">\n    <div class=\"devui-gantt-bar-rail devui-gantt-bar-rail-{{ status }}\" #ganttBarRail></div>\n    <div class=\"devui-gantt-bar-track devui-gantt-bar-track-{{ status }}\" #ganttBarTrack></div>\n  </div>\n  <div\n    class=\"devui-gantt-bar-progress\"\n    #ganttBarProgress\n    [ngClass]=\"{ disabled: progressDisabled, visible: focused }\"\n    [attr.title]=\"progressRate ? progressRate : 0 + '%'\"\n  >\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      width=\"12px\"\n      height=\"16px\"\n      viewBox=\"0 0 12 16\"\n      version=\"1.1\"\n    >\n      <g id=\"gantt-bar-handle\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M7.06066017,1.35355339 C6.76776695,1.06066017 6.38388348,0.914213562 6,0.914213562 C5.61611652,0.914213562 5.23223305,1.06066017 4.93933983,1.35355339 L0.5,5.79289322 L0.5,13 C0.5,13.6903559 0.779822031,14.3153559 1.23223305,14.767767 C1.68464406,15.220178 2.30964406,15.5 3,15.5 L9,15.5 C9.69035594,15.5 10.3153559,15.220178 10.767767,14.767767 C11.220178,14.3153559 11.5,13.6903559 11.5,13 L11.5,5.79289322 L7.06066017,1.35355339 Z\"\n          stroke=\"none\"\n          fill=\"none\"\n        />\n      </g>\n    </svg>\n  </div>\n  <div class=\"devui-gantt-bar-title {{ customTitleClass }}\" *ngIf=\"showTitle\">\n    <ng-container *ngIf=\"titleTemplateRef\">\n      <ng-template [ngTemplateOutlet]=\"titleTemplateRef\" [ngTemplateOutletContext]=\"{ data: data }\"></ng-template>\n    </ng-container>\n    <ng-container *ngIf=\"!titleTemplateRef\">{{ title }}</ng-container>\n  </div>\n  <ng-template\n    *ngIf=\"tipTemplateRef\"\n    cdk-connected-overlay\n    [cdkConnectedOverlayOffsetX]=\"cdkOverlayOffsetX\"\n    [cdkConnectedOverlayOrigin]=\"progress\"\n    [cdkConnectedOverlayOpen]=\"(focused || tipHovered) && !mouseMoveOnBar\"\n  >\n    <div class=\"devui-gantt-tips\" (mouseover)=\"tipHovered = true\" (mouseleave)=\"mouseLeaveTip()\">\n      <ng-template [ngTemplateOutlet]=\"tipTemplateRef\" [ngTemplateOutletContext]=\"{ ganttInstance: this, data: data }\"></ng-template>\n    </div>\n  </ng-template>\n</div>\n\n<div\n  *ngIf=\"moveBarStart\"\n  class=\"moving-bg {{ customBgClass }}\"\n  [style.left]=\"originOffsetX + left + 'px'\"\n  [style.width]=\"width + 'px'\"\n></div>\n","import { Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { GanttScaleUnit } from './gantt.model';\r\n\r\n@Directive({\r\n  selector: '[dGanttMarker]',\r\n})\r\nexport class GanttMarkerDirective implements OnChanges, OnDestroy {\r\n  @Input() ganttBarContainerElement: HTMLElement;\r\n  @Input() ganttScaleContainerOffsetLeft: number;\r\n  @Input() monthMark = false;\r\n  @Input() weekend = false;\r\n  @Input() today = false;\r\n  @Input() index: number;\r\n  @Input() milestone = '';\r\n  @Input() unit: GanttScaleUnit;\r\n  @Input() date: Date;\r\n  @Input() last: boolean;\r\n  @Input() showDaySplitLine = false;\r\n  hostElement: HTMLElement;\r\n  monthMarkElement: HTMLElement;\r\n  weekendElement: HTMLElement;\r\n  todayElement: HTMLElement;\r\n  milestoneElement: HTMLElement;\r\n  daySplitLineElement: HTMLElement;\r\n\r\n  constructor(element: ElementRef, private renderer: Renderer2) {\r\n    this.hostElement = element.nativeElement;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { index, ganttBarContainerElement, ganttScaleContainerOffsetLeft, monthMark, weekend, last, today, milestone, unit } = changes;\r\n    if (this.showDaySplitLine && index) {\r\n      if (this.index >= 0 && !this.daySplitLineElement && this.unit === GanttScaleUnit.day) {\r\n        this.drawSplitLine();\r\n      } else if (this.index >= 0 && this.daySplitLineElement && this.unit === GanttScaleUnit.day) {\r\n        this.updateSplitLine();\r\n      }\r\n    }\r\n\r\n    if (ganttBarContainerElement && this.ganttBarContainerElement) {\r\n      this.initMarkElement();\r\n    }\r\n\r\n    if (ganttScaleContainerOffsetLeft && this.ganttScaleContainerOffsetLeft) {\r\n      this.setElementsStyle();\r\n    }\r\n\r\n    if (monthMark) {\r\n      if (this.monthMark) {\r\n        this.initMarkElement();\r\n      } else {\r\n        this.destroyMarkElement('monthMark');\r\n      }\r\n    }\r\n\r\n    if (weekend || last) {\r\n      if (this.weekend && !this.last) {\r\n        this.initMarkElement();\r\n      } else {\r\n        this.destroyMarkElement('weekend');\r\n      }\r\n    }\r\n\r\n    if (today) {\r\n      if (this.today) {\r\n        this.initMarkElement();\r\n      } else {\r\n        this.destroyMarkElement('today');\r\n      }\r\n    }\r\n\r\n    if (milestone) {\r\n      if (this.milestone) {\r\n        this.initMarkElement();\r\n      } else {\r\n        this.destroyMarkElement('milestone');\r\n      }\r\n    }\r\n\r\n    if (unit && this.unit) {\r\n      if (this.unit !== GanttScaleUnit.day) {\r\n        this.destorySplitLine();\r\n      }\r\n      this.setElementsStyle();\r\n    }\r\n  }\r\n\r\n  initMarkElement() {\r\n    if (this.ganttBarContainerElement) {\r\n      if (this.monthMark && !this.monthMarkElement) {\r\n        const node = this.renderer.createElement('div');\r\n        this.renderer.addClass(node, 'devui-mark-line');\r\n        this.renderer.appendChild(this.ganttBarContainerElement, node);\r\n        this.monthMarkElement = node;\r\n        this.setElementsStyle();\r\n      }\r\n      if (this.weekend && !this.last && !this.weekendElement) {\r\n        const node = this.renderer.createElement('div');\r\n        this.renderer.addClass(node, 'devui-mark-stripe');\r\n        this.renderer.addClass(node, this.unit);\r\n        this.renderer.appendChild(this.ganttBarContainerElement, node);\r\n        this.weekendElement = node;\r\n        this.setElementsStyle();\r\n      }\r\n      if (this.today && !this.todayElement) {\r\n        const node = this.renderer.createElement('div');\r\n        this.renderer.addClass(node, 'devui-mark-line');\r\n        this.renderer.addClass(node, 'today');\r\n        this.renderer.addClass(node, this.unit);\r\n        this.renderer.appendChild(this.ganttBarContainerElement, node);\r\n        this.todayElement = node;\r\n        this.setElementsStyle();\r\n      }\r\n      if (this.milestone && !this.milestoneElement) {\r\n        const node = this.renderer.createElement('div');\r\n        this.renderer.addClass(node, 'devui-mark-line');\r\n        this.renderer.addClass(node, 'milestone');\r\n        this.renderer.addClass(node, this.unit);\r\n        this.renderer.appendChild(this.ganttBarContainerElement, node);\r\n        this.milestoneElement = node;\r\n        this.setElementsStyle();\r\n      }\r\n    }\r\n  }\r\n\r\n  drawSplitLine() {\r\n    const node = this.renderer.createElement('div');\r\n    this.renderer.addClass(node, 'devui-day-split-line');\r\n    this.renderer.appendChild(this.ganttBarContainerElement, node);\r\n    this.daySplitLineElement = node;\r\n    this.updateSplitLine();\r\n  }\r\n\r\n  updateSplitLine() {\r\n    this.ganttScaleContainerOffsetLeft = this.ganttScaleContainerOffsetLeft ? this.ganttScaleContainerOffsetLeft : 0;\r\n    const leftOffset = this.hostElement.offsetLeft + this.ganttScaleContainerOffsetLeft + 'px';\r\n    if (!this.weekend && this.index && this.daySplitLineElement) {\r\n      this.renderer.setStyle(this.daySplitLineElement, 'left', leftOffset);\r\n    }\r\n  }\r\n\r\n  destorySplitLine() {\r\n    if (this.showDaySplitLine && this.daySplitLineElement) {\r\n      this.renderer.removeChild(this.ganttBarContainerElement, this.daySplitLineElement);\r\n      this.daySplitLineElement = null;\r\n    }\r\n  }\r\n\r\n  removeMonthMark() {\r\n    if (this.monthMarkElement) {\r\n      this.renderer.removeChild(this.ganttBarContainerElement, this.monthMarkElement);\r\n      this.monthMarkElement = null;\r\n    }\r\n  }\r\n\r\n  removeWeekendMark() {\r\n    if (this.weekendElement) {\r\n      this.renderer.removeChild(this.ganttBarContainerElement, this.weekendElement);\r\n      this.weekendElement = null;\r\n    }\r\n  }\r\n\r\n  removeTodayMark() {\r\n    if (this.todayElement) {\r\n      this.renderer.removeChild(this.ganttBarContainerElement, this.todayElement);\r\n      this.todayElement = null;\r\n    }\r\n  }\r\n\r\n  removeMileStoneMark() {\r\n    if (this.milestoneElement) {\r\n      this.renderer.removeChild(this.ganttBarContainerElement, this.milestoneElement);\r\n      this.milestoneElement = null;\r\n    }\r\n  }\r\n\r\n  destroyMarkElement(type = 'all') {\r\n    switch (type) {\r\n    case 'monthMark':\r\n      this.removeMonthMark();\r\n      break;\r\n    case 'weekend':\r\n      this.removeWeekendMark();\r\n      break;\r\n    case 'today':\r\n      this.removeTodayMark();\r\n      break;\r\n    case 'milestone':\r\n      this.removeMileStoneMark();\r\n      break;\r\n    case 'all':\r\n      this.removeMonthMark();\r\n      this.removeWeekendMark();\r\n      this.removeTodayMark();\r\n      this.removeMileStoneMark();\r\n      break;\r\n    default:\r\n      break;\r\n    }\r\n  }\r\n\r\n  private setElementsStyle() {\r\n    this.ganttScaleContainerOffsetLeft = this.ganttScaleContainerOffsetLeft ? this.ganttScaleContainerOffsetLeft : 0;\r\n    const leftOffset = this.hostElement.offsetLeft + this.ganttScaleContainerOffsetLeft + 'px';\r\n    if (this.monthMark && this.monthMarkElement) {\r\n      this.renderer.setStyle(this.monthMarkElement, 'left', leftOffset);\r\n    }\r\n\r\n    if (this.weekend && this.weekendElement) {\r\n      this.weekendElement.className = 'devui-mark-stripe ' + this.unit;\r\n      this.renderer.setStyle(this.weekendElement, 'left', leftOffset);\r\n    }\r\n\r\n    if (this.today && this.todayElement) {\r\n      this.todayElement.className = 'devui-mark-line today ' + this.unit;\r\n      this.renderer.setStyle(this.todayElement, 'left', leftOffset);\r\n    }\r\n\r\n    if (this.milestone && this.milestoneElement) {\r\n      this.milestoneElement.className = 'devui-mark-line milestone ' + this.unit;\r\n      this.renderer.setStyle(this.milestoneElement, 'left', leftOffset);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyMarkElement();\r\n    this.destorySplitLine();\r\n  }\r\n}\r\n","import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { GanttService } from '../gantt.service';\r\n\r\n@Component({\r\n  selector: 'd-gantt-milestone',\r\n  templateUrl: './gantt-milestone.component.html',\r\n  styleUrls: ['./gantt-milestone.component.scss'],\r\n})\r\nexport class GanttMilestoneComponent implements OnInit, OnChanges, OnDestroy {\r\n  @Input() startDate: Date;\r\n  @Input() title: string;\r\n  @Input() id: string;\r\n\r\n  left = 0;\r\n\r\n  private ganttScaleStatusHandler: Subscription;\r\n\r\n  constructor(private ganttService: GanttService) {}\r\n\r\n  ngOnInit() {\r\n    this.ganttScaleStatusHandler = this.ganttService.ganttScaleConfigChange.subscribe((config) => {\r\n      if (config.startDate || config.unit) {\r\n        this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.startDate) {\r\n      this.left = this.ganttService.getDatePostionOffset(this.startDate);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.ganttScaleStatusHandler) {\r\n      this.ganttScaleStatusHandler.unsubscribe();\r\n      this.ganttScaleStatusHandler = null;\r\n    }\r\n  }\r\n}\r\n","<div class=\"devui-gantt-milestone\" [style.left]=\"left + 'px'\">\n  <span class=\"icon\">\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      width=\"22px\"\n      height=\"24px\"\n      viewBox=\"0 0 22 24\"\n      version=\"1.1\"\n    >\n      <defs>\n        <linearGradient x1=\"50%\" y1=\"6.72700158%\" x2=\"50%\" y2=\"91.2568893%\" id=\"gantt-linearGradient-1\">\n          <stop stop-color=\"#3DCCA6\" offset=\"0%\" />\n          <stop stop-color=\"#2AA7AF\" offset=\"100%\" />\n        </linearGradient>\n        <path\n          d=\"M14,1.15470054 L20.3923048,4.84529946 C21.6299092,5.55983064 22.3923048,6.88033872 22.3923048,8.30940108 L22.3923048,15.6905989 C22.3923048,17.1196613 21.6299092,18.4401694 20.3923048,19.1547005 L14,22.8452995 C12.7623957,23.5598306 11.2376043,23.5598306 10,22.8452995 L3.60769515,19.1547005 C2.37009085,18.4401694 1.60769515,17.1196613 1.60769515,15.6905989 L1.60769515,8.30940108 C1.60769515,6.88033872 2.37009085,5.55983064 3.60769515,4.84529946 L10,1.15470054 C11.2376043,0.440169359 12.7623957,0.440169359 14,1.15470054 Z\"\n          id=\"gantt-path-2\"\n        />\n        <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"50%\" id=\"gantt-linearGradient-4\">\n          <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n          <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n        </linearGradient>\n        <linearGradient x1=\"50%\" y1=\"0%\" x2=\"51.6276154%\" y2=\"68.3310347%\" id=\"gantt-linearGradient-5\">\n          <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n          <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n        </linearGradient>\n        <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"70.5804357%\" id=\"gantt-linearGradient-6\">\n          <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n          <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n        </linearGradient>\n        <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"71.0876747%\" id=\"gantt-linearGradient-7\">\n          <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n          <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n        </linearGradient>\n        <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"60.3844779%\" id=\"gantt-linearGradient-8\">\n          <stop stop-color=\"#FFFFFF\" offset=\"0%\" />\n          <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"100%\" />\n        </linearGradient>\n        <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"gantt-linearGradient-9\">\n          <stop stop-color=\"#FFFFFF\" stop-opacity=\"0\" offset=\"0%\" />\n          <stop stop-color=\"#FFFFFF\" offset=\"100%\" />\n        </linearGradient>\n        <filter x=\"-25.0%\" y=\"-75.0%\" width=\"150.0%\" height=\"250.0%\" filterUnits=\"objectBoundingBox\" id=\"gantt-filter-10\">\n          <feGaussianBlur stdDeviation=\"1\" in=\"SourceGraphic\" />\n        </filter>\n        <linearGradient x1=\"-33.9878453%\" y1=\"3.1788779%\" x2=\"67.7654261%\" y2=\"81.2841156%\" id=\"gantt-linearGradient-11\">\n          <stop stop-color=\"#FF790E\" offset=\"0%\" />\n          <stop stop-color=\"#FECC55\" offset=\"100%\" />\n        </linearGradient>\n        <linearGradient x1=\"71.1217155%\" y1=\"42.8128234%\" x2=\"17.9433277%\" y2=\"-14.3609467%\" id=\"gantt-linearGradient-12\">\n          <stop stop-color=\"#FFE88E\" offset=\"0%\" />\n          <stop stop-color=\"#FF790E\" offset=\"100%\" />\n        </linearGradient>\n      </defs>\n      <g id=\"gantt-page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g id=\"gantt-04fix\" transform=\"translate(-189.000000, -423.000000)\">\n          <g id=\"gantt-Group-2\" transform=\"translate(40.000000, 417.000000)\">\n            <g id=\"gant-group-4\" transform=\"translate(148.000000, 6.000000)\">\n              <mask id=\"gantt-mask-3\" fill=\"white\">\n                <use xlink:href=\"#gantt-path-2\" />\n              </mask>\n              <use id=\"gantt-men\" fill=\"url(#gantt-linearGradient-1)\" xlink:href=\"#gantt-path-2\" />\n              <polygon fill=\"url(#gantt-linearGradient-4)\" opacity=\"0.200000003\" mask=\"url(#gantt-mask-3)\" points=\"10 0 14 0 13 13 11 13\" />\n              <polygon\n                fill=\"url(#gantt-linearGradient-5)\"\n                opacity=\"0.200000003\"\n                mask=\"url(#gantt-mask-3)\"\n                transform=\"translate(17.500000, 11.000000) rotate(-270.000000) translate(-17.500000, -11.000000) \"\n                points=\"14.5 4.5 18.5 4.5 20.5 17.5 19.5 17.5\"\n              />\n              <polygon\n                fill=\"url(#gantt-linearGradient-6)\"\n                opacity=\"0.200000003\"\n                mask=\"url(#gantt-mask-3)\"\n                transform=\"translate(7.000000, 11.000000) scale(-1, 1) rotate(-270.000000) translate(-7.000000, -11.000000) \"\n                points=\"4 4.5 8 4.5 10 17.5 9 17.5\"\n              />\n              <polygon\n                fill=\"url(#gantt-linearGradient-7)\"\n                opacity=\"0.200000003\"\n                mask=\"url(#gantt-mask-3)\"\n                transform=\"translate(8.110913, 8.110913) rotate(-45.000000) translate(-8.110913, -8.110913) \"\n                points=\"6.1109127 1.6109127 10.1109127 1.6109127 9.1109127 14.6109127 7.1109127 14.6109127\"\n              />\n              <polygon\n                fill=\"url(#gantt-linearGradient-8)\"\n                opacity=\"0.200000003\"\n                mask=\"url(#gantt-mask-3)\"\n                transform=\"translate(15.889087, 8.110913) rotate(-315.000000) translate(-15.889087, -8.110913) \"\n                points=\"13.8890873 1.6109127 17.8890873 1.6109127 16.8890873 14.6109127 14.8890873 14.6109127\"\n              />\n              <ellipse\n                fill=\"url(#gantt-linearGradient-9)\"\n                opacity=\"0.5\"\n                filter=\"url(#filter-10)\"\n                mask=\"url(#gantt-mask-3)\"\n                cx=\"12\"\n                cy=\"17\"\n                rx=\"6\"\n                ry=\"2\"\n              />\n              <polygon fill=\"url(#gantt-linearGradient-11)\" mask=\"url(#gantt-mask-3)\" points=\"12 8 18 9 15 11 18 13 11 14\" />\n              <polygon fill=\"url(#gantt-linearGradient-12)\" mask=\"url(#gantt-mask-3)\" points=\"10 6 14 7 13 13 9 13\" />\n              <polygon fill=\"#FFE3A0\" mask=\"url(#gantt-mask-3)\" points=\"10 6 11 6 9 17 8 17\" />\n              <polygon fill=\"#B4832C\" mask=\"url(#gantt-mask-3)\" points=\"13 13 11 14 11.1707479 13\" />\n              <rect fill=\"#000000\" opacity=\"0.100000001\" mask=\"url(#gantt-mask-3)\" x=\"7\" y=\"17\" width=\"10\" height=\"1\" />\n            </g>\n          </g>\n        </g>\n      </g>\n    </svg>\n  </span>\n  <span title=\"{{ title }}\">{{ title }}</span>\n</div>\n","import {\r\n  Component, EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { GanttBarStatus, GanttMilestone, GanttScaleDateInfo, GanttScaleUnit } from '../gantt.model';\r\nimport { GanttService } from '../gantt.service';\r\n@Component({\r\n  selector: 'd-gantt-scale',\r\n  templateUrl: './gantt-scale.component.html',\r\n  styleUrls: ['./gantt-scale.component.scss'],\r\n})\r\nexport class GanttScaleComponent implements OnInit, OnChanges, OnDestroy {\r\n  scaleData: GanttScaleDateInfo[];\r\n  viewScaleRange = [0, 0];\r\n  viewSCaleData: GanttScaleDateInfo[] = [];\r\n  ganttBarStatusHandler: Subscription;\r\n  ganttSacleConfigHandler: Subscription;\r\n  highlight: boolean;\r\n  highlightStartText: string;\r\n  highlightEndText: string;\r\n  highlightMinWidth: number;\r\n\r\n  SCALE_START_LABLE_OFFSET = 7;\r\n\r\n  scaleWidth = {\r\n    day: 40,\r\n    week: 30,\r\n    month: 20,\r\n  };\r\n  @Input() unit = GanttScaleUnit.day;\r\n  @Input() height: number;\r\n  @Input() startDate: Date;\r\n  @Input() endDate: Date;\r\n  @Input() ganttBarContainerElement: HTMLElement;\r\n  @Input() ganttScaleContainerOffsetLeft: number;\r\n  @Input() milestoneList: GanttMilestone[];\r\n  @Input() scrollElement: HTMLElement;\r\n  @Input() showDaySplitLine = false;\r\n  @Output() addMilestoneEvent = new EventEmitter<GanttScaleDateInfo>();\r\n\r\n  private scrollHandler: Subscription;\r\n\r\n  i18nText: I18nInterface['gantt'];\r\n  i18nLocale: I18nInterface['locale'];\r\n  i18nCommonText: I18nInterface['common'];\r\n  i18nSubscription: Subscription;\r\n  constructor(private ganttService: GanttService, private i18n: I18nService) { }\r\n\r\n  ngOnInit() {\r\n    this.i18nText = this.i18n.getI18nText().gantt;\r\n    this.i18nCommonText = this.i18n.getI18nText().common;\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.gantt;\r\n      this.i18nCommonText = data.common;\r\n      this.i18nLocale = data.locale;\r\n    });\r\n    this.ganttBarStatusHandler = this.ganttService.ganttBarStatusChange.subscribe((status) => {\r\n      this.ganttBarStatusChange(status);\r\n    });\r\n\r\n    this.ganttSacleConfigHandler = this.ganttService.ganttScaleConfigChange.subscribe((config) => {\r\n      if (config.startDate) {\r\n        this.startDate = config.startDate;\r\n      }\r\n      if (config.endDate) {\r\n        this.endDate = config.endDate;\r\n      }\r\n      if (config.startDate || config.endDate) {\r\n        this.scaleData = this.generateScaleData(this.startDate, this.endDate);\r\n        this.getViewScaleData();\r\n      }\r\n      if (config.unit) {\r\n        if(this.unit === GanttScaleUnit.day && (config.unit === GanttScaleUnit.month || config.unit === GanttScaleUnit.week)) {\r\n          this.clearDaySplitLine();\r\n        }\r\n        this.unit = config.unit;\r\n        this.getViewScaleData();\r\n      }\r\n      if (config.viewChange){\r\n        this.getViewScaleData();\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (Object.prototype.hasOwnProperty.call(changes, 'scrollElement')) {\r\n      this.registerScrollEvent();\r\n    }\r\n  }\r\n\r\n  registerScrollEvent () {\r\n    if (!this.scrollHandler && this.scrollElement) {\r\n      this.scrollHandler = fromEvent(this.scrollElement, 'scroll').subscribe(e => {\r\n        this.getViewScaleData();\r\n      });\r\n    }\r\n  }\r\n\r\n  getViewScaleData() {\r\n    if (this.scrollElement) {\r\n      const containerWidth = this.scrollElement.clientWidth;\r\n      const scrollLeft = this.scrollElement.scrollLeft;\r\n      const start = Math.floor(scrollLeft / this.scaleWidth[this.unit]);\r\n      const offset = Math.ceil(containerWidth / this.scaleWidth[this.unit]);\r\n      this.viewScaleRange = [start - 2, start + offset + 2];\r\n      this.viewSCaleData = this.scaleData.filter((i: GanttScaleDateInfo) => {\r\n        return i.index >= this.viewScaleRange[0] && i.index <= this.viewScaleRange[1];\r\n      });\r\n    }\r\n  }\r\n\r\n  private generateScaleData(startDate: Date, endDate: Date): GanttScaleDateInfo[] {\r\n    if (startDate && endDate) {\r\n      const scaleData = [];\r\n      let handleDate = startDate;\r\n      let index = 0;\r\n      while (!this.ganttService.isSomeDate(handleDate, endDate)) {\r\n        const dateInfo = this.generateDateInfo(handleDate, index);\r\n        scaleData.push(dateInfo);\r\n        handleDate = this.getNextDay(new Date(handleDate));\r\n        index++;\r\n      }\r\n      return scaleData;\r\n    }\r\n  }\r\n\r\n  private getNextDay(date: Date) {\r\n    const nextDayDate = date.setDate(date.getDate() + 1);\r\n    return new Date(nextDayDate);\r\n  }\r\n\r\n  private generateDateInfo(date: Date, index): GanttScaleDateInfo {\r\n    const dateInfo: GanttScaleDateInfo = {\r\n      dayOfMonthLabel: '',\r\n      dayOfWeekLabel: '',\r\n      monthLabel: '',\r\n      yearLabel: '',\r\n      date: date,\r\n      monthStart: false,\r\n      weekend: false,\r\n      today: false,\r\n      milestone: '',\r\n      highlightStart: false,\r\n      scaleStartVisable: true,\r\n      index\r\n    };\r\n\r\n    const dayOfMonth = date.getDate();\r\n    dateInfo.dayOfMonthLabel = String(dayOfMonth);\r\n    if (dayOfMonth === 1) {\r\n      dateInfo.monthStart = true;\r\n    }\r\n\r\n    const dayOfWeek = date.getDay();\r\n    dateInfo.dayOfWeekLabel = String(dayOfWeek);\r\n    if (dayOfWeek === 6) {\r\n      dateInfo.weekend = true;\r\n    }\r\n    const month = date.getMonth() + 1;\r\n    dateInfo.monthLabel = String(month);\r\n    const year = date.getFullYear();\r\n    dateInfo.yearLabel = String(year);\r\n    if (this.ganttService.isSomeDate(date, new Date())) {\r\n      dateInfo.today = true;\r\n    }\r\n\r\n    if (new Date(year, month - 1, dayOfMonth + this.SCALE_START_LABLE_OFFSET).getMonth() > month - 1) {\r\n      dateInfo.scaleStartVisable = false;\r\n    }\r\n    if (this.milestoneList) {\r\n      this.milestoneList.forEach((milestone) => {\r\n        if (milestone.date) {\r\n          if (this.ganttService.isSomeDate(milestone.date, dateInfo.date)) {\r\n            dateInfo.milestone = milestone.lable;\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    return dateInfo;\r\n  }\r\n\r\n  trackByFn(index, item) {\r\n    return index;\r\n  }\r\n\r\n  private ganttBarStatusChange(status: GanttBarStatus) {\r\n    this.highlight = status.focused;\r\n    if (this.highlight) {\r\n      this.scaleData.forEach((dateInfo, index) => {\r\n        if (dateInfo.date >= status.startDate && dateInfo.date <= status.endDate) {\r\n          dateInfo.highlight = true;\r\n        } else {\r\n          dateInfo.highlight = false;\r\n        }\r\n        dateInfo.highlightStart = false;\r\n      });\r\n      const highlightBarStartIndex =  this.scaleData.findIndex((data) => {\r\n        return data.highlight;\r\n      });\r\n      if (highlightBarStartIndex > -1) {\r\n        this.scaleData[highlightBarStartIndex].highlightStart = true;\r\n      }\r\n\r\n      const highlightData = this.scaleData.filter((data) => {\r\n        return data.highlight;\r\n      });\r\n\r\n      if (highlightData.length === 0) {\r\n        return;\r\n      }\r\n\r\n      if (highlightData.length === 1) {\r\n        const startData = highlightData[0];\r\n        this.highlightStartText =\r\n          this.prefixZero(parseInt(startData.monthLabel, 10)) + '-' + this.prefixZero(parseInt(startData.dayOfMonthLabel, 10));\r\n        const highlightWidth = this.ganttService.getScaleUnitPixel();\r\n        if (highlightWidth < 40) {\r\n          this.highlightMinWidth = 40;\r\n        } else {\r\n          this.highlightMinWidth = highlightWidth;\r\n        }\r\n      } else {\r\n        const startData = highlightData[0];\r\n        const endData = highlightData[highlightData.length - 1];\r\n        this.highlightStartText =\r\n          this.prefixZero(parseInt(startData.monthLabel, 10)) + '-' + this.prefixZero(parseInt(startData.dayOfMonthLabel, 10));\r\n        this.highlightEndText =\r\n          this.prefixZero(parseInt(endData.monthLabel, 10)) + '-' + this.prefixZero(parseInt(endData.dayOfMonthLabel, 10));\r\n        const highlightWidth = highlightData.length * this.ganttService.getScaleUnitPixel();\r\n        if (highlightWidth < 84) {\r\n          this.highlightMinWidth = 84;\r\n        } else {\r\n          this.highlightMinWidth = highlightWidth;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  prefixZero(num: number) {\r\n    return (Array(2).join('0') + num).slice(-2);\r\n  }\r\n\r\n  addMilestone(info: GanttScaleDateInfo) {\r\n    this.addMilestoneEvent.emit(info);\r\n  }\r\n\r\n  clearDaySplitLine() {\r\n    if(this.showDaySplitLine && this.ganttBarContainerElement) {\r\n      const dayLines = this.ganttBarContainerElement.querySelectorAll('.devui-day-split-line');\r\n      dayLines.forEach(item => {\r\n        const parent = item.parentElement;\r\n        parent.removeChild(item);\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.ganttBarStatusHandler) {\r\n      this.ganttBarStatusHandler.unsubscribe();\r\n      this.ganttBarStatusHandler = null;\r\n    }\r\n    if (this.ganttSacleConfigHandler) {\r\n      this.ganttSacleConfigHandler.unsubscribe();\r\n      this.ganttSacleConfigHandler = null;\r\n    }\r\n    if (this.scrollHandler) {\r\n      this.scrollHandler.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","<div\n  class=\"devui-gantt-scale {{ unit }}\"\n  *ngFor=\"let data of viewSCaleData; trackBy: trackByFn; let first = first; let last = last\"\n  [ngClass]=\"{ today: data.today, milestone: data.milestone }\"\n  [style.left]=\"scaleWidth[unit] * data.index + 'px'\"\n  [style.width]=\"scaleWidth[unit] + 'px'\"\n  dGanttMarker\n  [monthMark]=\"data.monthStart\"\n  [weekend]=\"data.weekend\"\n  [milestone]=\"data.milestone\"\n  [today]=\"data.today\"\n  [index]=\"data.index\"\n  [showDaySplitLine]=\"showDaySplitLine\"\n  [date]=\"data.date\"\n  [unit]=\"unit\"\n  [last]=\"last\"\n  [ganttScaleContainerOffsetLeft]=\"ganttScaleContainerOffsetLeft\"\n  [ganttBarContainerElement]=\"ganttBarContainerElement\"\n>\n  <div class=\"devui-scale-start\" [ngClass]=\"{ milestone: data.milestone }\" [title]=\"data.milestone || ''\">\n    <ng-container *ngIf=\"data.milestone && unit === 'day'\">\n      {{ data.milestone }}\n    </ng-container>\n    <ng-container *ngIf=\"!data.milestone || unit !== 'day'\">\n      {{\n        data.scaleStartVisable && (first || data.monthStart)\n          ? unit === 'month'\n            ? i18nText?.yearDisplay(data.yearLabel)\n            : i18nText?.yearAndMonthDisplay(data.yearLabel, data.monthLabel)\n          : ''\n      }}\n    </ng-container>\n  </div>\n  <div class=\"devui-scale-unit\">\n    <div *ngIf=\"highlight && data.highlightStart\" class=\"scale-highlight\" [style.minWidth]=\"highlightMinWidth + 'px'\">\n      <div style=\"float: left\">{{ highlightStartText }}</div>\n      <div style=\"float: right\">{{ highlightEndText }}</div>\n      <div style=\"clear: both\"></div>\n    </div>\n    <ng-container *ngIf=\"!highlight || !data.highlight\">\n      <div *ngIf=\"unit === 'day'\" class=\"border-left\" [ngClass]=\"{ today: data.today }\">\n        {{ data.today ? i18nText?.today : data.dayOfMonthLabel }}\n      </div>\n      <div *ngIf=\"unit === 'week'\" [ngClass]=\"{ 'border-left': first || data.weekend }\">\n        {{ first || data.weekend ? data.dayOfMonthLabel : '' }}\n      </div>\n      <div *ngIf=\"unit === 'month'\" [ngClass]=\"{ 'border-left': first || data.monthStart }\">\n        {{ first || data.monthStart ? i18nText?.monthDisplay(data.monthLabel) : '' }}\n      </div>\n    </ng-container>\n  </div>\n  <div class=\"milestone-new {{ unit }}\" [title]=\"i18nText?.milestone\" (click)=\"addMilestone(data)\">\n    <div class=\"icon-add\"></div>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { Subscription } from 'rxjs';\r\nimport { UnitRole } from '../gantt.model';\r\n\r\n@Component({\r\n  selector: 'd-gantt-tools',\r\n  templateUrl: './gantt-tools.component.html',\r\n  styleUrls: ['./gantt-tools.component.scss'],\r\n})\r\nexport class GanttToolsComponent implements OnInit {\r\n  @Input('currentUnit') set currentUnit(val) {\r\n    this._currentUnit = val;\r\n    const data = this.views.filter((i) => i.value === val);\r\n  }\r\n\r\n  get currentUnit() {\r\n    return this._currentUnit;\r\n  }\r\n\r\n  get currentUnitLabel() {\r\n    return this._currentLabel || (this.views.length > 0 ? this.views[0].label : '');\r\n  }\r\n\r\n  @Input() isFullScreen = false;\r\n  @Output() goToday = new EventEmitter();\r\n  @Output() reduceUnit = new EventEmitter();\r\n  @Output() increaseUnit = new EventEmitter();\r\n  @Output() switchView = new EventEmitter();\r\n\r\n  _currentLabel: string;\r\n  _currentUnit = '';\r\n  unitRole = UnitRole;\r\n  views = [\r\n    {\r\n      label: 'Day',\r\n      value: 'day',\r\n    },\r\n    {\r\n      label: 'Week',\r\n      value: 'week',\r\n    },\r\n    {\r\n      label: 'Month',\r\n      value: 'month',\r\n    },\r\n  ];\r\n  i18nText: I18nInterface['gantt'];\r\n  i18nLocale: I18nInterface['locale'];\r\n  i18nSubscription: Subscription;\r\n\r\n  constructor(private i18n: I18nService) {}\r\n\r\n  ngOnInit() {\r\n    this.i18nText = this.i18n.getI18nText().gantt;\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.gantt;\r\n      this.i18nLocale = data.locale;\r\n      this.views = [\r\n        {\r\n          label: this.i18nText?.day,\r\n          value: 'day',\r\n        },\r\n        {\r\n          label: this.i18nText?.week,\r\n          value: 'week',\r\n        },\r\n        {\r\n          label: this.i18nText?.month,\r\n          value: 'month',\r\n        },\r\n      ];\r\n    });\r\n  }\r\n\r\n  avtionHandle(type) {\r\n    switch (type) {\r\n    case 'today':\r\n      this.goToday.emit();\r\n      break;\r\n    case 'reduce':\r\n      this.reduceUnit.emit();\r\n      break;\r\n    case 'increase':\r\n      this.increaseUnit.emit();\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  selectView(menu) {\r\n    this._currentLabel = menu.label;\r\n    this.switchView.emit(menu.value);\r\n  }\r\n}\r\n","<div class=\"tools-container\" [style.position]=\"isFullScreen ? 'fixed' : 'absolute'\">\n  <d-button bsStyle=\"text\" (click)=\"avtionHandle('today')\" class=\"tool\">{{ i18nText.today }}</d-button>\n  <div class=\"tool\">\n    <span dDropDown [trigger]=\"'click'\" appendToBody class=\"switch-view\">\n      <span dDropDownToggle class=\"devui-dropdown-origin\">{{ currentUnitLabel }} <span class=\"icon-chevron-down\"></span></span>\n      <ul dDropDownMenu class=\"devui-dropdown-menu devui-scrollbar\" role=\"menu\">\n        <li role=\"menuItem\" *ngFor=\"let menu of views\" (click)=\"selectView(menu)\">\n          <a class=\"devui-dropdown-item\">{{ menu.label }}</a>\n        </li>\n      </ul>\n    </span>\n  </div>\n  <d-button\n    bsStyle=\"text\"\n    (click)=\"avtionHandle('reduce')\"\n    class=\"tool\"\n    [ngClass]=\"{ disabled: unitRole[this.currentUnit] === unitRole.day }\"\n    [disabled]=\"unitRole[this.currentUnit] === unitRole.day\"\n  >\n    <i class=\"icon icon-minus\"></i>\n  </d-button>\n  <d-button\n    bsStyle=\"text\"\n    (click)=\"avtionHandle('increase')\"\n    class=\"tool\"\n    [ngClass]=\"{ disabled: unitRole[this.currentUnit] === unitRole.month }\"\n    [disabled]=\"unitRole[this.currentUnit] === unitRole.month\"\n  >\n    <i class=\"icon icon-add\"></i>\n  </d-button>\n  <ng-content></ng-content>\n</div>\n","import { DOCUMENT } from '@angular/common';\r\nimport { Directive, ElementRef, EventEmitter, HostListener, Inject, Input, NgZone, Output, Renderer2 } from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\n\r\n@Directive({\r\n  selector: '[dResizeHandle]',\r\n})\r\nexport class ResizeHandleDirective {\r\n  @Input() containerElement: Element;\r\n  @Input() minWidth: string;\r\n  @Input() maxWidth: string;\r\n  @Output() resizeStartEvent: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() resizingEvent: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() resizeEndEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @Output() collapseEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  element: HTMLElement;\r\n  moveCount: number;\r\n  initialWidth: number;\r\n  totalWidth: number;\r\n  mouseDownScreenX: number;\r\n  resizeHandle: HTMLElement;\r\n  resizeOverlay: HTMLElement;\r\n  resizeBarRefElement: HTMLElement;\r\n  mouseUpSubscription: Subscription;\r\n  resizeHandleEnter: any;\r\n  resizeHandleLeave: any;\r\n  resizeHandleClick: any;\r\n  preventRemoveHandle = false;\r\n  document: Document;\r\n\r\n  constructor(element: ElementRef, private renderer2: Renderer2, private zone: NgZone, @Inject(DOCUMENT) private doc: any) {\r\n    this.element = element.nativeElement;\r\n    this.document = this.doc;\r\n  }\r\n\r\n  @HostListener('mouseenter', ['$event'])\r\n  onMouseEnter(event: MouseEvent) {\r\n    if (!this.resizeHandle) {\r\n      this.resizeHandle = this.renderer2.createElement('div');\r\n      this.renderer2.appendChild(this.containerElement, this.resizeHandle);\r\n      this.renderer2.addClass(this.resizeHandle, 'resize-handle');\r\n      const left = this.element.getBoundingClientRect().right - this.containerElement.getBoundingClientRect().left;\r\n      this.renderer2.setStyle(this.resizeHandle, 'left', left + 'px');\r\n      this.resizeHandleEnter = this.renderer2.listen(this.resizeHandle, 'mouseenter', this.onHandleMouseEnter.bind(this));\r\n      this.resizeHandleLeave = this.renderer2.listen(this.resizeHandle, 'mouseleave', this.onHandleMouseLeave.bind(this));\r\n      this.resizeHandleClick = this.renderer2.listen(this.resizeHandle, 'mousedown', this.onMousedown.bind(this));\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseleave', ['$event'])\r\n  onMouseLeave(event: any) {\r\n    setTimeout(() => {\r\n      if (!this.preventRemoveHandle) {\r\n        if (this.resizeHandle) {\r\n          this.renderer2.removeChild(this.containerElement, this.resizeHandle);\r\n          this.resizeHandle = null;\r\n        }\r\n        if (this.resizeHandleClick) {\r\n          this.resizeHandleClick();\r\n        }\r\n      }\r\n    }, 100);\r\n  }\r\n\r\n  private onHandleMouseEnter() {\r\n    this.preventRemoveHandle = true;\r\n  }\r\n\r\n  private onHandleMouseLeave() {\r\n    this.preventRemoveHandle = false;\r\n    if (this.resizeHandle) {\r\n      this.renderer2.removeChild(this.containerElement, this.resizeHandle);\r\n      this.resizeHandle = null;\r\n    }\r\n    if (this.resizeHandleClick) {\r\n      this.resizeHandleClick();\r\n    }\r\n  }\r\n\r\n  onMousedown(event: MouseEvent): void {\r\n    this.moveCount = 0;\r\n\r\n    this.resizeStartEvent.emit(event); // emit begin resize event\r\n\r\n    this.initialWidth = this.element.clientWidth;\r\n    const initialOffset = this.element.getBoundingClientRect().left - this.containerElement.getBoundingClientRect().left;\r\n    this.mouseDownScreenX = event.clientX;\r\n    event.stopPropagation();\r\n\r\n    // create resizeOverlay\r\n    this.resizeOverlay = this.renderer2.createElement('div');\r\n    this.renderer2.appendChild(this.containerElement, this.resizeOverlay);\r\n    this.renderer2.addClass(this.resizeOverlay, 'resize-overlay');\r\n    this.renderer2.listen(this.resizeOverlay, 'click', (clickEvent: Event) => clickEvent.stopPropagation());\r\n\r\n    const resizeBar = this.renderer2.createElement('div');\r\n    this.renderer2.addClass(resizeBar, 'resize-bar');\r\n    this.resizeBarRefElement = resizeBar;\r\n    this.renderer2.appendChild(this.containerElement, resizeBar);\r\n    this.renderer2.setStyle(this.resizeBarRefElement, 'display', 'block');\r\n    this.renderer2.setStyle(this.resizeBarRefElement, 'left', initialOffset + this.initialWidth + 'px');\r\n\r\n    const mouseup = fromEvent(document, 'mouseup');\r\n    this.mouseUpSubscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup(ev));\r\n\r\n    this.zone.runOutsideAngular(() => {\r\n      this.document.addEventListener('mousemove', this.bindMousemove);\r\n    });\r\n  }\r\n\r\n  onMouseup(event: MouseEvent): void {\r\n    const movementX = event.clientX - this.mouseDownScreenX;\r\n    const newWidth = this.initialWidth + movementX;\r\n\r\n    const finalWidth = this.getFinalWidth(newWidth);\r\n\r\n    // destroy overlay\r\n    this.renderer2.removeChild(this.element, this.resizeOverlay);\r\n\r\n    this.renderer2.removeChild(this.containerElement, this.resizeBarRefElement);\r\n\r\n    this.resizeEndEvent.emit({ width: finalWidth });\r\n\r\n    if (this.mouseUpSubscription && !this.mouseUpSubscription.closed) {\r\n      this._destroySubscription();\r\n    }\r\n\r\n    this.document.removeEventListener('mousemove', this.bindMousemove);\r\n  }\r\n\r\n  bindMousemove = (e) => {\r\n    this.move(e);\r\n  };\r\n\r\n  move(event: MouseEvent): void {\r\n    this.moveCount++;\r\n    if (this.moveCount % 2 === 0) {\r\n      return;\r\n    }\r\n\r\n    const movementX = event.clientX - this.mouseDownScreenX;\r\n    const newWidth = this.initialWidth + movementX;\r\n\r\n    const finalWidth = this.getFinalWidth(newWidth);\r\n    this.renderer2.setStyle(\r\n      this.resizeBarRefElement,\r\n      'left',\r\n      `${finalWidth + this.element.getBoundingClientRect().left - this.containerElement.getBoundingClientRect().left}px`\r\n    );\r\n    this.resizingEvent.emit({ width: finalWidth });\r\n  }\r\n\r\n  private getFinalWidth(newWidth: number): number {\r\n    const minWidth = this.handleWidth(this.minWidth);\r\n    const maxWidth = this.handleWidth(this.maxWidth);\r\n\r\n    const overMinWidth = !this.minWidth || newWidth >= minWidth;\r\n    const underMaxWidth = !this.maxWidth || newWidth <= maxWidth;\r\n\r\n    const result = !underMaxWidth ? maxWidth : newWidth;\r\n    const finalWidth = !overMinWidth ? minWidth : result;\r\n    return finalWidth;\r\n  }\r\n\r\n  private handleWidth(width: string | number) {\r\n    if (!width) {\r\n      return;\r\n    }\r\n    if (typeof width === 'number') {\r\n      return width;\r\n    }\r\n    if (width.includes('%')) {\r\n      const tableWidth = this.containerElement.clientWidth;\r\n      return (tableWidth * parseInt(width, 10)) / 100;\r\n    }\r\n    return parseInt(width.replace(/[^\\d]+/, ''), 10);\r\n  }\r\n\r\n  private _destroySubscription() {\r\n    if (this.mouseUpSubscription) {\r\n      this.mouseUpSubscription.unsubscribe();\r\n      this.mouseUpSubscription = undefined;\r\n    }\r\n  }\r\n}\r\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from 'ng-devui/button';\nimport { DropDownModule } from 'ng-devui/dropdown';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { TooltipModule } from 'ng-devui/tooltip';\nimport { GanttBarParentComponent } from './gantt-bar-parent/gantt-bar-parent.component';\nimport { GanttBarComponent } from './gantt-bar/gantt-bar.component';\nimport { GanttMarkerDirective } from './gantt-marker.directive';\nimport { GanttMilestoneComponent } from './gantt-milestone/gantt-milestone.component';\nimport { GanttScaleComponent } from './gantt-scale/gantt-scale.component';\nimport { GanttToolsComponent } from './gantt-tools/gantt-tools.component';\nimport { GanttService } from './gantt.service';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\n@NgModule({\n  declarations: [\n    GanttScaleComponent,\n    GanttBarComponent,\n    GanttMarkerDirective,\n    GanttMilestoneComponent,\n    GanttBarParentComponent,\n    ResizeHandleDirective,\n    GanttToolsComponent\n  ],\n  imports: [\n    CommonModule,\n    OverlayModule,\n    PopoverModule,\n    TooltipModule,\n    ButtonModule,\n    DropDownModule\n  ],\n  providers: [GanttService],\n  exports: [\n    GanttScaleComponent,\n    GanttBarComponent,\n    GanttMilestoneComponent,\n    GanttBarParentComponent,\n    ResizeHandleDirective,\n    GanttToolsComponent\n  ]\n})\nexport class GanttModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.GanttService","i3","i2","i4.GanttMarkerDirective","i1"],"mappings":"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"}