{"version":3,"file":"worktile-gantt.mjs","sources":["../../../packages/gantt/src/class/date-point.ts","../../../packages/gantt/src/class/event.ts","../../../packages/gantt/src/utils/date.ts","../../../packages/gantt/src/class/view-type.ts","../../../packages/gantt/src/class/link.ts","../../../packages/gantt/src/class/item.ts","../../../packages/gantt/src/class/group.ts","../../../packages/gantt/src/gantt.config.ts","../../../packages/gantt/src/views/view.ts","../../../packages/gantt/src/views/month.ts","../../../packages/gantt/src/views/quarter.ts","../../../packages/gantt/src/views/day.ts","../../../packages/gantt/src/views/week.ts","../../../packages/gantt/src/views/year.ts","../../../packages/gantt/src/views/hour.ts","../../../packages/gantt/src/views/factory.ts","../../../packages/gantt/src/gantt.styles.ts","../../../packages/gantt/src/utils/helpers.ts","../../../packages/gantt/src/gantt-upper.ts","../../../packages/gantt/src/table/gantt-column.component.ts","../../../packages/gantt/src/table/gantt-table.component.ts","../../../packages/gantt/src/gantt-abstract.ts","../../../packages/gantt/src/utils/set-style-with-vendor-prefix.ts","../../../packages/gantt/src/components/icon/icons.ts","../../../packages/gantt/src/components/icon/icon.component.ts","../../../packages/gantt/src/gantt.pipe.ts","../../../packages/gantt/src/components/table/gantt-table.component.ts","../../../packages/gantt/src/components/table/gantt-table.component.html","../../../packages/gantt/src/utils/passive-listeners.ts","../../../packages/gantt/src/gantt-dom.service.ts","../../../packages/gantt/src/gantt-drag-container.ts","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.ts","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.html","../../../packages/gantt/src/gantt-print.service.ts","../../../packages/gantt/src/components/calendar/calendar.component.ts","../../../packages/gantt/src/components/calendar/calendar.component.html","../../../packages/gantt/src/root.component.ts","../../../packages/gantt/src/root.component.html","../../../packages/gantt/src/components/links/lines/line.ts","../../../packages/gantt/src/components/links/lines/curve.ts","../../../packages/gantt/src/components/links/lines/straight.ts","../../../packages/gantt/src/components/links/lines/factory.ts","../../../packages/gantt/src/components/links/links.component.ts","../../../packages/gantt/src/components/links/links.component.html","../../../packages/gantt/src/gantt-item-upper.ts","../../../packages/gantt/src/components/range/range.component.ts","../../../packages/gantt/src/components/range/range.component.html","../../../packages/gantt/src/components/bar/bar-drag.ts","../../../packages/gantt/src/components/bar/bar.component.ts","../../../packages/gantt/src/components/bar/bar.component.html","../../../packages/gantt/src/components/main/gantt-main.component.ts","../../../packages/gantt/src/components/main/gantt-main.component.html","../../../packages/gantt/src/gantt.component.ts","../../../packages/gantt/src/gantt.component.html","../../../packages/gantt/src/gantt.module.ts","../../../packages/gantt/src/public-api.ts","../../../packages/gantt/src/worktile-gantt.ts"],"sourcesContent":["import { GanttDate } from '../utils/date';\n\nexport class GanttDatePoint {\n    constructor(\n        public start: GanttDate,\n        public text: string,\n        public x: number,\n        public y: number,\n        public additions?: {\n            isWeekend: boolean;\n            isToday: boolean;\n        }\n    ) {}\n}\n","import { QueryList } from '@angular/core';\nimport { NgxGanttTableColumnComponent } from '../table/gantt-column.component';\nimport { GanttItem } from './item';\nimport { GanttLinkType } from './link';\n\nexport class GanttDragEvent<T = unknown> {\n    item: GanttItem<T>;\n}\n\nexport class GanttTableEvent {\n    columns: QueryList<NgxGanttTableColumnComponent>;\n}\n\nexport class GanttLinkDragEvent<T = unknown> {\n    source: GanttItem<T>;\n    target?: GanttItem<T>;\n    type?: GanttLinkType;\n}\n\nexport class GanttLoadOnScrollEvent {\n    start: number;\n    end: number;\n}\n\nexport class GanttLineClickEvent<T = unknown> {\n    event: MouseEvent;\n    source: GanttItem<T>;\n    target: GanttItem<T>;\n}\n\nexport class GanttBarClickEvent<T = unknown> {\n    event: Event;\n    item: GanttItem<T>;\n}\n\nexport class GanttSelectedEvent<T = unknown> {\n    event: Event;\n    selectedValue: GanttItem<T> | GanttItem<T>[];\n}\n","import {\n    addYears,\n    addMonths,\n    addDays,\n    addWeeks,\n    addQuarters,\n    getUnixTime,\n    startOfDay,\n    startOfWeek,\n    startOfMonth,\n    startOfQuarter,\n    startOfYear,\n    endOfDay,\n    endOfWeek,\n    endOfMonth,\n    endOfQuarter,\n    endOfYear,\n    format,\n    fromUnixTime,\n    getDaysInMonth,\n    addSeconds,\n    setDate,\n    addMinutes,\n    addHours,\n    differenceInCalendarDays,\n    isWeekend,\n    getWeek,\n    isToday,\n    differenceInDays,\n    differenceInCalendarQuarters,\n    eachMonthOfInterval,\n    eachWeekOfInterval,\n    eachDayOfInterval\n} from 'date-fns';\n\nexport {\n    addYears,\n    addMonths,\n    addDays,\n    addWeeks,\n    addQuarters,\n    getUnixTime,\n    startOfDay,\n    startOfWeek,\n    startOfMonth,\n    startOfQuarter,\n    startOfYear,\n    endOfDay,\n    endOfWeek,\n    endOfMonth,\n    endOfQuarter,\n    endOfYear,\n    format,\n    fromUnixTime,\n    getDaysInMonth,\n    addSeconds,\n    setDate,\n    addMinutes,\n    addHours,\n    differenceInCalendarDays,\n    isWeekend,\n    getWeek,\n    isToday,\n    differenceInDays,\n    differenceInCalendarQuarters,\n    eachMonthOfInterval,\n    eachWeekOfInterval,\n    eachDayOfInterval\n} from 'date-fns';\n\nexport type GanttDateUtil = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport class GanttDate {\n    value: Date;\n\n    constructor(date?: Date | string | number) {\n        if (date) {\n            if (date instanceof Date) {\n                this.value = date;\n            } else if (typeof date === 'string' || typeof date === 'number') {\n                if (date.toString().length < 13) {\n                    this.value = fromUnixTime(+date);\n                } else {\n                    this.value = new Date(date);\n                }\n            } else {\n                throw new Error(\n                    `The input date type is not supported expect Date | string\n                     | number | { date: number; with_time: 0 | 1}, actual ${JSON.stringify(date)}`\n                );\n            }\n        } else {\n            this.value = new Date();\n        }\n    }\n\n    getYear(): number {\n        return this.value.getFullYear();\n    }\n\n    getMonth(): number {\n        return this.value.getMonth();\n    }\n\n    getDay(): number {\n        return this.value.getDay();\n    }\n\n    getTime(): number {\n        return this.value.getTime();\n    }\n\n    getDate(): number {\n        return this.value.getDate();\n    }\n\n    getHours(): number {\n        return this.value.getHours();\n    }\n\n    getMinutes(): number {\n        return this.value.getMinutes();\n    }\n\n    getSeconds(): number {\n        return this.value.getSeconds();\n    }\n\n    getMilliseconds(): number {\n        return this.value.getMilliseconds();\n    }\n\n    getWeek(options: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 } = { weekStartsOn: 1 }): number {\n        return getWeek(this.value, options);\n    }\n\n    getDaysInMonth() {\n        return getDaysInMonth(this.value);\n    }\n\n    getDaysInQuarter() {\n        return differenceInCalendarDays(this.endOfQuarter().addSeconds(1).value, this.startOfQuarter().value);\n    }\n\n    getDaysInYear() {\n        return differenceInCalendarDays(this.endOfYear().addSeconds(1).value, this.startOfYear().value);\n    }\n\n    setDate(dayOfMonth: number): GanttDate {\n        return new GanttDate(setDate(this.value, dayOfMonth));\n    }\n\n    clone(): GanttDate {\n        return new GanttDate(new Date(this.value));\n    }\n\n    add(amount: number, unit?: GanttDateUtil) {\n        switch (unit) {\n            case 'second':\n                return new GanttDate(this.value).addSeconds(amount);\n            case 'minute':\n                return new GanttDate(this.value).addMinutes(amount);\n            case 'hour':\n                return new GanttDate(this.value).addHours(amount);\n            case 'day':\n                return new GanttDate(this.value).addDays(amount);\n            case 'week':\n                return new GanttDate(this.value).addWeeks(amount);\n            case 'month':\n                return new GanttDate(this.value).addMonths(amount);\n            case 'quarter':\n                return new GanttDate(this.value).addQuarters(amount);\n            case 'year':\n                return new GanttDate(this.value).addYears(amount);\n            default:\n                return new GanttDate(this.value).addSeconds(amount);\n        }\n    }\n\n    addSeconds(amount: number): GanttDate {\n        return new GanttDate(addSeconds(this.value, amount));\n    }\n\n    addMinutes(amount: number): GanttDate {\n        return new GanttDate(addMinutes(this.value, amount));\n    }\n\n    addHours(amount: number): GanttDate {\n        return new GanttDate(addHours(this.value, amount));\n    }\n\n    addDays(amount: number): GanttDate {\n        return new GanttDate(addDays(this.value, amount));\n    }\n\n    addWeeks(amount: number) {\n        return new GanttDate(addWeeks(this.value, amount));\n    }\n\n    addMonths(amount: number): GanttDate {\n        return new GanttDate(addMonths(this.value, amount));\n    }\n\n    addQuarters(amount: number): GanttDate {\n        return new GanttDate(addQuarters(this.value, amount));\n    }\n\n    addYears(amount: number): GanttDate {\n        return new GanttDate(addYears(this.value, amount));\n    }\n\n    startOfDay(): GanttDate {\n        return new GanttDate(startOfDay(this.value));\n    }\n\n    startOfWeek(options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): GanttDate {\n        return new GanttDate(startOfWeek(this.value, options));\n    }\n\n    startOfMonth(): GanttDate {\n        return new GanttDate(startOfMonth(this.value));\n    }\n\n    startOfQuarter(): GanttDate {\n        return new GanttDate(startOfQuarter(this.value));\n    }\n\n    startOfYear(): GanttDate {\n        return new GanttDate(startOfYear(this.value));\n    }\n\n    endOfDay(): GanttDate {\n        return new GanttDate(endOfDay(this.value));\n    }\n\n    endOfWeek(options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): GanttDate {\n        return new GanttDate(endOfWeek(this.value, options));\n    }\n\n    endOfMonth(): GanttDate {\n        return new GanttDate(endOfMonth(this.value));\n    }\n\n    endOfQuarter(): GanttDate {\n        return new GanttDate(endOfQuarter(this.value));\n    }\n\n    endOfYear(): GanttDate {\n        return new GanttDate(endOfYear(this.value));\n    }\n\n    getUnixTime(): number {\n        return getUnixTime(this.value);\n    }\n\n    format(\n        mat: string,\n        options?: {\n            locale?: Locale;\n            weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n            firstWeekContainsDate?: number;\n            useAdditionalWeekYearTokens?: boolean;\n            useAdditionalDayOfYearTokens?: boolean;\n        }\n    ) {\n        return format(this.value, mat, options);\n    }\n\n    isWeekend() {\n        return isWeekend(this.value);\n    }\n\n    isToday() {\n        return isToday(this.value);\n    }\n}\n","export enum GanttViewType {\n    hour = 'hour',\n    day = 'day',\n    quarter = 'quarter',\n    month = 'month',\n    year = 'year',\n    week = 'week'\n}\n","import { GanttDate } from '../utils/date';\nimport { GanttItem } from './item';\n\nexport enum GanttLinkType {\n    fs = 1,\n    ff = 2,\n    ss = 3,\n    sf = 4\n}\n\nexport enum GanttLinkLineType {\n    curve = 'curve',\n    straight = 'straight'\n}\n\nexport enum LinkColors {\n    default = '#cacaca',\n    blocked = '#FF7575',\n    active = '#348FE4'\n}\n\nexport interface GanttLink {\n    type: GanttLinkType;\n    link: string;\n    color?: { default: string; active?: string } | string;\n}\n\nexport interface GanttLinkItem {\n    id: string;\n    before: { x: number; y: number };\n    after: { x: number; y: number };\n    start: GanttDate;\n    end: GanttDate;\n    origin: GanttItem;\n    links: GanttLink[];\n}\n\nexport interface LinkInternal {\n    path: string;\n    source: GanttItem;\n    target: GanttItem;\n    type: GanttLinkType;\n    color: string;\n    defaultColor?: string;\n    activeColor?: string;\n}\n\nexport interface GanttLinkOptions {\n    dependencyTypes?: GanttLinkType[];\n    showArrow?: boolean;\n    lineType?: GanttLinkLineType;\n}\n","import { GanttDate } from '../utils/date';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from './view-type';\nimport { GanttLink, GanttLinkType } from './link';\n\ninterface GanttItemRefs {\n    width: number;\n    x: number;\n    y: number;\n}\n\nexport enum GanttItemType {\n    bar = 'bar',\n    range = 'range',\n    custom = 'custom'\n}\n\nexport interface GanttItem<T = unknown> {\n    id: string;\n    title: string;\n    start?: number;\n    end?: number;\n    group_id?: string;\n    links?: (GanttLink | string)[];\n    draggable?: boolean;\n    linkable?: boolean;\n    expandable?: boolean;\n    expanded?: boolean;\n    children?: GanttItem[];\n    color?: string;\n    barStyle?: Partial<CSSStyleDeclaration>;\n    origin?: T;\n    type?: GanttItemType;\n    progress?: number;\n}\n\nexport class GanttItemInternal {\n    id: string;\n    title: string;\n    start: GanttDate;\n    end: GanttDate;\n    links: GanttLink[];\n    color?: string;\n    barStyle?: Partial<CSSStyleDeclaration>;\n    draggable?: boolean;\n    linkable?: boolean;\n    origin: GanttItem;\n    expandable?: boolean;\n    expanded?: boolean;\n    loading: boolean;\n    children: GanttItemInternal[];\n    type?: GanttItemType;\n    progress?: number;\n    viewType?: GanttViewType;\n\n    get refs() {\n        return this.refs$.getValue();\n    }\n\n    refs$ = new BehaviorSubject<{ width: number; x: number; y: number }>(null);\n\n    constructor(item: GanttItem, options?: { viewType: GanttViewType }) {\n        this.origin = item;\n        this.id = this.origin.id;\n        this.links = (this.origin.links || []).map((link) => {\n            if (typeof link === 'string') {\n                return {\n                    type: GanttLinkType.fs,\n                    link\n                };\n            } else {\n                return link;\n            }\n        });\n        this.color = this.origin.color;\n        this.barStyle = this.origin.barStyle;\n        this.linkable = this.origin.linkable === undefined ? true : this.origin.linkable;\n        this.draggable = this.origin.draggable === undefined ? true : this.origin.draggable;\n        this.expandable = this.origin.expandable || (this.origin.children || []).length > 0;\n        this.expanded = this.origin.expanded === undefined ? false : this.origin.expanded;\n        this.start = item.start ? new GanttDate(item.start) : null;\n        this.end = item.end ? new GanttDate(item.end) : null;\n        this.viewType = options && options.viewType ? options.viewType : GanttViewType.month;\n        this.children = (item.children || []).map((subItem) => {\n            return new GanttItemInternal(subItem, { viewType: this.viewType });\n        });\n        this.type = this.origin.type || GanttItemType.bar;\n        this.progress = this.origin.progress;\n        // fill one month when start or end is null\n        this.fillItemStartOrEnd(item);\n    }\n\n    fillItemStartOrEnd(item: GanttItem) {\n        let addInterval: number;\n        switch (this.viewType) {\n            case GanttViewType.day:\n            case GanttViewType.week:\n                addInterval = 0;\n                break;\n            default:\n                addInterval = 30;\n                break;\n        }\n        if (item.start && !item.end) {\n            this.end = new GanttDate(item.start).addDays(addInterval).endOfDay();\n        }\n        if (!item.start && item.end) {\n            this.start = new GanttDate(item.end).addDays(-addInterval).startOfDay();\n        }\n    }\n\n    updateRefs(refs: GanttItemRefs) {\n        this.refs$.next(refs);\n    }\n\n    updateDate(start: GanttDate, end: GanttDate) {\n        this.start = start.startOfDay();\n        this.end = end.endOfDay();\n        this.origin.start = this.start.getUnixTime();\n        this.origin.end = this.end.getUnixTime();\n    }\n\n    addChildren(items: GanttItem[]) {\n        this.origin.children = items;\n        this.children = (items || []).map((subItem) => {\n            return new GanttItemInternal(subItem, { viewType: this.viewType });\n        });\n    }\n\n    setExpand(expanded: boolean) {\n        this.expanded = expanded;\n        this.origin.expanded = expanded;\n    }\n\n    addLink(link: GanttLink) {\n        console.log(link);\n        this.links = [...this.links, link];\n        this.origin.links = this.links;\n    }\n}\n","import { GanttItemInternal } from './item';\n\nexport interface GanttGroup<T = unknown> {\n    id: string;\n    title: string;\n    expanded?: boolean;\n    origin?: T;\n    class?: string;\n}\n\nexport class GanttGroupInternal {\n    id: string;\n    title: string;\n    origin: GanttGroup;\n    items: GanttItemInternal[];\n    mergedItems: GanttItemInternal[][];\n    expanded?: boolean;\n    refs?: {\n        height?: number;\n    } = {};\n    class?: string;\n    constructor(group: GanttGroup) {\n        this.id = group.id;\n        this.origin = group;\n        this.title = group.title;\n        this.expanded = group.expanded === undefined ? true : group.expanded;\n        this.items = [];\n        this.mergedItems = [[]];\n        this.class = group.class || '';\n    }\n\n    setExpand(expanded: boolean) {\n        this.expanded = expanded;\n        this.origin.expanded = expanded;\n    }\n}\n","import { GanttLinkType, GanttLinkOptions, GanttLinkLineType } from './class/link';\nimport { InjectionToken } from '@angular/core';\n\nexport interface GanttDateFormat {\n    hour?: string;\n    day?: string;\n    week?: string;\n    month?: string;\n    quarter?: string;\n    year?: string;\n    yearMonth?: string;\n    yearQuarter?: string;\n}\n\nexport interface GanttGlobalConfig {\n    dateFormat?: GanttDateFormat;\n    linkOptions?: GanttLinkOptions;\n}\n\nexport const defaultConfig = {\n    dateFormat: {\n        hour: 'HH',\n        day: 'dd/MM/yyyy',\n        week: '第w周',\n        month: 'M月',\n        quarter: 'QQQ',\n        year: 'yyyy年',\n        yearMonth: 'yyyy年MM月',\n        yearQuarter: 'yyyy年QQQ'\n    },\n    linkOptions: {\n        dependencyTypes: [GanttLinkType.fs],\n        showArrow: false,\n        lineType: GanttLinkLineType.curve\n    }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n","import { GanttDate, differenceInDays, GanttDateUtil } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { BehaviorSubject } from 'rxjs';\nimport { defaultConfig, GanttDateFormat } from '../gantt.config';\n\nexport const primaryDatePointTop = 18;\n\nexport const secondaryDatePointTop = 36;\n\nexport interface GanttViewDate {\n    date: GanttDate;\n    isCustom?: boolean;\n}\n\nexport interface GanttViewOptions {\n    start?: GanttDate;\n    end?: GanttDate;\n    min?: GanttDate;\n    max?: GanttDate;\n    cellWidth?: number;\n    addAmount?: number;\n    addUnit?: GanttDateUtil;\n    dateFormat?: GanttDateFormat;\n}\n\nconst viewOptions: GanttViewOptions = {\n    min: new GanttDate().addYears(-1).startOfYear(),\n    max: new GanttDate().addYears(1).endOfYear(),\n    dateFormat: defaultConfig.dateFormat\n};\n\nexport abstract class GanttView {\n    start$: BehaviorSubject<GanttDate>;\n\n    end$: BehaviorSubject<GanttDate>;\n\n    get start() {\n        return this.start$.getValue();\n    }\n\n    get end() {\n        return this.end$.getValue();\n    }\n\n    primaryDatePoints: GanttDatePoint[];\n\n    secondaryDatePoints: GanttDatePoint[];\n\n    width: number;\n\n    cellWidth: number;\n\n    primaryWidth: number;\n\n    showTimeline = true;\n\n    showWeekBackdrop: boolean;\n\n    options: GanttViewOptions;\n\n    constructor(start: GanttViewDate, end: GanttViewDate, options: GanttViewOptions) {\n        this.options = Object.assign({}, viewOptions, options);\n        const startDate = start.isCustom\n            ? this.startOf(start.date)\n            : this.startOf(start.date.value < this.options.start.value ? start.date : this.options.start);\n        const endDate = end.isCustom\n            ? this.endOf(end.date)\n            : this.endOf(end.date.value > this.options.end.value ? end.date : this.options.end);\n        this.start$ = new BehaviorSubject<GanttDate>(startDate);\n        this.end$ = new BehaviorSubject<GanttDate>(endDate);\n        this.initialize();\n    }\n\n    abstract startOf(date: GanttDate): GanttDate;\n\n    abstract endOf(date: GanttDate): GanttDate;\n\n    // 获取一级时间网格合并后的宽度\n    abstract getPrimaryWidth(): number;\n\n    // 获取当前视图下每一天占用的宽度\n    abstract getDayOccupancyWidth(date: GanttDate): number;\n\n    // 获取一级时间点（坐标，显示名称）\n    abstract getPrimaryDatePoints(): GanttDatePoint[];\n\n    // 获取二级时间点（坐标，显示名称）\n    abstract getSecondaryDatePoints(): GanttDatePoint[];\n\n    protected getDateIntervalWidth(start: GanttDate, end: GanttDate) {\n        let result = 0;\n        const days = differenceInDays(end.value, start.value);\n        for (let i = 0; i < Math.abs(days); i++) {\n            result += this.getDayOccupancyWidth(start.addDays(i));\n        }\n        result = days >= 0 ? result : -result;\n        return Number(result.toFixed(3));\n    }\n\n    protected initialize() {\n        this.primaryDatePoints = this.getPrimaryDatePoints();\n        this.secondaryDatePoints = this.getSecondaryDatePoints();\n        this.width = this.getWidth();\n        this.cellWidth = this.getCellWidth();\n        this.primaryWidth = this.getPrimaryWidth();\n    }\n\n    addStartDate() {\n        const start = this.startOf(this.start.add(this.options.addAmount * -1, this.options.addUnit));\n        if (start.value >= this.options.min.value) {\n            const origin = this.start;\n            this.start$.next(start);\n            this.initialize();\n            return { start: this.start, end: origin };\n        }\n        return null;\n    }\n\n    addEndDate() {\n        const end = this.endOf(this.end.add(this.options.addAmount, this.options.addUnit));\n        if (end.value <= this.options.max.value) {\n            const origin = this.end;\n            this.end$.next(end);\n            this.initialize();\n            return { start: origin, end: this.end };\n        }\n        return null;\n    }\n\n    updateDate(start: GanttDate, end: GanttDate) {\n        start = this.startOf(start);\n        end = this.endOf(end);\n        if (start.value < this.start.value) {\n            this.start$.next(start);\n        }\n        if (end.value > this.end.value) {\n            this.end$.next(end);\n        }\n        this.initialize();\n    }\n\n    // 获取View的宽度\n    getWidth() {\n        return this.getCellWidth() * this.secondaryDatePoints.length;\n    }\n\n    // 获取单个网格的宽度\n    getCellWidth() {\n        return this.options.cellWidth;\n    }\n\n    // 获取当前时间的X坐标\n    getTodayXPoint(): number {\n        const toady = new GanttDate().startOfDay();\n        if (toady.value > this.start.value && toady.value < this.end.value) {\n            const x = this.getXPointByDate(toady) + this.getDayOccupancyWidth(toady) / 2;\n            return x;\n        } else {\n            return null;\n        }\n    }\n\n    // 获取指定时间的X坐标\n    getXPointByDate(date: GanttDate) {\n        return this.getDateIntervalWidth(this.start, date);\n    }\n\n    // 根据X坐标获取对应时间\n    getDateByXPoint(x: number) {\n        const indexOfSecondaryDate = Math.floor(x / this.getCellWidth());\n        const matchDate = this.secondaryDatePoints[indexOfSecondaryDate];\n        const dayWidth = this.getDayOccupancyWidth(matchDate?.start);\n        if (dayWidth === this.getCellWidth()) {\n            return matchDate?.start;\n        } else {\n            const day = Math.floor((x % this.getCellWidth()) / dayWidth) + 1;\n            if (this.getCellWidth() / dayWidth === 7) {\n                return matchDate?.start.addDays(day);\n            }\n            return matchDate?.start.setDate(day);\n        }\n    }\n\n    getBarWidth(start: GanttDate, end: GanttDate) {\n        return this.getDateRangeWidthDayNormalized(start, end);\n    }\n\n    // 获取指定时间范围的宽度\n    getDateRangeWidthDayNormalized(start: GanttDate, end: GanttDate) {\n        // addSeconds(1) 是因为计算相差天会以一个整天来计算 end时间一般是59分59秒不是一个整天，所以需要加1\n        return this.getDateIntervalWidth(start.startOfDay(), end.endOfDay().addSeconds(1));\n    }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate, differenceInCalendarQuarters, eachMonthOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\n\nconst viewOptions: GanttViewOptions = {\n    start: new GanttDate().startOfQuarter().addQuarters(-1),\n    end: new GanttDate().endOfQuarter().addQuarters(2),\n    cellWidth: 280,\n    addAmount: 1,\n    addUnit: 'quarter'\n};\n\nexport class GanttViewMonth extends GanttView {\n    constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n        super(start, end, Object.assign({}, viewOptions, options));\n    }\n\n    startOf(date: GanttDate) {\n        return date.startOfQuarter();\n    }\n\n    endOf(date: GanttDate) {\n        return date.endOfQuarter();\n    }\n\n    getPrimaryWidth() {\n        return this.getCellWidth() * 3;\n    }\n\n    getDayOccupancyWidth(date: GanttDate): number {\n        return this.cellWidth / date.getDaysInMonth();\n    }\n\n    getPrimaryDatePoints(): GanttDatePoint[] {\n        const quarters = differenceInCalendarQuarters(this.end.addSeconds(1).value, this.start.value);\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < quarters; i++) {\n            const start = this.start.addQuarters(i);\n            const point = new GanttDatePoint(\n                start,\n                start.format(this.options.dateFormat.yearQuarter),\n                (this.getCellWidth() * 3) / 2 + i * (this.getCellWidth() * 3),\n                primaryDatePointTop\n            );\n            points.push(point);\n        }\n\n        return points;\n    }\n\n    getSecondaryDatePoints(): GanttDatePoint[] {\n        const months = eachMonthOfInterval({ start: this.start.value, end: this.end.value });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < months.length; i++) {\n            const start = new GanttDate(months[i]);\n            const point = new GanttDatePoint(\n                start,\n                start.format(this.options.dateFormat.month),\n                i * this.getCellWidth() + this.getCellWidth() / 2,\n                secondaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarQuarters } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n    start: new GanttDate().addYears(-1).startOfYear(),\n    end: new GanttDate().addYears(1).endOfYear(),\n    min: new GanttDate().addYears(-2).startOfYear(),\n    max: new GanttDate().addYears(2).endOfYear(),\n    cellWidth: 500,\n    addAmount: 1,\n    addUnit: 'year'\n};\n\nexport class GanttViewQuarter extends GanttView {\n    constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n        super(start, end, Object.assign({}, viewOptions, options));\n    }\n\n    startOf(date: GanttDate) {\n        return date.startOfYear();\n    }\n\n    endOf(date: GanttDate) {\n        return date.endOfYear();\n    }\n\n    getPrimaryWidth() {\n        return this.getCellWidth() * 4;\n    }\n\n    getDayOccupancyWidth(date: GanttDate): number {\n        return this.cellWidth / date.getDaysInQuarter();\n    }\n\n    getPrimaryDatePoints(): GanttDatePoint[] {\n        const years = eachYearOfInterval({ start: this.start.value, end: this.end.value });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < years.length; i++) {\n            const start = new GanttDate(years[i]);\n            const point = new GanttDatePoint(\n                start,\n                `${start.format(this.options.dateFormat.year)}`,\n                (this.getCellWidth() * 4) / 2 + i * (this.getCellWidth() * 4),\n                primaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n\n    getSecondaryDatePoints(): GanttDatePoint[] {\n        const quarters = differenceInCalendarQuarters(this.end.value, this.start.value);\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i <= quarters; i++) {\n            const start = this.start.addQuarters(i);\n            const point = new GanttDatePoint(\n                start,\n                start.format(this.options.dateFormat.quarter),\n                i * this.getCellWidth() + this.getCellWidth() / 2,\n                secondaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate, eachWeekOfInterval, eachDayOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\n\nconst viewOptions: GanttViewOptions = {\n    cellWidth: 35,\n    start: new GanttDate().startOfYear().startOfWeek({ weekStartsOn: 1 }),\n    end: new GanttDate().endOfYear().endOfWeek({ weekStartsOn: 1 }),\n    addAmount: 1,\n    addUnit: 'month'\n};\n\nexport class GanttViewDay extends GanttView {\n    override showWeekBackdrop = true;\n\n    override showTimeline = false;\n\n    constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n        super(start, end, Object.assign({}, viewOptions, options));\n    }\n\n    startOf(date: GanttDate) {\n        return date.startOfWeek({ weekStartsOn: 1 });\n    }\n\n    endOf(date: GanttDate) {\n        return date.endOfWeek({ weekStartsOn: 1 });\n    }\n\n    getPrimaryWidth() {\n        return this.getCellWidth() * 7;\n    }\n\n    getDayOccupancyWidth(): number {\n        return this.cellWidth;\n    }\n\n    getPrimaryDatePoints(): GanttDatePoint[] {\n        const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.addSeconds(1).value }, { weekStartsOn: 1 });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < weeks.length; i++) {\n            const weekStart = new GanttDate(weeks[i]);\n            const increaseWeek = weekStart.getDaysInMonth() - weekStart.getDate() >= 3 ? 0 : 1;\n            const point = new GanttDatePoint(\n                weekStart,\n                weekStart.addWeeks(increaseWeek).format(this.options.dateFormat.yearMonth),\n                (this.getCellWidth() * 7) / 2 + i * (this.getCellWidth() * 7),\n                primaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n\n    getSecondaryDatePoints(): GanttDatePoint[] {\n        const days = eachDayOfInterval({ start: this.start.value, end: this.end.value });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < days.length; i++) {\n            const start = new GanttDate(days[i]);\n            const point = new GanttDatePoint(\n                start,\n                start.getDate().toString(),\n                i * this.getCellWidth() + this.getCellWidth() / 2,\n                secondaryDatePointTop,\n                {\n                    isWeekend: start.isWeekend(),\n                    isToday: start.isToday()\n                }\n            );\n            points.push(point);\n        }\n        return points;\n    }\n}\n","import { GanttDatePoint } from '../class/date-point';\nimport { eachWeekOfInterval, GanttDate } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n    cellWidth: 280,\n    start: new GanttDate().startOfYear().startOfWeek({ weekStartsOn: 1 }),\n    end: new GanttDate().endOfYear().endOfWeek({ weekStartsOn: 1 }),\n    addAmount: 1,\n    addUnit: 'month'\n};\n\nexport class GanttViewWeek extends GanttView {\n    constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n        super(start, end, Object.assign({}, viewOptions, options));\n    }\n\n    startOf(date: GanttDate) {\n        return date.startOfWeek({ weekStartsOn: 1 });\n    }\n\n    endOf(date: GanttDate) {\n        return date.endOfWeek({ weekStartsOn: 1 });\n    }\n\n    getPrimaryWidth() {\n        return this.getCellWidth();\n    }\n\n    getDayOccupancyWidth(): number {\n        return this.cellWidth / 7;\n    }\n\n    getPrimaryDatePoints(): GanttDatePoint[] {\n        const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.addSeconds(1).value }, { weekStartsOn: 1 });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < weeks.length; i++) {\n            const weekStart = new GanttDate(weeks[i]);\n            const increaseWeek = weekStart.getDaysInMonth() - weekStart.getDate() >= 3 ? 0 : 1;\n            const point = new GanttDatePoint(\n                weekStart,\n                weekStart.addWeeks(increaseWeek).format(this.options.dateFormat.year),\n                this.getCellWidth() / 2 + i * this.getCellWidth(),\n                primaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n\n    getSecondaryDatePoints(): GanttDatePoint[] {\n        const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.value });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < weeks.length; i++) {\n            const start = new GanttDate(weeks[i]);\n            const point = new GanttDatePoint(\n                start,\n                `${start.format(this.options.dateFormat.week)}`,\n                i * this.getCellWidth() + this.getCellWidth() / 2,\n                secondaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarYears } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n    cellWidth: 480,\n    start: new GanttDate().addYears(-2).startOfYear(),\n    end: new GanttDate().addYears(2).endOfYear(),\n    addAmount: 1,\n    addUnit: 'year'\n};\n\nexport class GanttViewYear extends GanttView {\n    constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n        super(start, end, Object.assign({}, viewOptions, options));\n    }\n\n    startOf(date: GanttDate) {\n        return date.startOfYear();\n    }\n\n    endOf(date: GanttDate) {\n        return date.endOfYear();\n    }\n\n    getPrimaryWidth() {\n        return this.getCellWidth();\n    }\n\n    getDayOccupancyWidth(date: GanttDate): number {\n        return this.cellWidth / date.getDaysInYear();\n    }\n\n    getPrimaryDatePoints(): GanttDatePoint[] {\n        const years = eachYearOfInterval({ start: this.start.value, end: this.end.value });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < years.length; i++) {\n            const start = new GanttDate(years[i]);\n            const point = new GanttDatePoint(start, ``, this.getCellWidth() / 2 + i * this.getCellWidth(), primaryDatePointTop);\n            points.push(point);\n        }\n        return points;\n    }\n\n    getSecondaryDatePoints(): GanttDatePoint[] {\n        const years = differenceInCalendarYears(this.end.value, this.start.value);\n        const points: GanttDatePoint[] = [];\n        const pointTop = 27;\n        for (let i = 0; i <= years; i++) {\n            const start = this.start.addYears(i);\n            const point = new GanttDatePoint(\n                start,\n                `${start.format(this.options.dateFormat.year)}`,\n                i * this.getCellWidth() + this.getCellWidth() / 2,\n                pointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n}\n","import { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\nimport { eachDayOfInterval, GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { differenceInMinutes, eachHourOfInterval } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n    cellWidth: 35,\n    start: new GanttDate().addDays(-1).startOfDay(),\n    end: new GanttDate().addDays(1).endOfDay(),\n    addAmount: 0,\n    addUnit: 'day'\n};\n\nexport class GanttViewHour extends GanttView {\n    override showWeekBackdrop = true;\n\n    override showTimeline = false;\n\n    constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n        super(start, end, Object.assign({}, viewOptions, options));\n    }\n\n    startOf(date: GanttDate) {\n        return date.startOfDay();\n    }\n\n    endOf(date: GanttDate) {\n        return date.endOfDay();\n    }\n\n    getPrimaryWidth() {\n        return this.getCellWidth() * 24;\n    }\n\n    getItemWidth(start: GanttDate, end: GanttDate) {\n        const result = (this.getHourWidth() / 60) * Math.abs(differenceInMinutes(end.value, start.value));\n        return Number(result.toFixed(3));\n    }\n\n    override getTodayXPoint(): number {\n        const now = new GanttDate();\n        if (now.value > this.start.value && now.value < this.end.value) {\n            return this.getItemWidth(this.start, now) + this.getHourWidth() / 2;\n        } else {\n            return null;\n        }\n    }\n\n    override getXPointByDate(date: GanttDate) {\n        return this.getItemWidth(this.start, date);\n    }\n\n    override getDateByXPoint(x: number) {\n        const indexOfSecondaryDate = Math.floor(x / this.getCellWidth());\n        const matchTime = this.secondaryDatePoints[indexOfSecondaryDate];\n        return matchTime.start;\n    }\n\n    getHourWidth(): number {\n        return this.cellWidth;\n    }\n\n    override getBarWidth(start: GanttDate, end: GanttDate) {\n        return this.getItemWidth(start, end);\n    }\n\n    getDayOccupancyWidth(): number {\n        return this.getHourWidth() * 24;\n    }\n\n    getPrimaryDatePoints(): GanttDatePoint[] {\n        const days = eachDayOfInterval({\n            start: this.start.value,\n            end: this.end.value\n        });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < days.length; i++) {\n            const start = new GanttDate(days[i]);\n            const point = new GanttDatePoint(\n                start,\n                start.format(this.options.dateFormat.day),\n                (this.getCellWidth() * 24) / 2 + i * (this.getCellWidth() * 24),\n                primaryDatePointTop\n            );\n            points.push(point);\n        }\n        return points;\n    }\n\n    getSecondaryDatePoints(): GanttDatePoint[] {\n        const hours = eachHourOfInterval({ start: this.start.value, end: this.end.value });\n        const points: GanttDatePoint[] = [];\n        for (let i = 0; i < hours.length; i++) {\n            const start = new GanttDate(hours[i]);\n            const point = new GanttDatePoint(\n                start,\n                start.format(this.options.dateFormat.hour),\n                i * this.getCellWidth() + this.getCellWidth() / 2,\n                secondaryDatePointTop,\n                {\n                    isWeekend: start.isWeekend(),\n                    isToday: start.isToday()\n                }\n            );\n            points.push(point);\n        }\n        return points;\n    }\n}\n","import { GanttViewDate, GanttViewOptions } from './view';\nimport { GanttViewMonth } from './month';\nimport { GanttViewType } from '../class/view-type';\nimport { GanttViewQuarter } from './quarter';\nimport { GanttViewDay } from './day';\nimport { GanttViewWeek } from './week';\nimport { GanttViewYear } from './year';\nimport { GanttViewHour } from './hour';\n\nexport function createViewFactory(type: GanttViewType, start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n    switch (type) {\n        case GanttViewType.hour:\n            return new GanttViewHour(start, end, options);\n        case GanttViewType.month:\n            return new GanttViewMonth(start, end, options);\n        case GanttViewType.week:\n            return new GanttViewWeek(start, end, options);\n        case GanttViewType.quarter:\n            return new GanttViewQuarter(start, end, options);\n        case GanttViewType.day:\n            return new GanttViewDay(start, end, options);\n        case GanttViewType.year:\n            return new GanttViewYear(start, end, options);\n        default:\n            throw new Error('gantt view type invalid');\n    }\n}\n","export const defaultStyles = {\n    lineHeight: 44,\n    barHeight: 22\n};\n\nexport const headerHeight = 44;\n\nexport type GanttStyles = typeof defaultStyles;\n\nexport const sideWidth = 400;\n\nexport const sideMiddleWidth = 500;\n\nexport const sideMaxWidth = 600;\n\nexport const sideMinWidth = 400;\n\nexport const barBackground = '#348fe4';\n\nexport const rangeHeight = 17;\n\nexport const todayHeight = 24;\n\nexport const todayWidth = 35;\n\nexport const todayBorderRadius = 4;\n\n\n","import { GanttItem, GanttItemInternal } from '../class/item';\n\nexport interface Dictionary<T = unknown> {\n    [key: string]: T;\n}\n\nexport function isNumber(value: any) {\n    return typeof value === 'number';\n}\n\nexport function isString(value: any) {\n    return typeof value === 'string';\n}\n\nexport function isUndefined(value: any) {\n    return value === undefined;\n}\n\nexport function hexToRgb(color: string, opacity = 1) {\n    if (/^#/g.test(color)) {\n        return `rgba(${parseInt(color.slice(1, 3), 16)},${parseInt(color.slice(3, 5), 16)},${parseInt(color.slice(5, 7), 16)},${opacity})`;\n    } else {\n        return color;\n    }\n}\n\nexport function uniqBy<T = unknown>(array: T[], key: keyof T) {\n    const valuesMap: Dictionary<T> = {};\n    const result = [];\n    (array || []).forEach((value) => {\n        const _key = value[key as string];\n        if (!valuesMap[_key]) {\n            valuesMap[_key] = value;\n            result.push(value);\n        }\n    });\n    return result;\n}\n\nexport function flatten<T = unknown>(array: T[]) {\n    return array.reduce((pre, cur) => {\n        return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);\n    }, []);\n}\n\nexport function recursiveItems(items: GanttItemInternal[]) {\n    const result = [];\n    (items || []).forEach((item) => {\n        result.push(item);\n        if (item.expanded && item.children) {\n            result.push(...recursiveItems(item.children));\n        }\n    });\n    return result;\n}\n\nexport function getFlatItems(items: GanttItem[]) {\n    const result = [];\n    (items || []).forEach((item) => {\n        result.push(item);\n        if (item.children) {\n            result.push(...getFlatItems(item.children));\n        }\n    });\n    return result;\n}\n","import {\n    Input,\n    TemplateRef,\n    Output,\n    EventEmitter,\n    ContentChild,\n    ElementRef,\n    HostBinding,\n    ChangeDetectorRef,\n    NgZone,\n    SimpleChanges,\n    InjectionToken,\n    Directive,\n    Inject,\n    OnInit,\n    OnDestroy,\n    OnChanges\n} from '@angular/core';\nimport { from, Subject } from 'rxjs';\nimport { takeUntil, take, skip } from 'rxjs/operators';\nimport {\n    GanttItem,\n    GanttGroup,\n    GanttViewType,\n    GanttLoadOnScrollEvent,\n    GanttDragEvent,\n    GanttGroupInternal,\n    GanttItemInternal,\n    GanttBarClickEvent,\n    GanttLinkDragEvent\n} from './class';\nimport { GanttView, GanttViewOptions } from './views/view';\nimport { createViewFactory } from './views/factory';\nimport { GanttDate } from './utils/date';\nimport { GanttStyles, defaultStyles } from './gantt.styles';\nimport { uniqBy, flatten, recursiveItems, getFlatItems } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Directive()\nexport abstract class GanttUpper implements OnChanges, OnInit, OnDestroy {\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('items') originItems: GanttItem[] = [];\n\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('groups') originGroups: GanttGroup[] = [];\n\n    @Input() viewType: GanttViewType = GanttViewType.month;\n\n    @Input() start: number;\n\n    @Input() end: number;\n\n    @Input() showTodayLine = true;\n\n    @Input() draggable: boolean;\n\n    @Input() styles: GanttStyles;\n\n    @Input() viewOptions: GanttViewOptions = {};\n\n    @Input() set linkOptions(options: GanttLinkOptions) {\n        this._linkOptions = options;\n    }\n\n    get linkOptions() {\n        return Object.assign({}, defaultConfig.linkOptions, this.config.linkOptions, this._linkOptions);\n    }\n\n    @Input() disabledLoadOnScroll: boolean;\n\n    @Input()\n    set selectable(value: BooleanInput) {\n        this._selectable = coerceBooleanProperty(value);\n        if (this._selectable) {\n            this.selectionModel = this.initSelectionModel();\n        } else {\n            this.selectionModel?.clear();\n        }\n    }\n\n    get selectable(): boolean {\n        return this._selectable;\n    }\n\n    @Input()\n    set multiple(value: BooleanInput) {\n        this._multiple = coerceBooleanProperty(value);\n        if (this.selectable) {\n            this.selectionModel = this.initSelectionModel();\n        }\n    }\n\n    get multiple(): boolean {\n        return this._multiple;\n    }\n\n    @Output() loadOnScroll = new EventEmitter<GanttLoadOnScrollEvent>();\n\n    @Output() dragStarted = new EventEmitter<GanttDragEvent>();\n\n    @Output() dragMoved = new EventEmitter<GanttDragEvent>();\n\n    @Output() dragEnded = new EventEmitter<GanttDragEvent>();\n\n    @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n    @ContentChild('bar', { static: true }) barTemplate: TemplateRef<any>;\n\n    @ContentChild('range', { static: true }) rangeTemplate: TemplateRef<any>;\n\n    @ContentChild('item', { static: true }) itemTemplate: TemplateRef<any>;\n\n    @ContentChild('group', { static: true }) groupTemplate: TemplateRef<any>;\n\n    @ContentChild('groupHeader', { static: true }) groupHeaderTemplate: TemplateRef<any>;\n\n    public linkable: boolean;\n\n    public linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n    public view: GanttView;\n\n    public items: GanttItemInternal[] = [];\n\n    public groups: GanttGroupInternal[] = [];\n\n    public viewChange = new EventEmitter<GanttView>();\n\n    public expandChange = new EventEmitter<void>();\n\n    public get element() {\n        return this.elementRef.nativeElement;\n    }\n\n    public firstChange = true;\n\n    public dragContainer: GanttDragContainer;\n\n    public unsubscribe$ = new Subject<void>();\n\n    public selectionModel: SelectionModel<string>;\n\n    private groupsMap: { [key: string]: GanttGroupInternal };\n\n    private _selectable = false;\n\n    private _multiple = false;\n\n    private _linkOptions: GanttLinkOptions;\n\n    @HostBinding('class.gantt') ganttClass = true;\n\n    constructor(\n        protected elementRef: ElementRef<HTMLElement>,\n        protected cdr: ChangeDetectorRef,\n        protected ngZone: NgZone,\n        @Inject(GANTT_GLOBAL_CONFIG) public config: GanttGlobalConfig\n    ) {}\n\n    private createView() {\n        const viewDate = this.getViewDate();\n        this.view = createViewFactory(this.viewType, viewDate.start, viewDate.end, this.viewOptions);\n    }\n\n    private setupGroups() {\n        const collapsedIds = this.groups.filter((group) => group.expanded === false).map((group) => group.id);\n        this.groupsMap = {};\n        this.groups = [];\n        this.originGroups.forEach((origin) => {\n            const group = new GanttGroupInternal(origin);\n            group.expanded = !collapsedIds.includes(group.id);\n            this.groupsMap[group.id] = group;\n            this.groups.push(group);\n        });\n    }\n\n    private setupItems() {\n        this.originItems = uniqBy(this.originItems, 'id');\n        this.items = [];\n        if (this.groups.length > 0) {\n            this.originItems.forEach((origin) => {\n                const group = this.groupsMap[origin.group_id];\n                if (group) {\n                    const item = new GanttItemInternal(origin, { viewType: this.viewType });\n                    group.items.push(item);\n                }\n            });\n        } else {\n            this.originItems.forEach((origin) => {\n                const item = new GanttItemInternal(origin, { viewType: this.viewType });\n                this.items.push(item);\n            });\n        }\n    }\n\n    private setupExpandedState() {\n        this.originItems = uniqBy(this.originItems, 'id');\n        let items: GanttItemInternal[] = [];\n        const flatOriginItems = getFlatItems(this.originItems);\n\n        if (this.items.length > 0) {\n            items = recursiveItems(this.items);\n        } else {\n            items = flatten(this.groups.map((group) => recursiveItems(group.items)));\n        }\n        items.forEach((item) => {\n            if (item.origin.expanded) {\n                const newItem = flatOriginItems.find((originItem) => originItem.id === item.id);\n                if (newItem) {\n                    if (newItem.expanded === undefined) {\n                        newItem.expanded = true;\n                    }\n                }\n            }\n        });\n    }\n\n    private getViewDate() {\n        let start = this.start;\n        let end = this.end;\n        if (!this.start || !this.end) {\n            this.originItems.forEach((item) => {\n                if (item.start && !this.start) {\n                    start = start ? Math.min(start, item.start) : item.start;\n                }\n                if (item.end && !this.end) {\n                    end = end ? Math.max(end, item.end) : item.end;\n                }\n            });\n        }\n        return {\n            start: {\n                date: new GanttDate(start),\n                isCustom: this.start ? true : false\n            },\n            end: {\n                date: new GanttDate(end),\n                isCustom: this.end ? true : false\n            }\n        };\n    }\n\n    computeRefs() {\n        this.groups.forEach((group) => {\n            const groupItems = recursiveItems(group.items);\n            this.computeItemsRefs(...groupItems);\n        });\n        const items = recursiveItems(this.items);\n        this.computeItemsRefs(...items);\n    }\n\n    private expandGroups(expanded: boolean) {\n        this.groups.forEach((group) => {\n            group.setExpand(expanded);\n        });\n        this.expandChange.next();\n        this.cdr.detectChanges();\n    }\n\n    private initSelectionModel() {\n        return new SelectionModel(this.multiple, []);\n    }\n\n    ngOnInit() {\n        this.styles = Object.assign({}, defaultStyles, this.styles);\n        this.viewOptions.dateFormat = Object.assign({}, defaultConfig.dateFormat, this.config.dateFormat, this.viewOptions.dateFormat);\n        this.createView();\n        this.setupGroups();\n        this.setupItems();\n        this.computeRefs();\n        this.initSelectionModel();\n        this.firstChange = false;\n\n        // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means\n        // the `onStable` will never emit any value.\n        const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n        // Normally this isn't in the zone, but it can cause performance regressions for apps\n        // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n        this.ngZone.runOutsideAngular(() => {\n            onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n                this.element.style.opacity = '1';\n\n                this.dragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {\n                    this.dragStarted.emit(event);\n                });\n\n                this.dragContainer.dragMoved.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {\n                    this.dragMoved.emit(event);\n                });\n\n                this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {\n                    this.dragEnded.emit(event);\n                    this.computeRefs();\n                    this.detectChanges();\n                });\n            });\n        });\n\n        this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {\n            this.computeRefs();\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!this.firstChange) {\n            if (changes.viewType && changes.viewType.currentValue) {\n                this.createView();\n                this.setupGroups();\n                this.setupItems();\n                this.computeRefs();\n                this.viewChange.emit(this.view);\n            }\n            if (changes.originItems || changes.originGroups) {\n                this.setupExpandedState();\n                this.setupGroups();\n                this.setupItems();\n                this.computeRefs();\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n\n    computeItemsRefs(...items: GanttItemInternal[]) {\n        items.forEach((item) => {\n            item.updateRefs({\n                width: item.start && item.end ? this.view.getBarWidth(item.start, item.end) : 0,\n                x: item.start ? this.view.getXPointByDate(item.start) : 0,\n                y: (this.styles.lineHeight - this.styles.barHeight) / 2 - 1\n            });\n        });\n    }\n\n    trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n        return item.id || index;\n    }\n\n    detectChanges() {\n        this.cdr.detectChanges();\n    }\n\n    expandGroup(group: GanttGroupInternal) {\n        group.setExpand(!group.expanded);\n        this.expandChange.emit();\n        this.cdr.detectChanges();\n    }\n\n    // public functions\n\n    expandAll() {\n        this.expandGroups(true);\n    }\n\n    collapseAll() {\n        this.expandGroups(false);\n    }\n\n    getGanttItem(id: string) {\n        return this.getGanttItems([id])[0] || null;\n    }\n\n    getGanttItems(ids: string[]) {\n        let items: GanttItemInternal[] = [];\n        if (this.items.length > 0) {\n            items = recursiveItems(this.items);\n        } else {\n            items = flatten(this.groups.map((group) => recursiveItems(group.items)));\n        }\n        return items.filter((item) => ids.includes(item.id));\n    }\n\n    isSelected(id: string) {\n        if (!this.selectable) {\n            return false;\n        }\n        if (!this.selectionModel.hasValue()) {\n            return false;\n        }\n        return this.selectionModel.isSelected(id);\n    }\n}\n\nexport const GANTT_UPPER_TOKEN = new InjectionToken<GanttUpper>('GANTT_UPPER_TOKEN');\n","import { Component, ContentChild, TemplateRef, Input, Inject } from '@angular/core';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../gantt-upper';\n@Component({\n    selector: 'ngx-gantt-column',\n    template: ''\n})\nexport class NgxGanttTableColumnComponent {\n    public columnWidth: string;\n\n    @Input()\n    set width(width: number | string) {\n        this.columnWidth = coerceCssPixelValue(width);\n    }\n\n    @Input() name: string;\n\n    @ContentChild('cell', { static: true }) templateRef: TemplateRef<any>;\n\n    @ContentChild('header', { static: true }) headerTemplateRef: TemplateRef<any>;\n\n    constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n}\n","import { Component, ContentChild, EventEmitter, Output, TemplateRef } from '@angular/core';\nimport { GanttTableEvent } from '../class';\n\n@Component({\n    selector: 'ngx-gantt-table',\n    template: ''\n})\nexport class NgxGanttTableComponent {\n    @Output() columnChanges = new EventEmitter<GanttTableEvent>();\n\n    @ContentChild('rowBeforeSlot', { static: true }) rowBeforeTemplate: TemplateRef<any>;\n\n    @ContentChild('rowAfterSlot', { static: true }) rowAfterTemplate: TemplateRef<any>;\n}\n","import { InjectionToken } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal } from './class';\nimport { GanttStyles } from './gantt.styles';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\n\nexport interface GanttAbstractComponent {\n    table: NgxGanttTableComponent;\n    styles: GanttStyles;\n    maxLevel: number;\n    expandGroup(group: GanttGroupInternal): void;\n    expandChildren(item: GanttItemInternal): void;\n}\n\nexport const GANTT_ABSTRACT_TOKEN = new InjectionToken<GanttAbstractComponent>('gantt-abstract-token');\n","interface SetStyleWithVendorPrefixOptions {\n    element: HTMLElement;\n    // The name of the CSS property, e.g. `transform`.\n    style: string;\n    value: string;\n}\n\nconst supports = (typeof window !== 'undefined' && !!window.CSS && CSS.supports) || (() => false);\n\n/**\n * Note: we don't need to add vendor prefixes within `.scss` files since they're added automatically.\n * This function is necessary when the `element.style` is updated directly through the JavaScript.\n * This is not required to be used with CSS properties that don't require vendor prefixes (e.g. `opacity`).\n */\nexport function setStyleWithVendorPrefix({ element, style, value }: SetStyleWithVendorPrefixOptions): void {\n    element.style[style] = value;\n\n    if (supports(`-webkit-${style}: ${value}`)) {\n        // Note: some browsers still require setting `-webkit` vendor prefix. E.g. Mozilla 49 has implemented\n        // the 3D support for `transform`, but it requires setting `-webkit-` prefix.\n        element.style[`-webkit-${style}`] = value;\n    }\n}\n","const angleRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" fit=\"\"  preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"amnavigation/angle-right\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.978 11.498l-.005.005L2.3 5.831 3.13 5l4.848 4.848L12.826 5l.83.831-5.673 5.672-.005-.005z\"   transform=\"rotate(-90 7.978 8.252)\"></path></g></svg>`;\nconst angleDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" fit=\"\"  preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"aknavigation/angle-down\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.978 11.997l-.005.006L2.3 6.33l.83-.831 4.848 4.848L12.826 5.5l.83.83-5.673 5.673-.005-.006z\" ></path></g></svg>`;\nconst plusSquare = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\"   preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"kxaction/plus-square\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm5.45 6.2V4.75h1.2V7.4h2.65v1.2H8.65v2.65h-1.2V8.6H4.8V7.4h2.65z\"></path></g></svg>`;\nconst minusSquare = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"jnaction/minus-square\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm2.8 6.2h6.5v1.2H4.8V7.4z\"></path></g></svg>`;\nconst loadingIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"  viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50\" xml:space=\"preserve\">\n<path fill=\"#aaa\" d=\"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\" transform=\"rotate(275.098 25 25)\">\n    <animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.6s\" repeatCount=\"indefinite\"></animateTransform>\n</path>\n</svg>`;\nconst emptyIcon = `<svg\nwidth=\"148px\"\nheight=\"134px\"\nviewBox=\"0 0 148 134\"\nversion=\"1.1\"\nxmlns=\"http://www.w3.org/2000/svg\"\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n<defs>\n  <filter x=\"0.0%\" y=\"0.0%\" width=\"100.0%\" height=\"100.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-1\">\n    <feGaussianBlur stdDeviation=\"0\" in=\"SourceGraphic\"></feGaussianBlur>\n  </filter>\n</defs>\n<g id=\"148x134\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n  <g id=\"编组-6\" transform=\"translate(1.000000, 1.000000)\">\n    <ellipse\n      id=\"椭圆形\"\n      fill=\"#EDEEF2\"\n      opacity=\"0.3\"\n      filter=\"url(#filter-1)\"\n      cx=\"73.0800017\"\n      cy=\"115.920003\"\n      rx=\"73.0800017\"\n      ry=\"16.8000004\"\n    ></ellipse>\n    <g id=\"编组-5\" transform=\"translate(15.120000, 0.000000)\">\n      <polygon\n        id=\"矩形\"\n        fill=\"#E2E4E9\"\n        points=\"19.2789848 49.5600011 99.1200023 48.7200011 117.600003 75.9297673 117.600003 92.313049 0 92.313049 0 75.0356267\"\n      ></polygon>\n      <path\n        d=\"M23.5200005,0 L94.0800002,0 C97.7913538,2.06413823e-16 100.8,3.00864655 100.8,6.72000015 L100.8,99.1200023 L100.8,99.1200023 L16.8000004,99.1200023 L16.8000004,6.72000015 C16.8000004,3.00864655 19.8086469,1.56994302e-15 23.5200005,0 Z\"\n        id=\"矩形\"\n        fill=\"#F9FAFB\"\n      ></path>\n      <path\n        d=\"M30.9200007,12.4400003 L86.6800019,12.4400003 C88.5356787,12.4400003 90.040002,13.9443236 90.040002,15.8000004 L90.040002,42.000001 C90.040002,43.8556778 88.5356787,45.360001 86.6800019,45.360001 L30.9200007,45.360001 C29.0643239,45.360001 27.5600006,43.8556778 27.5600006,42.000001 L27.5600006,15.8000004 C27.5600006,13.9443236 29.0643239,12.4400003 30.9200007,12.4400003 Z\"\n        id=\"矩形\"\n        fill=\"#E8EAEE\"\n      ></path>\n      <text\n        id=\"&lt;/null&gt;\"\n        font-family=\"PingFangSC-Medium, PingFang SC\"\n        font-size=\"15.1200003\"\n        font-weight=\"400\"\n        fill=\"#BCBECD\"\n      >\n        <tspan x=\"33.6000008\" y=\"32.8000004\">&lt;/null&gt;</tspan>\n      </text>\n      <rect id=\"矩形\" fill=\"#E8EAEE\" x=\"27.5600006\" y=\"52.0800012\" width=\"61.4800014\" height=\"5.04000011\" rx=\"2.52000006\"></rect>\n      <rect\n        id=\"矩形备份\"\n        fill=\"#E8EAEE\"\n        x=\"27.5600006\"\n        y=\"63.8400014\"\n        width=\"61.4800014\"\n        height=\"5.04000011\"\n        rx=\"2.52000006\"\n      ></rect>\n      <path\n        d=\"M0,75.6000017 L29.280235,75.6000017 C32.0637502,75.6000017 34.3202352,77.8564866 34.3202352,80.6400018 L34.3202352,86.2591426 C34.3202352,89.0426578 36.5767201,91.2991427 39.3602353,91.2991427 L78.4136737,91.2991427 C81.1971889,91.2991427 83.4536738,89.0426578 83.4536738,86.2591426 L83.4536738,80.6400018 C83.4536738,77.8564866 85.7101587,75.6000017 88.4936739,75.6000017 L117.600003,75.6000017 L117.600003,75.6000017 L117.600003,110.880003 C117.600003,115.519195 113.839194,119.280003 109.200002,119.280003 L8.40000019,119.280003 C3.76080819,119.280003 -6.53729019e-15,115.519195 0,110.880003 L0,75.6000017 L0,75.6000017 Z\"\n        id=\"矩形\"\n        fill=\"#EDEFF2\"\n      ></path>\n    </g>\n  </g>\n</g>\n</svg>`;\nexport const icons = {\n    'angle-right': angleRight,\n    'angle-down': angleDown,\n    'plus-square': plusSquare,\n    'minus-square': minusSquare,\n    loading: loadingIcon,\n    empty: emptyIcon\n};\n","import { Component, Input, ElementRef, HostBinding } from '@angular/core';\nimport { icons } from './icons';\n\n@Component({\n    selector: 'gantt-icon',\n    template: ''\n})\nexport class GanttIconComponent {\n    @HostBinding('class.gantt-icon') isIcon = true;\n\n    @Input() set iconName(name: string) {\n        this.setSvg(name);\n    }\n\n    constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n    setSvg(name: string) {\n        const iconSvg = icons[name];\n        if (iconSvg) {\n            this.elementRef.nativeElement.innerHTML = iconSvg;\n        } else {\n            this.elementRef.nativeElement.innerHTML = '';\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GanttItemType } from './class';\n\n@Pipe({\n    name: 'isGanttRangeItem'\n})\nexport class IsGanttRangeItemPipe implements PipeTransform {\n    transform(value: GanttItemType) {\n        return value === GanttItemType.range;\n    }\n}\n\n\n@Pipe({\n    name: 'isGanttBarItem'\n})\nexport class IsGanttBarItemPipe implements PipeTransform {\n    transform(value: GanttItemType) {\n        return value === GanttItemType.bar;\n    }\n}\n\n\n@Pipe({\n    name: 'isGanttCustomItem'\n})\nexport class IsGanttCustomItemPipe implements PipeTransform {\n    transform(value: GanttItemType) {\n        return value === GanttItemType.custom;\n    }\n}\n","import {\n    Component,\n    HostBinding,\n    TemplateRef,\n    QueryList,\n    Input,\n    ViewChild,\n    ElementRef,\n    OnChanges,\n    SimpleChanges,\n    Inject,\n    Output,\n    EventEmitter\n} from '@angular/core';\nimport { GanttItemInternal, GanttGroupInternal, GanttSelectedEvent } from '../../class';\nimport { NgxGanttTableColumnComponent } from '../../table/gantt-column.component';\n// import { defaultColumnWidth, minColumnWidth } from '../../gantt.component';\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../gantt-abstract';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { setStyleWithVendorPrefix } from '../../utils/set-style-with-vendor-prefix';\n\nexport const defaultColumnWidth = 100;\nexport const minColumnWidth = 80;\n\ninterface DragFixedConfig {\n    target: HTMLElement;\n    originWidth: number;\n    movedWidth: number;\n    minWidth: number;\n}\n@Component({\n    selector: 'gantt-table',\n    templateUrl: './gantt-table.component.html'\n})\nexport class GanttTableComponent implements OnChanges {\n    public columnList: QueryList<NgxGanttTableColumnComponent>;\n\n    public dragStartLeft: number;\n\n    @Input() groups: GanttGroupInternal[];\n\n    @Input() items: GanttItemInternal[];\n\n    @Input()\n    set columns(columns: QueryList<NgxGanttTableColumnComponent>) {\n        columns.forEach((column) => {\n            if (!column.columnWidth) {\n                column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n            }\n        });\n        this.columnList = columns;\n    }\n\n    @Input() groupTemplate: TemplateRef<any>;\n\n    @Input() emptyTemplate: TemplateRef<any>;\n\n    @Input() rowBeforeTemplate: TemplateRef<any>;\n\n    @Input() rowAfterTemplate: TemplateRef<any>;\n\n    @Output() itemClick = new EventEmitter<GanttSelectedEvent>();\n\n    @ViewChild('dragLine', { static: true }) draglineElementRef: ElementRef<HTMLElement>;\n\n    @HostBinding('class.gantt-table') ganttTableClass = true;\n\n    @HostBinding('class.gantt-table-empty') ganttTableEmptyClass = false;\n\n    constructor(\n        @Inject(GANTT_ABSTRACT_TOKEN) public gantt: GanttAbstractComponent,\n        @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n        private elementRef: ElementRef\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!changes.groups.currentValue?.length && !changes.items.currentValue?.length) {\n            this.ganttTableEmptyClass = true;\n        } else {\n            this.ganttTableEmptyClass = false;\n        }\n    }\n\n    private dragFixed(config: DragFixedConfig) {\n        if (config.movedWidth < config.minWidth) {\n            setStyleWithVendorPrefix({\n                element: config.target,\n                style: 'transform',\n                value: `translate3d(${config.minWidth - config.originWidth}px, 0, 0)`\n            });\n        }\n    }\n\n    expandGroup(group: GanttGroupInternal) {\n        this.gantt.expandGroup(group);\n    }\n\n    expandChildren(event: MouseEvent, item: GanttItemInternal) {\n        event.stopPropagation();\n        this.gantt.expandChildren(item);\n    }\n\n    dragStarted(event: CdkDragStart) {\n        const target = event.source.element.nativeElement;\n        this.dragStartLeft = target.getBoundingClientRect().left;\n    }\n\n    dragMoved(event: CdkDragMove, column?: NgxGanttTableColumnComponent) {\n        const target = event.source.element.nativeElement;\n        const left = target.getBoundingClientRect().left;\n\n        let originWidth: number;\n        let movedWidth: number;\n        let minWidth: number;\n        if (column) {\n            originWidth = parseInt(column.columnWidth, 10);\n            movedWidth = originWidth + (left - this.dragStartLeft);\n            minWidth = minColumnWidth;\n        } else {\n            originWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n            movedWidth = originWidth + (left - this.dragStartLeft);\n            minWidth = minColumnWidth * this.columnList.length;\n        }\n\n        this.dragFixed({\n            target,\n            originWidth,\n            movedWidth,\n            minWidth\n        });\n\n        this.showAuxiliaryLine(event);\n    }\n\n    columnDragEnded(event: CdkDragEnd, column: NgxGanttTableColumnComponent) {\n        const target = event.source.element.nativeElement;\n        const left = target.getBoundingClientRect().left;\n        const width = parseInt(column.columnWidth, 10) + (left - this.dragStartLeft);\n        const columnWidth = Math.max(width || 0, minColumnWidth);\n        column.columnWidth = coerceCssPixelValue(columnWidth);\n        if (this.gantt.table) {\n            this.gantt.table.columnChanges.emit({ columns: this.columnList });\n        }\n\n        this.hideAuxiliaryLine();\n        event.source.reset();\n    }\n\n    tableDragEnded(event: CdkDragEnd) {\n        const target = event.source.element.nativeElement;\n        const left = target.getBoundingClientRect().left;\n        const tableWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n        const dragWidth = left - this.dragStartLeft;\n        this.columnList.forEach((column) => {\n            const lastColumnWidth = parseInt(column.columnWidth, 10);\n            const distributeWidth = parseInt(String(dragWidth * (lastColumnWidth / tableWidth)), 10);\n            const columnWidth = Math.max(lastColumnWidth + distributeWidth || 0, minColumnWidth);\n            column.columnWidth = coerceCssPixelValue(columnWidth);\n        });\n\n        if (this.gantt.table) {\n            this.gantt.table.columnChanges.emit({ columns: this.columnList });\n        }\n\n        this.hideAuxiliaryLine();\n        event.source.reset();\n    }\n\n    private showAuxiliaryLine(event: CdkDragMove) {\n        const tableRect = this.elementRef.nativeElement.getBoundingClientRect();\n        const targetRect = event.source.element.nativeElement.getBoundingClientRect();\n        const distance = { x: targetRect.left - tableRect.left, y: targetRect.top - tableRect.top };\n        this.draglineElementRef.nativeElement.style.left = `${distance.x}px`;\n        this.draglineElementRef.nativeElement.style.display = 'block';\n    }\n\n    private hideAuxiliaryLine() {\n        this.draglineElementRef.nativeElement.style.display = 'none';\n    }\n\n    trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n        return item.id || index;\n    }\n}\n","<div class=\"gantt-table-header gantt-table-row\">\n  <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n    <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n    <ng-template #default>\n      {{ column.name }}\n    </ng-template>\n    <div\n      class=\"gantt-table-drag-trigger\"\n      cdkDrag\n      cdkDragLockAxis=\"x\"\n      cdkDragBoundary=\".gantt\"\n      (cdkDragMoved)=\"dragMoved($event, column)\"\n      (cdkDragStarted)=\"dragStarted($event)\"\n      (cdkDragEnded)=\"columnDragEnded($event, column)\"\n    ></div>\n  </div>\n</div>\n<div class=\"gantt-table-body\">\n  <ng-container *ngIf=\"!groups.length && !items.length\">\n    <ng-container *ngIf=\"!emptyTemplate\">\n      <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n      <div class=\"empty-text\">没有数据</div>\n    </ng-container>\n    <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n  </ng-container>\n\n  <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n    <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n      <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n        <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n          <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n          <ng-container *ngIf=\"groupTemplate; else default\">\n            <ng-template\n              [ngTemplateOutlet]=\"groupTemplate\"\n              [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n            ></ng-template>\n          </ng-container>\n          <ng-template #default>\n            <span class=\"group-title\">{{ group.title }}</span>\n          </ng-template>\n        </div>\n      </div>\n\n      <ng-container *ngIf=\"group.expanded\">\n        <ng-template\n          [ngTemplateOutlet]=\"ganttItems\"\n          [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n        ></ng-template>\n      </ng-container>\n    </ng-container>\n  </ng-container>\n</div>\n\n<div\n  class=\"gantt-table-drag-trigger\"\n  cdkDrag\n  cdkDragLockAxis=\"x\"\n  cdkDragBoundary=\".gantt\"\n  (cdkDragMoved)=\"dragMoved($event)\"\n  (cdkDragStarted)=\"dragStarted($event)\"\n  (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n  <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n  <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n    <div\n      (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n      class=\"gantt-table-item gantt-table-row\"\n      [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n      [class.gantt-table-item-with-group]=\"group\"\n      [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n      [style.height.px]=\"gantt.styles.lineHeight\"\n      [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n    >\n      <ng-template\n        [ngTemplateOutlet]=\"rowBeforeTemplate\"\n        [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n      ></ng-template>\n      <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n        <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n          <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n            <gantt-icon\n              *ngIf=\"!item.loading\"\n              class=\"expand-icon\"\n              [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n              (click)=\"expandChildren($event, item)\"\n            ></gantt-icon>\n            <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n          </ng-container>\n        </div>\n        <div class=\"gantt-table-column-content\">\n          <ng-template\n            [ngTemplateOutlet]=\"column.templateRef\"\n            [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n          ></ng-template>\n        </div>\n      </div>\n      <ng-template\n        [ngTemplateOutlet]=\"rowAfterTemplate\"\n        [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n      ></ng-template>\n    </div>\n    <ng-template\n      *ngIf=\"item.children && item.expanded\"\n      [ngTemplateOutlet]=\"ganttItems\"\n      [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n    ></ng-template>\n  </ng-container>\n</ng-template>\n","/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nexport function supportsPassiveEventListeners(): boolean {\n    if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n        try {\n            window.addEventListener(\n                'test',\n                null!,\n                Object.defineProperty({}, 'passive', {\n                    get: () => (supportsPassiveEvents = true)\n                })\n            );\n        } finally {\n            supportsPassiveEvents = supportsPassiveEvents || false;\n        }\n    }\n\n    return supportsPassiveEvents;\n}\n\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions): AddEventListenerOptions | boolean {\n    return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/** Options used to bind passive event listeners. */\nexport const passiveListenerOptions = <AddEventListenerOptions>normalizePassiveListenerOptions({ passive: true });\n","import { isPlatformServer } from '@angular/common';\nimport { Injectable, ElementRef, OnDestroy, Inject, PLATFORM_ID, NgZone } from '@angular/core';\nimport { fromEvent, Subject, merge, EMPTY, Observable } from 'rxjs';\nimport { pairwise, map, auditTime, takeUntil } from 'rxjs/operators';\nimport { isNumber } from './utils/helpers';\nimport { passiveListenerOptions } from './utils/passive-listeners';\n\nconst scrollThreshold = 50;\n\nexport enum ScrollDirection {\n    NONE,\n    LEFT,\n    RIGHT\n}\n\nexport interface ScrollEvent {\n    target: Element;\n    direction: ScrollDirection;\n}\n\n@Injectable()\nexport class GanttDomService implements OnDestroy {\n    public root: Element;\n\n    public side: Element;\n\n    public container: Element;\n\n    public sideContainer: Element;\n\n    public mainContainer: Element;\n\n    public calendarOverlay: Element;\n\n    public linksOverlay: Element;\n\n    private unsubscribe$ = new Subject<void>();\n\n    constructor(private ngZone: NgZone, @Inject(PLATFORM_ID) private platformId: string) {}\n\n    private monitorScrollChange() {\n        this.ngZone.runOutsideAngular(() =>\n            merge(\n                fromEvent(this.mainContainer, 'scroll', passiveListenerOptions),\n                fromEvent(this.sideContainer, 'scroll', passiveListenerOptions)\n            )\n                .pipe(takeUntil(this.unsubscribe$))\n                .subscribe((event) => {\n                    this.syncScroll(event);\n                })\n        );\n\n        // fromEvent(this.mainContainer, 'scroll')\n        //     .pipe(startWith(), takeUntil(this.unsubscribe$))\n        //     .subscribe((event) => {\n        //         // if (this.mainContainer.scrollLeft > 0) {\n        //         //     this.side.classList.add('gantt-side-has-shadow');\n        //         // } else {\n        //         //     this.side.classList.remove('gantt-side-has-shadow');\n        //         // }\n        //     });\n    }\n\n    private syncScroll(event: Event) {\n        const target = event.currentTarget as HTMLElement;\n        this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n\n        this.sideContainer.scrollTop = target.scrollTop;\n        this.mainContainer.scrollTop = target.scrollTop;\n    }\n\n    private disableBrowserWheelEvent() {\n        const container = this.mainContainer as HTMLElement;\n        this.ngZone.runOutsideAngular(() =>\n            fromEvent(container, 'wheel')\n                .pipe(takeUntil(this.unsubscribe$))\n                .subscribe((event: WheelEvent) => {\n                    const delta = event.deltaX;\n                    if (!delta) {\n                        return;\n                    }\n                    if (\n                        (container.scrollLeft + container.offsetWidth === container.scrollWidth && delta > 0) ||\n                        (container.scrollLeft === 0 && delta < 0)\n                    ) {\n                        event.preventDefault();\n                    }\n                })\n        );\n    }\n\n    initialize(root: ElementRef<HTMLElement>) {\n        this.root = root.nativeElement;\n        this.side = this.root.getElementsByClassName('gantt-side')[0];\n        this.container = this.root.getElementsByClassName('gantt-container')[0];\n        this.sideContainer = this.root.getElementsByClassName('gantt-side-container')[0];\n        this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];\n        this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-overlay')[0];\n        this.monitorScrollChange();\n        this.disableBrowserWheelEvent();\n    }\n\n    /**\n     * @returns An observable that will emit outside the Angular zone. Note, consumers should re-enter the Angular zone\n     * to run the change detection if needed.\n     */\n    getViewerScroll(options?: AddEventListenerOptions): Observable<ScrollEvent> {\n        return new Observable<ScrollEvent>((subscriber) =>\n            this.ngZone.runOutsideAngular(() =>\n                fromEvent(this.mainContainer, 'scroll', options)\n                    .pipe(\n                        map(() => this.mainContainer.scrollLeft),\n                        pairwise(),\n                        map(([previous, current]) => {\n                            const event: ScrollEvent = {\n                                target: this.mainContainer,\n                                direction: ScrollDirection.NONE\n                            };\n                            if (current - previous < 0) {\n                                if (this.mainContainer.scrollLeft < scrollThreshold && this.mainContainer.scrollLeft > 0) {\n                                    event.direction = ScrollDirection.LEFT;\n                                }\n                            }\n                            if (current - previous > 0) {\n                                if (\n                                    this.mainContainer.scrollWidth - this.mainContainer.clientWidth - this.mainContainer.scrollLeft <\n                                    scrollThreshold\n                                ) {\n                                    event.direction = ScrollDirection.RIGHT;\n                                }\n                            }\n                            return event;\n                        })\n                    )\n                    .subscribe(subscriber)\n            )\n        );\n    }\n\n    getResize(): Observable<Event> {\n        return isPlatformServer(this.platformId) ? EMPTY : fromEvent(window, 'resize').pipe(auditTime(150));\n    }\n\n    scrollMainContainer(left: number) {\n        if (isNumber(left)) {\n            const scrollLeft = left - this.mainContainer.clientWidth / 2;\n            this.mainContainer.scrollLeft = scrollLeft > scrollThreshold ? scrollLeft : 0;\n            this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n        }\n    }\n\n    ngOnDestroy() {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","import { Injectable, EventEmitter, Inject } from '@angular/core';\nimport { GanttLinkType } from './class';\nimport { GanttDragEvent, GanttLinkDragEvent } from './class/event';\nimport { GanttItemInternal } from './class/item';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\n\nfunction getDependencyType(path: LinkDragPath, dependencyTypes: GanttLinkType[]): GanttLinkType {\n    if (dependencyTypes.includes(GanttLinkType.ss) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.start) {\n        return GanttLinkType.ss;\n    }\n    if (dependencyTypes.includes(GanttLinkType.ff) && path.from.pos === InBarPosition.finish && path.to.pos === InBarPosition.finish) {\n        return GanttLinkType.ff;\n    }\n    if (dependencyTypes.includes(GanttLinkType.sf) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.finish) {\n        return GanttLinkType.sf;\n    }\n    return GanttLinkType.fs;\n}\n\nexport enum InBarPosition {\n    start = 'start',\n    finish = 'finish'\n}\n\nexport type LinkDragPosition = {\n    element: HTMLElement;\n    item: GanttItemInternal;\n    pos?: InBarPosition;\n};\n\nexport interface LinkDragPath {\n    from?: LinkDragPosition;\n    to?: LinkDragPosition;\n}\n\n@Injectable()\nexport class GanttDragContainer {\n    dragStarted = new EventEmitter<GanttDragEvent>();\n\n    dragMoved = new EventEmitter<GanttDragEvent>();\n\n    dragEnded = new EventEmitter<GanttDragEvent>();\n\n    linkDragStarted = new EventEmitter<GanttLinkDragEvent>();\n\n    linkDragEntered = new EventEmitter<GanttLinkDragEvent>();\n\n    linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n    linkDraggingId: string;\n\n    linkDragPath: LinkDragPath = { from: null, to: null };\n\n    constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n    emitLinkDragStarted(from: LinkDragPosition) {\n        this.linkDraggingId = from.item.id;\n        this.linkDragPath.from = from;\n        this.linkDragStarted.emit({\n            source: from.item.origin,\n            target: null\n        });\n    }\n\n    emitLinkDragEntered(to: LinkDragPosition) {\n        this.linkDragPath.to = to;\n        this.linkDragEntered.emit({\n            source: this.linkDragPath.from.item.origin,\n            target: to.item.origin\n        });\n    }\n\n    emitLinkDragLeaved() {\n        this.linkDragPath.to = null;\n    }\n\n    emitLinkDragEnded(to?: LinkDragPosition) {\n        if (to) {\n            this.linkDragPath.to = to;\n            const dependencyType = getDependencyType(this.linkDragPath, this.ganttUpper.linkOptions?.dependencyTypes);\n            this.linkDragPath.from.item.addLink({\n                link: this.linkDragPath.to.item.id,\n                type: dependencyType\n            });\n            this.linkDragEnded.emit({\n                source: this.linkDragPath.from.item.origin,\n                target: this.linkDragPath.to.item.origin,\n                type: dependencyType\n            });\n        }\n\n        this.linkDraggingId = null;\n        this.linkDragPath = { from: null, to: null };\n    }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'gantt-drag-backdrop',\n    templateUrl: `./drag-backdrop.component.html`,\n    host: {\n        class: 'gantt-drag-backdrop'\n    }\n})\nexport class GanttDragBackdropComponent {}\n","<div class=\"gantt-drag-mask\">\n  <div class=\"date-range\">\n    <span class=\"start\"></span>\n    <span class=\"end\"></span>\n  </div>\n</div>\n","import { Injectable, ElementRef } from '@angular/core';\n\n@Injectable()\nexport class GanttPrintService {\n    private root: HTMLElement;\n\n    private mainContainer: HTMLElement;\n\n    constructor() {}\n\n    private setInlineStyles(targetElem: Element) {\n        const svgElements = Array.from(targetElem.getElementsByTagName('svg'));\n        for (const svgElement of svgElements) {\n            this.recursElementChildren(svgElement);\n        }\n    }\n\n    private recursElementChildren(node: SVGSVGElement | HTMLElement) {\n        const transformProperties = [\n            'fill',\n            'color',\n            'font-size',\n            'stroke',\n            'font',\n            'text-anchor',\n            'stroke-dasharray',\n            'shape-rendering',\n            'stroke-width'\n        ];\n        if (!node.style) {\n            return;\n        }\n        const styles = getComputedStyle(node);\n        for (const transformProperty of transformProperties) {\n            node.style[transformProperty] = styles[transformProperty];\n        }\n        for (const child of Array.from(node.childNodes)) {\n            this.recursElementChildren(child as SVGSVGElement);\n        }\n    }\n\n    register(root: ElementRef<HTMLElement>) {\n        this.root = root.nativeElement;\n        this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0] as HTMLElement;\n    }\n\n    async print(name: string = 'download', ignoreElementClass?: string) {\n        const root = this.root as HTMLElement;\n\n        const mainContainer = this.mainContainer as HTMLElement;\n        // set print width\n        const printWidth = root.offsetWidth;\n\n        // set print height\n        const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;\n\n        const html2canvas = (await import(/* webpackChunkName: 'html2canvas' */ 'html2canvas')).default;\n\n        html2canvas(root, {\n            logging: false,\n            allowTaint: true,\n            useCORS: true,\n            width: printWidth,\n            height: printHeight,\n            ignoreElements: (element) => {\n                if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {\n                    return true;\n                }\n                if (element.classList.contains('gantt-calendar-today-overlay')) {\n                    return true;\n                }\n            },\n\n            onclone: (cloneDocument: Document) => {\n                const ganttClass = root.className;\n                const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\\s+/g, '.')}`) as HTMLElement;\n                const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container') as HTMLElement;\n                const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-overlay-main') as HTMLElement;\n                const cloneLinksOverlay = cloneDocument.querySelector('.gantt-links-overlay-main') as HTMLElement;\n\n                // change targetDom width\n                cloneGanttDom.style.width = `${printWidth}px`;\n                cloneGanttDom.style.height = `${printHeight}px`;\n                cloneGanttDom.style.overflow = `unset`;\n                cloneGanttContainerDom.style.backgroundColor = '#fff';\n                cloneCalendarOverlay.setAttribute('height', `${printHeight}`);\n                cloneCalendarOverlay.setAttribute('style', `background: transparent`);\n\n                if (cloneLinksOverlay) {\n                    cloneLinksOverlay.setAttribute('height', `${printHeight}`);\n                    cloneLinksOverlay.setAttribute('style', `height: ${printHeight}px`);\n                }\n\n                // setInlineStyles for svg\n                this.setInlineStyles(cloneGanttDom);\n            }\n        }).then((canvas: HTMLCanvasElement) => {\n            const link = document.createElement('a');\n            const dataUrl = canvas.toDataURL('image/png');\n            link.download = `${name}.png`;\n            link.href = dataUrl;\n            link.click();\n        });\n    }\n}\n","import { Component, OnInit, HostBinding, OnDestroy, NgZone, Inject, ElementRef } from '@angular/core';\nimport { GanttDatePoint } from '../../class/date-point';\nimport { Subject, merge, from } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { headerHeight, todayHeight, todayWidth, todayBorderRadius } from '../../gantt.styles';\nimport { isNumber } from '../../utils/helpers';\nimport { GanttDate } from '../../utils/date';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttViewType } from './../../class/view-type';\n\nconst mainHeight = 5000;\n\n@Component({\n    selector: 'gantt-calendar-overlay',\n    templateUrl: './calendar.component.html'\n})\nexport class GanttCalendarComponent implements OnInit, OnDestroy {\n    get view() {\n        return this.ganttUpper.view;\n    }\n\n    headerHeight = headerHeight;\n\n    mainHeight = mainHeight;\n\n    todayHeight = todayHeight;\n\n    todayWidth = todayWidth;\n\n    todayBorderRadius = todayBorderRadius;\n\n    viewTypes = GanttViewType;\n\n    @HostBinding('class.gantt-calendar-overlay') className = true;\n\n    private unsubscribe$ = new Subject<void>();\n\n    constructor(\n        @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n        private ngZone: NgZone,\n        private elementRef: ElementRef<HTMLElement>\n    ) {}\n\n    setTodayPoint() {\n        const x = this.view.getTodayXPoint();\n        const today = new GanttDate().getDate();\n        const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0] as HTMLElement;\n        const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0] as HTMLElement;\n        const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0] as HTMLElement;\n\n        if (isNumber(x)) {\n            if (rect) {\n                rect.style.left = `${x - todayWidth / 2}px`;\n                rect.style.top = `${headerHeight - todayHeight}px`;\n                rect.innerHTML = today.toString();\n            }\n            if (line) {\n                line.style.left = `${x}px`;\n                line.style.top = `${headerHeight}px`;\n                line.style.bottom = `${-mainHeight}px`;\n            }\n        } else {\n            todayEle.style.display = 'none';\n        }\n    }\n\n    ngOnInit() {\n        // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means\n        // the `onStable` will never emit any value.\n        const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n        // Normally this isn't in the zone, but it can cause performance regressions for apps\n        // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n        this.ngZone.runOutsideAngular(() => {\n            onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n                merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)\n                    .pipe(takeUntil(this.unsubscribe$))\n                    .subscribe(() => {\n                        this.setTodayPoint();\n                    });\n            });\n        });\n    }\n\n    trackBy(index: number, point: GanttDatePoint) {\n        return point.text || index;\n    }\n\n    ngOnDestroy() {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n  <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n  <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n  <g>\n    <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n      {{ point.text }}\n    </text>\n    <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n      <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n        {{ point.text }}\n      </text>\n    </ng-container>\n\n    <g>\n      <line\n        *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n        [attr.x1]=\"(i + 1) * view.primaryWidth\"\n        [attr.x2]=\"(i + 1) * view.primaryWidth\"\n        [attr.y1]=\"0\"\n        [attr.y2]=\"mainHeight\"\n        class=\"primary-line\"\n      ></line>\n    </g>\n\n    <g>\n      <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n    </g>\n  </g>\n  <g>\n    <g *ngIf=\"view.showTimeline\">\n      <line\n        *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n        [attr.x1]=\"(i + 1) * view.cellWidth\"\n        [attr.x2]=\"(i + 1) * view.cellWidth\"\n        [attr.y1]=\"headerHeight\"\n        [attr.y2]=\"mainHeight\"\n        class=\"secondary-line\"\n      ></line>\n      <line\n        *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n        [attr.x1]=\"(i + 1) * view.primaryWidth\"\n        [attr.x2]=\"(i + 1) * view.primaryWidth\"\n        [attr.y1]=\"0\"\n        [attr.y2]=\"mainHeight\"\n        class=\"primary-line\"\n      ></line>\n    </g>\n  </g>\n</svg>\n","import {\n    Component,\n    OnInit,\n    NgZone,\n    ElementRef,\n    Inject,\n    ContentChild,\n    TemplateRef,\n    Input,\n    Optional,\n    OnDestroy,\n    ViewChild\n} from '@angular/core';\nimport { GanttDomService, ScrollDirection } from './gantt-dom.service';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { take, takeUntil, startWith } from 'rxjs/operators';\nimport { from, Subject } from 'rxjs';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\nimport { GanttPrintService } from './gantt-print.service';\nimport { passiveListenerOptions } from './utils/passive-listeners';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\n\n@Component({\n    selector: 'ngx-gantt-root',\n    templateUrl: './root.component.html',\n    providers: [GanttDomService, GanttDragContainer],\n    host: {\n        class: 'gantt'\n    }\n})\nexport class NgxGanttRootComponent implements OnInit, OnDestroy {\n    @Input() sideWidth: number;\n\n    @ContentChild('sideTemplate', { static: true }) sideTemplate: TemplateRef<any>;\n\n    @ContentChild('mainTemplate', { static: true }) mainTemplate: TemplateRef<any>;\n\n    /** The native `<gantt-drag-backdrop></gantt-drag-backdrop>` element. */\n    @ViewChild(GanttDragBackdropComponent, { static: true, read: ElementRef }) backdrop: ElementRef<HTMLElement>;\n\n    private unsubscribe$ = new Subject<void>();\n\n    private get view() {\n        return this.ganttUpper.view;\n    }\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private ngZone: NgZone,\n        private dom: GanttDomService,\n        public dragContainer: GanttDragContainer,\n        @Inject(GANTT_UPPER_TOKEN) private ganttUpper: GanttUpper,\n        @Optional() private printService: GanttPrintService\n    ) {\n        this.ganttUpper.dragContainer = dragContainer;\n    }\n\n    ngOnInit() {\n        // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means\n        // the `onStable` will never emit any value.\n        const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n        // Normally this isn't in the zone, but it can cause performance regressions for apps\n        // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n        this.ngZone.runOutsideAngular(() => {\n            onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n                this.dom.initialize(this.elementRef);\n                if (this.printService) {\n                    this.printService.register(this.elementRef);\n                }\n                this.setupScrollClass();\n                this.setupResize();\n                this.setupViewScroll();\n                // 优化初始化时Scroll滚动体验问题，通过透明度解决，默认透明度为0，滚动结束后恢复\n                this.elementRef.nativeElement.style.opacity = '1';\n                this.ganttUpper.viewChange.pipe(startWith<null, null>(null), takeUntil(this.unsubscribe$)).subscribe(() => {\n                    this.scrollToToday();\n                });\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.unsubscribe$.next();\n    }\n\n    private setupViewScroll() {\n        if (this.ganttUpper.disabledLoadOnScroll) {\n            return;\n        }\n        this.dom\n            .getViewerScroll(passiveListenerOptions)\n            .pipe(takeUntil(this.unsubscribe$))\n            .subscribe((event) => {\n                if (event.direction === ScrollDirection.LEFT) {\n                    const dates = this.view.addStartDate();\n                    if (dates) {\n                        event.target.scrollLeft += this.view.getDateRangeWidthDayNormalized(dates.start, dates.end);\n                        if (this.ganttUpper.loadOnScroll.observers) {\n                            this.ngZone.run(() =>\n                                this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() })\n                            );\n                        }\n                    }\n                }\n                if (event.direction === ScrollDirection.RIGHT) {\n                    const dates = this.view.addEndDate();\n                    if (dates && this.ganttUpper.loadOnScroll.observers) {\n                        this.ngZone.run(() =>\n                            this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() })\n                        );\n                    }\n                }\n            });\n    }\n\n    private setupResize() {\n        this.dom\n            .getResize()\n            .pipe(takeUntil(this.unsubscribe$))\n            .subscribe(() => {\n                this.setupScrollClass();\n            });\n    }\n\n    private setupScrollClass() {\n        const mainContainer = this.dom.mainContainer as HTMLElement;\n        const height = mainContainer.offsetHeight;\n        const scrollHeight = mainContainer.scrollHeight;\n        if (scrollHeight > height) {\n            this.elementRef.nativeElement.className = 'gantt gantt-scroll';\n        } else {\n            this.elementRef.nativeElement.className = 'gantt';\n        }\n    }\n\n    private scrollToToday() {\n        const x = this.view.getTodayXPoint();\n        this.dom.scrollMainContainer(x);\n    }\n}\n","<div class=\"gantt-side\" [style.width.px]=\"sideWidth\">\n  <div class=\"gantt-side-container\">\n    <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n  </div>\n</div>\n<div class=\"gantt-container\">\n  <gantt-calendar-overlay></gantt-calendar-overlay>\n  <gantt-drag-backdrop></gantt-drag-backdrop>\n  <div class=\"gantt-main\">\n    <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n  </div>\n</div>\n","import { GanttLinkItem, GanttLinkType } from '../../../class/link';\n\nexport abstract class GanttLinkLine {\n    constructor() {}\n\n    abstract generateSSPath(source: GanttLinkItem, target: GanttLinkItem): string;\n\n    abstract generateFFPath(source: GanttLinkItem, target: GanttLinkItem): string;\n\n    abstract generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType): string;\n\n    generatePath(source: GanttLinkItem, target: GanttLinkItem, type: GanttLinkType) {\n        if (source.before && source.after && target.before && target.after) {\n            let path = '';\n\n            switch (type) {\n                case GanttLinkType.ss:\n                    path = this.generateSSPath(source, target);\n                    break;\n                case GanttLinkType.ff:\n                    path = this.generateFFPath(source, target);\n                    break;\n\n                case GanttLinkType.sf:\n                    path = this.generateFSAndSFPath(source, target, type);\n                    break;\n                default:\n                    path = this.generateFSAndSFPath(source, target);\n            }\n\n            return path;\n        }\n    }\n}\n","import { Inject } from '@angular/core';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../../gantt-upper';\nimport { GanttLinkLine } from './line';\n\nexport class GanttLinkLineCurve extends GanttLinkLine {\n    constructor(@Inject(GANTT_UPPER_TOKEN) private ganttUpper: GanttUpper) {\n        super();\n    }\n\n    generateSSPath(source: GanttLinkItem, target: GanttLinkItem) {\n        const x1 = source.before.x;\n        const y1 = source.before.y;\n        const x4 = target.before.x;\n        const y4 = target.before.y;\n        const isMirror = y4 > y1 ? 0 : 1;\n        const radius = Math.abs(y4 - y1) / 2;\n\n        if (x4 > x1) {\n            return `M ${x1} ${y1}\n                    A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}\n                    L ${x4} ${y4}`;\n        } else {\n            return `M ${x1} ${y1}\n                    L ${x4} ${y1}\n                    A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;\n        }\n    }\n    generateFFPath(source: GanttLinkItem, target: GanttLinkItem) {\n        const x1 = source.after.x;\n        const y1 = source.after.y;\n        const x4 = target.after.x;\n        const y4 = target.after.y;\n        const isMirror = y4 > y1 ? 1 : 0;\n        const radius = Math.abs(y4 - y1) / 2;\n        if (x4 > x1) {\n            return `M ${x1} ${y1}\n                    L ${x4} ${y1}\n                    A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;\n        } else {\n            return `M ${x1} ${y1}\n                    A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}\n                    L ${x4} ${y4}`;\n        }\n    }\n\n    generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType) {\n        let x1 = source.after.x;\n        let y1 = source.after.y;\n        let x4 = target.before.x;\n        let y4 = target.before.y;\n        const bezierWeight = 0.5;\n\n        if (type === GanttLinkType.sf) {\n            x1 = target.after.x;\n            y1 = target.after.y;\n            x4 = source.before.x;\n            y4 = source.before.y;\n        }\n\n        let dx = Math.abs(x4 - x1) * bezierWeight;\n        let x2 = x1 + dx;\n        let x3 = x4 - dx;\n\n        const centerX = (x1 + x4) / 2;\n        const centerY = (y1 + y4) / 2;\n\n        let controlX = this.ganttUpper.styles.lineHeight / 2;\n        const controlY = this.ganttUpper.styles.lineHeight / 2;\n\n        if (x1 >= x4) {\n            if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {\n                return `M ${x1} ${y1}\n                    C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${x1} ${\n                    y4 > y1 ? y1 + controlY : y1 - controlY\n                }\n                    L ${x4} ${y4 > y1 ? y4 - controlY : y4 + controlY}\n                    C ${x4 - controlY} ${y4 > y1 ? y4 - controlY : y4 + controlY}  ${x4 - controlX} ${y4} ${x4} ${y4}\n                    `;\n            } else {\n                controlX = this.ganttUpper.styles.lineHeight;\n                return `M ${x1} ${y1}\n                    C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${centerX} ${centerY}\n                    C ${x4 - controlX} ${y4 > y1 ? y4 - controlX : y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}\n                    `;\n            }\n        } else if (this.ganttUpper.linkOptions?.showArrow && x4 - x1 < 200) {\n            dx = Math.max(Math.abs(y4 - y1) * bezierWeight, 60);\n            x2 = x1 + dx;\n            x3 = x4 - dx;\n            return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;\n        }\n\n        return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;\n    }\n}\n","import { GanttLinkLine } from './line';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\n\nexport class GanttLinkLineStraight extends GanttLinkLine {\n    private pathControl = 20;\n\n    constructor() {\n        super();\n    }\n\n    generateSSPath(source: GanttLinkItem, target: GanttLinkItem) {\n        const x1 = source.before.x;\n        const y1 = source.before.y;\n        const x4 = target.before.x;\n        const y4 = target.before.y;\n        const control = this.pathControl;\n\n        return `M ${x1} ${y1}\n                        L ${x4 > x1 ? x1 - control : x4 - control} ${y1}\n                        L ${x4 > x1 ? x1 - control : x4 - control} ${y4}\n                        L ${x4} ${y4}`;\n    }\n\n    generateFFPath(source: GanttLinkItem, target: GanttLinkItem) {\n        const x1 = source.after.x;\n        const y1 = source.after.y;\n        const x4 = target.after.x;\n        const y4 = target.after.y;\n        const control = this.pathControl;\n\n        return `M ${x1} ${y1}\n                        L ${x4 > x1 ? x4 + control : x1 + control} ${y1}\n                        L ${x4 > x1 ? x4 + control : x1 + control} ${y4}\n                        L ${x4} ${y4}`;\n    }\n\n    generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType) {\n        let x1 = source.after.x;\n        let y1 = source.after.y;\n        let x4 = target.before.x;\n        let y4 = target.before.y;\n        const control = this.pathControl;\n\n        if (type === GanttLinkType.sf) {\n            x1 = target.after.x;\n            y1 = target.after.y;\n            x4 = source.before.x;\n            y4 = source.before.y;\n        }\n\n        if (x4 - x1 >= 40) {\n            return `M ${x1} ${y1}\n                        L ${x1 + control} ${y1}\n                        L ${x1 + control} ${y4}\n                        L ${x4} ${y4}`;\n        } else {\n            return `M ${x1} ${y1}\n                        L ${x1 + control} ${y1}\n                        L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}\n                        L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}\n                        L ${x4 - control} ${y4}\n                        L ${x4} ${y4}`;\n        }\n    }\n}\n","import { GanttLinkLineType } from '../../../class/link';\nimport { GanttUpper } from '../../../gantt-upper';\nimport { GanttLinkLineCurve } from './curve';\nimport { GanttLinkLineStraight } from './straight';\n\nexport function createLineGenerator(type: GanttLinkLineType, ganttUpper?: GanttUpper) {\n    switch (type) {\n        case GanttLinkLineType.curve:\n            return new GanttLinkLineCurve(ganttUpper);\n        case GanttLinkLineType.straight:\n            return new GanttLinkLineStraight();\n        default:\n            throw new Error('gantt link path type invalid');\n    }\n}\n","import {\n    Component,\n    OnInit,\n    Input,\n    Output,\n    EventEmitter,\n    HostBinding,\n    Inject,\n    ChangeDetectorRef,\n    ElementRef,\n    OnDestroy,\n    OnChanges\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil, skip, debounceTime } from 'rxjs/operators';\nimport { GanttGroupInternal } from '../../class/group';\nimport { GanttItemInternal } from './../../class/item';\nimport { GanttLineClickEvent } from '../../class/event';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { recursiveItems } from '../../utils/helpers';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttLinkItem, LinkInternal, LinkColors, GanttLinkType } from '../../class/link';\nimport { GanttLinkLine } from './lines/line';\nimport { createLineGenerator } from './lines/factory';\n\n@Component({\n    selector: 'gantt-links-overlay',\n    templateUrl: './links.component.html'\n})\nexport class GanttLinksComponent implements OnInit, OnChanges, OnDestroy {\n    @Input() groups: GanttGroupInternal[] = [];\n\n    @Input() items: GanttItemInternal[] = [];\n\n    @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n    public links: LinkInternal[] = [];\n\n    public ganttLinkTypes = GanttLinkType;\n\n    public showArrow = false;\n\n    private linkItems: GanttLinkItem[] = [];\n\n    private firstChange = true;\n\n    private linkLine: GanttLinkLine;\n\n    private unsubscribe$ = new Subject<void>();\n\n    @HostBinding('class.gantt-links-overlay') ganttLinksOverlay = true;\n\n    constructor(\n        @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n        private cdr: ChangeDetectorRef,\n        private elementRef: ElementRef,\n        private ganttDragContainer: GanttDragContainer\n    ) {}\n\n    ngOnInit() {\n        this.linkLine = createLineGenerator(this.ganttUpper.linkOptions.lineType, this.ganttUpper);\n\n        this.showArrow = this.ganttUpper.linkOptions.showArrow;\n        this.buildLinks();\n        this.firstChange = false;\n\n        this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n            this.elementRef.nativeElement.style.visibility = 'hidden';\n        });\n\n        merge(\n            this.ganttUpper.viewChange,\n            this.ganttUpper.expandChange,\n            this.ganttUpper.view.start$,\n            this.ganttUpper.dragEnded,\n            this.ganttUpper.linkDragEnded\n        )\n            .pipe(skip(1), debounceTime(0), takeUntil(this.unsubscribe$))\n            .subscribe(() => {\n                this.elementRef.nativeElement.style.visibility = 'visible';\n                this.buildLinks();\n                this.cdr.detectChanges();\n            });\n    }\n\n    ngOnChanges() {\n        if (!this.firstChange) {\n            this.buildLinks();\n        }\n    }\n\n    private computeItemPosition() {\n        const lineHeight = this.ganttUpper.styles.lineHeight;\n        const barHeight = this.ganttUpper.styles.barHeight;\n        this.linkItems = [];\n        if (this.groups.length > 0) {\n            let itemNum = 0;\n            let groupNum = 0;\n            this.groups.forEach((group) => {\n                groupNum++;\n                if (group.expanded) {\n                    const items = recursiveItems(group.items);\n                    items.forEach((item, itemIndex) => {\n                        const y = (groupNum + itemNum + itemIndex) * lineHeight + item.refs.y + barHeight / 2;\n                        this.linkItems.push({\n                            ...item,\n                            before: {\n                                x: item.refs.x,\n                                y\n                            },\n                            after: {\n                                x: item.refs.x + item.refs.width,\n                                y\n                            }\n                        });\n                    });\n                    itemNum += items.length;\n                }\n            });\n        } else {\n            const items = recursiveItems(this.items);\n            items.forEach((item, itemIndex) => {\n                const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;\n                this.linkItems.push({\n                    ...item,\n                    before: {\n                        x: item.refs.x,\n                        y\n                    },\n                    after: {\n                        x: item.refs.x + item.refs.width,\n                        y\n                    }\n                });\n            });\n        }\n    }\n\n    buildLinks() {\n        this.computeItemPosition();\n        this.links = [];\n        this.linkItems.forEach((source) => {\n            if (source.origin.start || source.origin.end) {\n                source.links.forEach((link) => {\n                    const target = this.linkItems.find((item) => item.id === link.link);\n                    if (target && (target.origin.start || target.origin.end)) {\n                        let defaultColor: string = LinkColors.default;\n                        let activeColor: string = LinkColors.active;\n\n                        if (link.type === GanttLinkType.fs && source.end.getTime() > target.start.getTime()) {\n                            defaultColor = LinkColors.blocked;\n                            activeColor = LinkColors.blocked;\n                        }\n                        if (link.color) {\n                            if (typeof link.color === 'string') {\n                                defaultColor = link.color;\n                                activeColor = link.color;\n                            } else {\n                                defaultColor = link.color.default;\n                                activeColor = link.color.active;\n                            }\n                        }\n\n                        this.links.push({\n                            path: this.linkLine.generatePath(source, target, link.type),\n                            source: source.origin,\n                            target: target.origin,\n                            type: link.type,\n                            color: defaultColor,\n                            defaultColor,\n                            activeColor\n                        });\n                    }\n                });\n            }\n        });\n    }\n\n    trackBy(index: number) {\n        return index;\n    }\n\n    onLineClick(event: MouseEvent, link: LinkInternal) {\n        this.lineClick.emit({\n            event,\n            source: link.source,\n            target: link.target\n        });\n    }\n\n    mouseEnterPath(link: LinkInternal, index: number) {\n        link.color = link.activeColor || link.defaultColor;\n        if (index < this.links.length - 1) {\n            this.links.splice(index, 1);\n            this.links.push(link);\n        }\n    }\n\n    mouseLeavePath(link: LinkInternal) {\n        link.color = link.defaultColor;\n    }\n\n    ngOnDestroy() {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n  <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n    <path\n      [attr.d]=\"link.path\"\n      fill=\"transparent\"\n      stroke-width=\"2\"\n      [attr.stroke]=\"link.color\"\n      pointer-events=\"none\"\n      [attr.style]=\"link.type === ganttLinkTypes.sf ? 'marker-start: url(#triangle' + i + ')' : 'marker-end: url(#triangle' + i + ')'\"\n    ></path>\n\n    <g>\n      <path\n        class=\"link-line\"\n        (click)=\"onLineClick($event, link)\"\n        [attr.d]=\"link.path\"\n        (mouseenter)=\"mouseEnterPath(link, i)\"\n        (mouseleave)=\"mouseLeavePath(link)\"\n        stroke=\"transparent\"\n        stroke-width=\"9\"\n        fill=\"none\"\n        cursor=\"pointer\"\n      ></path>\n    </g>\n    <defs *ngIf=\"showArrow\">\n      <marker\n        *ngIf=\"link.type === ganttLinkTypes.sf; else markerEnd\"\n        [id]=\"'triangle' + i\"\n        markerUnits=\"strokeWidth\"\n        markerWidth=\"5\"\n        markerHeight=\"4\"\n        refX=\"5\"\n        refY=\"2\"\n        orient=\"180\"\n      >\n        <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n      </marker>\n\n      <ng-template #markerEnd>\n        <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n          <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n        </marker>\n      </ng-template>\n    </defs>\n  </ng-container>\n  <line class=\"link-dragging-line\"></line>\n</svg>\n","import { Input, ElementRef, Inject, TemplateRef, Directive, OnInit, OnChanges, OnDestroy } from '@angular/core';\nimport { GanttItemInternal, GanttItemType } from './class';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { rangeHeight } from './gantt.styles';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from './gantt-upper';\n\n@Directive()\nexport abstract class GanttItemUpper implements OnChanges, OnInit, OnDestroy {\n    @Input() template: TemplateRef<any>;\n\n    @Input() item: GanttItemInternal;\n\n    public firstChange = true;\n\n    public unsubscribe$ = new Subject<void>();\n\n    constructor(protected elementRef: ElementRef<HTMLElement>, @Inject(GANTT_UPPER_TOKEN) protected ganttUpper: GanttUpper) {}\n\n    ngOnInit() {\n        this.firstChange = false;\n        this.item.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n            this.setPositions();\n        });\n    }\n\n    ngOnChanges(): void {\n        if (!this.firstChange) {\n            this.setPositions();\n        }\n    }\n\n    private setPositions() {\n        const itemElement = this.elementRef.nativeElement;\n        itemElement.style.left = this.item.refs.x + 'px';\n        itemElement.style.top = this.item.refs.y + 'px';\n        itemElement.style.width = this.item.refs.width + 'px';\n        if (this.item.type === GanttItemType.bar) {\n            itemElement.style.height = this.ganttUpper.styles.barHeight + 'px';\n        } else if (this.item.type === GanttItemType.range) {\n            itemElement.style.height = rangeHeight + 'px';\n        } else {\n        }\n    }\n\n    ngOnDestroy() {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n    }\n}\n","import { Component, HostBinding, ElementRef, Inject } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttItemUpper } from '../../gantt-item-upper';\n\n@Component({\n    selector: 'ngx-gantt-range,gantt-range',\n    templateUrl: './range.component.html'\n})\nexport class NgxGanttRangeComponent extends GanttItemUpper {\n    @HostBinding('class.gantt-range') ganttRangeClass = true;\n\n    constructor(elementRef: ElementRef<HTMLDivElement>, @Inject(GANTT_UPPER_TOKEN) ganttUpper: GanttUpper) {\n        super(elementRef, ganttUpper);\n    }\n}\n","<ng-container *ngIf=\"item.start && item.end\">\n  <div class=\"gantt-range-main\">\n    <div class=\"gantt-range-main-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n  </div>\n  <div class=\"gantt-range-triangle left\"></div>\n  <div class=\"gantt-range-triangle right\"></div>\n  <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</ng-container>\n","import { Injectable, ElementRef, OnDestroy, SkipSelf } from '@angular/core';\nimport { DragRef, DragDrop } from '@angular/cdk/drag-drop';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { GanttDragContainer, InBarPosition } from '../../gantt-drag-container';\nimport { GanttItemInternal } from '../../class/item';\nimport { GanttDate, differenceInCalendarDays } from '../../utils/date';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttUpper } from '../../gantt-upper';\nimport { GanttLinkType } from '../../class/link';\nimport { NgxGanttRootComponent } from '../../root.component';\nimport { passiveListenerOptions } from '../../utils/passive-listeners';\n\nconst dragMinWidth = 10;\nconst activeClass = 'gantt-bar-active';\nconst dropActiveClass = 'gantt-bar-drop-active';\nconst singleDropActiveClass = 'gantt-bar-single-drop-active';\n\nfunction createSvgElement(qualifiedName: string, className: string) {\n    const element = document.createElementNS('http://www.w3.org/2000/svg', qualifiedName);\n    element.classList.add(className);\n    return element;\n}\n\n@Injectable()\nexport class GanttBarDrag implements OnDestroy {\n    private ganttUpper: GanttUpper;\n\n    private barElement: HTMLElement;\n\n    private item: GanttItemInternal;\n\n    private get dragDisabled() {\n        return !this.item.draggable || !this.ganttUpper.draggable;\n    }\n\n    private get linkDragDisabled() {\n        return !this.item.linkable || !this.ganttUpper.linkable;\n    }\n\n    private linkDraggingLine: SVGElement;\n\n    private barDragRef: DragRef;\n\n    private dragRefs: DragRef[] = [];\n\n    private destroy$ = new Subject<void>();\n\n    constructor(\n        private dragDrop: DragDrop,\n        private dom: GanttDomService,\n        private dragContainer: GanttDragContainer,\n        @SkipSelf() private root: NgxGanttRootComponent\n    ) {}\n\n    private createMouseEvents() {\n        const dropClass =\n            this.ganttUpper.config.linkOptions?.dependencyTypes?.length === 1 &&\n            this.ganttUpper.config.linkOptions?.dependencyTypes[0] === GanttLinkType.fs\n                ? singleDropActiveClass\n                : dropActiveClass;\n\n        fromEvent(this.barElement, 'mouseenter', passiveListenerOptions)\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(() => {\n                if (this.dragContainer.linkDraggingId && this.dragContainer.linkDraggingId !== this.item.id) {\n                    if (this.item.linkable) {\n                        this.barElement.classList.add(dropClass);\n                        this.dragContainer.emitLinkDragEntered({\n                            item: this.item,\n                            element: this.barElement\n                        });\n                    }\n                } else {\n                    this.barElement.classList.add(activeClass);\n                }\n            });\n\n        fromEvent(this.barElement, 'mouseleave', passiveListenerOptions)\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(() => {\n                if (!this.dragContainer.linkDraggingId) {\n                    this.barElement.classList.remove(activeClass);\n                } else {\n                    this.dragContainer.emitLinkDragLeaved();\n                }\n                this.barElement.classList.remove(dropClass);\n            });\n    }\n\n    private createBarDrag() {\n        const dragRef = this.dragDrop.createDrag(this.barElement);\n        dragRef.lockAxis = 'x';\n        dragRef.started.subscribe(() => {\n            this.setDraggingStyles();\n            this.dragContainer.dragStarted.emit({ item: this.item.origin });\n        });\n        dragRef.moved.subscribe((event) => {\n            const currentX = this.item.refs.x + event.distance.x;\n            const currentDate = this.ganttUpper.view.getDateByXPoint(currentX);\n            const currentStartX = this.ganttUpper.view.getXPointByDate(currentDate);\n            const dayWidth = this.ganttUpper.view.getDayOccupancyWidth(currentDate);\n            const diffDays = differenceInCalendarDays(this.item.end.value, this.item.start.value);\n            let start = currentDate;\n            let end = currentDate.addDays(diffDays);\n            if (currentX > currentStartX + dayWidth / 2) {\n                start = start.addDays(1);\n                end = end.addDays(1);\n            }\n            this.openDragBackdrop(this.barElement, start, end);\n            this.item.updateDate(start, end);\n            this.dragContainer.dragMoved.emit({ item: this.item.origin });\n        });\n        dragRef.ended.subscribe((event) => {\n            this.clearDraggingStyles();\n            this.closeDragBackdrop();\n            event.source.reset();\n            this.dragContainer.dragEnded.emit({ item: this.item.origin });\n        });\n        this.barDragRef = dragRef;\n        return dragRef;\n    }\n\n    private createBarHandleDrags() {\n        const dragRefs = [];\n        const handles = this.barElement.querySelectorAll<HTMLElement>('.drag-handles .handle');\n        handles.forEach((handle, index) => {\n            const isBefore = index === 0;\n            const dragRef = this.dragDrop.createDrag(handle);\n            dragRef.lockAxis = 'x';\n            dragRef.withBoundaryElement(this.dom.root as HTMLElement);\n\n            dragRef.started.subscribe(() => {\n                this.setDraggingStyles();\n                this.dragContainer.dragStarted.emit({ item: this.item.origin });\n            });\n\n            dragRef.moved.subscribe((event) => {\n                if (isBefore) {\n                    const x = this.item.refs.x + event.distance.x;\n                    const width = this.item.refs.width + event.distance.x * -1;\n                    if (width > dragMinWidth) {\n                        this.barElement.style.width = width + 'px';\n                        this.barElement.style.left = x + 'px';\n                        this.openDragBackdrop(this.barElement, this.ganttUpper.view.getDateByXPoint(x), this.item.end);\n                        this.item.updateDate(this.ganttUpper.view.getDateByXPoint(x), this.item.end);\n                    }\n                } else {\n                    const width = this.item.refs.width + event.distance.x;\n                    if (width > dragMinWidth) {\n                        this.barElement.style.width = width + 'px';\n                        this.openDragBackdrop(\n                            this.barElement,\n                            this.item.start,\n                            this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width)\n                        );\n                    }\n                    this.item.updateDate(this.item.start, this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width));\n                }\n                this.dragContainer.dragMoved.emit({ item: this.item.origin });\n                event.source.reset();\n            });\n\n            dragRef.ended.subscribe((event) => {\n                if (isBefore) {\n                    const width = this.item.refs.width + event.distance.x * -1;\n                    if (width > dragMinWidth) {\n                        this.item.updateDate(this.ganttUpper.view.getDateByXPoint(this.item.refs.x + event.distance.x), this.item.end);\n                    } else {\n                        this.item.updateDate(this.item.end.startOfDay(), this.item.end);\n                    }\n                } else {\n                    const width = this.item.refs.width + event.distance.x;\n                    if (width > dragMinWidth) {\n                        this.item.updateDate(\n                            this.item.start,\n                            this.ganttUpper.view.getDateByXPoint(this.item.refs.x + this.item.refs.width + event.distance.x)\n                        );\n                    } else {\n                        this.item.updateDate(this.item.start, this.item.start.endOfDay());\n                    }\n                }\n                this.clearDraggingStyles();\n                this.closeDragBackdrop();\n                this.dragContainer.dragEnded.emit({ item: this.item.origin });\n            });\n            dragRefs.push(dragRef);\n        });\n        return dragRefs;\n    }\n\n    private createLinkHandleDrags() {\n        const dragRefs = [];\n        const handles = this.barElement.querySelectorAll<HTMLElement>('.link-handles .handle');\n        handles.forEach((handle, index) => {\n            const isBegin = index === 0;\n            const dragRef = this.dragDrop.createDrag(handle);\n            dragRef.withBoundaryElement(this.dom.root as HTMLElement);\n            dragRef.beforeStarted.subscribe(() => {\n                handle.style.pointerEvents = 'none';\n                if (this.barDragRef) {\n                    this.barDragRef.disabled = true;\n                }\n                this.createLinkDraggingLine();\n                this.dragContainer.emitLinkDragStarted({\n                    element: this.barElement,\n                    item: this.item,\n                    pos: isBegin ? InBarPosition.start : InBarPosition.finish\n                });\n            });\n\n            dragRef.moved.subscribe(() => {\n                const positions = this.calcLinkLinePositions(handle, isBegin);\n                this.linkDraggingLine.setAttribute('x1', positions.x1.toString());\n                this.linkDraggingLine.setAttribute('y1', positions.y1.toString());\n                this.linkDraggingLine.setAttribute('x2', positions.x2.toString());\n                this.linkDraggingLine.setAttribute('y2', positions.y2.toString());\n            });\n\n            dragRef.ended.subscribe((event) => {\n                handle.style.pointerEvents = '';\n                if (this.barDragRef) {\n                    this.barDragRef.disabled = false;\n                }\n                // 计算line拖动的落点位于目标Bar的值，如果值大于Bar宽度的一半，说明是拖动到Begin位置，否则则为拖动到End位置\n                if (this.dragContainer.linkDragPath.to) {\n                    const placePointX =\n                        event.source.getRootElement().getBoundingClientRect().x -\n                        this.dragContainer.linkDragPath.to.element.getBoundingClientRect().x;\n\n                    this.dragContainer.emitLinkDragEnded({\n                        ...this.dragContainer.linkDragPath.to,\n                        pos:\n                            placePointX < this.dragContainer.linkDragPath.to.item.refs.width / 2\n                                ? InBarPosition.start\n                                : InBarPosition.finish\n                    });\n                } else {\n                    this.dragContainer.emitLinkDragEnded();\n                }\n                event.source.reset();\n                this.barElement.classList.remove(activeClass);\n                this.destroyLinkDraggingLine();\n            });\n\n            dragRefs.push(dragRef);\n        });\n        return dragRefs;\n    }\n\n    private openDragBackdrop(dragElement: HTMLElement, start: GanttDate, end: GanttDate) {\n        const dragBackdropElement = this.root.backdrop.nativeElement;\n        const dragMaskElement = dragBackdropElement.querySelector('.gantt-drag-mask') as HTMLElement;\n        const rootRect = this.dom.root.getBoundingClientRect();\n        const dragRect = dragElement.getBoundingClientRect();\n        const left = dragRect.left - rootRect.left - this.dom.side.clientWidth;\n        const width = dragRect.right - dragRect.left;\n        // Note: updating styles will cause re-layout so we have to place them consistently one by one.\n        dragMaskElement.style.left = left + 'px';\n        dragMaskElement.style.width = width + 'px';\n        dragMaskElement.style.display = 'block';\n        dragBackdropElement.style.display = 'block';\n        // This will invalidate the layout, but we won't need re-layout, because we set styles previously.\n        dragMaskElement.querySelector('.start').innerHTML = start.format('MM-dd HH:mm');\n        dragMaskElement.querySelector('.end').innerHTML = end.format('MM-dd HH:mm');\n    }\n\n    private closeDragBackdrop() {\n        const dragBackdropElement = this.root.backdrop.nativeElement;\n        const dragMaskElement = dragBackdropElement.querySelector('.gantt-drag-mask') as HTMLElement;\n        dragMaskElement.style.display = 'none';\n        dragBackdropElement.style.display = 'none';\n    }\n\n    private setDraggingStyles() {\n        this.barElement.style.pointerEvents = 'none';\n        this.barElement.classList.add('gantt-bar-draggable-drag');\n    }\n\n    private clearDraggingStyles() {\n        this.barElement.style.pointerEvents = '';\n        this.barElement.classList.remove('gantt-bar-draggable-drag');\n    }\n\n    private calcLinkLinePositions(target: HTMLElement, isBefore: boolean) {\n        const rootRect = this.dom.root.getBoundingClientRect();\n        const targetRect = target.getBoundingClientRect();\n        const layerRect = target.parentElement.parentElement.getBoundingClientRect();\n        return {\n            x1: layerRect.left + (isBefore ? 0 : layerRect.width) - rootRect.left,\n            y1: layerRect.top + layerRect.height / 2 - rootRect.top,\n            x2: targetRect.left - rootRect.left + targetRect.width / 2,\n            y2: targetRect.top - rootRect.top + targetRect.height / 2\n        };\n    }\n\n    private createLinkDraggingLine() {\n        if (!this.linkDraggingLine) {\n            const svgElement = createSvgElement('svg', 'gantt-link-drag-container');\n            const linElement = createSvgElement('line', 'link-dragging-line');\n            linElement.style.pointerEvents = 'none';\n            svgElement.appendChild(linElement);\n            this.dom.root.appendChild(svgElement);\n            this.linkDraggingLine = linElement;\n        }\n    }\n\n    private destroyLinkDraggingLine() {\n        if (this.linkDraggingLine) {\n            this.linkDraggingLine.parentElement.remove();\n            this.linkDraggingLine = null;\n        }\n    }\n\n    createDrags(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n        this.item = item;\n        this.barElement = elementRef.nativeElement;\n        this.ganttUpper = ganttUpper;\n        // if (!item.draggable || (this.dragDisabled && this.linkDragDisabled)) {\n        if (this.dragDisabled && this.linkDragDisabled) {\n            return;\n        } else {\n            this.createMouseEvents();\n            if (!this.dragDisabled) {\n                const dragRef = this.createBarDrag();\n                const dragHandlesRefs = this.createBarHandleDrags();\n                this.dragRefs.push(dragRef, ...dragHandlesRefs);\n            }\n            if (!this.linkDragDisabled) {\n                const linkDragRefs = this.createLinkHandleDrags();\n                this.dragRefs.push(...linkDragRefs);\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        this.closeDragBackdrop();\n        this.dragRefs.forEach((dragRef) => dragRef.dispose());\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n}\n","import {\n    Component,\n    OnInit,\n    HostBinding,\n    ElementRef,\n    OnChanges,\n    OnDestroy,\n    Inject,\n    ViewChild,\n    Output,\n    EventEmitter,\n    AfterViewInit,\n    ViewChildren,\n    QueryList,\n    NgZone\n} from '@angular/core';\nimport { fromEvent, merge, Observable } from 'rxjs';\nimport { startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { GanttBarDrag } from './bar-drag';\nimport { hexToRgb } from '../../utils/helpers';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { barBackground } from '../../gantt.styles';\nimport { GanttBarClickEvent } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttItemUpper } from '../../gantt-item-upper';\n\nfunction linearGradient(sideOrCorner: string, color: string, stop: string) {\n    return `linear-gradient(${sideOrCorner},${color} 0%,${stop} 40%)`;\n}\n\n@Component({\n    selector: 'ngx-gantt-bar,gantt-bar',\n    templateUrl: './bar.component.html',\n    providers: [GanttBarDrag]\n})\nexport class NgxGanttBarComponent extends GanttItemUpper implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n    @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n    @ViewChild('content') contentElementRef: ElementRef<HTMLDivElement>;\n\n    @HostBinding('class.gantt-bar') ganttItemClass = true;\n\n    @ViewChildren('handle') handles: QueryList<ElementRef<HTMLElement>>;\n\n    color = 'red';\n\n    constructor(\n        private dragContainer: GanttDragContainer,\n        private drag: GanttBarDrag,\n        elementRef: ElementRef<HTMLDivElement>,\n        @Inject(GANTT_UPPER_TOKEN) public override ganttUpper: GanttUpper,\n        private ngZone: NgZone\n    ) {\n        super(elementRef, ganttUpper);\n    }\n\n    override ngOnInit() {\n        super.ngOnInit();\n        this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n            this.setContentBackground();\n        });\n    }\n\n    ngAfterViewInit() {\n        this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);\n        this.setContentBackground();\n\n        this.handles.changes\n            .pipe(\n                startWith(this.handles),\n                switchMap(\n                    () =>\n                        // Note: we need to explicitly subscribe outside of the Angular zone since `addEventListener`\n                        // is called when the `fromEvent` is subscribed.\n                        new Observable<Event>((subscriber) =>\n                            this.ngZone.runOutsideAngular(() =>\n                                merge(...this.handles.toArray().map((handle) => fromEvent(handle.nativeElement, 'mousedown'))).subscribe(\n                                    subscriber\n                                )\n                            )\n                        )\n                ),\n                takeUntil(this.unsubscribe$)\n            )\n            .subscribe((event) => {\n                event.stopPropagation();\n            });\n    }\n\n    onBarClick(event: Event) {\n        this.barClick.emit({ event, item: this.item.origin });\n    }\n\n    private setContentBackground() {\n        const contentElement = this.contentElementRef.nativeElement;\n        const color = this.item.color || barBackground;\n        const style: Partial<CSSStyleDeclaration> = this.item.barStyle || {};\n        if (this.item.origin.start && this.item.origin.end) {\n            style.background = color;\n            style.borderRadius = '';\n        }\n        if (this.item.origin.start && !this.item.origin.end) {\n            style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));\n            style.borderRadius = '4px 12.5px 12.5px 4px';\n        }\n        if (!this.item.origin.start && this.item.origin.end) {\n            style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));\n            style.borderRadius = '12.5px 4px 4px 12.5px';\n        }\n        if (this.item.progress >= 0) {\n            const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress') as HTMLDivElement;\n            style.background = hexToRgb(color, 0.3);\n            style.borderRadius = '';\n            contentProgressElement.style.background = color;\n        }\n\n        for (const key in style) {\n            if (style.hasOwnProperty(key)) {\n                contentElement.style[key] = style[key];\n            }\n        }\n    }\n\n    stopPropagation(event: Event) {\n        event.stopPropagation();\n    }\n}\n","<div class=\"gantt-bar-layer\">\n  <div class=\"drag-handles\">\n    <ng-container *ngIf=\"item.draggable && ganttUpper.draggable\">\n      <span class=\"handle\" #handle></span>\n      <span class=\"handle\" #handle></span>\n    </ng-container>\n  </div>\n  <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n    <span class=\"handle\"><span class=\"point\"></span></span>\n    <span class=\"handle\"> <span class=\"point\"></span></span>\n  </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n  <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n  <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n","import { Component, HostBinding, Inject, Input, TemplateRef, Output, EventEmitter } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal, GanttBarClickEvent, GanttLineClickEvent } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\n\n@Component({\n    selector: 'gantt-main',\n    templateUrl: './gantt-main.component.html'\n})\nexport class GanttMainComponent {\n    @Input() groups: GanttGroupInternal[];\n\n    @Input() items: GanttItemInternal[];\n\n    @Input() groupHeaderTemplate: TemplateRef<any>;\n\n    @Input() itemTemplate: TemplateRef<any>;\n\n    @Input() barTemplate: TemplateRef<any>;\n\n    @Input() rangeTemplate: TemplateRef<any>;\n\n    @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n    @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n    @HostBinding('class.gantt-main-container') ganttMainClass = true;\n\n    constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n    trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n        return item.id || index;\n    }\n}\n","<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n  <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n    <div class=\"gantt-group\" [ngClass]=\"group.class\">\n      <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n    </div>\n    <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n      <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n    </div>\n  </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n  <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n    <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n  </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n  <ng-container *ngFor=\"let item of items;\">\n    <div\n      class=\"gantt-item\"\n      [style.height.px]=\"ganttUpper.styles.lineHeight\"\n      [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n    >\n      <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n        <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n      </ng-container>\n      <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n      <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n    </div>\n    <ng-template\n      *ngIf=\"item.children && item.expanded\"\n      [ngTemplateOutlet]=\"ganttItems\"\n      [ngTemplateOutletContext]=\"{ items: item.children }\"\n    ></ng-template>\n  </ng-container>\n</ng-template>\n","import {\n    Component,\n    OnInit,\n    ElementRef,\n    ChangeDetectionStrategy,\n    Input,\n    EventEmitter,\n    Output,\n    ChangeDetectorRef,\n    NgZone,\n    ContentChildren,\n    QueryList,\n    AfterViewInit,\n    ContentChild,\n    TemplateRef,\n    forwardRef,\n    Inject\n} from '@angular/core';\nimport { startWith, takeUntil, take, finalize } from 'rxjs/operators';\nimport { Subject, Observable, from } from 'rxjs';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\nimport { GanttLinkDragEvent, GanttLineClickEvent, GanttItemInternal, GanttItem, GanttSelectedEvent } from './class';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { sideWidth } from './gantt.styles';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';\nimport { defaultColumnWidth } from './components/table/gantt-table.component';\nimport { GanttGlobalConfig, GANTT_GLOBAL_CONFIG } from './gantt.config';\n@Component({\n    selector: 'ngx-gantt',\n    templateUrl: './gantt.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: GANTT_UPPER_TOKEN,\n            useExisting: NgxGanttComponent\n        },\n        {\n            provide: GANTT_ABSTRACT_TOKEN,\n            useExisting: forwardRef(() => NgxGanttComponent)\n        }\n    ]\n})\nexport class NgxGanttComponent extends GanttUpper implements OnInit, AfterViewInit {\n    @Input() maxLevel = 2;\n\n    @Input() async: boolean;\n\n    @Input() childrenResolve: (GanttItem) => Observable<GanttItem[]>;\n\n    @Input() override linkable: boolean;\n\n    @Output() linkDragStarted = new EventEmitter<GanttLinkDragEvent>();\n\n    @Output() override linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n    @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n    @Output() selectedChange = new EventEmitter<GanttSelectedEvent>();\n\n    @ContentChild(NgxGanttTableComponent) table: NgxGanttTableComponent;\n\n    @ContentChildren(NgxGanttTableColumnComponent, { descendants: true }) columns: QueryList<NgxGanttTableColumnComponent>;\n\n    @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n    private ngUnsubscribe$ = new Subject();\n\n    public sideTableWidth = sideWidth;\n\n    constructor(\n        elementRef: ElementRef<HTMLElement>,\n        cdr: ChangeDetectorRef,\n        ngZone: NgZone,\n        @Inject(GANTT_GLOBAL_CONFIG) config: GanttGlobalConfig\n    ) {\n        super(elementRef, cdr, ngZone, config);\n    }\n\n    override ngOnInit() {\n        super.ngOnInit();\n        // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means\n        // the `onStable` will never emit any value.\n        const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n        // Normally this isn't in the zone, but it can cause performance regressions for apps\n        // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n        this.ngZone.runOutsideAngular(() => {\n            onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n                this.dragContainer.linkDragStarted.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n                    this.linkDragStarted.emit(event);\n                });\n                this.dragContainer.linkDragEnded.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n                    this.linkDragEnded.emit(event);\n                });\n            });\n        });\n    }\n\n    ngAfterViewInit() {\n        this.columns.changes.pipe(startWith(true), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n            this.columns.forEach((column) => {\n                if (!column.columnWidth) {\n                    column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n                }\n            });\n            this.cdr.detectChanges();\n        });\n    }\n\n    expandChildren(item: GanttItemInternal) {\n        if (!item.expanded) {\n            item.setExpand(true);\n            if (this.async && this.childrenResolve && item.children.length === 0) {\n                item.loading = true;\n                this.childrenResolve(item.origin)\n                    .pipe(\n                        take(1),\n                        finalize(() => {\n                            item.loading = false;\n                            this.expandChange.emit();\n                            this.cdr.detectChanges();\n                        })\n                    )\n                    .subscribe((items) => {\n                        item.addChildren(items);\n                        this.computeItemsRefs(...item.children);\n                    });\n            } else {\n                this.computeItemsRefs(...item.children);\n                this.expandChange.emit();\n            }\n        } else {\n            item.setExpand(false);\n            this.expandChange.emit();\n        }\n    }\n\n    selectItem(selectEvent: GanttSelectedEvent) {\n        if (!this.selectable) {\n            return;\n        }\n        const { event, selectedValue } = selectEvent;\n        this.selectionModel.toggle((selectedValue as GanttItem).id);\n\n        const selectedIds = this.selectionModel.selected;\n        if (this.multiple) {\n            const _selectedValue = this.getGanttItems(selectedIds).map((item) => item.origin);\n            this.selectedChange.emit({ event, selectedValue: _selectedValue });\n        } else {\n            const _selectedValue = this.getGanttItem(selectedIds[0])?.origin;\n            this.selectedChange.emit({ event, selectedValue: _selectedValue });\n        }\n    }\n}\n","<ngx-gantt-root>\n  <ng-template #sideTemplate>\n    <gantt-table\n      [groups]=\"groups\"\n      [items]=\"items\"\n      [columns]=\"columns\"\n      [groupTemplate]=\"groupTemplate\"\n      [emptyTemplate]=\"tableEmptyTemplate\"\n      [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n      [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n      (itemClick)=\"selectItem($event)\"\n    ></gantt-table>\n  </ng-template>\n  <ng-template #mainTemplate>\n    <gantt-main\n      [groups]=\"groups\"\n      [items]=\"items\"\n      [groupHeaderTemplate]=\"groupHeaderTemplate\"\n      [itemTemplate]=\"itemTemplate\"\n      [barTemplate]=\"barTemplate\"\n      [rangeTemplate]=\"rangeTemplate\"\n      (barClick)=\"barClick.emit($event)\"\n      (lineClick)=\"lineClick.emit($event)\"\n    >\n    </gantt-main>\n  </ng-template>\n</ngx-gantt-root>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxGanttComponent } from './gantt.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { GanttCalendarComponent } from './components/calendar/calendar.component';\nimport { GanttTableComponent } from './components/table/gantt-table.component';\nimport { NgxGanttBarComponent } from './components/bar/bar.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { GanttIconComponent } from './components/icon/icon.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttLinksComponent } from './components/links/links.component';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttRangeComponent } from './components/range/range.component';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from './gantt.pipe';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { GANTT_GLOBAL_CONFIG, defaultConfig } from './gantt.config';\n\n@NgModule({\n    imports: [CommonModule, DragDropModule],\n    exports: [\n        NgxGanttComponent,\n        NgxGanttTableComponent,\n        NgxGanttTableColumnComponent,\n        NgxGanttRootComponent,\n        NgxGanttBarComponent,\n        NgxGanttRangeComponent\n    ],\n    declarations: [\n        NgxGanttComponent,\n        NgxGanttTableComponent,\n        NgxGanttTableColumnComponent,\n        GanttTableComponent,\n        GanttMainComponent,\n        GanttCalendarComponent,\n        GanttLinksComponent,\n        NgxGanttBarComponent,\n        GanttIconComponent,\n        GanttDragBackdropComponent,\n        NgxGanttRangeComponent,\n        NgxGanttRootComponent,\n        IsGanttRangeItemPipe,\n        IsGanttBarItemPipe,\n        IsGanttCustomItemPipe\n    ],\n    providers: [\n        {\n            provide: GANTT_GLOBAL_CONFIG,\n            useValue: defaultConfig\n        }\n    ]\n})\nexport class NgxGanttModule {}\n","/*\n * Public API Surface of gantt\n */\n\nexport * from './gantt.module';\nexport * from './gantt-upper';\nexport * from './root.component';\nexport * from './gantt.component';\nexport * from './table/gantt-table.component';\nexport * from './table/gantt-column.component';\nexport * from './components/bar/bar.component';\nexport * from './components/range/range.component';\nexport * from './utils/date';\nexport * from './class';\nexport * from './views/view';\nexport * from './gantt-item-upper';\nexport * from './gantt.pipe';\nexport * from './gantt-print.service';\nexport * from './gantt.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["viewOptions","i1.GanttIconComponent","i3","i4.IsGanttRangeItemPipe","i1","i3.GanttPrintService","i4.GanttCalendarComponent","i5.GanttDragBackdropComponent","i6","i1.GanttDragContainer","i2.GanttDomService","i3.GanttDragContainer","i4.NgxGanttRootComponent","i1.GanttLinksComponent","i2.NgxGanttRangeComponent","i3.NgxGanttBarComponent","i4","i5.IsGanttCustomItemPipe","i5.IsGanttRangeItemPipe","i5.IsGanttBarItemPipe","i1.NgxGanttRootComponent","i2.GanttTableComponent","i3.GanttMainComponent"],"mappings":"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"}