@worktile/gantt 18.0.0 → 18.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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/link.ts","../../../packages/gantt/src/class/item.ts","../../../packages/gantt/src/class/group.ts","../../../packages/gantt/src/class/view-type.ts","../../../packages/gantt/src/class/baseline.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/utils/helpers.ts","../../../packages/gantt/src/gantt-upper.ts","../../../packages/gantt/src/gantt-drag-container.ts","../../../packages/gantt/src/utils/drag-scroll.ts","../../../packages/gantt/src/utils/passive-listeners.ts","../../../packages/gantt/src/gantt-dom.service.ts","../../../packages/gantt/src/components/bar/bar-drag.ts","../../../packages/gantt/src/gantt.styles.ts","../../../packages/gantt/src/gantt-item-upper.ts","../../../packages/gantt/src/components/bar/bar.component.ts","../../../packages/gantt/src/components/bar/bar.component.html","../../../packages/gantt/src/components/baseline/baseline.component.ts","../../../packages/gantt/src/components/baseline/baseline.component.html","../../../packages/gantt/src/components/calendar/grid/calendar-grid.component.ts","../../../packages/gantt/src/components/calendar/grid/calendar-grid.component.html","../../../packages/gantt/src/components/calendar/header/calendar-header.component.ts","../../../packages/gantt/src/components/calendar/header/calendar-header.component.html","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.ts","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.html","../../../packages/gantt/src/components/icon/icons.ts","../../../packages/gantt/src/components/icon/icon.component.ts","../../../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/components/loader/loader.component.ts","../../../packages/gantt/src/gantt.pipe.ts","../../../packages/gantt/src/components/range/range.component.ts","../../../packages/gantt/src/components/range/range.component.html","../../../packages/gantt/src/components/main/gantt-main.component.ts","../../../packages/gantt/src/components/main/gantt-main.component.html","../../../packages/gantt/src/gantt-abstract.ts","../../../packages/gantt/src/utils/set-style-with-vendor-prefix.ts","../../../packages/gantt/src/components/table/header/gantt-table-header.component.ts","../../../packages/gantt/src/components/table/header/gantt-table-header.component.html","../../../packages/gantt/src/components/table/body/gantt-table-body.component.ts","../../../packages/gantt/src/components/table/body/gantt-table-body.component.html","../../../packages/gantt/src/components/toolbar/toolbar.component.ts","../../../packages/gantt/src/components/toolbar/toolbar.component.html","../../../packages/gantt/src/gantt-print.service.ts","../../../packages/gantt/src/root.component.ts","../../../packages/gantt/src/root.component.html","../../../packages/gantt/src/table/gantt-column.component.ts","../../../packages/gantt/src/table/gantt-table.component.ts","../../../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 | string,\n public additions?: {\n isWeekend: boolean;\n isToday: boolean;\n },\n public style?: Partial<CSSStyleDeclaration>\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 current?: GanttItem<T>;\n selectedValue: GanttItem<T> | GanttItem<T>[];\n}\n\nexport class GanttTableDragDroppedEvent<T = unknown> {\n source: GanttItem<T>;\n sourceParent: GanttItem<T>;\n target: GanttItem<T>;\n targetParent: GanttItem<T>;\n dropPosition: GanttTableDropPosition;\n}\n\nexport class GanttTableDragStartedEvent<T = unknown> {\n source: GanttItem<T>;\n sourceParent: GanttItem<T>;\n}\n\nexport class GanttTableDragEndedEvent<T = unknown> {\n source: GanttItem<T>;\n sourceParent: GanttItem<T>;\n}\n\nexport type GanttTableDropPosition = 'before' | 'inside' | 'after';\n\nexport class GanttTableDragEnterPredicateContext<T = unknown> {\n source: GanttItem<T>;\n target: GanttItem<T>;\n dropPosition: GanttTableDropPosition;\n}\n\nexport class GanttVirtualScrolledIndexChangeEvent {\n index: number;\n renderedRange: {\n start: number;\n end: number;\n };\n count: number;\n}\n","import {\n addDays,\n addHours,\n addMinutes,\n addMonths,\n addQuarters,\n addSeconds,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n endOfDay,\n endOfMonth,\n endOfQuarter,\n endOfWeek,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n getUnixTime,\n getWeek,\n isToday,\n isWeekend,\n setDate,\n startOfDay,\n startOfMonth,\n startOfQuarter,\n startOfWeek,\n startOfYear,\n startOfMinute,\n startOfHour,\n endOfHour,\n endOfMinute\n} from 'date-fns';\n\nexport {\n Locale,\n addDays,\n addHours,\n addMinutes,\n addMonths,\n addQuarters,\n addSeconds,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n differenceInCalendarQuarters,\n differenceInDays,\n eachDayOfInterval,\n eachMonthOfInterval,\n eachWeekOfInterval,\n endOfDay,\n endOfMonth,\n endOfQuarter,\n endOfWeek,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n getUnixTime,\n getWeek,\n isToday,\n isWeekend,\n setDate,\n startOfDay,\n startOfMonth,\n startOfQuarter,\n startOfWeek,\n startOfYear,\n startOfMinute,\n startOfHour,\n endOfMinute,\n endOfHour,\n differenceInMinutes,\n eachHourOfInterval\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 }): 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 startOfMinute(): GanttDate {\n return new GanttDate(startOfMinute(this.value));\n }\n\n startOfHour(): GanttDate {\n return new GanttDate(startOfHour(this.value));\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 endOfMinute(): GanttDate {\n return new GanttDate(endOfMinute(this.value));\n }\n\n endOfHour(): GanttDate {\n return new GanttDate(endOfHour(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","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 = '#6698ff'\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 { GanttLink, GanttLinkType } from './link';\nimport { GanttViewType } from './view-type';\nimport { GanttView } from '../views/view';\n\nconst DEFAULT_FILL_INCREMENT_WIDTH = 120;\n\nexport interface 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 itemDraggable?: 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 | null;\n end: GanttDate | null;\n links: GanttLink[];\n color?: string;\n barStyle?: Partial<CSSStyleDeclaration>;\n draggable?: boolean;\n itemDraggable?: 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 level: number;\n\n get refs() {\n return this.refs$.getValue();\n }\n\n refs$ = new BehaviorSubject<{ width: number; x: number; y: number }>(null as any);\n\n constructor(item: GanttItem, level: number, private view?: GanttView) {\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.itemDraggable = this.origin.itemDraggable;\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.level = level;\n this.children = (item.children || []).map((subItem) => {\n return new GanttItemInternal(subItem, level + 1, view);\n });\n this.type = this.origin.type || GanttItemType.bar;\n this.progress = this.origin.progress;\n this.fillDateWhenStartOrEndIsNil(item);\n }\n\n private fillDateWhenStartOrEndIsNil(item: GanttItem) {\n if (this.view) {\n if (item.start && !item.end) {\n this.end = this.view.getDateByXPoint(this.view.getXPointByDate(new GanttDate(item.start)) + DEFAULT_FILL_INCREMENT_WIDTH);\n }\n if (!item.start && item.end) {\n this.start = this.view.getDateByXPoint(this.view.getXPointByDate(new GanttDate(item.end)) - DEFAULT_FILL_INCREMENT_WIDTH);\n }\n }\n }\n\n updateRefs(refs: GanttItemRefs) {\n this.refs$.next(refs);\n }\n\n updateDate(start: GanttDate, end: GanttDate) {\n this.start = start;\n this.end = end;\n this.origin.start = this.start.getUnixTime();\n this.origin.end = this.end.getUnixTime();\n }\n\n updateLevel(level: number) {\n this.level = level;\n }\n\n addChildren(items: GanttItem[]) {\n this.origin.children = items;\n this.children = (items || []).map((subItem) => {\n return new GanttItemInternal(subItem, this.level + 1, this.view);\n });\n }\n\n setExpand(expanded: boolean) {\n this.expanded = expanded;\n this.origin.expanded = expanded;\n }\n\n addLink(link: GanttLink) {\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","export enum GanttViewType {\n day = 'day',\n quarter = 'quarter',\n month = 'month',\n year = 'year',\n week = 'week',\n hour = 'hour'\n}\n\nexport const ganttViews = [\n {\n name: '日',\n value: GanttViewType.day\n },\n {\n name: '周',\n value: GanttViewType.week\n },\n {\n name: '月',\n value: GanttViewType.month\n },\n {\n name: '季',\n value: GanttViewType.quarter\n },\n {\n name: '年',\n value: GanttViewType.year\n }\n];\n","import { BehaviorSubject } from 'rxjs';\nimport { GanttDate } from '../utils/date';\nimport { GanttItemRefs } from './item';\n\nexport interface GanttBaselineItem {\n id: string;\n start?: number;\n end?: number;\n}\n\nexport class GanttBaselineItemInternal {\n id: string;\n start: GanttDate;\n end: GanttDate;\n origin: GanttBaselineItem;\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: GanttBaselineItem) {\n this.origin = item;\n this.id = this.origin.id;\n this.start = item.start ? new GanttDate(item.start) : null;\n this.end = item.end ? new GanttDate(item.end) : null;\n }\n\n updateRefs(refs: GanttItemRefs) {\n this.refs$.next(refs);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Locale } from 'date-fns';\nimport { GanttLinkLineType, GanttLinkOptions, GanttLinkType } from './class/link';\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 GanttDateOptions {\n locale?: Locale;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nexport interface GanttStyleOptions {\n headerHeight?: number;\n lineHeight?: number;\n barHeight?: number;\n}\n\nexport interface GanttGlobalConfig {\n dateFormat?: GanttDateFormat;\n dateOptions?: GanttDateOptions;\n linkOptions?: GanttLinkOptions;\n styleOptions?: GanttStyleOptions;\n}\n\nexport const defaultConfig: GanttGlobalConfig = {\n dateFormat: {\n hour: 'HH:mm',\n day: 'M月d日',\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 styleOptions: {\n headerHeight: 44,\n lineHeight: 44,\n barHeight: 22\n }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n","import { differenceInCalendarDays, differenceInHours, differenceInMinutes } from 'date-fns';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDateFormat, defaultConfig } from '../gantt.config';\nimport { GanttDate, GanttDateUtil, differenceInDays } from '../utils/date';\n\nexport const primaryDatePointTop = '40%';\n\nexport const secondaryDatePointTop = '80%';\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 datePrecisionUnit?: 'day' | 'hour' | 'minute';\n dragPreviewDateFormat?: string;\n // custom key and value\n [key: string]: any;\n}\n\nconst viewOptions: GanttViewOptions = {\n min: new GanttDate().addYears(-1).startOfYear(),\n max: new GanttDate().addYears(1).endOfYear(),\n dateFormat: defaultConfig.dateFormat,\n datePrecisionUnit: 'day',\n dragPreviewDateFormat: 'MM-dd'\n};\n\nexport abstract class GanttView {\n viewType: GanttViewType;\n\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.viewStartOf(start.date)\n : this.viewStartOf(start.date.value < this.options.start.value ? start.date : this.options.start);\n const endDate = end.isCustom\n ? this.viewEndOf(end.date)\n : this.viewEndOf(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 viewStartOf(date: GanttDate): GanttDate;\n\n abstract viewEndOf(date: GanttDate): GanttDate;\n\n /**\n * deprecated, please use viewStartOf()\n * @deprecated\n */\n startOf(date: GanttDate): GanttDate {\n return this.viewStartOf(date);\n }\n\n /**\n * deprecated, please use viewEndOf()\n * @deprecated\n */\n endOf(date: GanttDate): GanttDate {\n return this.viewEndOf(date);\n }\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 startOfPrecision(date: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return date.startOfMinute();\n case 'hour':\n return date.startOfHour();\n default:\n return date.startOfDay();\n }\n }\n\n endOfPrecision(date: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return date.endOfMinute();\n case 'hour':\n return date.endOfHour();\n default:\n return date.endOfDay();\n }\n }\n\n differenceByPrecisionUnit(dateLeft: GanttDate, dateRight: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return differenceInMinutes(dateLeft.value, dateRight.value);\n case 'hour':\n return differenceInHours(dateLeft.value, dateRight.value);\n default:\n return differenceInCalendarDays(dateLeft.value, dateRight.value);\n }\n }\n\n 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.viewStartOf(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.viewEndOf(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.viewStartOf(start);\n end = this.viewEndOf(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.max(Math.floor(x / this.getCellWidth()), 0);\n const matchDate = this.secondaryDatePoints[Math.min(this.secondaryDatePoints.length - 1, 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);\n return matchDate?.start.addDays(day);\n }\n }\n\n // 获取指定时间范围的宽度\n getDateRangeWidth(start: GanttDate, end: GanttDate) {\n // addSeconds(1) 是因为计算相差天会以一个整天来计算 end时间一般是59分59秒不是一个整天,所以需要加1\n return this.getDateIntervalWidth(this.startOfPrecision(start), this.endOfPrecision(end).addSeconds(1));\n }\n\n // 根据日期精度获取最小时间范围的宽度\n getMinRangeWidthByPrecisionUnit(date: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return this.getDayOccupancyWidth(date) / 24 / 60;\n case 'hour':\n return this.getDayOccupancyWidth(date) / 24;\n default:\n return this.getDayOccupancyWidth(date);\n }\n }\n}\n","import { GanttView, GanttViewOptions, GanttViewDate, secondaryDatePointTop, primaryDatePointTop } from './view';\nimport { GanttDate, differenceInCalendarQuarters, eachMonthOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttViewType } from '../class';\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 override viewType = GanttViewType.month;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfQuarter();\n }\n\n viewEndOf(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, GanttViewDate, secondaryDatePointTop, primaryDatePointTop } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarQuarters } from 'date-fns';\nimport { GanttViewType } from '../class';\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 override viewType = GanttViewType.quarter;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n viewEndOf(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 { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDate, eachDayOfInterval, eachWeekOfInterval } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 35,\n start: new GanttDate().startOfYear().startOfWeek(),\n end: new GanttDate().endOfYear().endOfWeek(),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewDay extends GanttView {\n override showWeekBackdrop = true;\n\n override showTimeline = false;\n\n override viewType = GanttViewType.day;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfWeek();\n }\n\n viewEndOf(date: GanttDate) {\n return date.endOfWeek();\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 });\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 { GanttViewType } from '../class';\nimport { 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(),\n end: new GanttDate().endOfYear().endOfWeek(),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewWeek extends GanttView {\n override viewType = GanttViewType.week;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfWeek();\n }\n\n viewEndOf(date: GanttDate) {\n return date.endOfWeek();\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 });\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.addSeconds(1).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, GanttViewDate, primaryDatePointTop, secondaryDatePointTop } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarYears } from 'date-fns';\nimport { GanttViewType } from '../class';\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 override viewType = GanttViewType.year;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n viewEndOf(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 = '60%';\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 { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDate, differenceInMinutes, eachDayOfInterval, eachHourOfInterval } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 80,\n start: new GanttDate().startOfMonth(),\n end: new GanttDate().endOfMonth(),\n datePrecisionUnit: 'minute',\n addAmount: 1,\n addUnit: 'week',\n dragPreviewDateFormat: 'HH:mm'\n};\n\nexport class GanttViewHour extends GanttView {\n override showWeekBackdrop = true;\n\n override showTimeline = true;\n\n override viewType = GanttViewType.hour;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfWeek();\n }\n\n viewEndOf(date: GanttDate) {\n return date.endOfWeek();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 24;\n }\n\n getDayOccupancyWidth(): number {\n return this.cellWidth * 60;\n }\n\n private getHourOccupancyWidth() {\n return this.getDayOccupancyWidth() / 60;\n }\n\n getPrimaryDatePoints(): 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 = this.start.addDays(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\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 override getTodayXPoint(): number {\n const toady = new GanttDate().startOfMinute();\n if (toady.value > this.start.value && toady.value < this.end.value) {\n const x = this.getXPointByDate(toady);\n return x;\n } else {\n return null;\n }\n }\n\n override getDateIntervalWidth(start: GanttDate, end: GanttDate) {\n let result = 0;\n const minutes = differenceInMinutes(end.value, start.value);\n for (let i = 0; i < minutes; i++) {\n result += this.getHourOccupancyWidth() / 60;\n }\n result = minutes >= 0 ? result : -result;\n return Number(result.toFixed(3));\n }\n\n override getDateByXPoint(x: number) {\n const hourWidth = this.getHourOccupancyWidth();\n const indexOfSecondaryDate = Math.max(Math.floor(x / hourWidth), 0);\n const matchDate = this.secondaryDatePoints[Math.min(this.secondaryDatePoints.length - 1, indexOfSecondaryDate)];\n const minuteWidth = hourWidth / 60;\n const underOneHourMinutes = Math.floor((x % hourWidth) / minuteWidth);\n return matchDate?.start.addMinutes(underOneHourMinutes);\n }\n}\n","import { GanttViewOptions, GanttViewDate, GanttView } 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\nconst ganttViewsMap = {\n [GanttViewType.hour]: GanttViewHour,\n [GanttViewType.day]: GanttViewDay,\n [GanttViewType.week]: GanttViewWeek,\n [GanttViewType.month]: GanttViewMonth,\n [GanttViewType.quarter]: GanttViewQuarter,\n [GanttViewType.year]: GanttViewYear\n};\n\nexport function registerView<T extends typeof GanttView>(type: string, view: T) {\n ganttViewsMap[type] = view;\n}\n\nexport function createViewFactory(type: GanttViewType, start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n return new ganttViewsMap[type](start, end, options);\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\n// export 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 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\nexport function keyBy<T>(array: T[], key: T extends object ? keyof T : never): { [key: string]: T } {\n const result: { [key: string]: T } = {};\n array.forEach((item) => {\n const keyValue = item[key];\n (result as any)[keyValue] = item;\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 GanttToolbarOptions\n} from './class';\nimport { GanttView, GanttViewOptions } from './views/view';\nimport { createViewFactory } from './views/factory';\nimport { GanttDate } from './utils/date';\nimport { uniqBy, flatten, recursiveItems, getFlatItems, Dictionary, keyBy } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, GanttStyleOptions, defaultConfig } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { GanttBaselineItem, GanttBaselineItemInternal } from './class/baseline';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\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 // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('baselineItems') originBaselineItems: GanttBaselineItem[] = [];\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: GanttStyleOptions;\n\n @Input() showToolbar = false;\n\n @Input() toolbarOptions: GanttToolbarOptions = {\n viewTypes: [GanttViewType.day, GanttViewType.month, GanttViewType.year]\n };\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 @Output() viewChange = new EventEmitter<GanttView>();\n\n @Output() expandChange = new EventEmitter<GanttItemInternal | GanttGroupInternal>();\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('baseline', { static: true }) baselineTemplate: TemplateRef<any>;\n\n @ContentChild('group', { static: true }) groupTemplate: TemplateRef<any>;\n\n @ContentChild('groupHeader', { static: true }) groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild('toolbar', { static: true }) toolbarTemplate: TemplateRef<any>;\n\n public linkable: boolean;\n\n public computeAllRefs = true;\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 baselineItems: GanttBaselineItemInternal[] = [];\n\n public baselineItemsMap: Dictionary<GanttBaselineItemInternal> = {};\n\n // public viewChange = new EventEmitter<GanttView>();\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 public table?: NgxGanttTableComponent;\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.viewOptions.dateFormat = Object.assign({}, defaultConfig.dateFormat, this.config.dateFormat, this.viewOptions.dateFormat);\n this.viewOptions.styleOptions = Object.assign(\n {},\n defaultConfig.styleOptions,\n this.config.styleOptions,\n this.viewOptions.styleOptions\n );\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, 0, this.view);\n group.items.push(item);\n }\n });\n } else {\n this.originItems.forEach((origin) => {\n const item = new GanttItemInternal(origin, 0, this.view);\n this.items.push(item);\n });\n }\n }\n\n private setupBaselineItems() {\n this.originBaselineItems = uniqBy(this.originBaselineItems, 'id');\n this.baselineItems = [];\n\n this.originBaselineItems.forEach((origin) => {\n const item = new GanttBaselineItemInternal(origin);\n this.baselineItems.push(item);\n });\n\n this.baselineItemsMap = keyBy(this.baselineItems, 'id');\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 if (this.computeAllRefs) {\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\n private initSelectionModel() {\n return new SelectionModel(this.multiple, []);\n }\n\n expandGroups(expanded: boolean) {\n this.groups.forEach((group) => {\n group.setExpand(expanded);\n });\n this.expandChange.next(null);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n this.styles = Object.assign({}, defaultConfig.styleOptions, this.config.styleOptions, this.styles);\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\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 const disabledLoadOnScroll = this.disabledLoadOnScroll;\n this.dragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {\n this.disabledLoadOnScroll = true;\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.disabledLoadOnScroll = disabledLoadOnScroll;\n this.dragEnded.emit(event);\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 && changes.viewType.currentValue !== changes.viewType.previousValue) {\n this.changeView(changes.viewType.currentValue);\n }\n if (changes.viewOptions) {\n this.changeView(this.viewType);\n }\n if (changes.originItems || changes.originGroups) {\n this.setupExpandedState();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n }\n\n if (changes.originBaselineItems) {\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\n }\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n computeItemsRefs(...items: GanttItemInternal[] | GanttBaselineItemInternal[]) {\n items.forEach((item) => {\n item.updateRefs({\n width: item.start && item.end ? this.view.getDateRangeWidth(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 // public functions\n\n expandGroup(group: GanttGroupInternal) {\n group.setExpand(!group.expanded);\n this.expandChange.emit(group);\n this.cdr.detectChanges();\n }\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 changeView(type: GanttViewType) {\n this.viewType = type;\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\n this.viewChange.emit(this.view);\n }\n\n rerenderView() {\n this.changeView(this.viewType);\n }\n}\n\nexport const GANTT_UPPER_TOKEN = new InjectionToken<GanttUpper>('GANTT_UPPER_TOKEN');\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","/** Horizontal direction in which we can auto-scroll. */\nexport const enum AutoScrollHorizontalDirection {\n NONE,\n LEFT,\n RIGHT\n}\n\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nexport function getHorizontalScrollDirection(clientRect: DOMRect, pointerX: number) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return AutoScrollHorizontalDirection.LEFT;\n } else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return AutoScrollHorizontalDirection.RIGHT;\n }\n\n return AutoScrollHorizontalDirection.NONE;\n}\n\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nexport function isPointerNearClientRect(rect: DOMRect, threshold: number, pointerX: number, pointerY: number): boolean {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n\n return pointerY > top - yThreshold && pointerY < bottom + yThreshold && pointerX > left - xThreshold && pointerX < right + xThreshold;\n}\n\n/**\n * Gets the speed rate of auto scrolling\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param horizontalScrollDirection The direction in which the mouse is dragged horizontally\n */\nexport function getAutoScrollSpeedRates(clientRect: DOMRect, pointerX: number, horizontalScrollDirection: AutoScrollHorizontalDirection) {\n let autoScrollSpeedRates = 4;\n const speedLevels = 4;\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n\n if (horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n autoScrollSpeedRates = Math.ceil((xThreshold - (pointerX > left ? pointerX - left : 0)) / (xThreshold / speedLevels));\n }\n if (horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n autoScrollSpeedRates = Math.ceil((xThreshold - (right > pointerX ? right - pointerX : 0)) / (xThreshold / speedLevels));\n }\n\n return autoScrollSpeedRates;\n}\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 verticalScrollContainer: Element;\n\n public calendarHeader: Element;\n\n public mainItems: Element;\n\n public calendarOverlay: Element;\n\n public linksOverlay: Element;\n\n private mainFooter: Element;\n\n private mainScrollbar: 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 const scrollObservers = [\n fromEvent(this.mainContainer, 'scroll', passiveListenerOptions),\n fromEvent(this.sideContainer, 'scroll', passiveListenerOptions)\n ];\n\n this.mainFooter && scrollObservers.push(fromEvent(this.mainFooter, 'scroll', passiveListenerOptions));\n this.mainScrollbar && scrollObservers.push(fromEvent(this.mainScrollbar, 'scroll', passiveListenerOptions));\n\n this.ngZone.runOutsideAngular(() =>\n merge(...scrollObservers)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n this.syncScroll(event);\n })\n );\n }\n\n private syncScroll(event: Event) {\n const target = event.currentTarget as HTMLElement;\n const classList = target.classList;\n\n if (!classList.contains('gantt-side-container')) {\n this.mainContainer.scrollLeft = target.scrollLeft;\n this.calendarHeader.scrollLeft = target.scrollLeft;\n this.calendarOverlay.scrollLeft = target.scrollLeft;\n this.mainScrollbar && (this.mainScrollbar.scrollLeft = target.scrollLeft);\n this.mainFooter && (this.mainFooter.scrollLeft = target.scrollLeft);\n if (classList.contains('gantt-main-container')) {\n this.sideContainer.scrollTop = target.scrollTop;\n this.mainContainer.scrollTop = target.scrollTop;\n }\n } else {\n this.sideContainer.scrollTop = target.scrollTop;\n this.mainContainer.scrollTop = target.scrollTop;\n }\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.mainScrollbar = this.root.getElementsByClassName('gantt-main-scrollbar')[0];\n this.mainFooter = this.root.getElementsByClassName('gantt-container-footer')[0];\n this.verticalScrollContainer = this.root.getElementsByClassName('gantt-scroll-container')[0];\n const mainItems = this.mainContainer.getElementsByClassName('gantt-main-items')[0];\n const mainGroups = this.mainContainer.getElementsByClassName('gantt-main-groups')[0];\n this.mainItems = mainItems || mainGroups;\n this.calendarHeader = this.root.getElementsByClassName('gantt-calendar-header')[0];\n this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-grid')[0];\n\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 const scrollObservers = [fromEvent(this.mainContainer, 'scroll', options)];\n this.mainFooter && scrollObservers.push(fromEvent(this.mainFooter, 'scroll', options));\n this.mainScrollbar && scrollObservers.push(fromEvent(this.mainScrollbar, 'scroll', options));\n\n return new Observable<ScrollEvent>((subscriber) =>\n this.ngZone.runOutsideAngular(() =>\n merge(...scrollObservers)\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.calendarHeader.scrollLeft = this.mainContainer.scrollLeft;\n this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n this.mainScrollbar && (this.mainScrollbar.scrollLeft = this.mainContainer.scrollLeft);\n this.mainFooter && (this.mainFooter.scrollLeft = this.mainContainer.scrollLeft);\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { ElementRef, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { Subject, animationFrameScheduler, fromEvent, interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttViewType } from '../../class';\nimport { GanttItemInternal } from '../../class/item';\nimport { GanttLinkType } from '../../class/link';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { GanttDragContainer, InBarPosition } from '../../gantt-drag-container';\nimport { GanttUpper } from '../../gantt-upper';\nimport { GanttDate } from '../../utils/date';\nimport {\n AutoScrollHorizontalDirection,\n getAutoScrollSpeedRates,\n getHorizontalScrollDirection,\n isPointerNearClientRect\n} from '../../utils/drag-scroll';\nimport { passiveListenerOptions } from '../../utils/passive-listeners';\n\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n\nconst dragMinWidth = 10;\nconst autoScrollBaseStep = 2;\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 get barHandleDragMoveAndScrollDistance() {\n return this.barHandleDragMoveDistance + this.dragScrollDistance;\n }\n\n private get autoScrollStep() {\n return Math.pow(autoScrollBaseStep, this.autoScrollSpeedRates);\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 /** Used to signal to the current auto-scroll sequence when to stop. */\n private stopScrollTimers$ = new Subject<void>();\n\n /** container element scrollLeft */\n private containerScrollLeft: number;\n\n /** move distance when drag bar */\n private barDragMoveDistance = 0;\n\n /** move distance when drag bar handle */\n private barHandleDragMoveDistance = 0;\n\n /** scrolling state when drag */\n private dragScrolling = false;\n\n /** dragScrollDistance */\n private dragScrollDistance = 0;\n\n /** Horizontal direction in which the list is currently scrolling. */\n private _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\n /** Record bar days when bar handle drag move. */\n private barHandleDragMoveRecordDiffs: number;\n\n /** Speed ratio for auto scroll */\n private autoScrollSpeedRates = 1;\n\n constructor(\n private dragDrop: DragDrop,\n private dom: GanttDomService,\n private dragContainer: GanttDragContainer,\n private _ngZone: NgZone\n ) {}\n\n private createDragRef<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DragRef<T> {\n const dragRef = this.dragDrop.createDrag(element);\n return dragRef;\n }\n\n private createDragScrollEvent(dragRef: DragRef) {\n return fromEvent(this.dom.mainContainer, 'scroll', passiveListenerOptions).pipe(takeUntil(dragRef.ended));\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.createDragRef(this.barElement);\n dragRef.lockAxis = 'x';\n dragRef.withBoundaryElement(this.dom.mainItems as HTMLElement);\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.containerScrollLeft = this.dom.mainContainer.scrollLeft;\n this.createDragScrollEvent(dragRef).subscribe(() => {\n if (dragRef.isDragging()) {\n const dragScrollDistance = this.dom.mainContainer.scrollLeft - this.containerScrollLeft;\n this.dragScrollDistance = dragScrollDistance;\n dragRef['_boundaryRect'] = this.dom.mainItems.getBoundingClientRect();\n this.barDragMove();\n }\n });\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n\n dragRef.moved.subscribe((event) => {\n this.startScrollingIfNecessary(event.pointerPosition.x, event.pointerPosition.y);\n this.barDragMoveDistance = event.distance.x;\n if (!this.dragScrolling) {\n this.barDragMove();\n }\n });\n\n dragRef.ended.subscribe((event) => {\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n event.source.reset();\n this.stopScrolling();\n this.dragScrolling = false;\n this.dragScrollDistance = 0;\n this.barDragMoveDistance = 0;\n this.item.updateRefs({\n width: this.ganttUpper.view.getDateRangeWidth(this.item.start, this.item.end),\n x: this.ganttUpper.view.getXPointByDate(this.item.start),\n y: (this.ganttUpper.styles.lineHeight - this.ganttUpper.styles.barHeight) / 2 - 1\n });\n this.dragContainer.dragEnded.emit({ item: this.item.origin });\n });\n this.barDragRef = dragRef;\n\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.createDragRef(handle);\n dragRef.lockAxis = 'x';\n dragRef.withBoundaryElement(this.dom.mainItems as HTMLElement);\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.containerScrollLeft = this.dom.mainContainer.scrollLeft;\n this.createDragScrollEvent(dragRef).subscribe(() => {\n if (dragRef.isDragging()) {\n const dragScrollDistance = this.dom.mainContainer.scrollLeft - this.containerScrollLeft;\n this.dragScrollDistance = dragScrollDistance;\n dragRef['_boundaryRect'] = this.dom.mainItems.getBoundingClientRect();\n\n if (this.dragScrolling && this.isStartGreaterThanEndWhenBarHandleDragMove(isBefore)) {\n this.stopScrolling();\n this.dragScrolling = false;\n }\n\n if (isBefore) {\n this.barBeforeHandleDragMove();\n } else {\n this.barAfterHandleDragMove();\n }\n }\n });\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n\n dragRef.moved.subscribe((event) => {\n if (this.barHandleDragMoveRecordDiffs && this.barHandleDragMoveRecordDiffs > 0) {\n this.startScrollingIfNecessary(event.pointerPosition.x, event.pointerPosition.y);\n }\n this.barHandleDragMoveDistance = event.distance.x;\n if (!this.dragScrolling) {\n if (isBefore) {\n this.barBeforeHandleDragMove();\n } else {\n this.barAfterHandleDragMove();\n }\n }\n });\n\n dragRef.ended.subscribe((event) => {\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n event.source.reset();\n this.stopScrolling();\n this.dragScrolling = false;\n this.dragScrollDistance = 0;\n this.barHandleDragMoveDistance = 0;\n this.item.updateRefs({\n width: this.ganttUpper.view.getDateRangeWidth(this.item.start, this.item.end),\n x: this.ganttUpper.view.getXPointByDate(this.item.start),\n y: (this.ganttUpper.styles.lineHeight - this.ganttUpper.styles.barHeight) / 2 - 1\n });\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.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n const rootRect = this.dom.root.getBoundingClientRect();\n const dragRect = dragElement.getBoundingClientRect();\n let left = dragRect.left - rootRect.left - (this.dom.side.clientWidth + 1);\n if (this.dragScrolling) {\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n left += this.autoScrollStep;\n } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n left -= this.autoScrollStep;\n }\n }\n const width = dragRect.right - dragRect.left;\n\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(this.ganttUpper.view.options.dragPreviewDateFormat);\n dragMaskElement.querySelector('.end').innerHTML = end.format(this.ganttUpper.view.options.dragPreviewDateFormat);\n }\n\n private closeDragBackdrop() {\n const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n dragMaskElement.style.display = 'none';\n dragBackdropElement.style.display = 'none';\n }\n\n private setDraggingStyles() {\n this.barElement.classList.add('gantt-bar-draggable-drag');\n }\n\n private clearDraggingStyles() {\n this.barElement.classList.remove('gantt-bar-draggable-drag');\n }\n\n private barDragMove() {\n const currentX = this.item.refs.x + this.barDragMoveDistance + this.dragScrollDistance;\n const currentDate = this.ganttUpper.view.getDateByXPoint(currentX);\n const currentStartX = this.ganttUpper.view.getXPointByDate(currentDate);\n\n const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item.end, this.item.start);\n\n let start = currentDate;\n let end = currentDate.add(diffs, this.ganttUpper.view?.options?.datePrecisionUnit);\n\n // 日视图特殊逻辑处理\n if (this.ganttUpper.view.viewType === GanttViewType.day) {\n const dayWidth = this.ganttUpper.view.getDayOccupancyWidth(currentDate);\n if (currentX > currentStartX + dayWidth / 2) {\n start = start.addDays(1);\n end = end.addDays(1);\n }\n }\n\n if (this.dragScrolling) {\n const left = currentX - this.barDragMoveDistance;\n this.barElement.style.left = left + 'px';\n }\n\n this.openDragBackdrop(\n this.barElement,\n this.ganttUpper.view.getDateByXPoint(currentX),\n this.ganttUpper.view.getDateByXPoint(currentX + this.item.refs.width)\n );\n\n if (!this.isStartOrEndInsideView(start, end)) {\n return;\n }\n this.updateItemDate(start, end);\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n }\n\n private barBeforeHandleDragMove() {\n const { x, start, minRangeWidthWidth } = this.startOfBarHandle();\n const width = this.item.refs.width + this.barHandleDragMoveAndScrollDistance * -1;\n const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item.end, start);\n\n if (width > dragMinWidth && diffs > 0) {\n this.barElement.style.width = width + 'px';\n this.barElement.style.left = x + 'px';\n this.openDragBackdrop(this.barElement, start, this.item.end);\n\n if (!this.isStartOrEndInsideView(start, this.item.end)) {\n return;\n }\n\n this.updateItemDate(start, this.item.end);\n } else {\n if (this.barHandleDragMoveRecordDiffs > 0 && diffs <= 0) {\n this.barElement.style.width = minRangeWidthWidth + 'px';\n const x = this.ganttUpper.view.getXPointByDate(this.item.end);\n this.barElement.style.left = x + 'px';\n }\n this.openDragBackdrop(this.barElement, this.item.end, this.item.end);\n this.updateItemDate(this.item.end, this.item.end);\n }\n this.barHandleDragMoveRecordDiffs = diffs;\n\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n }\n\n private barAfterHandleDragMove() {\n const { width, end } = this.endOfBarHandle();\n const diffs = this.ganttUpper.view.differenceByPrecisionUnit(end, this.item.start);\n\n if (width > dragMinWidth && diffs > 0) {\n this.barElement.style.width = width + 'px';\n this.openDragBackdrop(this.barElement, this.item.start, end);\n if (!this.isStartOrEndInsideView(this.item.start, end)) {\n return;\n }\n this.updateItemDate(this.item.start, end);\n } else {\n if (this.barHandleDragMoveRecordDiffs > 0 && diffs <= 0) {\n const minRangeWidth = this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item.start);\n this.barElement.style.width = minRangeWidth + 'px';\n }\n this.openDragBackdrop(this.barElement, this.item.start, this.item.start);\n this.updateItemDate(this.item.start, this.item.start);\n }\n this.barHandleDragMoveRecordDiffs = diffs;\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\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 private startScrollInterval = () => {\n this.stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this.stopScrollTimers$))\n .subscribe(() => {\n const node = this.dom.mainContainer;\n const scrollStep = this.autoScrollStep;\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n node.scrollBy(-scrollStep, 0);\n } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n\n private startScrollingIfNecessary(pointerX: number, pointerY: number) {\n const clientRect = this.dom.mainContainer.getBoundingClientRect();\n const scrollLeft = this.dom.mainContainer.scrollLeft;\n if (isPointerNearClientRect(clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n const horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n\n if (\n (horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT && scrollLeft > 0) ||\n (horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT &&\n scrollLeft < this.ganttUpper.view.width - clientRect.width)\n ) {\n this._horizontalScrollDirection = horizontalScrollDirection;\n this.autoScrollSpeedRates = getAutoScrollSpeedRates(clientRect, pointerX, horizontalScrollDirection);\n this.dragScrolling = true;\n this._ngZone.runOutsideAngular(this.startScrollInterval);\n } else {\n this.dragScrolling = false;\n this.stopScrolling();\n }\n }\n }\n\n // Conditions to stop auto-scroll: when the start is greater than the end and the bar appears in the view\n private isStartGreaterThanEndWhenBarHandleDragMove(isBefore: boolean) {\n let isStartGreaterThanEnd: boolean;\n let isBarAppearsInView: boolean;\n\n const scrollLeft = this.dom.mainContainer.scrollLeft;\n const clientWidth = this.dom.mainContainer.clientWidth;\n const xThreshold = clientWidth * DROP_PROXIMITY_THRESHOLD;\n\n if (isBefore) {\n const { start, minRangeWidthWidth } = this.startOfBarHandle();\n const xPointerByEndDate = this.ganttUpper.view.getXPointByDate(this.item.end);\n\n isStartGreaterThanEnd = start.value > this.item.end.value;\n isBarAppearsInView = xPointerByEndDate + minRangeWidthWidth + xThreshold <= scrollLeft + clientWidth;\n } else {\n const { end } = this.endOfBarHandle();\n const xPointerByStartDate = this.ganttUpper.view.getXPointByDate(this.item.start);\n\n isStartGreaterThanEnd = end.value < this.item.start.value;\n isBarAppearsInView = scrollLeft + xThreshold <= xPointerByStartDate;\n }\n\n return isStartGreaterThanEnd && isBarAppearsInView ? true : false;\n }\n\n // Some data information about dragging start until it is equal to or greater than end\n private startOfBarHandle() {\n const x = this.item.refs.x + this.barHandleDragMoveAndScrollDistance;\n return {\n x,\n start: this.ganttUpper.view.getDateByXPoint(x),\n minRangeWidthWidth: this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item.end)\n };\n }\n\n // Some data information about dragging end of bar handle\n private endOfBarHandle() {\n const width = this.item.refs.width + this.barHandleDragMoveAndScrollDistance;\n\n return {\n width,\n end: this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width)\n };\n }\n\n private stopScrolling() {\n this.stopScrollTimers$.next();\n }\n\n private isStartOrEndInsideView(start: GanttDate, end: GanttDate) {\n const itemStart = start.getUnixTime();\n const itemEnd = end.getUnixTime();\n const viewStart = this.ganttUpper.view.start.getUnixTime();\n const viewEnd = this.ganttUpper.view.end.getUnixTime();\n if (itemStart < viewStart || itemEnd > viewEnd) {\n return false;\n } else {\n return true;\n }\n }\n\n private updateItemDate(start: GanttDate, end: GanttDate) {\n this.item.updateDate(this.ganttUpper.view.startOfPrecision(start), this.ganttUpper.view.endOfPrecision(end));\n }\n\n createDrags(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n this.item = item;\n this.barElement = elementRef.nativeElement;\n\n this.ganttUpper = ganttUpper;\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 updateItem(item: GanttItemInternal) {\n this.item = item;\n }\n\n ngOnDestroy() {\n this.closeDragBackdrop();\n this.dragRefs.forEach((dragRef) => dragRef.dispose());\n this.destroy$.next();\n this.destroy$.complete();\n this.stopScrolling();\n this.stopScrollTimers$.complete();\n }\n}\n","export const sideWidth = 400;\n\nexport const sideMiddleWidth = 500;\n\nexport const sideMaxWidth = 600;\n\nexport const sideMinWidth = 400;\n\nexport const barBackground = '#6698ff';\n\nexport const rangeHeight = 17;\n\nexport const todayHeight = 24;\n\nexport const todayWidth = 35;\n\nexport const todayBorderRadius = 4;\n","import { Input, ElementRef, Inject, TemplateRef, Directive, OnInit, OnChanges, OnDestroy, SimpleChanges } 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 public refsUnsubscribe$ = 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.refsUnsubscribe$)).subscribe(() => {\n this.setPositions();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.firstChange) {\n this.itemChange(changes.item.currentValue);\n }\n }\n\n private itemChange(item: GanttItemInternal) {\n this.refsUnsubscribe$.next();\n this.refsUnsubscribe$.complete();\n this.item = item;\n this.item.refs$.pipe(takeUntil(this.refsUnsubscribe$)).subscribe(() => {\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 }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n this.refsUnsubscribe$.next();\n this.refsUnsubscribe$.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 SimpleChanges\n} from '@angular/core';\nimport { from, fromEvent, merge, Observable } from 'rxjs';\nimport { startWith, switchMap, take, 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';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\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 standalone: true,\n imports: [NgIf, NgTemplateOutlet]\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 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.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n });\n this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.elementRef.nativeElement.style.pointerEvents = '';\n this.setContentBackground();\n });\n }\n\n override ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.firstChange) {\n this.drag.updateItem(this.item);\n\n if (\n changes.item.currentValue.refs?.width !== changes.item.previousValue.refs?.width ||\n changes.item.currentValue.color !== changes.item.previousValue.color ||\n changes.item.currentValue.start?.value !== changes.item.previousValue.start?.value ||\n changes.item.currentValue.end?.value !== changes.item.previousValue.end?.value\n ) {\n this.setContentBackground();\n }\n }\n }\n\n ngAfterViewInit() {\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.drag.createDrags(this.elementRef, this.item, this.ganttUpper);\n });\n });\n\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 if (this.item.refs?.width) {\n const contentElement = this.contentElementRef.nativeElement;\n const color = this.item.color || barBackground;\n const style: Partial<CSSStyleDeclaration> = this.item.barStyle || {};\n const barElement = this.elementRef.nativeElement;\n\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\n const borderRadius = '4px 12.5px 12.5px 4px';\n style.borderRadius = borderRadius;\n barElement.style.borderRadius = borderRadius;\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\n const borderRadius = '12.5px 4px 4px 12.5px';\n style.borderRadius = borderRadius;\n barElement.style.borderRadius = borderRadius;\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\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, ElementRef, HostBinding, Inject, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttBaselineItemInternal } from '../../class/baseline';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-baseline,gantt-baseline',\n templateUrl: './baseline.component.html',\n standalone: true,\n imports: [NgIf, NgTemplateOutlet]\n})\nexport class NgxGanttBaselineComponent implements OnInit {\n @Input() baselineItem: GanttBaselineItemInternal;\n\n @Input() template: TemplateRef<any>;\n\n public unsubscribe$ = new Subject<void>();\n\n @HostBinding('class.gantt-baseline') ganttBaselineClass = true;\n\n constructor(private elementRef: ElementRef<HTMLElement>, @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n ngOnInit() {\n this.baselineItem.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.setPositions();\n });\n }\n\n private setPositions() {\n const itemElement = this.elementRef.nativeElement;\n itemElement.style.left = this.baselineItem.refs.x + 'px';\n itemElement.style.bottom = '2px';\n itemElement.style.width = this.baselineItem.refs.width + 'px';\n }\n}\n","<div #content *ngIf=\"baselineItem\" class=\"baseline-content\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: baselineItem.origin, refs: baselineItem.refs }\"\n ></ng-template>\n</div>\n","import { Component, OnInit, HostBinding, OnChanges, SimpleChanges, OnDestroy, NgZone, Inject, ElementRef } from '@angular/core';\nimport { GanttDatePoint } from '../../../class/date-point';\nimport { Subject, merge } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { isNumber } from '../../../utils/helpers';\n\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../../gantt-upper';\nimport { GanttViewType } from './../../../class/view-type';\nimport { todayBorderRadius } from '../../../gantt.styles';\nimport { NgIf, NgFor } from '@angular/common';\n\nconst mainHeight = 5000;\n\n@Component({\n selector: 'gantt-calendar-grid',\n templateUrl: './calendar-grid.component.html',\n standalone: true,\n imports: [NgIf, NgFor]\n})\nexport class GanttCalendarGridComponent implements OnInit, OnDestroy {\n get view() {\n return this.ganttUpper.view;\n }\n private unsubscribe$ = new Subject<void>();\n\n mainHeight = mainHeight;\n\n todayBorderRadius = todayBorderRadius;\n\n viewTypes = GanttViewType;\n\n @HostBinding('class') className = `gantt-calendar gantt-calendar-grid`;\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 todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0] as HTMLElement;\n const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0] as HTMLElement;\n\n if (isNumber(x)) {\n if (line) {\n line.style.left = `${x}px`;\n line.style.top = `0px`;\n line.style.bottom = `${-mainHeight}px`;\n }\n } else {\n todayEle.style.display = 'none';\n }\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).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 trackBy(point: GanttDatePoint, index: number) {\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-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\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]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n </g>\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 </g>\n</svg>\n","import { Component, OnInit, HostBinding, Inject, NgZone, ElementRef } from '@angular/core';\nimport { GanttDatePoint } from '../../../class/date-point';\nimport { todayHeight, todayWidth } from '../../../gantt.styles';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../../gantt-upper';\nimport { GanttViewType } from '../../../class';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { Subject, merge } from 'rxjs';\nimport { GanttDate } from '../../../utils/date';\nimport { isNumber } from '../../../utils/helpers';\nimport { NgFor, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'gantt-calendar-header',\n templateUrl: './calendar-header.component.html',\n standalone: true,\n imports: [NgFor, NgStyle]\n})\nexport class GanttCalendarHeaderComponent implements OnInit {\n get view() {\n return this.ganttUpper.view;\n }\n\n private unsubscribe$ = new Subject();\n\n viewTypes = GanttViewType;\n\n @HostBinding('class') className = `gantt-calendar gantt-calendar-header`;\n\n @HostBinding('style.height')\n get height() {\n return this.ganttUpper.styles.headerHeight + 'px';\n }\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngOnInit() {\n // 头部日期定位\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n if (this.ganttUpper.viewType === GanttViewType.day) this.setTodayPoint();\n });\n });\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\n if (isNumber(x)) {\n if (rect) {\n rect.style.left = `${x - todayWidth / 2}px`;\n rect.style.top = `${this.ganttUpper.styles.headerHeight - todayHeight}px`;\n rect.innerHTML = today.toString();\n }\n } else {\n todayEle.style.display = 'none';\n }\n }\n\n trackBy(point: GanttDatePoint, index: number) {\n return point.text || index;\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</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\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]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n","import { Component, Inject } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\n@Component({\n selector: 'gantt-drag-backdrop',\n templateUrl: `./drag-backdrop.component.html`,\n host: {\n class: 'gantt-drag-backdrop'\n },\n standalone: true\n})\nexport class GanttDragBackdropComponent {\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n}\n","<div class=\"gantt-drag-mask\" [style.top.px]=\"ganttUpper.styles.headerHeight\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\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>`;\n\nconst dragIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"aijaction/drag--\" stroke-width=\"1\" fill-rule=\"evenodd\"><g id=\"aij拖动\" transform=\"translate(5 1)\" fill-rule=\"nonzero\"><path d=\"M1 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM1 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-4 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-4 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\" id=\"aij形状结合\"></path></g></g></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 drag: dragIcon\n};\n","import { Component, Input, ElementRef, HostBinding } from '@angular/core';\nimport { icons } from './icons';\n\n@Component({\n selector: 'gantt-icon',\n template: '',\n standalone: true\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 { 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 NgZone\n} from '@angular/core';\nimport { empty, EMPTY, merge, NEVER, of, Subject, timer } from 'rxjs';\nimport { takeUntil, skip, debounceTime, switchMap, take } 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 { 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';\nimport { NgFor, NgIf } from '@angular/common';\n\n@Component({\n selector: 'gantt-links-overlay',\n templateUrl: './links.component.html',\n standalone: true,\n imports: [NgFor, NgIf]\n})\nexport class GanttLinksComponent implements OnInit, OnChanges, OnDestroy {\n // @Input() groups: GanttGroupInternal[] = [];\n\n // @Input() items: GanttItemInternal[] = [];\n\n @Input() flatItems: (GanttGroupInternal | 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 private ngZone: NgZone\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.buildLinks();\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 this.ngZone.onStable.pipe(take(1)).pipe(switchMap(() => this.ganttUpper.table?.dragDropped || EMPTY))\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 this.flatItems.forEach((item, itemIndex) => {\n if (!item.hasOwnProperty('items')) {\n const ganttItem = item as GanttItemInternal;\n if (ganttItem.refs) {\n const y = itemIndex * lineHeight + ganttItem.refs.y + barHeight / 2;\n this.linkItems.push({\n ...ganttItem,\n before: {\n x: ganttItem.refs.x,\n y\n },\n after: {\n x: ganttItem.refs.x + ganttItem.refs.width,\n y\n }\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 { Component } from '@angular/core';\n\n@Component({\n selector: 'gantt-loader',\n template: `\n <div class=\"gantt-loader-wrapper\">\n <div class=\"gantt-loader-loading\">\n <span class=\"gantt-loader-loading-spot\"></span>\n </div>\n </div>\n `,\n host: {\n class: 'gantt-loader gantt-loader-overlay'\n },\n standalone: true\n})\nexport class GanttLoaderComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GanttItemType } from './class';\n\n@Pipe({\n name: 'isGanttRangeItem',\n standalone: true\n})\nexport class IsGanttRangeItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.range;\n }\n}\n\n@Pipe({\n name: 'isGanttBarItem',\n standalone: true\n})\nexport class IsGanttBarItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.bar;\n }\n}\n\n@Pipe({\n name: 'isGanttCustomItem',\n standalone: true\n})\nexport class IsGanttCustomItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.custom;\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';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-range,gantt-range',\n templateUrl: './range.component.html',\n standalone: true,\n imports: [NgIf, NgTemplateOutlet]\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 { 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';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from '../../gantt.pipe';\nimport { NgxGanttBaselineComponent } from '../baseline/baseline.component';\nimport { NgxGanttBarComponent } from '../bar/bar.component';\nimport { NgxGanttRangeComponent } from '../range/range.component';\nimport { NgFor, NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { GanttLinksComponent } from '../links/links.component';\n\n@Component({\n selector: 'gantt-main',\n templateUrl: './gantt-main.component.html',\n standalone: true,\n imports: [\n GanttLinksComponent,\n NgFor,\n NgIf,\n NgClass,\n NgTemplateOutlet,\n NgxGanttRangeComponent,\n NgxGanttBarComponent,\n NgxGanttBaselineComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe\n ]\n})\nexport class GanttMainComponent {\n @Input() viewportItems: (GanttGroupInternal | GanttItemInternal)[];\n\n @Input() flatItems: (GanttGroupInternal | 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 @Input() baselineTemplate: 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 [flatItems]=\"flatItems\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<div class=\"gantt-main-groups\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let data of viewportItems; trackBy: trackBy\">\n <div class=\"gantt-group\" [style.height.px]=\"ganttUpper.styles.lineHeight\" [ngClass]=\"data.class\" *ngIf=\"data.items\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: data }\"></ng-template>\n </div>\n <div\n *ngIf=\"!data.items\"\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(data.id)\"\n >\n <ng-container *ngIf=\"data.type | isGanttCustomItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: data.origin,\n refs: data.refs,\n baseline: ganttUpper.baselineItemsMap[data.id]?.origin,\n baselineRefs: ganttUpper.baselineItemsMap[data.id]?.refs\n }\"\n >\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"(data.type | isGanttRangeItem) || (data.type | isGanttBarItem)\">\n <gantt-range *ngIf=\"data.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"data\"></gantt-range>\n <gantt-bar *ngIf=\"data.type | isGanttBarItem\" [item]=\"data\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n <gantt-baseline\n *ngIf=\"ganttUpper.baselineItemsMap[data.id]\"\n [baselineItem]=\"ganttUpper.baselineItemsMap[data.id]\"\n [template]=\"baselineTemplate\"\n ></gantt-baseline>\n </ng-container>\n </div>\n </ng-container>\n</div>\n","import { InjectionToken, ChangeDetectorRef } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal } from './class';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GanttStyleOptions } from './gantt.config';\n\nexport interface GanttAbstractComponent {\n table: NgxGanttTableComponent;\n styles: GanttStyleOptions;\n maxLevel: number;\n async: boolean;\n cdr: ChangeDetectorRef;\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","import {\n Component,\n HostBinding,\n QueryList,\n Input,\n OnInit,\n ViewChild,\n ElementRef,\n Inject,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { CdkDragEnd, CdkDragMove, CdkDragStart, CdkDrag } from '@angular/cdk/drag-drop';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../../gantt-abstract';\nimport { setStyleWithVendorPrefix } from '../../../utils/set-style-with-vendor-prefix';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nexport const defaultColumnWidth = 100;\nexport const minColumnWidth = 80;\ninterface DragFixedConfig {\n target: HTMLElement;\n originWidth: number;\n movedWidth: number;\n minWidth: number;\n}\n@Component({\n selector: 'gantt-table-header',\n templateUrl: './gantt-table-header.component.html',\n standalone: true,\n imports: [NgFor, NgIf, NgTemplateOutlet, CdkDrag]\n})\nexport class GanttTableHeaderComponent implements OnInit, OnDestroy {\n public dragStartLeft: number;\n\n public tableWidth = 0;\n\n private unsubscribe$ = new Subject<void>();\n\n @Input() columns: QueryList<NgxGanttTableColumnComponent>;\n\n @ViewChild('resizeLine', { static: true }) resizeLineElementRef: ElementRef<HTMLElement>;\n\n @HostBinding('class') className = `gantt-table-header `;\n\n @HostBinding('style.height')\n get height() {\n return this.gantt.styles.headerHeight + 'px';\n }\n\n @HostBinding('style.line-height')\n get lineHeight() {\n return this.gantt.styles.headerHeight + 'px';\n }\n\n constructor(\n private elementRef: ElementRef,\n @Inject(GANTT_ABSTRACT_TOKEN) private gantt: GanttAbstractComponent,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.columnsChange();\n this.columns.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.columnsChange();\n this.gantt.cdr.detectChanges();\n });\n }\n\n private columnsChange() {\n let tableWidth = 0;\n this.columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n tableWidth += Number(column.columnWidth.replace('px', ''));\n });\n this.tableWidth = tableWidth;\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 onResizeStarted(event: CdkDragStart) {\n const target = event.source.element.nativeElement;\n this.dragStartLeft = target.getBoundingClientRect().left;\n }\n\n onResizeMoved(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.columns.length;\n }\n\n this.dragFixed({\n target,\n originWidth,\n movedWidth,\n minWidth\n });\n\n this.showAuxiliaryLine(event);\n }\n\n onResizeEnded(event: CdkDragEnd, column: NgxGanttTableColumnComponent) {\n const beforeWidth = parseInt(column.columnWidth, 10);\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.columns });\n }\n\n this.tableWidth = this.tableWidth - beforeWidth + columnWidth;\n this.hideAuxiliaryLine();\n event.source.reset();\n }\n\n onOverallResizeEnded(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 let tempWidth = 0;\n this.columns.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 tempWidth += columnWidth;\n });\n this.tableWidth = tempWidth;\n if (this.gantt.table) {\n this.gantt.table.columnChanges.emit({ columns: this.columns });\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.resizeLineElementRef.nativeElement.style.left = `${distance.x}px`;\n this.resizeLineElementRef.nativeElement.style.display = 'block';\n }\n\n private hideAuxiliaryLine() {\n this.resizeLineElementRef.nativeElement.style.display = 'none';\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-table-header-container\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columns; 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=\"column-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event, column)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onResizeEnded($event, column)\"\n ></div>\n </div>\n</div>\n\n<div\n class=\"table-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onOverallResizeEnded($event)\"\n></div>\n\n<div #resizeLine class=\"table-resize-auxiliary-line\"></div>\n","import { auditTime, debounceTime, filter, startWith, Subject, takeUntil } from 'rxjs';\nimport {\n Component,\n HostBinding,\n TemplateRef,\n QueryList,\n Input,\n OnInit,\n Inject,\n Output,\n EventEmitter,\n OnDestroy,\n ChangeDetectorRef,\n ViewChildren,\n AfterViewInit\n} from '@angular/core';\nimport {\n GanttItemInternal,\n GanttGroupInternal,\n GanttSelectedEvent,\n GanttTableDropPosition,\n GanttTableDragEnterPredicateContext,\n GanttTableDragDroppedEvent,\n GanttTableDragStartedEvent,\n GanttTableDragEndedEvent\n} from '../../../class';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../../gantt-abstract';\nimport { defaultColumnWidth } from '../header/gantt-table-header.component';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../../gantt-upper';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragMove, CdkDragStart, DragRef, CdkDropList, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { DOCUMENT, NgIf, NgTemplateOutlet, NgFor, NgClass } from '@angular/common';\nimport { IsGanttRangeItemPipe } from '../../../gantt.pipe';\nimport { GanttIconComponent } from '../../icon/icon.component';\n@Component({\n selector: 'gantt-table-body',\n templateUrl: './gantt-table-body.component.html',\n standalone: true,\n imports: [CdkDropList, NgIf, GanttIconComponent, NgTemplateOutlet, NgFor, NgClass, CdkDrag, CdkDragHandle, IsGanttRangeItemPipe]\n})\nexport class GanttTableBodyComponent implements OnInit, OnDestroy, AfterViewInit {\n private _viewportItems: (GanttGroupInternal | GanttItemInternal)[];\n @Input() set viewportItems(data: (GanttGroupInternal | GanttItemInternal)[]) {\n const firstData = data[0];\n if (firstData && firstData.hasOwnProperty('items')) {\n this.hasGroup = true;\n }\n this.ganttTableEmptyClass = data?.length ? false : true;\n this._viewportItems = data;\n }\n\n get viewportItems() {\n return this._viewportItems;\n }\n\n @Input() flatItems: (GanttGroupInternal | GanttItemInternal)[];\n\n @Input() columns: QueryList<NgxGanttTableColumnComponent>;\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 @HostBinding('class.gantt-table-draggable')\n @Input()\n draggable = false;\n\n @Input() dropEnterPredicate?: (context: GanttTableDragEnterPredicateContext) => boolean;\n\n @Output() dragDropped = new EventEmitter<GanttTableDragDroppedEvent>();\n\n @Output() dragStarted = new EventEmitter<GanttTableDragStartedEvent>();\n\n @Output() dragEnded = new EventEmitter<GanttTableDragEndedEvent>();\n\n @Output() itemClick = new EventEmitter<GanttSelectedEvent>();\n\n @HostBinding('class.gantt-table-body') ganttTableClass = true;\n\n @HostBinding('class.gantt-table-empty') ganttTableEmptyClass = false;\n\n @HostBinding('class.gantt-table-dragging') ganttTableDragging = false;\n\n @ViewChildren(CdkDrag<string>) cdkDrags: QueryList<CdkDrag<GanttItemInternal>>;\n\n public hasGroup: boolean;\n\n public hasExpandIcon = false;\n\n // 缓存 Element 和 DragRef 的关系,方便在 Item 拖动时查找\n private itemDragsMap = new Map<HTMLElement, CdkDrag<GanttItemInternal>>();\n\n private itemDragMoved = new Subject<CdkDragMove>();\n\n // Item 拖动经过目标时临时记录目标id以及相对应目标的位置\n private itemDropTarget: {\n position?: GanttTableDropPosition;\n id?: string;\n };\n\n private destroy$ = new Subject<void>();\n\n constructor(\n @Inject(GANTT_ABSTRACT_TOKEN) public gantt: GanttAbstractComponent,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n ngOnInit() {\n this.columns.changes.pipe(startWith(this.columns), takeUntil(this.destroy$)).subscribe(() => {\n this.hasExpandIcon = false;\n this.columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n if (column.showExpandIcon) {\n this.hasExpandIcon = true;\n }\n });\n this.cdr.detectChanges();\n });\n }\n\n ngAfterViewInit(): void {\n this.cdkDrags.changes\n .pipe(startWith(this.cdkDrags), takeUntil(this.destroy$))\n .subscribe((drags: QueryList<CdkDrag<GanttItemInternal>>) => {\n this.itemDragsMap.clear();\n drags.forEach((drag) => {\n if (drag.data) {\n // cdkDrag 变化时,缓存 Element 与 DragRef 的关系,方便 Drag Move 时查找\n this.itemDragsMap.set(drag.element.nativeElement, drag);\n }\n });\n });\n\n this.itemDragMoved\n .pipe(\n auditTime(30),\n // auditTime 可能会导致拖动结束后仍然执行 moved ,所以通过判断 dragging 状态来过滤无效 moved\n filter((event: CdkDragMove) => event.source._dragRef.isDragging()),\n takeUntil(this.destroy$)\n )\n .subscribe((event) => {\n this.onItemDragMoved(event);\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 onItemDragStarted(event: CdkDragStart<GanttItemInternal>) {\n this.ganttTableDragging = true;\n // 拖动开始时隐藏所有的子项\n const children = this.getChildrenElementsByElement(event.source.element.nativeElement);\n children.forEach((element) => {\n element.classList.add('drag-item-hide');\n });\n this.dragStarted.emit({\n source: event.source.data?.origin,\n sourceParent: this.getParentByItem(event.source.data)?.origin\n });\n }\n\n emitItemDragMoved(event: CdkDragMove) {\n this.itemDragMoved.next(event);\n }\n\n onItemDragMoved(event: CdkDragMove<GanttItemInternal>) {\n // 通过鼠标位置查找对应的目标 Item 元素\n let currentPointElement = this.document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y) as HTMLElement;\n if (!currentPointElement) {\n this.cleanupDragArtifacts();\n return;\n }\n let targetElement = currentPointElement.classList.contains('gantt-table-item')\n ? currentPointElement\n : (currentPointElement.closest('.gantt-table-item') as HTMLElement);\n if (!targetElement) {\n this.cleanupDragArtifacts();\n return;\n }\n\n // 缓存放置目标Id 并计算鼠标相对应的位置\n this.itemDropTarget = {\n id: this.itemDragsMap.get(targetElement)?.data.id,\n position: this.getTargetPosition(targetElement, event)\n };\n\n // 执行外部传入的 dropEnterPredicate 判断是否允许拖入目标项\n if (this.dropEnterPredicate) {\n const targetDragRef = this.itemDragsMap.get(targetElement);\n if (\n this.dropEnterPredicate({\n source: event.source.data.origin,\n target: targetDragRef.data.origin,\n dropPosition: this.itemDropTarget.position\n })\n ) {\n this.showDropPositionPlaceholder(targetElement);\n } else {\n this.itemDropTarget = null;\n this.cleanupDragArtifacts(false);\n }\n } else {\n this.showDropPositionPlaceholder(targetElement);\n }\n }\n\n onItemDragEnded(event: CdkDragEnd<GanttItemInternal>) {\n this.ganttTableDragging = false;\n\n this.dragEnded.emit({\n source: event.source.data?.origin,\n sourceParent: this.getParentByItem(event.source.data)?.origin\n });\n // dropEnterPredicate 方法返回值为 false 时,始终未执行 onListDropped,所以只能在 dragEnded 中移除 drag-item-hide\n const children = this.getChildrenElementsByElement(event.source.element.nativeElement);\n children.forEach((element) => {\n element.classList.remove('drag-item-hide');\n });\n }\n\n onListDropped(event: CdkDragDrop<GanttItemInternal[], GanttItemInternal[], GanttItemInternal>) {\n if (!this.itemDropTarget) {\n return;\n }\n\n const sourceItem = event.item.data;\n const sourceParent = this.getParentByItem(sourceItem);\n const sourceChildren = this.getExpandChildrenByDrag(event.item);\n\n const targetDragRef = this.cdkDrags.find((item) => item.data?.id === this.itemDropTarget.id);\n const targetItem = targetDragRef?.data;\n const targetParent = this.getParentByItem(targetItem);\n\n this.removeItem(sourceItem, sourceChildren);\n\n switch (this.itemDropTarget.position) {\n case 'before':\n case 'after':\n this.insertItem(targetItem, sourceItem, sourceChildren, this.itemDropTarget.position);\n sourceItem.updateLevel(targetItem.level);\n break;\n case 'inside':\n this.insertChildrenItem(targetItem, sourceItem, sourceChildren);\n sourceItem.updateLevel(targetItem.level + 1);\n break;\n }\n\n this.dragDropped.emit({\n source: sourceItem.origin,\n sourceParent: sourceParent?.origin,\n target: targetItem.origin,\n targetParent: targetParent?.origin,\n dropPosition: this.itemDropTarget.position\n });\n\n this.cleanupDragArtifacts(true);\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private removeItem(item: GanttItemInternal, children: GanttItemInternal[]) {\n this.viewportItems.splice(this.viewportItems.indexOf(item), 1 + children.length);\n this.flatItems.splice(this.flatItems.indexOf(item), 1 + children.length);\n }\n\n private insertItem(\n target: GanttItemInternal,\n inserted: GanttItemInternal,\n children: GanttItemInternal[],\n position: 'before' | 'after'\n ) {\n if (position === 'before') {\n this.viewportItems.splice(this.viewportItems.indexOf(target), 0, inserted, ...children);\n this.flatItems.splice(this.flatItems.indexOf(target), 0, inserted, ...children);\n } else {\n const dragRef = this.cdkDrags.find((drag) => drag.data === target);\n // 如果目标项是展开的,插入的 index 位置需要考虑子项的数量\n let childrenCount = 0;\n if (target.expanded) {\n childrenCount = this.getChildrenElementsByElement(dragRef.element.nativeElement)?.length || 0;\n }\n this.viewportItems.splice(this.viewportItems.indexOf(target) + 1 + childrenCount, 0, inserted, ...children);\n this.flatItems.splice(this.flatItems.indexOf(target) + 1 + childrenCount, 0, inserted, ...children);\n }\n }\n\n private insertChildrenItem(target: GanttItemInternal, inserted: GanttItemInternal, children: GanttItemInternal[]) {\n if (target.expanded) {\n this.viewportItems.splice(this.viewportItems.indexOf(target) + target.children.length + 1, 0, inserted, ...children);\n this.flatItems.splice(this.flatItems.indexOf(target) + target.children.length + 1, 0, inserted, ...children);\n }\n target.children.push(inserted);\n }\n\n private getParentByItem(item: GanttItemInternal) {\n return (this.flatItems || []).find((n: GanttItemInternal) => {\n return n.children?.includes(item);\n });\n }\n\n private getExpandChildrenByDrag(dragRef: CdkDrag<GanttItemInternal>) {\n if (!dragRef.data.expanded) {\n return [];\n } else {\n const childrenElements = this.getChildrenElementsByElement(dragRef.element.nativeElement);\n return childrenElements.map((element) => this.itemDragsMap.get(element).data);\n }\n }\n\n private getChildrenElementsByElement(dragElement: HTMLElement) {\n // 通过循环持续查找 next element,如果 element 的 level 小于当前 item 的 level,则为它的 children\n const children: HTMLElement[] = [];\n const dragRef = this.itemDragsMap.get(dragElement);\n\n // 如果当前的 Drag 正在拖拽,会创建 PlaceholderElement 占位,所以以 PlaceholderElement 向下查找\n let nextElement = (dragRef.getPlaceholderElement() || dragElement).nextElementSibling as HTMLElement;\n let nextDragRef = this.itemDragsMap.get(nextElement);\n\n while (nextDragRef && nextDragRef.data.level > dragRef.data.level) {\n children.push(nextElement);\n nextElement = nextElement.nextElementSibling as HTMLElement;\n nextDragRef = this.itemDragsMap.get(nextElement);\n }\n\n return children;\n }\n\n private getTargetPosition(target: HTMLElement, event: CdkDragMove) {\n const targetRect = target.getBoundingClientRect();\n const beforeOrAfterGap = targetRect.height * 0.3;\n // 将 Item 高度分为上中下三段,其中上下的 Gap 为 height 的 30%,通过判断鼠标位置在哪一段 gap 来计算对应的位置\n if (event.pointerPosition.y - targetRect.top < beforeOrAfterGap) {\n return 'before';\n } else if (event.pointerPosition.y >= targetRect.bottom - beforeOrAfterGap) {\n return 'after';\n } else {\n return 'inside';\n }\n }\n\n private showDropPositionPlaceholder(targetElement: HTMLElement) {\n this.cleanupDragArtifacts();\n if (this.itemDropTarget && targetElement) {\n targetElement.classList.add(`drop-position-${this.itemDropTarget.position}`);\n }\n }\n\n private cleanupDragArtifacts(dropped = false) {\n if (dropped) {\n this.itemDropTarget = null;\n this.document.querySelectorAll('.drag-item-hide').forEach((element) => element.classList.remove('drag-item-hide'));\n }\n this.document.querySelectorAll('.drop-position-before').forEach((element) => element.classList.remove('drop-position-before'));\n this.document.querySelectorAll('.drop-position-after').forEach((element) => element.classList.remove('drop-position-after'));\n this.document.querySelectorAll('.drop-position-inside').forEach((element) => element.classList.remove('drop-position-inside'));\n }\n}\n","<div\n class=\"gantt-table-body-container\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"viewportItems\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\"\n>\n <ng-container *ngIf=\"!viewportItems?.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=\"viewportItems && viewportItems.length > 0\">\n <ng-container *ngFor=\"let item of viewportItems; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [style.height.px]=\"gantt.styles.lineHeight\" [ngClass]=\"item.class\" *ngIf=\"item.items\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"item.expanded\" (click)=\"expandGroup(item)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, group: item.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ item.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <div\n *ngIf=\"!item.items\"\n (click)=\"itemClick.emit({ event: $event, selectedValue: item.origin })\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"(draggable && item.itemDraggable === false) || !draggable\"\n (cdkDragStarted)=\"onItemDragStarted($event)\"\n (cdkDragEnded)=\"onItemDragEnded($event)\"\n (cdkDragMoved)=\"emitItemDragMoved($event)\"\n class=\"gantt-table-item\"\n [class.gantt-table-item-with-group]=\"hasGroup\"\n [class.gantt-table-item-first-level-group]=\"item.level === 0 && (item.type | isGanttRangeItem)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n\n <div [classList]=\"column.classList\" *ngFor=\"let column of columns; let first = first\" [style.width]=\"column.columnWidth\">\n <!-- drag icon -->\n <gantt-icon\n *ngIf=\"first && draggable\"\n class=\"gantt-drag-handle\"\n iconName=\"drag\"\n cdkDragHandle\n [cdkDragHandleDisabled]=\"(draggable && item.itemDraggable === false) || !draggable\"\n ></gantt-icon>\n <!-- expand icon -->\n <div\n *ngIf=\"column?.showExpandIcon || (!hasExpandIcon && first)\"\n class=\"gantt-expand-icon\"\n [style.marginLeft.px]=\"item.level * 20\"\n >\n <ng-container *ngIf=\"item.level < gantt.maxLevel - 1 && ((gantt.async && item.expandable) || item.children?.length > 0)\">\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 >\n </gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <!-- column content -->\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-container>\n </ng-container>\n</div>\n","import { Component, HostBinding, Input, TemplateRef, Inject } from '@angular/core';\nimport { ganttViews, GanttViewType } from '../../class';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { keyBy } from '../../utils/helpers';\nimport { NgIf, NgFor, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-toolbar,gantt-toolbar',\n templateUrl: './toolbar.component.html',\n standalone: true,\n imports: [NgIf, NgFor, NgTemplateOutlet]\n})\nexport class NgxGanttToolbarComponent {\n @Input() template: TemplateRef<any>;\n\n @HostBinding('class.gantt-toolbar') ganttItemClass = true;\n\n @HostBinding('style.top')\n get top() {\n return this.ganttUpper.styles.headerHeight + 16 + 'px';\n }\n\n ganttViewsMap = keyBy(ganttViews, 'value');\n\n constructor(@Inject(GANTT_UPPER_TOKEN) protected ganttUpper: GanttUpper) {}\n\n selectView(view: GanttViewType) {\n this.ganttUpper.changeView(view);\n }\n}\n","<div class=\"toolbar-container\">\n <ng-container *ngIf=\"!template\">\n <div class=\"toolbar-views\" *ngIf=\"this.ganttUpper.toolbarOptions?.viewTypes?.length\">\n <ng-container *ngFor=\"let view of this.ganttUpper.toolbarOptions?.viewTypes\">\n <div class=\"toolbar-view\" *ngIf=\"ganttViewsMap[view]\" [class.active]=\"view === this.ganttUpper.viewType\" (click)=\"selectView(view)\">\n {{ ganttViewsMap[view].name }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\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-grid-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 {\n Component,\n OnInit,\n NgZone,\n ElementRef,\n Inject,\n ContentChild,\n TemplateRef,\n Input,\n Optional,\n OnDestroy,\n ViewChild,\n HostListener\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';\nimport { GanttDate } from './utils/date';\nimport { NgxGanttToolbarComponent } from './components/toolbar/toolbar.component';\nimport { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';\nimport { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-root',\n templateUrl: './root.component.html',\n providers: [GanttDomService, GanttDragContainer],\n host: {\n class: 'gantt'\n },\n standalone: true,\n imports: [\n NgIf,\n CdkScrollable,\n NgTemplateOutlet,\n GanttCalendarHeaderComponent,\n GanttCalendarGridComponent,\n GanttDragBackdropComponent,\n NgxGanttToolbarComponent\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 verticalScrollbarWidth = 0;\n\n horizontalScrollbarHeight = 0;\n\n private unsubscribe$ = new Subject<void>();\n\n private get view() {\n return this.ganttUpper.view;\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n this.computeScrollBarOffset();\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) public 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\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 this.computeScrollBarOffset();\n });\n });\n }\n\n computeScrollBarOffset() {\n const ganttMainContainer = this.dom.mainContainer as HTMLElement;\n const ganttVerticalScrollContainer = this.dom.verticalScrollContainer as HTMLElement;\n\n let verticalScrollbarWidth = 0;\n if (ganttVerticalScrollContainer) {\n verticalScrollbarWidth = ganttVerticalScrollContainer.offsetWidth - ganttVerticalScrollContainer.clientWidth;\n } else {\n verticalScrollbarWidth = ganttMainContainer?.offsetWidth - ganttMainContainer?.clientWidth;\n }\n const horizontalScrollbarHeight = ganttMainContainer?.offsetHeight - ganttMainContainer?.clientHeight;\n this.verticalScrollbarWidth = verticalScrollbarWidth;\n this.horizontalScrollbarHeight = horizontalScrollbarHeight;\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.getDateRangeWidth(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 public scrollToToday() {\n const x = this.view.getTodayXPoint();\n this.dom.scrollMainContainer(x);\n }\n\n public scrollToDate(date: number | GanttDate) {\n let x: number;\n if (typeof date === 'number') {\n x = this.view.getXPointByDate(new GanttDate(date));\n } else {\n x = this.view.getXPointByDate(date);\n }\n\n this.dom.scrollMainContainer(x);\n }\n}\n","<div class=\"gantt-side\" *ngIf=\"sideTemplate\" [style.width.px]=\"sideWidth\" [style.padding-bottom.px]=\"horizontalScrollbarHeight\">\n <div class=\"gantt-side-container\" cdkScrollable>\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\" *ngIf=\"mainTemplate\">\n <gantt-calendar-header [style.padding-right.px]=\"verticalScrollbarWidth\"></gantt-calendar-header>\n <gantt-calendar-grid\n [style.padding-right.px]=\"verticalScrollbarWidth\"\n [style.padding-bottom.px]=\"horizontalScrollbarHeight\"\n ></gantt-calendar-grid>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n<ng-content></ng-content>\n<gantt-toolbar *ngIf=\"ganttUpper.showToolbar || ganttUpper.toolbarTemplate\" [template]=\"ganttUpper.toolbarTemplate\"> </gantt-toolbar>\n","import { Component, ContentChild, TemplateRef, Input, Inject, ElementRef } 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 host: {\n class: 'gantt-table-column'\n },\n standalone: true\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 @Input() showExpandIcon: boolean;\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, private elementRef: ElementRef) {}\n\n get classList(): DOMTokenList {\n return this.elementRef.nativeElement.classList;\n }\n}\n","import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport {\n GanttTableDragEnterPredicateContext,\n GanttTableDragDroppedEvent,\n GanttTableEvent,\n GanttTableDragStartedEvent,\n GanttTableDragEndedEvent\n} from '../class';\n\n@Component({\n selector: 'ngx-gantt-table',\n template: '',\n standalone: true\n})\nexport class NgxGanttTableComponent {\n @Input() draggable = false;\n\n @Input() dropEnterPredicate?: (context: GanttTableDragEnterPredicateContext) => boolean;\n\n @Output() dragDropped = new EventEmitter<GanttTableDragDroppedEvent>();\n\n @Output() dragStarted = new EventEmitter<GanttTableDragStartedEvent>();\n\n @Output() dragEnded = new EventEmitter<GanttTableDragEndedEvent>();\n\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 @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n @ContentChild('tableFooter', { static: true }) tableFooterTemplate: TemplateRef<any>;\n}\n","import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, ViewportRuler } from '@angular/cdk/scrolling';\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { finalize, skip, take, takeUntil } from 'rxjs/operators';\nimport {\n GanttGroupInternal,\n GanttItem,\n GanttItemInternal,\n GanttLineClickEvent,\n GanttLinkDragEvent,\n GanttSelectedEvent,\n GanttTableDragEndedEvent,\n GanttTableDragStartedEvent,\n GanttVirtualScrolledIndexChangeEvent\n} from './class';\nimport { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';\nimport { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttLoaderComponent } from './components/loader/loader.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { GanttTableBodyComponent } from './components/table/body/gantt-table-body.component';\nimport { GanttTableHeaderComponent } from './components/table/header/gantt-table-header.component';\nimport { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from './gantt-upper';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig } from './gantt.config';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GanttDate } from './utils/date';\nimport { Dictionary, keyBy, recursiveItems, uniqBy } from './utils/helpers';\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 standalone: true,\n imports: [\n NgxGanttRootComponent,\n GanttTableHeaderComponent,\n GanttCalendarHeaderComponent,\n NgIf,\n GanttLoaderComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n NgClass,\n CdkVirtualForOf,\n GanttTableBodyComponent,\n GanttCalendarGridComponent,\n GanttMainComponent,\n GanttDragBackdropComponent,\n NgTemplateOutlet\n ]\n})\nexport class NgxGanttComponent extends GanttUpper implements OnInit, OnChanges, AfterViewInit, AfterViewChecked {\n @Input() maxLevel = 2;\n\n @Input() async: boolean;\n\n @Input() childrenResolve: (GanttItem) => Observable<GanttItem[]>;\n\n @Input() override linkable: boolean;\n\n @Input() set loading(loading: boolean) {\n if (loading) {\n if (this.loadingDelay > 0) {\n this.loadingTimer = setTimeout(() => {\n this._loading = loading;\n this.cdr.markForCheck();\n }, this.loadingDelay);\n } else {\n this._loading = loading;\n }\n } else {\n clearTimeout(this.loadingTimer);\n this._loading = loading;\n }\n }\n\n @Input() virtualScrollEnabled = true;\n\n @Input() loadingDelay = 0;\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 @Output() virtualScrolledIndexChange = new EventEmitter<GanttVirtualScrolledIndexChangeEvent>();\n\n @ContentChild(NgxGanttTableComponent) override table: NgxGanttTableComponent;\n\n @ContentChildren(NgxGanttTableColumnComponent, { descendants: true }) columns: QueryList<NgxGanttTableColumnComponent>;\n\n // 此模版已挪到 table 组件下,为了兼容此处暂时保留\n @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n @ViewChild('ganttRoot') ganttRoot: NgxGanttRootComponent;\n\n @ContentChild('footer', { static: true }) footerTemplate: TemplateRef<any>;\n\n @ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport;\n\n get loading() {\n return this._loading;\n }\n\n public flatItems: (GanttGroupInternal | GanttItemInternal)[] = [];\n\n public viewportItems: (GanttGroupInternal | GanttItemInternal)[] = [];\n\n private _loading = false;\n\n private loadingTimer;\n\n private rangeStart = 0;\n\n private rangeEnd = 0;\n\n private flatItemsMap: Dictionary<GanttGroupInternal | GanttItemInternal>;\n\n private draggingItem: GanttItem;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n private viewportRuler: ViewportRuler,\n @Inject(GANTT_GLOBAL_CONFIG) config: GanttGlobalConfig\n ) {\n super(elementRef, cdr, ngZone, config);\n this.computeAllRefs = false;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.buildFlatItems();\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.unsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragStarted.emit(event);\n });\n\n this.dragContainer.linkDragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragEnded.emit(event);\n });\n });\n });\n\n this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {\n this.computeTempDataRefs();\n });\n\n if (!this.virtualScrollEnabled) {\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\n }\n }\n\n override ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n if (!this.firstChange) {\n if (changes.viewType && changes.viewType.currentValue) {\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\n }\n if (changes.originItems || changes.originGroups) {\n this.buildFlatItems();\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\n }\n }\n }\n\n ngAfterViewInit() {\n if (this.virtualScrollEnabled) {\n this.virtualScroll.renderedRangeStream.pipe(takeUntil(this.unsubscribe$)).subscribe((range) => {\n const linksElement = this.elementRef.nativeElement.querySelector('.gantt-links-overlay') as HTMLDivElement;\n linksElement.style.top = `${-(this.styles.lineHeight * range.start)}px`;\n this.rangeStart = range.start;\n this.rangeEnd = range.end;\n this.viewportItems = this.flatItems.slice(range.start, range.end);\n this.appendDraggingItemToViewportItems();\n this.computeTempDataRefs();\n });\n }\n }\n\n ngAfterViewChecked() {\n if (this.virtualScrollEnabled && this.viewportRuler && this.virtualScroll.getRenderedRange().end > 0) {\n const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n this.ngZone.runOutsideAngular(() => {\n onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n if (!this.ganttRoot.verticalScrollbarWidth) {\n this.ganttRoot.computeScrollBarOffset();\n this.cdr.markForCheck();\n }\n });\n });\n }\n }\n\n private buildFlatItems() {\n const virtualData = [];\n if (this.groups.length) {\n this.groups.forEach((group) => {\n virtualData.push(group);\n if (group.expanded) {\n const items = recursiveItems(group.items);\n virtualData.push(...items);\n }\n });\n }\n\n if (this.items.length) {\n virtualData.push(...recursiveItems(this.items));\n }\n this.flatItems = [...virtualData];\n this.flatItemsMap = keyBy(this.flatItems, 'id');\n if (!this.virtualScrollEnabled) {\n this.rangeStart = 0;\n this.rangeEnd = this.flatItems.length;\n }\n }\n\n private afterExpand() {\n this.buildFlatItems();\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n }\n\n private computeTempDataRefs() {\n const tempItemData = [];\n this.viewportItems.forEach((data: GanttGroupInternal | GanttItemInternal) => {\n if (!data.hasOwnProperty('items')) {\n const item = data as GanttItemInternal;\n if (item.links) {\n item.links.forEach((link) => {\n if (this.flatItemsMap[link.link]) {\n tempItemData.push(this.flatItemsMap[link.link]);\n }\n });\n }\n tempItemData.push(data);\n }\n });\n this.computeItemsRefs(...uniqBy(tempItemData, 'id'));\n this.flatItems = [...this.flatItems];\n this.viewportItems = [...this.viewportItems];\n }\n\n private appendDraggingItemToViewportItems() {\n if (this.draggingItem) {\n let flatItem = this.viewportItems.find((item) => {\n return item.id === this.draggingItem.id;\n });\n if (!flatItem) {\n flatItem = this.flatItems.find((item) => {\n return item.id === this.draggingItem.id;\n });\n if (flatItem) {\n this.viewportItems.push(flatItem);\n }\n }\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.afterExpand();\n this.expandChange.emit(item);\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.afterExpand();\n this.expandChange.emit(item);\n }\n } else {\n item.setExpand(false);\n this.afterExpand();\n this.expandChange.emit(item);\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, current: selectedValue as GanttItem, selectedValue: _selectedValue });\n } else {\n const _selectedValue = this.getGanttItem(selectedIds[0])?.origin;\n this.selectedChange.emit({ event, current: selectedValue as GanttItem, selectedValue: _selectedValue });\n }\n }\n\n scrollToToday() {\n this.ganttRoot.scrollToToday();\n }\n\n scrollToDate(date: number | GanttDate) {\n this.ganttRoot.scrollToDate(date);\n }\n\n scrolledIndexChange(index: number) {\n this.virtualScrolledIndexChange.emit({\n index,\n renderedRange: {\n start: this.rangeStart,\n end: this.rangeEnd\n },\n count: this.flatItems.length\n });\n }\n\n override expandGroups(expanded: boolean) {\n this.groups.forEach((group) => {\n group.setExpand(expanded);\n });\n\n this.afterExpand();\n this.expandChange.next(null);\n this.cdr.detectChanges();\n }\n\n override expandGroup(group: GanttGroupInternal) {\n group.setExpand(!group.expanded);\n this.afterExpand();\n this.expandChange.emit();\n this.cdr.detectChanges();\n }\n\n itemDragStarted(event: GanttTableDragStartedEvent) {\n this.table.dragStarted.emit(event);\n this.draggingItem = event.source;\n }\n\n itemDragEnded(event: GanttTableDragEndedEvent) {\n this.table.dragEnded.emit(event);\n this.draggingItem = null;\n }\n}\n","<ngx-gantt-root #ganttRoot>\n <div class=\"gantt-header\">\n <gantt-table-header #tableHeader [columns]=\"columns\"></gantt-table-header>\n <div class=\"gantt-container-header\">\n <gantt-calendar-header [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"></gantt-calendar-header>\n </div>\n </div>\n <gantt-loader *ngIf=\"loading\"></gantt-loader>\n\n <cdk-virtual-scroll-viewport\n class=\"gantt-virtual-scroll-viewport\"\n [ngClass]=\"{\n 'gantt-normal-viewport': !virtualScrollEnabled,\n 'gantt-scroll-container': virtualScrollEnabled,\n 'with-footer': table?.tableFooterTemplate || footerTemplate\n }\"\n [style.top.px]=\"styles.headerHeight\"\n [itemSize]=\"styles.lineHeight\"\n [minBufferPx]=\"styles.lineHeight * 10\"\n [maxBufferPx]=\"styles.lineHeight * 20\"\n (scrolledIndexChange)=\"scrolledIndexChange($event)\"\n >\n <ng-container *cdkVirtualFor=\"let item of flatItems; trackBy: trackBy\"></ng-container>\n <div class=\"gantt-side\" [style.width.px]=\"tableHeader.tableWidth + 1\" [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-side-container\">\n <div class=\"gantt-table\">\n <gantt-table-body\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"table.tableEmptyTemplate || tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n [draggable]=\"table.draggable\"\n [dropEnterPredicate]=\"table.dropEnterPredicate\"\n (dragDropped)=\"table.dragDropped.emit($event)\"\n (dragStarted)=\"itemDragStarted($event)\"\n (dragEnded)=\"itemDragEnded($event)\"\n (itemClick)=\"selectItem($event)\"\n >\n </gantt-table-body>\n </div>\n </div>\n </div>\n <div class=\"gantt-container\">\n <gantt-calendar-grid\n [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\"\n ></gantt-calendar-grid>\n <div class=\"gantt-main\">\n <gantt-main\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n [baselineTemplate]=\"baselineTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <gantt-drag-backdrop [style.left.px]=\"tableHeader.tableWidth + 1\"></gantt-drag-backdrop>\n\n <div\n class=\"gantt-scrollbar\"\n [style.height.px]=\"ganttRoot.horizontalScrollbarHeight + 1\"\n [style.right.px]=\"ganttRoot.verticalScrollbarWidth\"\n >\n <div\n [style.width.px]=\"tableHeader.tableWidth\"\n class=\"gantt-table-scrollbar\"\n [class.with-scrollbar]=\"ganttRoot.horizontalScrollbarHeight\"\n ></div>\n <div class=\"gantt-main-scrollbar\">\n <div class=\"h-100\" [style.width.px]=\"view.width\"></div>\n </div>\n </div>\n\n <div class=\"gantt-footer\" [style.right.px]=\"ganttRoot.verticalScrollbarWidth\" [style.bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-table-footer\" [style.width.px]=\"tableHeader.tableWidth + 1\" *ngIf=\"table?.tableFooterTemplate\">\n <ng-template [ngTemplateOutlet]=\"table?.tableFooterTemplate\" [ngTemplateOutletContext]=\"{ columns: columns }\"> </ng-template>\n </div>\n <div class=\"gantt-container-footer\" *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"> </ng-template>\n </div>\n </div>\n</ngx-gantt-root>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { setDefaultOptions } from 'date-fns';\nimport { NgxGanttBarComponent } from './components/bar/bar.component';\nimport { NgxGanttBaselineComponent } from './components/baseline/baseline.component';\nimport { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';\nimport { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttIconComponent } from './components/icon/icon.component';\nimport { GanttLinksComponent } from './components/links/links.component';\nimport { GanttLoaderComponent } from './components/loader/loader.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { NgxGanttRangeComponent } from './components/range/range.component';\nimport { GanttTableBodyComponent } from './components/table/body/gantt-table-body.component';\nimport { GanttTableHeaderComponent } from './components/table/header/gantt-table-header.component';\nimport { NgxGanttToolbarComponent } from './components/toolbar/toolbar.component';\nimport { NgxGanttComponent } from './gantt.component';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttRangeItemPipe } from './gantt.pipe';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n ScrollingModule,\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n GanttTableHeaderComponent,\n GanttTableBodyComponent,\n GanttMainComponent,\n GanttCalendarHeaderComponent,\n GanttCalendarGridComponent,\n GanttLinksComponent,\n GanttLoaderComponent,\n NgxGanttBarComponent,\n GanttIconComponent,\n GanttDragBackdropComponent,\n NgxGanttRangeComponent,\n NgxGanttRootComponent,\n NgxGanttBaselineComponent,\n NgxGanttToolbarComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe\n ],\n exports: [\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n NgxGanttRootComponent,\n NgxGanttBarComponent,\n NgxGanttRangeComponent,\n NgxGanttBaselineComponent,\n NgxGanttToolbarComponent,\n GanttCalendarHeaderComponent,\n GanttCalendarGridComponent,\n GanttDragBackdropComponent\n ],\n providers: [\n CdkVirtualScrollViewport,\n {\n provide: GANTT_GLOBAL_CONFIG,\n useValue: defaultConfig\n }\n ]\n})\nexport class NgxGanttModule {\n constructor(@Optional() @Inject(GANTT_GLOBAL_CONFIG) ganttGlobalConfig: GanttGlobalConfig) {\n setDefaultOptions({\n locale: ganttGlobalConfig?.dateOptions?.locale,\n weekStartsOn: ganttGlobalConfig?.dateOptions?.weekStartsOn || 1\n });\n }\n}\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 './components/baseline/baseline.component';\nexport * from './components/toolbar/toolbar.component';\nexport * from './components/loader/loader.component';\nexport * from './utils/date';\nexport * from './class';\nexport * from './views/view';\nexport { registerView } from './views/factory';\nexport * from './gantt-item-upper';\nexport * from './gantt.pipe';\nexport * from './gantt-print.service';\nexport * from './gantt.config';\nexport * from './components/calendar/header/calendar-header.component';\nexport * from './components/calendar/grid/calendar-grid.component';\nexport * from './components/drag-backdrop/drag-backdrop.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["viewOptions","i2.GanttDomService","i3.GanttDragContainer","i1.GanttDragContainer","takeUntil","startWith","auditTime","i3.GanttPrintService"],"mappings":"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"}
1
+ {"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/link.ts","../../../packages/gantt/src/class/item.ts","../../../packages/gantt/src/class/group.ts","../../../packages/gantt/src/class/view-type.ts","../../../packages/gantt/src/class/baseline.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/utils/helpers.ts","../../../packages/gantt/src/gantt-upper.ts","../../../packages/gantt/src/gantt-drag-container.ts","../../../packages/gantt/src/utils/drag-scroll.ts","../../../packages/gantt/src/utils/passive-listeners.ts","../../../packages/gantt/src/gantt-dom.service.ts","../../../packages/gantt/src/components/bar/bar-drag.ts","../../../packages/gantt/src/gantt.styles.ts","../../../packages/gantt/src/gantt-item-upper.ts","../../../packages/gantt/src/components/bar/bar.component.ts","../../../packages/gantt/src/components/bar/bar.component.html","../../../packages/gantt/src/components/baseline/baseline.component.ts","../../../packages/gantt/src/components/baseline/baseline.component.html","../../../packages/gantt/src/components/calendar/grid/calendar-grid.component.ts","../../../packages/gantt/src/components/calendar/grid/calendar-grid.component.html","../../../packages/gantt/src/components/calendar/header/calendar-header.component.ts","../../../packages/gantt/src/components/calendar/header/calendar-header.component.html","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.ts","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.html","../../../packages/gantt/src/components/icon/icons.ts","../../../packages/gantt/src/components/icon/icon.component.ts","../../../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/components/loader/loader.component.ts","../../../packages/gantt/src/gantt.pipe.ts","../../../packages/gantt/src/components/range/range.component.ts","../../../packages/gantt/src/components/range/range.component.html","../../../packages/gantt/src/components/main/gantt-main.component.ts","../../../packages/gantt/src/components/main/gantt-main.component.html","../../../packages/gantt/src/gantt-abstract.ts","../../../packages/gantt/src/utils/set-style-with-vendor-prefix.ts","../../../packages/gantt/src/components/table/header/gantt-table-header.component.ts","../../../packages/gantt/src/components/table/header/gantt-table-header.component.html","../../../packages/gantt/src/components/table/body/gantt-table-body.component.ts","../../../packages/gantt/src/components/table/body/gantt-table-body.component.html","../../../packages/gantt/src/components/toolbar/toolbar.component.ts","../../../packages/gantt/src/components/toolbar/toolbar.component.html","../../../packages/gantt/src/gantt-print.service.ts","../../../packages/gantt/src/root.component.ts","../../../packages/gantt/src/root.component.html","../../../packages/gantt/src/table/gantt-column.component.ts","../../../packages/gantt/src/table/gantt-table.component.ts","../../../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 | string,\n public additions?: {\n isWeekend: boolean;\n isToday: boolean;\n },\n public style?: Partial<CSSStyleDeclaration>\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 current?: GanttItem<T>;\n selectedValue: GanttItem<T> | GanttItem<T>[];\n}\n\nexport class GanttTableDragDroppedEvent<T = unknown> {\n source: GanttItem<T>;\n sourceParent: GanttItem<T>;\n target: GanttItem<T>;\n targetParent: GanttItem<T>;\n dropPosition: GanttTableDropPosition;\n}\n\nexport class GanttTableDragStartedEvent<T = unknown> {\n source: GanttItem<T>;\n sourceParent: GanttItem<T>;\n}\n\nexport class GanttTableDragEndedEvent<T = unknown> {\n source: GanttItem<T>;\n sourceParent: GanttItem<T>;\n}\n\nexport type GanttTableDropPosition = 'before' | 'inside' | 'after';\n\nexport class GanttTableDragEnterPredicateContext<T = unknown> {\n source: GanttItem<T>;\n target: GanttItem<T>;\n dropPosition: GanttTableDropPosition;\n}\n\nexport class GanttVirtualScrolledIndexChangeEvent {\n index: number;\n renderedRange: {\n start: number;\n end: number;\n };\n count: number;\n}\n","import {\n addDays,\n addHours,\n addMinutes,\n addMonths,\n addQuarters,\n addSeconds,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n endOfDay,\n endOfMonth,\n endOfQuarter,\n endOfWeek,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n getUnixTime,\n getWeek,\n isToday,\n isWeekend,\n setDate,\n startOfDay,\n startOfMonth,\n startOfQuarter,\n startOfWeek,\n startOfYear,\n startOfMinute,\n startOfHour,\n endOfHour,\n endOfMinute\n} from 'date-fns';\n\nexport {\n Locale,\n addDays,\n addHours,\n addMinutes,\n addMonths,\n addQuarters,\n addSeconds,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n differenceInCalendarQuarters,\n differenceInDays,\n eachDayOfInterval,\n eachMonthOfInterval,\n eachWeekOfInterval,\n endOfDay,\n endOfMonth,\n endOfQuarter,\n endOfWeek,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n getUnixTime,\n getWeek,\n isToday,\n isWeekend,\n setDate,\n startOfDay,\n startOfMonth,\n startOfQuarter,\n startOfWeek,\n startOfYear,\n startOfMinute,\n startOfHour,\n endOfMinute,\n endOfHour,\n differenceInMinutes,\n eachHourOfInterval\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 }): 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 startOfMinute(): GanttDate {\n return new GanttDate(startOfMinute(this.value));\n }\n\n startOfHour(): GanttDate {\n return new GanttDate(startOfHour(this.value));\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 endOfMinute(): GanttDate {\n return new GanttDate(endOfMinute(this.value));\n }\n\n endOfHour(): GanttDate {\n return new GanttDate(endOfHour(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","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 = '#6698ff'\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 { GanttLink, GanttLinkType } from './link';\nimport { GanttViewType } from './view-type';\nimport { GanttView } from '../views/view';\n\nconst DEFAULT_FILL_INCREMENT_WIDTH = 120;\n\nexport interface 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 itemDraggable?: 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 | null;\n end: GanttDate | null;\n links: GanttLink[];\n color?: string;\n barStyle?: Partial<CSSStyleDeclaration>;\n draggable?: boolean;\n itemDraggable?: 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 level: number;\n\n get refs() {\n return this.refs$.getValue();\n }\n\n refs$ = new BehaviorSubject<{ width: number; x: number; y: number }>(null as any);\n\n constructor(item: GanttItem, level: number, private view?: GanttView) {\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.itemDraggable = this.origin.itemDraggable;\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.level = level;\n this.children = (item.children || []).map((subItem) => {\n return new GanttItemInternal(subItem, level + 1, view);\n });\n this.type = this.origin.type || GanttItemType.bar;\n this.progress = this.origin.progress;\n this.fillDateWhenStartOrEndIsNil(item);\n }\n\n private fillDateWhenStartOrEndIsNil(item: GanttItem) {\n if (this.view) {\n if (item.start && !item.end) {\n this.end = this.view.getDateByXPoint(this.view.getXPointByDate(new GanttDate(item.start)) + DEFAULT_FILL_INCREMENT_WIDTH);\n }\n if (!item.start && item.end) {\n this.start = this.view.getDateByXPoint(this.view.getXPointByDate(new GanttDate(item.end)) - DEFAULT_FILL_INCREMENT_WIDTH);\n }\n }\n }\n\n updateRefs(refs: GanttItemRefs) {\n this.refs$.next(refs);\n }\n\n updateDate(start: GanttDate, end: GanttDate) {\n this.start = start;\n this.end = end;\n this.origin.start = this.start.getUnixTime();\n this.origin.end = this.end.getUnixTime();\n }\n\n updateLevel(level: number) {\n this.level = level;\n }\n\n addChildren(items: GanttItem[]) {\n this.origin.children = items;\n this.children = (items || []).map((subItem) => {\n return new GanttItemInternal(subItem, this.level + 1, this.view);\n });\n }\n\n setExpand(expanded: boolean) {\n this.expanded = expanded;\n this.origin.expanded = expanded;\n }\n\n addLink(link: GanttLink) {\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","export enum GanttViewType {\n day = 'day',\n quarter = 'quarter',\n month = 'month',\n year = 'year',\n week = 'week',\n hour = 'hour'\n}\n\nexport const ganttViews = [\n {\n name: '日',\n value: GanttViewType.day\n },\n {\n name: '周',\n value: GanttViewType.week\n },\n {\n name: '月',\n value: GanttViewType.month\n },\n {\n name: '季',\n value: GanttViewType.quarter\n },\n {\n name: '年',\n value: GanttViewType.year\n }\n];\n","import { BehaviorSubject } from 'rxjs';\nimport { GanttDate } from '../utils/date';\nimport { GanttItemRefs } from './item';\n\nexport interface GanttBaselineItem {\n id: string;\n start?: number;\n end?: number;\n}\n\nexport class GanttBaselineItemInternal {\n id: string;\n start: GanttDate;\n end: GanttDate;\n origin: GanttBaselineItem;\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: GanttBaselineItem) {\n this.origin = item;\n this.id = this.origin.id;\n this.start = item.start ? new GanttDate(item.start) : null;\n this.end = item.end ? new GanttDate(item.end) : null;\n }\n\n updateRefs(refs: GanttItemRefs) {\n this.refs$.next(refs);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Locale } from 'date-fns';\nimport { GanttLinkLineType, GanttLinkOptions, GanttLinkType } from './class/link';\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 GanttDateOptions {\n locale?: Locale;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nexport interface GanttStyleOptions {\n headerHeight?: number;\n lineHeight?: number;\n barHeight?: number;\n}\n\nexport interface GanttGlobalConfig {\n dateFormat?: GanttDateFormat;\n dateOptions?: GanttDateOptions;\n linkOptions?: GanttLinkOptions;\n styleOptions?: GanttStyleOptions;\n}\n\nexport const defaultConfig: GanttGlobalConfig = {\n dateFormat: {\n hour: 'HH:mm',\n day: 'M月d日',\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 styleOptions: {\n headerHeight: 44,\n lineHeight: 44,\n barHeight: 22\n }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n","import { differenceInCalendarDays, differenceInHours, differenceInMinutes } from 'date-fns';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDateFormat, defaultConfig } from '../gantt.config';\nimport { GanttDate, GanttDateUtil, differenceInDays } from '../utils/date';\n\nexport const primaryDatePointTop = '40%';\n\nexport const secondaryDatePointTop = '80%';\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 datePrecisionUnit?: 'day' | 'hour' | 'minute';\n dragPreviewDateFormat?: string;\n // custom key and value\n [key: string]: any;\n}\n\nconst viewOptions: GanttViewOptions = {\n min: new GanttDate().addYears(-1).startOfYear(),\n max: new GanttDate().addYears(1).endOfYear(),\n dateFormat: defaultConfig.dateFormat,\n datePrecisionUnit: 'day',\n dragPreviewDateFormat: 'MM-dd'\n};\n\nexport abstract class GanttView {\n viewType: GanttViewType;\n\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.viewStartOf(start.date)\n : this.viewStartOf(start.date.value < this.options.start.value ? start.date : this.options.start);\n const endDate = end.isCustom\n ? this.viewEndOf(end.date)\n : this.viewEndOf(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 viewStartOf(date: GanttDate): GanttDate;\n\n abstract viewEndOf(date: GanttDate): GanttDate;\n\n /**\n * deprecated, please use viewStartOf()\n * @deprecated\n */\n startOf(date: GanttDate): GanttDate {\n return this.viewStartOf(date);\n }\n\n /**\n * deprecated, please use viewEndOf()\n * @deprecated\n */\n endOf(date: GanttDate): GanttDate {\n return this.viewEndOf(date);\n }\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 startOfPrecision(date: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return date.startOfMinute();\n case 'hour':\n return date.startOfHour();\n default:\n return date.startOfDay();\n }\n }\n\n endOfPrecision(date: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return date.endOfMinute();\n case 'hour':\n return date.endOfHour();\n default:\n return date.endOfDay();\n }\n }\n\n differenceByPrecisionUnit(dateLeft: GanttDate, dateRight: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return differenceInMinutes(dateLeft.value, dateRight.value);\n case 'hour':\n return differenceInHours(dateLeft.value, dateRight.value);\n default:\n return differenceInCalendarDays(dateLeft.value, dateRight.value);\n }\n }\n\n 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.viewStartOf(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.viewEndOf(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.viewStartOf(start);\n end = this.viewEndOf(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.max(Math.floor(x / this.getCellWidth()), 0);\n const matchDate = this.secondaryDatePoints[Math.min(this.secondaryDatePoints.length - 1, 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);\n return matchDate?.start.addDays(day);\n }\n }\n\n // 获取指定时间范围的宽度\n getDateRangeWidth(start: GanttDate, end: GanttDate) {\n // addSeconds(1) 是因为计算相差天会以一个整天来计算 end时间一般是59分59秒不是一个整天,所以需要加1\n return this.getDateIntervalWidth(this.startOfPrecision(start), this.endOfPrecision(end).addSeconds(1));\n }\n\n // 根据日期精度获取最小时间范围的宽度\n getMinRangeWidthByPrecisionUnit(date: GanttDate) {\n switch (this.options.datePrecisionUnit) {\n case 'minute':\n return this.getDayOccupancyWidth(date) / 24 / 60;\n case 'hour':\n return this.getDayOccupancyWidth(date) / 24;\n default:\n return this.getDayOccupancyWidth(date);\n }\n }\n}\n","import { GanttView, GanttViewOptions, GanttViewDate, secondaryDatePointTop, primaryDatePointTop } from './view';\nimport { GanttDate, differenceInCalendarQuarters, eachMonthOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttViewType } from '../class';\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 override viewType = GanttViewType.month;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfQuarter();\n }\n\n viewEndOf(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, GanttViewDate, secondaryDatePointTop, primaryDatePointTop } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarQuarters } from 'date-fns';\nimport { GanttViewType } from '../class';\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 override viewType = GanttViewType.quarter;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n viewEndOf(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 { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDate, eachDayOfInterval, eachWeekOfInterval } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 35,\n start: new GanttDate().startOfYear().startOfWeek(),\n end: new GanttDate().endOfYear().endOfWeek(),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewDay extends GanttView {\n override showWeekBackdrop = true;\n\n override showTimeline = false;\n\n override viewType = GanttViewType.day;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfWeek();\n }\n\n viewEndOf(date: GanttDate) {\n return date.endOfWeek();\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 });\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 { GanttViewType } from '../class';\nimport { 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(),\n end: new GanttDate().endOfYear().endOfWeek(),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewWeek extends GanttView {\n override viewType = GanttViewType.week;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfWeek();\n }\n\n viewEndOf(date: GanttDate) {\n return date.endOfWeek();\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 });\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.addSeconds(1).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, GanttViewDate, primaryDatePointTop, secondaryDatePointTop } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarYears } from 'date-fns';\nimport { GanttViewType } from '../class';\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 override viewType = GanttViewType.year;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n viewEndOf(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 = '60%';\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 { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDate, differenceInMinutes, eachDayOfInterval, eachHourOfInterval } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 80,\n start: new GanttDate().startOfMonth(),\n end: new GanttDate().endOfMonth(),\n datePrecisionUnit: 'minute',\n addAmount: 1,\n addUnit: 'week',\n dragPreviewDateFormat: 'HH:mm'\n};\n\nexport class GanttViewHour extends GanttView {\n override showWeekBackdrop = true;\n\n override showTimeline = true;\n\n override viewType = GanttViewType.hour;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n viewStartOf(date: GanttDate) {\n return date.startOfWeek();\n }\n\n viewEndOf(date: GanttDate) {\n return date.endOfWeek();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 24;\n }\n\n getDayOccupancyWidth(): number {\n return this.cellWidth * 60;\n }\n\n private getHourOccupancyWidth() {\n return this.getDayOccupancyWidth() / 60;\n }\n\n getPrimaryDatePoints(): 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 = this.start.addDays(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\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 override getTodayXPoint(): number {\n const toady = new GanttDate().startOfMinute();\n if (toady.value > this.start.value && toady.value < this.end.value) {\n const x = this.getXPointByDate(toady);\n return x;\n } else {\n return null;\n }\n }\n\n override getDateIntervalWidth(start: GanttDate, end: GanttDate) {\n let result = 0;\n const minutes = differenceInMinutes(end.value, start.value);\n for (let i = 0; i < minutes; i++) {\n result += this.getHourOccupancyWidth() / 60;\n }\n result = minutes >= 0 ? result : -result;\n return Number(result.toFixed(3));\n }\n\n override getDateByXPoint(x: number) {\n const hourWidth = this.getHourOccupancyWidth();\n const indexOfSecondaryDate = Math.max(Math.floor(x / hourWidth), 0);\n const matchDate = this.secondaryDatePoints[Math.min(this.secondaryDatePoints.length - 1, indexOfSecondaryDate)];\n const minuteWidth = hourWidth / 60;\n const underOneHourMinutes = Math.floor((x % hourWidth) / minuteWidth);\n return matchDate?.start.addMinutes(underOneHourMinutes);\n }\n}\n","import { GanttViewOptions, GanttViewDate, GanttView } 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\nconst ganttViewsMap = {\n [GanttViewType.hour]: GanttViewHour,\n [GanttViewType.day]: GanttViewDay,\n [GanttViewType.week]: GanttViewWeek,\n [GanttViewType.month]: GanttViewMonth,\n [GanttViewType.quarter]: GanttViewQuarter,\n [GanttViewType.year]: GanttViewYear\n};\n\nexport function registerView<T extends typeof GanttView>(type: string, view: T) {\n ganttViewsMap[type] = view;\n}\n\nexport function createViewFactory(type: GanttViewType, start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n return new ganttViewsMap[type](start, end, options);\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\n// export 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 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\nexport function keyBy<T>(array: T[], key: T extends object ? keyof T : never): { [key: string]: T } {\n const result: { [key: string]: T } = {};\n array.forEach((item) => {\n const keyValue = item[key];\n (result as any)[keyValue] = item;\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 GanttToolbarOptions\n} from './class';\nimport { GanttView, GanttViewOptions } from './views/view';\nimport { createViewFactory } from './views/factory';\nimport { GanttDate } from './utils/date';\nimport { uniqBy, flatten, recursiveItems, getFlatItems, Dictionary, keyBy } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, GanttStyleOptions, defaultConfig } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { GanttBaselineItem, GanttBaselineItemInternal } from './class/baseline';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\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 // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('baselineItems') originBaselineItems: GanttBaselineItem[] = [];\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: GanttStyleOptions;\n\n @Input() showToolbar = false;\n\n @Input() toolbarOptions: GanttToolbarOptions = {\n viewTypes: [GanttViewType.day, GanttViewType.month, GanttViewType.year]\n };\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 @Output() viewChange = new EventEmitter<GanttView>();\n\n @Output() expandChange = new EventEmitter<GanttItemInternal | GanttGroupInternal>();\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('baseline', { static: true }) baselineTemplate: TemplateRef<any>;\n\n @ContentChild('group', { static: true }) groupTemplate: TemplateRef<any>;\n\n @ContentChild('groupHeader', { static: true }) groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild('toolbar', { static: true }) toolbarTemplate: TemplateRef<any>;\n\n public linkable: boolean;\n\n public computeAllRefs = true;\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 baselineItems: GanttBaselineItemInternal[] = [];\n\n public baselineItemsMap: Dictionary<GanttBaselineItemInternal> = {};\n\n // public viewChange = new EventEmitter<GanttView>();\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 public table?: NgxGanttTableComponent;\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.viewOptions.dateFormat = Object.assign({}, defaultConfig.dateFormat, this.config.dateFormat, this.viewOptions.dateFormat);\n this.viewOptions.styleOptions = Object.assign(\n {},\n defaultConfig.styleOptions,\n this.config.styleOptions,\n this.viewOptions.styleOptions\n );\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, 0, this.view);\n group.items.push(item);\n }\n });\n } else {\n this.originItems.forEach((origin) => {\n const item = new GanttItemInternal(origin, 0, this.view);\n this.items.push(item);\n });\n }\n }\n\n private setupBaselineItems() {\n this.originBaselineItems = uniqBy(this.originBaselineItems, 'id');\n this.baselineItems = [];\n\n this.originBaselineItems.forEach((origin) => {\n const item = new GanttBaselineItemInternal(origin);\n this.baselineItems.push(item);\n });\n\n this.baselineItemsMap = keyBy(this.baselineItems, 'id');\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 if (this.computeAllRefs) {\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\n private initSelectionModel() {\n return new SelectionModel(this.multiple, []);\n }\n\n expandGroups(expanded: boolean) {\n this.groups.forEach((group) => {\n group.setExpand(expanded);\n });\n this.expandChange.next(null);\n this.cdr.detectChanges();\n }\n\n ngOnInit() {\n this.styles = Object.assign({}, defaultConfig.styleOptions, this.config.styleOptions, this.styles);\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\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 const disabledLoadOnScroll = this.disabledLoadOnScroll;\n this.dragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe((event) => {\n this.disabledLoadOnScroll = true;\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.disabledLoadOnScroll = disabledLoadOnScroll;\n this.dragEnded.emit(event);\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 && changes.viewType.currentValue !== changes.viewType.previousValue) {\n this.changeView(changes.viewType.currentValue);\n }\n if (changes.viewOptions) {\n this.changeView(this.viewType);\n }\n if (changes.originItems || changes.originGroups) {\n this.setupExpandedState();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n }\n\n if (changes.originBaselineItems) {\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\n }\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n computeItemsRefs(...items: GanttItemInternal[] | GanttBaselineItemInternal[]) {\n items.forEach((item) => {\n item.updateRefs({\n width: item.start && item.end ? this.view.getDateRangeWidth(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 // public functions\n\n expandGroup(group: GanttGroupInternal) {\n group.setExpand(!group.expanded);\n this.expandChange.emit(group);\n this.cdr.detectChanges();\n }\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 changeView(type: GanttViewType) {\n this.viewType = type;\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\n this.viewChange.emit(this.view);\n }\n\n rerenderView() {\n this.changeView(this.viewType);\n }\n}\n\nexport const GANTT_UPPER_TOKEN = new InjectionToken<GanttUpper>('GANTT_UPPER_TOKEN');\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","/** Horizontal direction in which we can auto-scroll. */\nexport const enum AutoScrollHorizontalDirection {\n NONE,\n LEFT,\n RIGHT\n}\n\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nexport function getHorizontalScrollDirection(clientRect: DOMRect, pointerX: number) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return AutoScrollHorizontalDirection.LEFT;\n } else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return AutoScrollHorizontalDirection.RIGHT;\n }\n\n return AutoScrollHorizontalDirection.NONE;\n}\n\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nexport function isPointerNearClientRect(rect: DOMRect, threshold: number, pointerX: number, pointerY: number): boolean {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n\n return pointerY > top - yThreshold && pointerY < bottom + yThreshold && pointerX > left - xThreshold && pointerX < right + xThreshold;\n}\n\n/**\n * Gets the speed rate of auto scrolling\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param horizontalScrollDirection The direction in which the mouse is dragged horizontally\n */\nexport function getAutoScrollSpeedRates(clientRect: DOMRect, pointerX: number, horizontalScrollDirection: AutoScrollHorizontalDirection) {\n let autoScrollSpeedRates = 4;\n const speedLevels = 4;\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n\n if (horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n autoScrollSpeedRates = Math.ceil((xThreshold - (pointerX > left ? pointerX - left : 0)) / (xThreshold / speedLevels));\n }\n if (horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n autoScrollSpeedRates = Math.ceil((xThreshold - (right > pointerX ? right - pointerX : 0)) / (xThreshold / speedLevels));\n }\n\n return autoScrollSpeedRates;\n}\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 verticalScrollContainer: Element;\n\n public calendarHeader: Element;\n\n public mainItems: Element;\n\n public calendarOverlay: Element;\n\n public linksOverlay: Element;\n\n private mainFooter: Element;\n\n private mainScrollbar: 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 const scrollObservers = [\n fromEvent(this.mainContainer, 'scroll', passiveListenerOptions),\n fromEvent(this.sideContainer, 'scroll', passiveListenerOptions)\n ];\n\n this.mainFooter && scrollObservers.push(fromEvent(this.mainFooter, 'scroll', passiveListenerOptions));\n this.mainScrollbar && scrollObservers.push(fromEvent(this.mainScrollbar, 'scroll', passiveListenerOptions));\n\n this.ngZone.runOutsideAngular(() =>\n merge(...scrollObservers)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n this.syncScroll(event);\n })\n );\n }\n\n private syncScroll(event: Event) {\n const target = event.currentTarget as HTMLElement;\n const classList = target.classList;\n\n if (!classList.contains('gantt-side-container')) {\n this.mainContainer.scrollLeft = target.scrollLeft;\n this.calendarHeader.scrollLeft = target.scrollLeft;\n this.calendarOverlay.scrollLeft = target.scrollLeft;\n this.mainScrollbar && (this.mainScrollbar.scrollLeft = target.scrollLeft);\n this.mainFooter && (this.mainFooter.scrollLeft = target.scrollLeft);\n if (classList.contains('gantt-main-container')) {\n this.sideContainer.scrollTop = target.scrollTop;\n this.mainContainer.scrollTop = target.scrollTop;\n }\n } else {\n this.sideContainer.scrollTop = target.scrollTop;\n this.mainContainer.scrollTop = target.scrollTop;\n }\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.mainScrollbar = this.root.getElementsByClassName('gantt-main-scrollbar')[0];\n this.mainFooter = this.root.getElementsByClassName('gantt-container-footer')[0];\n this.verticalScrollContainer = this.root.getElementsByClassName('gantt-scroll-container')[0];\n const mainItems = this.mainContainer.getElementsByClassName('gantt-main-items')[0];\n const mainGroups = this.mainContainer.getElementsByClassName('gantt-main-groups')[0];\n this.mainItems = mainItems || mainGroups;\n this.calendarHeader = this.root.getElementsByClassName('gantt-calendar-header')[0];\n this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-grid')[0];\n\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 const scrollObservers = [fromEvent(this.mainContainer, 'scroll', options)];\n this.mainFooter && scrollObservers.push(fromEvent(this.mainFooter, 'scroll', options));\n this.mainScrollbar && scrollObservers.push(fromEvent(this.mainScrollbar, 'scroll', options));\n\n return new Observable<ScrollEvent>((subscriber) =>\n this.ngZone.runOutsideAngular(() =>\n merge(...scrollObservers)\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.calendarHeader.scrollLeft = this.mainContainer.scrollLeft;\n this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n this.mainScrollbar && (this.mainScrollbar.scrollLeft = this.mainContainer.scrollLeft);\n this.mainFooter && (this.mainFooter.scrollLeft = this.mainContainer.scrollLeft);\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { ElementRef, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { Subject, animationFrameScheduler, fromEvent, interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttViewType } from '../../class';\nimport { GanttItemInternal } from '../../class/item';\nimport { GanttLinkType } from '../../class/link';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { GanttDragContainer, InBarPosition } from '../../gantt-drag-container';\nimport { GanttUpper } from '../../gantt-upper';\nimport { GanttDate } from '../../utils/date';\nimport {\n AutoScrollHorizontalDirection,\n getAutoScrollSpeedRates,\n getHorizontalScrollDirection,\n isPointerNearClientRect\n} from '../../utils/drag-scroll';\nimport { passiveListenerOptions } from '../../utils/passive-listeners';\n\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n\nconst dragMinWidth = 10;\nconst autoScrollBaseStep = 2;\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 get barHandleDragMoveAndScrollDistance() {\n return this.barHandleDragMoveDistance + this.dragScrollDistance;\n }\n\n private get autoScrollStep() {\n return Math.pow(autoScrollBaseStep, this.autoScrollSpeedRates);\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 /** Used to signal to the current auto-scroll sequence when to stop. */\n private stopScrollTimers$ = new Subject<void>();\n\n /** container element scrollLeft */\n private containerScrollLeft: number;\n\n /** move distance when drag bar */\n private barDragMoveDistance = 0;\n\n /** move distance when drag bar handle */\n private barHandleDragMoveDistance = 0;\n\n /** scrolling state when drag */\n private dragScrolling = false;\n\n /** dragScrollDistance */\n private dragScrollDistance = 0;\n\n /** Horizontal direction in which the list is currently scrolling. */\n private _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\n /** Record bar days when bar handle drag move. */\n private barHandleDragMoveRecordDiffs: number;\n\n /** Speed ratio for auto scroll */\n private autoScrollSpeedRates = 1;\n\n constructor(\n private dragDrop: DragDrop,\n private dom: GanttDomService,\n private dragContainer: GanttDragContainer,\n private _ngZone: NgZone\n ) {}\n\n private createDragRef<T = any>(element: ElementRef<HTMLElement> | HTMLElement): DragRef<T> {\n const dragRef = this.dragDrop.createDrag(element);\n return dragRef;\n }\n\n private createDragScrollEvent(dragRef: DragRef) {\n return fromEvent(this.dom.mainContainer, 'scroll', passiveListenerOptions).pipe(takeUntil(dragRef.ended));\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.createDragRef(this.barElement);\n dragRef.lockAxis = 'x';\n dragRef.withBoundaryElement(this.dom.mainItems as HTMLElement);\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.containerScrollLeft = this.dom.mainContainer.scrollLeft;\n this.createDragScrollEvent(dragRef).subscribe(() => {\n if (dragRef.isDragging()) {\n const dragScrollDistance = this.dom.mainContainer.scrollLeft - this.containerScrollLeft;\n this.dragScrollDistance = dragScrollDistance;\n dragRef['_boundaryRect'] = this.dom.mainItems.getBoundingClientRect();\n this.barDragMove();\n }\n });\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n\n dragRef.moved.subscribe((event) => {\n this.startScrollingIfNecessary(event.pointerPosition.x, event.pointerPosition.y);\n this.barDragMoveDistance = event.distance.x;\n if (!this.dragScrolling) {\n this.barDragMove();\n }\n });\n\n dragRef.ended.subscribe((event) => {\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n event.source.reset();\n this.stopScrolling();\n this.dragScrolling = false;\n this.dragScrollDistance = 0;\n this.barDragMoveDistance = 0;\n this.item.updateRefs({\n width: this.ganttUpper.view.getDateRangeWidth(this.item.start, this.item.end),\n x: this.ganttUpper.view.getXPointByDate(this.item.start),\n y: (this.ganttUpper.styles.lineHeight - this.ganttUpper.styles.barHeight) / 2 - 1\n });\n this.dragContainer.dragEnded.emit({ item: this.item.origin });\n });\n this.barDragRef = dragRef;\n\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.createDragRef(handle);\n dragRef.lockAxis = 'x';\n dragRef.withBoundaryElement(this.dom.mainItems as HTMLElement);\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.containerScrollLeft = this.dom.mainContainer.scrollLeft;\n this.createDragScrollEvent(dragRef).subscribe(() => {\n if (dragRef.isDragging()) {\n const dragScrollDistance = this.dom.mainContainer.scrollLeft - this.containerScrollLeft;\n this.dragScrollDistance = dragScrollDistance;\n dragRef['_boundaryRect'] = this.dom.mainItems.getBoundingClientRect();\n\n if (this.dragScrolling && this.isStartGreaterThanEndWhenBarHandleDragMove(isBefore)) {\n this.stopScrolling();\n this.dragScrolling = false;\n }\n\n if (isBefore) {\n this.barBeforeHandleDragMove();\n } else {\n this.barAfterHandleDragMove();\n }\n }\n });\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n\n dragRef.moved.subscribe((event) => {\n if (this.barHandleDragMoveRecordDiffs && this.barHandleDragMoveRecordDiffs > 0) {\n this.startScrollingIfNecessary(event.pointerPosition.x, event.pointerPosition.y);\n }\n this.barHandleDragMoveDistance = event.distance.x;\n if (!this.dragScrolling) {\n if (isBefore) {\n this.barBeforeHandleDragMove();\n } else {\n this.barAfterHandleDragMove();\n }\n }\n });\n\n dragRef.ended.subscribe((event) => {\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n event.source.reset();\n this.stopScrolling();\n this.dragScrolling = false;\n this.dragScrollDistance = 0;\n this.barHandleDragMoveDistance = 0;\n this.item.updateRefs({\n width: this.ganttUpper.view.getDateRangeWidth(this.item.start, this.item.end),\n x: this.ganttUpper.view.getXPointByDate(this.item.start),\n y: (this.ganttUpper.styles.lineHeight - this.ganttUpper.styles.barHeight) / 2 - 1\n });\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.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n const rootRect = this.dom.root.getBoundingClientRect();\n const dragRect = dragElement.getBoundingClientRect();\n let left = dragRect.left - rootRect.left - (this.dom.side.clientWidth + 1);\n if (this.dragScrolling) {\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n left += this.autoScrollStep;\n } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n left -= this.autoScrollStep;\n }\n }\n const width = dragRect.right - dragRect.left;\n\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(this.ganttUpper.view.options.dragPreviewDateFormat);\n dragMaskElement.querySelector('.end').innerHTML = end.format(this.ganttUpper.view.options.dragPreviewDateFormat);\n }\n\n private closeDragBackdrop() {\n const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n dragMaskElement.style.display = 'none';\n dragBackdropElement.style.display = 'none';\n }\n\n private setDraggingStyles() {\n this.barElement.classList.add('gantt-bar-draggable-drag');\n }\n\n private clearDraggingStyles() {\n this.barElement.classList.remove('gantt-bar-draggable-drag');\n }\n\n private barDragMove() {\n const currentX = this.item.refs.x + this.barDragMoveDistance + this.dragScrollDistance;\n const currentDate = this.ganttUpper.view.getDateByXPoint(currentX);\n const currentStartX = this.ganttUpper.view.getXPointByDate(currentDate);\n\n const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item.end, this.item.start);\n\n let start = currentDate;\n let end = currentDate.add(diffs, this.ganttUpper.view?.options?.datePrecisionUnit);\n\n // 日视图特殊逻辑处理\n if (this.ganttUpper.view.viewType === GanttViewType.day) {\n const dayWidth = this.ganttUpper.view.getDayOccupancyWidth(currentDate);\n if (currentX > currentStartX + dayWidth / 2) {\n start = start.addDays(1);\n end = end.addDays(1);\n }\n }\n\n if (this.dragScrolling) {\n const left = currentX - this.barDragMoveDistance;\n this.barElement.style.left = left + 'px';\n }\n\n this.openDragBackdrop(\n this.barElement,\n this.ganttUpper.view.getDateByXPoint(currentX),\n this.ganttUpper.view.getDateByXPoint(currentX + this.item.refs.width)\n );\n\n if (!this.isStartOrEndInsideView(start, end)) {\n return;\n }\n this.updateItemDate(start, end);\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n }\n\n private barBeforeHandleDragMove() {\n const { x, start, minRangeWidthWidth } = this.startOfBarHandle();\n const width = this.item.refs.width + this.barHandleDragMoveAndScrollDistance * -1;\n const diffs = this.ganttUpper.view.differenceByPrecisionUnit(this.item.end, start);\n\n if (width > dragMinWidth && diffs > 0) {\n this.barElement.style.width = width + 'px';\n this.barElement.style.left = x + 'px';\n this.openDragBackdrop(this.barElement, start, this.item.end);\n\n if (!this.isStartOrEndInsideView(start, this.item.end)) {\n return;\n }\n\n this.updateItemDate(start, this.item.end);\n } else {\n if (this.barHandleDragMoveRecordDiffs > 0 && diffs <= 0) {\n this.barElement.style.width = minRangeWidthWidth + 'px';\n const x = this.ganttUpper.view.getXPointByDate(this.item.end);\n this.barElement.style.left = x + 'px';\n }\n this.openDragBackdrop(this.barElement, this.item.end, this.item.end);\n this.updateItemDate(this.item.end, this.item.end);\n }\n this.barHandleDragMoveRecordDiffs = diffs;\n\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n }\n\n private barAfterHandleDragMove() {\n const { width, end } = this.endOfBarHandle();\n const diffs = this.ganttUpper.view.differenceByPrecisionUnit(end, this.item.start);\n\n if (width > dragMinWidth && diffs > 0) {\n this.barElement.style.width = width + 'px';\n this.openDragBackdrop(this.barElement, this.item.start, end);\n if (!this.isStartOrEndInsideView(this.item.start, end)) {\n return;\n }\n this.updateItemDate(this.item.start, end);\n } else {\n if (this.barHandleDragMoveRecordDiffs > 0 && diffs <= 0) {\n const minRangeWidth = this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item.start);\n this.barElement.style.width = minRangeWidth + 'px';\n }\n this.openDragBackdrop(this.barElement, this.item.start, this.item.start);\n this.updateItemDate(this.item.start, this.item.start);\n }\n this.barHandleDragMoveRecordDiffs = diffs;\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\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 private startScrollInterval = () => {\n this.stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this.stopScrollTimers$))\n .subscribe(() => {\n const node = this.dom.mainContainer;\n const scrollStep = this.autoScrollStep;\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n node.scrollBy(-scrollStep, 0);\n } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n\n private startScrollingIfNecessary(pointerX: number, pointerY: number) {\n const clientRect = this.dom.mainContainer.getBoundingClientRect();\n const scrollLeft = this.dom.mainContainer.scrollLeft;\n if (isPointerNearClientRect(clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n const horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n\n if (\n (horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT && scrollLeft > 0) ||\n (horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT &&\n scrollLeft < this.ganttUpper.view.width - clientRect.width)\n ) {\n this._horizontalScrollDirection = horizontalScrollDirection;\n this.autoScrollSpeedRates = getAutoScrollSpeedRates(clientRect, pointerX, horizontalScrollDirection);\n this.dragScrolling = true;\n this._ngZone.runOutsideAngular(this.startScrollInterval);\n } else {\n this.dragScrolling = false;\n this.stopScrolling();\n }\n }\n }\n\n // Conditions to stop auto-scroll: when the start is greater than the end and the bar appears in the view\n private isStartGreaterThanEndWhenBarHandleDragMove(isBefore: boolean) {\n let isStartGreaterThanEnd: boolean;\n let isBarAppearsInView: boolean;\n\n const scrollLeft = this.dom.mainContainer.scrollLeft;\n const clientWidth = this.dom.mainContainer.clientWidth;\n const xThreshold = clientWidth * DROP_PROXIMITY_THRESHOLD;\n\n if (isBefore) {\n const { start, minRangeWidthWidth } = this.startOfBarHandle();\n const xPointerByEndDate = this.ganttUpper.view.getXPointByDate(this.item.end);\n\n isStartGreaterThanEnd = start.value > this.item.end.value;\n isBarAppearsInView = xPointerByEndDate + minRangeWidthWidth + xThreshold <= scrollLeft + clientWidth;\n } else {\n const { end } = this.endOfBarHandle();\n const xPointerByStartDate = this.ganttUpper.view.getXPointByDate(this.item.start);\n\n isStartGreaterThanEnd = end.value < this.item.start.value;\n isBarAppearsInView = scrollLeft + xThreshold <= xPointerByStartDate;\n }\n\n return isStartGreaterThanEnd && isBarAppearsInView ? true : false;\n }\n\n // Some data information about dragging start until it is equal to or greater than end\n private startOfBarHandle() {\n const x = this.item.refs.x + this.barHandleDragMoveAndScrollDistance;\n return {\n x,\n start: this.ganttUpper.view.getDateByXPoint(x),\n minRangeWidthWidth: this.ganttUpper.view.getMinRangeWidthByPrecisionUnit(this.item.end)\n };\n }\n\n // Some data information about dragging end of bar handle\n private endOfBarHandle() {\n const width = this.item.refs.width + this.barHandleDragMoveAndScrollDistance;\n\n return {\n width,\n end: this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width)\n };\n }\n\n private stopScrolling() {\n this.stopScrollTimers$.next();\n }\n\n private isStartOrEndInsideView(start: GanttDate, end: GanttDate) {\n const itemStart = start.getUnixTime();\n const itemEnd = end.getUnixTime();\n const viewStart = this.ganttUpper.view.start.getUnixTime();\n const viewEnd = this.ganttUpper.view.end.getUnixTime();\n if (itemStart < viewStart || itemEnd > viewEnd) {\n return false;\n } else {\n return true;\n }\n }\n\n private updateItemDate(start: GanttDate, end: GanttDate) {\n this.item.updateDate(this.ganttUpper.view.startOfPrecision(start), this.ganttUpper.view.endOfPrecision(end));\n }\n\n createDrags(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n this.item = item;\n this.barElement = elementRef.nativeElement;\n\n this.ganttUpper = ganttUpper;\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 updateItem(item: GanttItemInternal) {\n this.item = item;\n }\n\n ngOnDestroy() {\n this.closeDragBackdrop();\n this.dragRefs.forEach((dragRef) => dragRef.dispose());\n this.destroy$.next();\n this.destroy$.complete();\n this.stopScrolling();\n this.stopScrollTimers$.complete();\n }\n}\n","export const sideWidth = 400;\n\nexport const sideMiddleWidth = 500;\n\nexport const sideMaxWidth = 600;\n\nexport const sideMinWidth = 400;\n\nexport const barBackground = '#6698ff';\n\nexport const rangeHeight = 17;\n\nexport const todayHeight = 24;\n\nexport const todayWidth = 35;\n\nexport const todayBorderRadius = 4;\n","import { Input, ElementRef, Inject, TemplateRef, Directive, OnInit, OnChanges, OnDestroy, SimpleChanges } 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 public refsUnsubscribe$ = 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.refsUnsubscribe$)).subscribe(() => {\n this.setPositions();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.firstChange) {\n this.itemChange(changes.item.currentValue);\n }\n }\n\n private itemChange(item: GanttItemInternal) {\n this.refsUnsubscribe$.next();\n this.refsUnsubscribe$.complete();\n this.item = item;\n this.item.refs$.pipe(takeUntil(this.refsUnsubscribe$)).subscribe(() => {\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 }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n this.refsUnsubscribe$.next();\n this.refsUnsubscribe$.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 SimpleChanges\n} from '@angular/core';\nimport { from, fromEvent, merge, Observable } from 'rxjs';\nimport { startWith, switchMap, take, 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';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\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 standalone: true,\n imports: [NgIf, NgTemplateOutlet]\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 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.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n });\n this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.elementRef.nativeElement.style.pointerEvents = '';\n this.setContentBackground();\n });\n }\n\n override ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.firstChange) {\n this.drag.updateItem(this.item);\n\n if (\n changes.item.currentValue.refs?.width !== changes.item.previousValue.refs?.width ||\n changes.item.currentValue.color !== changes.item.previousValue.color ||\n changes.item.currentValue.start?.value !== changes.item.previousValue.start?.value ||\n changes.item.currentValue.end?.value !== changes.item.previousValue.end?.value\n ) {\n this.setContentBackground();\n }\n }\n }\n\n ngAfterViewInit() {\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.drag.createDrags(this.elementRef, this.item, this.ganttUpper);\n });\n });\n\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 if (this.item.refs?.width) {\n const contentElement = this.contentElementRef.nativeElement;\n const color = this.item.color || barBackground;\n const style: Partial<CSSStyleDeclaration> = this.item.barStyle || {};\n const barElement = this.elementRef.nativeElement;\n\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\n const borderRadius = '4px 12.5px 12.5px 4px';\n style.borderRadius = borderRadius;\n barElement.style.borderRadius = borderRadius;\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\n const borderRadius = '12.5px 4px 4px 12.5px';\n style.borderRadius = borderRadius;\n barElement.style.borderRadius = borderRadius;\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\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, ElementRef, HostBinding, Inject, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttBaselineItemInternal } from '../../class/baseline';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-baseline,gantt-baseline',\n templateUrl: './baseline.component.html',\n standalone: true,\n imports: [NgIf, NgTemplateOutlet]\n})\nexport class NgxGanttBaselineComponent implements OnInit {\n @Input() baselineItem: GanttBaselineItemInternal;\n\n @Input() template: TemplateRef<any>;\n\n public unsubscribe$ = new Subject<void>();\n\n @HostBinding('class.gantt-baseline') ganttBaselineClass = true;\n\n constructor(private elementRef: ElementRef<HTMLElement>, @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n ngOnInit() {\n this.baselineItem.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.setPositions();\n });\n }\n\n private setPositions() {\n const itemElement = this.elementRef.nativeElement;\n itemElement.style.left = this.baselineItem.refs.x + 'px';\n itemElement.style.bottom = '2px';\n itemElement.style.width = this.baselineItem.refs.width + 'px';\n }\n}\n","<div #content *ngIf=\"baselineItem\" class=\"baseline-content\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: baselineItem.origin, refs: baselineItem.refs }\"\n ></ng-template>\n</div>\n","import { Component, OnInit, HostBinding, OnChanges, SimpleChanges, OnDestroy, NgZone, Inject, ElementRef } from '@angular/core';\nimport { GanttDatePoint } from '../../../class/date-point';\nimport { Subject, merge } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { isNumber } from '../../../utils/helpers';\n\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../../gantt-upper';\nimport { GanttViewType } from './../../../class/view-type';\nimport { todayBorderRadius } from '../../../gantt.styles';\nimport { NgIf, NgFor } from '@angular/common';\n\nconst mainHeight = 5000;\n\n@Component({\n selector: 'gantt-calendar-grid',\n templateUrl: './calendar-grid.component.html',\n standalone: true,\n imports: [NgIf, NgFor]\n})\nexport class GanttCalendarGridComponent implements OnInit, OnDestroy {\n get view() {\n return this.ganttUpper.view;\n }\n private unsubscribe$ = new Subject<void>();\n\n mainHeight = mainHeight;\n\n todayBorderRadius = todayBorderRadius;\n\n viewTypes = GanttViewType;\n\n @HostBinding('class') className = `gantt-calendar gantt-calendar-grid`;\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 todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0] as HTMLElement;\n const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0] as HTMLElement;\n\n if (isNumber(x)) {\n if (line) {\n line.style.left = `${x}px`;\n line.style.top = `0px`;\n line.style.bottom = `${-mainHeight}px`;\n }\n } else {\n todayEle.style.display = 'none';\n }\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).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 trackBy(point: GanttDatePoint, index: number) {\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-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\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]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n </g>\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 </g>\n</svg>\n","import { Component, OnInit, HostBinding, Inject, NgZone, ElementRef } from '@angular/core';\nimport { GanttDatePoint } from '../../../class/date-point';\nimport { todayHeight, todayWidth } from '../../../gantt.styles';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../../gantt-upper';\nimport { GanttViewType } from '../../../class';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { Subject, merge } from 'rxjs';\nimport { GanttDate } from '../../../utils/date';\nimport { isNumber } from '../../../utils/helpers';\nimport { NgFor, NgStyle } from '@angular/common';\n\n@Component({\n selector: 'gantt-calendar-header',\n templateUrl: './calendar-header.component.html',\n standalone: true,\n imports: [NgFor, NgStyle]\n})\nexport class GanttCalendarHeaderComponent implements OnInit {\n get view() {\n return this.ganttUpper.view;\n }\n\n private unsubscribe$ = new Subject();\n\n viewTypes = GanttViewType;\n\n @HostBinding('class') className = `gantt-calendar gantt-calendar-header`;\n\n @HostBinding('style.height')\n get height() {\n return this.ganttUpper.styles.headerHeight + 'px';\n }\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngOnInit() {\n // 头部日期定位\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n if (this.ganttUpper.viewType === GanttViewType.day) this.setTodayPoint();\n });\n });\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\n if (isNumber(x)) {\n if (rect) {\n rect.style.left = `${x - todayWidth / 2}px`;\n rect.style.top = `${this.ganttUpper.styles.headerHeight - todayHeight}px`;\n rect.innerHTML = today.toString();\n }\n } else {\n todayEle.style.display = 'none';\n }\n }\n\n trackBy(point: GanttDatePoint, index: number) {\n return point.text || index;\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</div>\n<svg [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight\">\n <g>\n <text\n class=\"primary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text\n class=\"secondary-text\"\n [ngStyle]=\"point.style\"\n [class.today]=\"point.additions?.isToday\"\n [class.weekend]=\"point.additions?.isWeekend\"\n [attr.x]=\"point.x\"\n [attr.y]=\"point.y\"\n >\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]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line\n [attr.x1]=\"0\"\n [attr.x2]=\"view.width\"\n [attr.y1]=\"ganttUpper.styles.headerHeight\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"header-line\"\n ></line>\n </g>\n </g>\n</svg>\n","import { Component, Inject } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\n@Component({\n selector: 'gantt-drag-backdrop',\n templateUrl: `./drag-backdrop.component.html`,\n host: {\n class: 'gantt-drag-backdrop'\n },\n standalone: true\n})\nexport class GanttDragBackdropComponent {\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n}\n","<div class=\"gantt-drag-mask\" [style.top.px]=\"ganttUpper.styles.headerHeight\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\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>`;\n\nconst dragIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"aijaction/drag--\" stroke-width=\"1\" fill-rule=\"evenodd\"><g id=\"aij拖动\" transform=\"translate(5 1)\" fill-rule=\"nonzero\"><path d=\"M1 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM1 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-4 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-4 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z\" id=\"aij形状结合\"></path></g></g></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 drag: dragIcon\n};\n","import { Component, Input, ElementRef, HostBinding } from '@angular/core';\nimport { icons } from './icons';\n\n@Component({\n selector: 'gantt-icon',\n template: '',\n standalone: true\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 { 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 NgZone\n} from '@angular/core';\nimport { empty, EMPTY, merge, NEVER, of, Subject, timer } from 'rxjs';\nimport { takeUntil, skip, debounceTime, switchMap, take } 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 { 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';\nimport { NgFor, NgIf } from '@angular/common';\n\n@Component({\n selector: 'gantt-links-overlay',\n templateUrl: './links.component.html',\n standalone: true,\n imports: [NgFor, NgIf]\n})\nexport class GanttLinksComponent implements OnInit, OnChanges, OnDestroy {\n // @Input() groups: GanttGroupInternal[] = [];\n\n // @Input() items: GanttItemInternal[] = [];\n\n @Input() flatItems: (GanttGroupInternal | 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 private ngZone: NgZone\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.buildLinks();\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 this.ngZone.onStable.pipe(take(1)).pipe(switchMap(() => this.ganttUpper.table?.dragDropped || EMPTY))\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 this.flatItems.forEach((item, itemIndex) => {\n if (!item.hasOwnProperty('items')) {\n const ganttItem = item as GanttItemInternal;\n if (ganttItem.refs) {\n const y = itemIndex * lineHeight + ganttItem.refs.y + barHeight / 2;\n this.linkItems.push({\n ...ganttItem,\n before: {\n x: ganttItem.refs.x,\n y\n },\n after: {\n x: ganttItem.refs.x + ganttItem.refs.width,\n y\n }\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 { Component } from '@angular/core';\n\n@Component({\n selector: 'gantt-loader',\n template: `\n <div class=\"gantt-loader-wrapper\">\n <div class=\"gantt-loader-loading\">\n <span class=\"gantt-loader-loading-spot\"></span>\n </div>\n </div>\n `,\n host: {\n class: 'gantt-loader gantt-loader-overlay'\n },\n standalone: true\n})\nexport class GanttLoaderComponent {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GanttItemType } from './class';\n\n@Pipe({\n name: 'isGanttRangeItem',\n standalone: true\n})\nexport class IsGanttRangeItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.range;\n }\n}\n\n@Pipe({\n name: 'isGanttBarItem',\n standalone: true\n})\nexport class IsGanttBarItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.bar;\n }\n}\n\n@Pipe({\n name: 'isGanttCustomItem',\n standalone: true\n})\nexport class IsGanttCustomItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.custom;\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';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-range,gantt-range',\n templateUrl: './range.component.html',\n standalone: true,\n imports: [NgIf, NgTemplateOutlet]\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 { 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';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from '../../gantt.pipe';\nimport { NgxGanttBaselineComponent } from '../baseline/baseline.component';\nimport { NgxGanttBarComponent } from '../bar/bar.component';\nimport { NgxGanttRangeComponent } from '../range/range.component';\nimport { NgFor, NgIf, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { GanttLinksComponent } from '../links/links.component';\n\n@Component({\n selector: 'gantt-main',\n templateUrl: './gantt-main.component.html',\n standalone: true,\n imports: [\n GanttLinksComponent,\n NgFor,\n NgIf,\n NgClass,\n NgTemplateOutlet,\n NgxGanttRangeComponent,\n NgxGanttBarComponent,\n NgxGanttBaselineComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe\n ]\n})\nexport class GanttMainComponent {\n @Input() viewportItems: (GanttGroupInternal | GanttItemInternal)[];\n\n @Input() flatItems: (GanttGroupInternal | 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 @Input() baselineTemplate: 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 [flatItems]=\"flatItems\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<div class=\"gantt-main-groups\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let data of viewportItems; trackBy: trackBy\">\n <div class=\"gantt-group\" [style.height.px]=\"ganttUpper.styles.lineHeight\" [ngClass]=\"data.class\" *ngIf=\"data.items\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: data }\"></ng-template>\n </div>\n <div\n *ngIf=\"!data.items\"\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(data.id)\"\n >\n <ng-container *ngIf=\"data.type | isGanttCustomItem\">\n <ng-template\n [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: data.origin,\n refs: data.refs,\n baseline: ganttUpper.baselineItemsMap[data.id]?.origin,\n baselineRefs: ganttUpper.baselineItemsMap[data.id]?.refs\n }\"\n >\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"(data.type | isGanttRangeItem) || (data.type | isGanttBarItem)\">\n <gantt-range *ngIf=\"data.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"data\"></gantt-range>\n <gantt-bar *ngIf=\"data.type | isGanttBarItem\" [item]=\"data\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n <gantt-baseline\n *ngIf=\"ganttUpper.baselineItemsMap[data.id]\"\n [baselineItem]=\"ganttUpper.baselineItemsMap[data.id]\"\n [template]=\"baselineTemplate\"\n ></gantt-baseline>\n </ng-container>\n </div>\n </ng-container>\n</div>\n","import { InjectionToken, ChangeDetectorRef } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal } from './class';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GanttStyleOptions } from './gantt.config';\n\nexport interface GanttAbstractComponent {\n table: NgxGanttTableComponent;\n styles: GanttStyleOptions;\n maxLevel: number;\n async: boolean;\n cdr: ChangeDetectorRef;\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","import {\n Component,\n HostBinding,\n QueryList,\n Input,\n OnInit,\n ViewChild,\n ElementRef,\n Inject,\n OnDestroy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { CdkDragEnd, CdkDragMove, CdkDragStart, CdkDrag } from '@angular/cdk/drag-drop';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../../gantt-abstract';\nimport { setStyleWithVendorPrefix } from '../../../utils/set-style-with-vendor-prefix';\nimport { Subject, takeUntil } from 'rxjs';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nexport const defaultColumnWidth = 100;\nexport const minColumnWidth = 80;\ninterface DragFixedConfig {\n target: HTMLElement;\n originWidth: number;\n movedWidth: number;\n minWidth: number;\n}\n@Component({\n selector: 'gantt-table-header',\n templateUrl: './gantt-table-header.component.html',\n standalone: true,\n imports: [NgFor, NgIf, NgTemplateOutlet, CdkDrag]\n})\nexport class GanttTableHeaderComponent implements OnInit, OnDestroy {\n public dragStartLeft: number;\n\n public tableWidth = 0;\n\n private unsubscribe$ = new Subject<void>();\n\n @Input() columns: QueryList<NgxGanttTableColumnComponent>;\n\n @ViewChild('resizeLine', { static: true }) resizeLineElementRef: ElementRef<HTMLElement>;\n\n @HostBinding('class') className = `gantt-table-header `;\n\n @HostBinding('style.height')\n get height() {\n return this.gantt.styles.headerHeight + 'px';\n }\n\n @HostBinding('style.line-height')\n get lineHeight() {\n return this.gantt.styles.headerHeight + 'px';\n }\n\n constructor(\n private elementRef: ElementRef,\n @Inject(GANTT_ABSTRACT_TOKEN) private gantt: GanttAbstractComponent,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.columnsChange();\n this.columns.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.columnsChange();\n this.gantt.cdr.detectChanges();\n });\n }\n\n private columnsChange() {\n let tableWidth = 0;\n this.columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n tableWidth += Number(column.columnWidth.replace('px', ''));\n });\n this.tableWidth = tableWidth;\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 onResizeStarted(event: CdkDragStart) {\n const target = event.source.element.nativeElement;\n this.dragStartLeft = target.getBoundingClientRect().left;\n }\n\n onResizeMoved(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.columns.length;\n }\n\n this.dragFixed({\n target,\n originWidth,\n movedWidth,\n minWidth\n });\n\n this.showAuxiliaryLine(event);\n }\n\n onResizeEnded(event: CdkDragEnd, column: NgxGanttTableColumnComponent) {\n const beforeWidth = parseInt(column.columnWidth, 10);\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.columns });\n }\n\n this.tableWidth = this.tableWidth - beforeWidth + columnWidth;\n this.hideAuxiliaryLine();\n event.source.reset();\n }\n\n onOverallResizeEnded(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 let tempWidth = 0;\n this.columns.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 tempWidth += columnWidth;\n });\n this.tableWidth = tempWidth;\n if (this.gantt.table) {\n this.gantt.table.columnChanges.emit({ columns: this.columns });\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.resizeLineElementRef.nativeElement.style.left = `${distance.x}px`;\n this.resizeLineElementRef.nativeElement.style.display = 'block';\n }\n\n private hideAuxiliaryLine() {\n this.resizeLineElementRef.nativeElement.style.display = 'none';\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-table-header-container\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columns; 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=\"column-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event, column)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onResizeEnded($event, column)\"\n ></div>\n </div>\n</div>\n\n<div\n class=\"table-resize-handle\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"onResizeMoved($event)\"\n (cdkDragStarted)=\"onResizeStarted($event)\"\n (cdkDragEnded)=\"onOverallResizeEnded($event)\"\n></div>\n\n<div #resizeLine class=\"table-resize-auxiliary-line\"></div>\n","import { auditTime, debounceTime, filter, startWith, Subject, takeUntil } from 'rxjs';\nimport {\n Component,\n HostBinding,\n TemplateRef,\n QueryList,\n Input,\n OnInit,\n Inject,\n Output,\n EventEmitter,\n OnDestroy,\n ChangeDetectorRef,\n ViewChildren,\n AfterViewInit\n} from '@angular/core';\nimport {\n GanttItemInternal,\n GanttGroupInternal,\n GanttSelectedEvent,\n GanttTableDropPosition,\n GanttTableDragEnterPredicateContext,\n GanttTableDragDroppedEvent,\n GanttTableDragStartedEvent,\n GanttTableDragEndedEvent\n} from '../../../class';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../../gantt-abstract';\nimport { defaultColumnWidth } from '../header/gantt-table-header.component';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../../gantt-upper';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragMove, CdkDragStart, DragRef, CdkDropList, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { DOCUMENT, NgIf, NgTemplateOutlet, NgFor, NgClass } from '@angular/common';\nimport { IsGanttRangeItemPipe } from '../../../gantt.pipe';\nimport { GanttIconComponent } from '../../icon/icon.component';\n@Component({\n selector: 'gantt-table-body',\n templateUrl: './gantt-table-body.component.html',\n standalone: true,\n imports: [CdkDropList, NgIf, GanttIconComponent, NgTemplateOutlet, NgFor, NgClass, CdkDrag, CdkDragHandle, IsGanttRangeItemPipe]\n})\nexport class GanttTableBodyComponent implements OnInit, OnDestroy, AfterViewInit {\n private _viewportItems: (GanttGroupInternal | GanttItemInternal)[];\n @Input() set viewportItems(data: (GanttGroupInternal | GanttItemInternal)[]) {\n const firstData = data[0];\n if (firstData && firstData.hasOwnProperty('items')) {\n this.hasGroup = true;\n }\n this.ganttTableEmptyClass = data?.length ? false : true;\n this._viewportItems = data;\n }\n\n get viewportItems() {\n return this._viewportItems;\n }\n\n @Input() flatItems: (GanttGroupInternal | GanttItemInternal)[];\n\n @Input() columns: QueryList<NgxGanttTableColumnComponent>;\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 @HostBinding('class.gantt-table-draggable')\n @Input()\n draggable = false;\n\n @Input() dropEnterPredicate?: (context: GanttTableDragEnterPredicateContext) => boolean;\n\n @Output() dragDropped = new EventEmitter<GanttTableDragDroppedEvent>();\n\n @Output() dragStarted = new EventEmitter<GanttTableDragStartedEvent>();\n\n @Output() dragEnded = new EventEmitter<GanttTableDragEndedEvent>();\n\n @Output() itemClick = new EventEmitter<GanttSelectedEvent>();\n\n @HostBinding('class.gantt-table-body') ganttTableClass = true;\n\n @HostBinding('class.gantt-table-empty') ganttTableEmptyClass = false;\n\n @HostBinding('class.gantt-table-dragging') ganttTableDragging = false;\n\n @ViewChildren(CdkDrag<string>) cdkDrags: QueryList<CdkDrag<GanttItemInternal>>;\n\n public hasGroup: boolean;\n\n public hasExpandIcon = false;\n\n // 缓存 Element 和 DragRef 的关系,方便在 Item 拖动时查找\n private itemDragsMap = new Map<HTMLElement, CdkDrag<GanttItemInternal>>();\n\n private itemDragMoved = new Subject<CdkDragMove>();\n\n // Item 拖动经过目标时临时记录目标id以及相对应目标的位置\n private itemDropTarget: {\n position?: GanttTableDropPosition;\n id?: string;\n };\n\n private destroy$ = new Subject<void>();\n\n constructor(\n @Inject(GANTT_ABSTRACT_TOKEN) public gantt: GanttAbstractComponent,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n ngOnInit() {\n this.columns.changes.pipe(startWith(this.columns), takeUntil(this.destroy$)).subscribe(() => {\n this.hasExpandIcon = false;\n this.columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n if (column.showExpandIcon) {\n this.hasExpandIcon = true;\n }\n });\n this.cdr.detectChanges();\n });\n }\n\n ngAfterViewInit(): void {\n this.cdkDrags.changes\n .pipe(startWith(this.cdkDrags), takeUntil(this.destroy$))\n .subscribe((drags: QueryList<CdkDrag<GanttItemInternal>>) => {\n this.itemDragsMap.clear();\n drags.forEach((drag) => {\n if (drag.data) {\n // cdkDrag 变化时,缓存 Element 与 DragRef 的关系,方便 Drag Move 时查找\n this.itemDragsMap.set(drag.element.nativeElement, drag);\n }\n });\n });\n\n this.itemDragMoved\n .pipe(\n auditTime(30),\n // auditTime 可能会导致拖动结束后仍然执行 moved ,所以通过判断 dragging 状态来过滤无效 moved\n filter((event: CdkDragMove) => event.source._dragRef.isDragging()),\n takeUntil(this.destroy$)\n )\n .subscribe((event) => {\n this.onItemDragMoved(event);\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 onItemDragStarted(event: CdkDragStart<GanttItemInternal>) {\n this.ganttTableDragging = true;\n // 拖动开始时隐藏所有的子项\n const children = this.getChildrenElementsByElement(event.source.element.nativeElement);\n children.forEach((element) => {\n element.classList.add('drag-item-hide');\n });\n this.dragStarted.emit({\n source: event.source.data?.origin,\n sourceParent: this.getParentByItem(event.source.data)?.origin\n });\n }\n\n emitItemDragMoved(event: CdkDragMove) {\n this.itemDragMoved.next(event);\n }\n\n onItemDragMoved(event: CdkDragMove<GanttItemInternal>) {\n // 通过鼠标位置查找对应的目标 Item 元素\n let currentPointElement = this.document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y) as HTMLElement;\n if (!currentPointElement) {\n this.cleanupDragArtifacts();\n return;\n }\n let targetElement = currentPointElement.classList.contains('gantt-table-item')\n ? currentPointElement\n : (currentPointElement.closest('.gantt-table-item') as HTMLElement);\n if (!targetElement) {\n this.cleanupDragArtifacts();\n return;\n }\n\n // 缓存放置目标Id 并计算鼠标相对应的位置\n this.itemDropTarget = {\n id: this.itemDragsMap.get(targetElement)?.data.id,\n position: this.getTargetPosition(targetElement, event)\n };\n\n // 执行外部传入的 dropEnterPredicate 判断是否允许拖入目标项\n if (this.dropEnterPredicate) {\n const targetDragRef = this.itemDragsMap.get(targetElement);\n if (\n this.dropEnterPredicate({\n source: event.source.data.origin,\n target: targetDragRef.data.origin,\n dropPosition: this.itemDropTarget.position\n })\n ) {\n this.showDropPositionPlaceholder(targetElement);\n } else {\n this.itemDropTarget = null;\n this.cleanupDragArtifacts(false);\n }\n } else {\n this.showDropPositionPlaceholder(targetElement);\n }\n }\n\n onItemDragEnded(event: CdkDragEnd<GanttItemInternal>) {\n this.ganttTableDragging = false;\n\n this.dragEnded.emit({\n source: event.source.data?.origin,\n sourceParent: this.getParentByItem(event.source.data)?.origin\n });\n // dropEnterPredicate 方法返回值为 false 时,始终未执行 onListDropped,所以只能在 dragEnded 中移除 drag-item-hide\n const children = this.getChildrenElementsByElement(event.source.element.nativeElement);\n children.forEach((element) => {\n element.classList.remove('drag-item-hide');\n });\n }\n\n onListDropped(event: CdkDragDrop<GanttItemInternal[], GanttItemInternal[], GanttItemInternal>) {\n if (!this.itemDropTarget) {\n return;\n }\n\n const sourceItem = event.item.data;\n const sourceParent = this.getParentByItem(sourceItem);\n const sourceChildren = this.getExpandChildrenByDrag(event.item);\n\n const targetDragRef = this.cdkDrags.find((item) => item.data?.id === this.itemDropTarget.id);\n const targetItem = targetDragRef?.data;\n const targetParent = this.getParentByItem(targetItem);\n\n this.removeItem(sourceItem, sourceChildren);\n\n switch (this.itemDropTarget.position) {\n case 'before':\n case 'after':\n this.insertItem(targetItem, sourceItem, sourceChildren, this.itemDropTarget.position);\n sourceItem.updateLevel(targetItem.level);\n break;\n case 'inside':\n this.insertChildrenItem(targetItem, sourceItem, sourceChildren);\n sourceItem.updateLevel(targetItem.level + 1);\n break;\n }\n\n this.dragDropped.emit({\n source: sourceItem.origin,\n sourceParent: sourceParent?.origin,\n target: targetItem.origin,\n targetParent: targetParent?.origin,\n dropPosition: this.itemDropTarget.position\n });\n\n this.cleanupDragArtifacts(true);\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private removeItem(item: GanttItemInternal, children: GanttItemInternal[]) {\n this.viewportItems.splice(this.viewportItems.indexOf(item), 1 + children.length);\n this.flatItems.splice(this.flatItems.indexOf(item), 1 + children.length);\n }\n\n private insertItem(\n target: GanttItemInternal,\n inserted: GanttItemInternal,\n children: GanttItemInternal[],\n position: 'before' | 'after'\n ) {\n if (position === 'before') {\n this.viewportItems.splice(this.viewportItems.indexOf(target), 0, inserted, ...children);\n this.flatItems.splice(this.flatItems.indexOf(target), 0, inserted, ...children);\n } else {\n const dragRef = this.cdkDrags.find((drag) => drag.data === target);\n // 如果目标项是展开的,插入的 index 位置需要考虑子项的数量\n let childrenCount = 0;\n if (target.expanded) {\n childrenCount = this.getChildrenElementsByElement(dragRef.element.nativeElement)?.length || 0;\n }\n this.viewportItems.splice(this.viewportItems.indexOf(target) + 1 + childrenCount, 0, inserted, ...children);\n this.flatItems.splice(this.flatItems.indexOf(target) + 1 + childrenCount, 0, inserted, ...children);\n }\n }\n\n private insertChildrenItem(target: GanttItemInternal, inserted: GanttItemInternal, children: GanttItemInternal[]) {\n if (target.expanded) {\n this.viewportItems.splice(this.viewportItems.indexOf(target) + target.children.length + 1, 0, inserted, ...children);\n this.flatItems.splice(this.flatItems.indexOf(target) + target.children.length + 1, 0, inserted, ...children);\n }\n target.children.push(inserted);\n }\n\n private getParentByItem(item: GanttItemInternal) {\n return (this.flatItems || []).find((n: GanttItemInternal) => {\n return n.children?.includes(item);\n });\n }\n\n private getExpandChildrenByDrag(dragRef: CdkDrag<GanttItemInternal>) {\n if (!dragRef.data.expanded) {\n return [];\n } else {\n const childrenElements = this.getChildrenElementsByElement(dragRef.element.nativeElement);\n return childrenElements.map((element) => this.itemDragsMap.get(element).data);\n }\n }\n\n private getChildrenElementsByElement(dragElement: HTMLElement) {\n // 通过循环持续查找 next element,如果 element 的 level 小于当前 item 的 level,则为它的 children\n const children: HTMLElement[] = [];\n const dragRef = this.itemDragsMap.get(dragElement);\n\n // 如果当前的 Drag 正在拖拽,会创建 PlaceholderElement 占位,所以以 PlaceholderElement 向下查找\n let nextElement = (dragRef.getPlaceholderElement() || dragElement).nextElementSibling as HTMLElement;\n let nextDragRef = this.itemDragsMap.get(nextElement);\n\n while (nextDragRef && nextDragRef.data.level > dragRef.data.level) {\n children.push(nextElement);\n nextElement = nextElement.nextElementSibling as HTMLElement;\n nextDragRef = this.itemDragsMap.get(nextElement);\n }\n\n return children;\n }\n\n private getTargetPosition(target: HTMLElement, event: CdkDragMove) {\n const targetRect = target.getBoundingClientRect();\n const beforeOrAfterGap = targetRect.height * 0.3;\n // 将 Item 高度分为上中下三段,其中上下的 Gap 为 height 的 30%,通过判断鼠标位置在哪一段 gap 来计算对应的位置\n if (event.pointerPosition.y - targetRect.top < beforeOrAfterGap) {\n return 'before';\n } else if (event.pointerPosition.y >= targetRect.bottom - beforeOrAfterGap) {\n return 'after';\n } else {\n return 'inside';\n }\n }\n\n private showDropPositionPlaceholder(targetElement: HTMLElement) {\n this.cleanupDragArtifacts();\n if (this.itemDropTarget && targetElement) {\n targetElement.classList.add(`drop-position-${this.itemDropTarget.position}`);\n }\n }\n\n private cleanupDragArtifacts(dropped = false) {\n if (dropped) {\n this.itemDropTarget = null;\n this.document.querySelectorAll('.drag-item-hide').forEach((element) => element.classList.remove('drag-item-hide'));\n }\n this.document.querySelectorAll('.drop-position-before').forEach((element) => element.classList.remove('drop-position-before'));\n this.document.querySelectorAll('.drop-position-after').forEach((element) => element.classList.remove('drop-position-after'));\n this.document.querySelectorAll('.drop-position-inside').forEach((element) => element.classList.remove('drop-position-inside'));\n }\n}\n","<div\n class=\"gantt-table-body-container\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"viewportItems\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\"\n>\n <ng-container *ngIf=\"!viewportItems?.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=\"viewportItems && viewportItems.length > 0\">\n <ng-container *ngFor=\"let item of viewportItems; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [style.height.px]=\"gantt.styles.lineHeight\" [ngClass]=\"item.class\" *ngIf=\"item.items\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"item.expanded\" (click)=\"expandGroup(item)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, group: item.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ item.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <div\n *ngIf=\"!item.items\"\n (click)=\"itemClick.emit({ event: $event, selectedValue: item.origin })\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"(draggable && item.itemDraggable === false) || !draggable\"\n (cdkDragStarted)=\"onItemDragStarted($event)\"\n (cdkDragEnded)=\"onItemDragEnded($event)\"\n (cdkDragMoved)=\"emitItemDragMoved($event)\"\n class=\"gantt-table-item\"\n [class.gantt-table-item-with-group]=\"hasGroup\"\n [class.gantt-table-item-first-level-group]=\"item.level === 0 && (item.type | isGanttRangeItem)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n\n <div [classList]=\"column.classList\" *ngFor=\"let column of columns; let first = first\" [style.width]=\"column.columnWidth\">\n <!-- drag icon -->\n <gantt-icon\n *ngIf=\"first && draggable\"\n class=\"gantt-drag-handle\"\n iconName=\"drag\"\n cdkDragHandle\n [cdkDragHandleDisabled]=\"(draggable && item.itemDraggable === false) || !draggable\"\n ></gantt-icon>\n <!-- expand icon -->\n <div\n *ngIf=\"column?.showExpandIcon || (!hasExpandIcon && first)\"\n class=\"gantt-expand-icon\"\n [style.marginLeft.px]=\"item.level * 20\"\n >\n <ng-container *ngIf=\"item.level < gantt.maxLevel - 1 && ((gantt.async && item.expandable) || item.children?.length > 0)\">\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 >\n </gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <!-- column content -->\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-container>\n </ng-container>\n</div>\n","import { Component, HostBinding, Input, TemplateRef, Inject } from '@angular/core';\nimport { ganttViews, GanttViewType } from '../../class';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { keyBy } from '../../utils/helpers';\nimport { NgIf, NgFor, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-toolbar,gantt-toolbar',\n templateUrl: './toolbar.component.html',\n standalone: true,\n imports: [NgIf, NgFor, NgTemplateOutlet]\n})\nexport class NgxGanttToolbarComponent {\n @Input() template: TemplateRef<any>;\n\n @HostBinding('class.gantt-toolbar') ganttItemClass = true;\n\n @HostBinding('style.top')\n get top() {\n return this.ganttUpper.styles.headerHeight + 16 + 'px';\n }\n\n ganttViewsMap = keyBy(ganttViews, 'value');\n\n constructor(@Inject(GANTT_UPPER_TOKEN) protected ganttUpper: GanttUpper) {}\n\n selectView(view: GanttViewType) {\n this.ganttUpper.changeView(view);\n }\n}\n","<div class=\"toolbar-container\">\n <ng-container *ngIf=\"!template\">\n <div class=\"toolbar-views\" *ngIf=\"this.ganttUpper.toolbarOptions?.viewTypes?.length\">\n <ng-container *ngFor=\"let view of this.ganttUpper.toolbarOptions?.viewTypes\">\n <div class=\"toolbar-view\" *ngIf=\"ganttViewsMap[view]\" [class.active]=\"view === this.ganttUpper.viewType\" (click)=\"selectView(view)\">\n {{ ganttViewsMap[view].name }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\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-grid-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 {\n Component,\n OnInit,\n NgZone,\n ElementRef,\n Inject,\n ContentChild,\n TemplateRef,\n Input,\n Optional,\n OnDestroy,\n ViewChild,\n HostListener\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';\nimport { GanttDate } from './utils/date';\nimport { NgxGanttToolbarComponent } from './components/toolbar/toolbar.component';\nimport { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';\nimport { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-root',\n templateUrl: './root.component.html',\n providers: [GanttDomService, GanttDragContainer],\n host: {\n class: 'gantt'\n },\n standalone: true,\n imports: [\n NgIf,\n CdkScrollable,\n NgTemplateOutlet,\n GanttCalendarHeaderComponent,\n GanttCalendarGridComponent,\n GanttDragBackdropComponent,\n NgxGanttToolbarComponent\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 verticalScrollbarWidth = 0;\n\n horizontalScrollbarHeight = 0;\n\n private unsubscribe$ = new Subject<void>();\n\n private get view() {\n return this.ganttUpper.view;\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n this.computeScrollBarOffset();\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) public 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\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 this.computeScrollBarOffset();\n });\n });\n }\n\n computeScrollBarOffset() {\n const ganttMainContainer = this.dom.mainContainer as HTMLElement;\n const ganttVerticalScrollContainer = this.dom.verticalScrollContainer as HTMLElement;\n\n let verticalScrollbarWidth = 0;\n if (ganttVerticalScrollContainer) {\n verticalScrollbarWidth = ganttVerticalScrollContainer.offsetWidth - ganttVerticalScrollContainer.clientWidth;\n } else {\n verticalScrollbarWidth = ganttMainContainer?.offsetWidth - ganttMainContainer?.clientWidth;\n }\n const horizontalScrollbarHeight = ganttMainContainer?.offsetHeight - ganttMainContainer?.clientHeight;\n this.verticalScrollbarWidth = verticalScrollbarWidth;\n this.horizontalScrollbarHeight = horizontalScrollbarHeight;\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.getDateRangeWidth(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 public scrollToToday() {\n const x = this.view.getTodayXPoint();\n this.dom.scrollMainContainer(x);\n }\n\n public scrollToDate(date: number | GanttDate) {\n let x: number;\n if (typeof date === 'number') {\n x = this.view.getXPointByDate(new GanttDate(date));\n } else {\n x = this.view.getXPointByDate(date);\n }\n\n this.dom.scrollMainContainer(x);\n }\n}\n","<div class=\"gantt-side\" *ngIf=\"sideTemplate\" [style.width.px]=\"sideWidth\" [style.padding-bottom.px]=\"horizontalScrollbarHeight\">\n <div class=\"gantt-side-container\" cdkScrollable>\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\" *ngIf=\"mainTemplate\">\n <gantt-calendar-header [style.padding-right.px]=\"verticalScrollbarWidth\"></gantt-calendar-header>\n <gantt-calendar-grid\n [style.padding-right.px]=\"verticalScrollbarWidth\"\n [style.padding-bottom.px]=\"horizontalScrollbarHeight\"\n ></gantt-calendar-grid>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n<ng-content></ng-content>\n<gantt-toolbar *ngIf=\"ganttUpper.showToolbar || ganttUpper.toolbarTemplate\" [template]=\"ganttUpper.toolbarTemplate\"> </gantt-toolbar>\n","import { Component, ContentChild, TemplateRef, Input, Inject, ElementRef } 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 host: {\n class: 'gantt-table-column'\n },\n standalone: true\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 @Input() showExpandIcon: boolean;\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, private elementRef: ElementRef) {}\n\n get classList(): DOMTokenList {\n return this.elementRef.nativeElement.classList;\n }\n}\n","import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport {\n GanttTableDragEnterPredicateContext,\n GanttTableDragDroppedEvent,\n GanttTableEvent,\n GanttTableDragStartedEvent,\n GanttTableDragEndedEvent\n} from '../class';\n\n@Component({\n selector: 'ngx-gantt-table',\n template: '',\n standalone: true\n})\nexport class NgxGanttTableComponent {\n @Input() draggable = false;\n\n @Input() dropEnterPredicate?: (context: GanttTableDragEnterPredicateContext) => boolean;\n\n @Output() dragDropped = new EventEmitter<GanttTableDragDroppedEvent>();\n\n @Output() dragStarted = new EventEmitter<GanttTableDragStartedEvent>();\n\n @Output() dragEnded = new EventEmitter<GanttTableDragEndedEvent>();\n\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 @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n @ContentChild('tableFooter', { static: true }) tableFooterTemplate: TemplateRef<any>;\n}\n","import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, ViewportRuler } from '@angular/cdk/scrolling';\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { finalize, skip, take, takeUntil } from 'rxjs/operators';\nimport {\n GanttGroupInternal,\n GanttItem,\n GanttItemInternal,\n GanttLineClickEvent,\n GanttLinkDragEvent,\n GanttSelectedEvent,\n GanttTableDragEndedEvent,\n GanttTableDragStartedEvent,\n GanttVirtualScrolledIndexChangeEvent\n} from './class';\nimport { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';\nimport { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttLoaderComponent } from './components/loader/loader.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { GanttTableBodyComponent } from './components/table/body/gantt-table-body.component';\nimport { GanttTableHeaderComponent } from './components/table/header/gantt-table-header.component';\nimport { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from './gantt-upper';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig } from './gantt.config';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GanttDate } from './utils/date';\nimport { Dictionary, keyBy, recursiveItems, uniqBy } from './utils/helpers';\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 standalone: true,\n imports: [\n NgxGanttRootComponent,\n GanttTableHeaderComponent,\n GanttCalendarHeaderComponent,\n NgIf,\n GanttLoaderComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n NgClass,\n CdkVirtualForOf,\n GanttTableBodyComponent,\n GanttCalendarGridComponent,\n GanttMainComponent,\n GanttDragBackdropComponent,\n NgTemplateOutlet\n ]\n})\nexport class NgxGanttComponent extends GanttUpper implements OnInit, OnChanges, AfterViewInit, AfterViewChecked {\n @Input() maxLevel = 2;\n\n @Input() async: boolean;\n\n @Input() childrenResolve: (GanttItem) => Observable<GanttItem[]>;\n\n @Input() override linkable: boolean;\n\n @Input() set loading(loading: boolean) {\n if (loading) {\n if (this.loadingDelay > 0) {\n this.loadingTimer = setTimeout(() => {\n this._loading = loading;\n this.cdr.markForCheck();\n }, this.loadingDelay);\n } else {\n this._loading = loading;\n }\n } else {\n clearTimeout(this.loadingTimer);\n this._loading = loading;\n }\n }\n\n @Input() virtualScrollEnabled = true;\n\n @Input() loadingDelay = 0;\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 @Output() virtualScrolledIndexChange = new EventEmitter<GanttVirtualScrolledIndexChangeEvent>();\n\n @ContentChild(NgxGanttTableComponent) override table: NgxGanttTableComponent;\n\n @ContentChildren(NgxGanttTableColumnComponent, { descendants: true }) columns: QueryList<NgxGanttTableColumnComponent>;\n\n // 此模版已挪到 table 组件下,为了兼容此处暂时保留\n @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n @ViewChild('ganttRoot') ganttRoot: NgxGanttRootComponent;\n\n @ContentChild('footer', { static: true }) footerTemplate: TemplateRef<any>;\n\n @ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport;\n\n get loading() {\n return this._loading;\n }\n\n public flatItems: (GanttGroupInternal | GanttItemInternal)[] = [];\n\n public viewportItems: (GanttGroupInternal | GanttItemInternal)[] = [];\n\n private _loading = false;\n\n private loadingTimer;\n\n private rangeStart = 0;\n\n private rangeEnd = 0;\n\n private flatItemsMap: Dictionary<GanttGroupInternal | GanttItemInternal>;\n\n private draggingItem: GanttItem;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n private viewportRuler: ViewportRuler,\n @Inject(GANTT_GLOBAL_CONFIG) config: GanttGlobalConfig\n ) {\n super(elementRef, cdr, ngZone, config);\n this.computeAllRefs = false;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.buildFlatItems();\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.unsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragStarted.emit(event);\n });\n\n this.dragContainer.linkDragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragEnded.emit(event);\n });\n });\n });\n\n this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {\n this.computeTempDataRefs();\n });\n\n if (!this.virtualScrollEnabled) {\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\n }\n }\n\n override ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n if (!this.firstChange) {\n if (changes.viewType && changes.viewType.currentValue) {\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\n }\n if (changes.originItems || changes.originGroups) {\n this.buildFlatItems();\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\n }\n }\n }\n\n ngAfterViewInit() {\n if (this.virtualScrollEnabled) {\n this.virtualScroll.renderedRangeStream.pipe(takeUntil(this.unsubscribe$)).subscribe((range) => {\n const linksElement = this.elementRef.nativeElement.querySelector('.gantt-links-overlay') as HTMLDivElement;\n linksElement.style.top = `${-(this.styles.lineHeight * range.start)}px`;\n this.rangeStart = range.start;\n this.rangeEnd = range.end;\n this.viewportItems = this.flatItems.slice(range.start, range.end);\n this.appendDraggingItemToViewportItems();\n this.computeTempDataRefs();\n });\n }\n }\n\n ngAfterViewChecked() {\n if (this.virtualScrollEnabled && this.viewportRuler && this.virtualScroll.getRenderedRange().end > 0) {\n const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n this.ngZone.runOutsideAngular(() => {\n onStable$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n if (!this.ganttRoot.verticalScrollbarWidth) {\n this.ganttRoot.computeScrollBarOffset();\n this.cdr.markForCheck();\n }\n });\n });\n }\n }\n\n private buildFlatItems() {\n const virtualData = [];\n if (this.groups.length) {\n this.groups.forEach((group) => {\n virtualData.push(group);\n if (group.expanded) {\n const items = recursiveItems(group.items);\n virtualData.push(...items);\n }\n });\n }\n\n if (this.items.length) {\n virtualData.push(...recursiveItems(this.items));\n }\n this.flatItems = [...virtualData];\n this.flatItemsMap = keyBy(this.flatItems, 'id');\n if (!this.virtualScrollEnabled) {\n this.rangeStart = 0;\n this.rangeEnd = this.flatItems.length;\n }\n }\n\n private afterExpand() {\n this.buildFlatItems();\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n }\n\n private computeTempDataRefs() {\n const tempItemData = [];\n this.viewportItems.forEach((data: GanttGroupInternal | GanttItemInternal) => {\n if (!data.hasOwnProperty('items')) {\n const item = data as GanttItemInternal;\n if (item.links) {\n item.links.forEach((link) => {\n if (this.flatItemsMap[link.link]) {\n tempItemData.push(this.flatItemsMap[link.link]);\n }\n });\n }\n tempItemData.push(data);\n }\n });\n this.computeItemsRefs(...uniqBy(tempItemData, 'id'));\n this.flatItems = [...this.flatItems];\n this.viewportItems = [...this.viewportItems];\n }\n\n private appendDraggingItemToViewportItems() {\n if (this.draggingItem) {\n let flatItem = this.viewportItems.find((item) => {\n return item.id === this.draggingItem.id;\n });\n if (!flatItem) {\n flatItem = this.flatItems.find((item) => {\n return item.id === this.draggingItem.id;\n });\n if (flatItem) {\n this.viewportItems.push(flatItem);\n }\n }\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.afterExpand();\n this.expandChange.emit(item);\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.afterExpand();\n this.expandChange.emit(item);\n }\n } else {\n item.setExpand(false);\n this.afterExpand();\n this.expandChange.emit(item);\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, current: selectedValue as GanttItem, selectedValue: _selectedValue });\n } else {\n const _selectedValue = this.getGanttItem(selectedIds[0])?.origin;\n this.selectedChange.emit({ event, current: selectedValue as GanttItem, selectedValue: _selectedValue });\n }\n }\n\n scrollToToday() {\n this.ganttRoot.scrollToToday();\n }\n\n scrollToDate(date: number | GanttDate) {\n this.ganttRoot.scrollToDate(date);\n }\n\n scrolledIndexChange(index: number) {\n this.virtualScrolledIndexChange.emit({\n index,\n renderedRange: {\n start: this.rangeStart,\n end: this.rangeEnd\n },\n count: this.flatItems.length\n });\n }\n\n override expandGroups(expanded: boolean) {\n this.groups.forEach((group) => {\n group.setExpand(expanded);\n });\n\n this.afterExpand();\n this.expandChange.next(null);\n this.cdr.detectChanges();\n }\n\n override expandGroup(group: GanttGroupInternal) {\n group.setExpand(!group.expanded);\n this.afterExpand();\n this.expandChange.emit();\n this.cdr.detectChanges();\n }\n\n itemDragStarted(event: GanttTableDragStartedEvent) {\n this.table.dragStarted.emit(event);\n this.draggingItem = event.source;\n }\n\n itemDragEnded(event: GanttTableDragEndedEvent) {\n this.table.dragEnded.emit(event);\n this.draggingItem = null;\n }\n}\n","<ngx-gantt-root #ganttRoot>\n <div class=\"gantt-header\">\n <gantt-table-header #tableHeader [columns]=\"columns\"></gantt-table-header>\n <div class=\"gantt-container-header\">\n <gantt-calendar-header [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"></gantt-calendar-header>\n </div>\n </div>\n <gantt-loader *ngIf=\"loading\"></gantt-loader>\n\n <cdk-virtual-scroll-viewport\n class=\"gantt-virtual-scroll-viewport\"\n [ngClass]=\"{\n 'gantt-normal-viewport': !virtualScrollEnabled,\n 'gantt-scroll-container': virtualScrollEnabled,\n 'with-footer': table?.tableFooterTemplate || footerTemplate\n }\"\n [style.top.px]=\"styles.headerHeight\"\n [itemSize]=\"styles.lineHeight\"\n [minBufferPx]=\"styles.lineHeight * 10\"\n [maxBufferPx]=\"styles.lineHeight * 20\"\n (scrolledIndexChange)=\"scrolledIndexChange($event)\"\n >\n <ng-container *cdkVirtualFor=\"let item of flatItems; trackBy: trackBy\"></ng-container>\n <div class=\"gantt-side\" [style.width.px]=\"tableHeader.tableWidth + 1\" [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-side-container\">\n <div class=\"gantt-table\">\n <gantt-table-body\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"table.tableEmptyTemplate || tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n [draggable]=\"table.draggable\"\n [dropEnterPredicate]=\"table.dropEnterPredicate\"\n (dragDropped)=\"table.dragDropped.emit($event)\"\n (dragStarted)=\"itemDragStarted($event)\"\n (dragEnded)=\"itemDragEnded($event)\"\n (itemClick)=\"selectItem($event)\"\n >\n </gantt-table-body>\n </div>\n </div>\n </div>\n <div class=\"gantt-container\">\n <gantt-calendar-grid\n [style.padding-right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [style.padding-bottom.px]=\"ganttRoot.horizontalScrollbarHeight\"\n ></gantt-calendar-grid>\n <div class=\"gantt-main\">\n <gantt-main\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n [baselineTemplate]=\"baselineTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <gantt-drag-backdrop [style.left.px]=\"tableHeader.tableWidth + 1\"></gantt-drag-backdrop>\n\n <div\n class=\"gantt-scrollbar\"\n [style.height.px]=\"ganttRoot.horizontalScrollbarHeight + 1\"\n [style.right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [ngClass]=\"{ 'gantt-scrollbar-bg': table?.tableFooterTemplate }\"\n >\n <div\n [style.width.px]=\"tableHeader.tableWidth\"\n class=\"gantt-table-scrollbar\"\n [class.with-scrollbar]=\"ganttRoot.horizontalScrollbarHeight\"\n ></div>\n <div class=\"gantt-main-scrollbar\">\n <div class=\"h-100\" [style.width.px]=\"view.width\"></div>\n </div>\n </div>\n\n <div class=\"gantt-footer\" [style.right.px]=\"ganttRoot.verticalScrollbarWidth\" [style.bottom.px]=\"ganttRoot.horizontalScrollbarHeight\">\n <div class=\"gantt-table-footer\" [style.width.px]=\"tableHeader.tableWidth + 1\" *ngIf=\"table?.tableFooterTemplate\">\n <ng-template [ngTemplateOutlet]=\"table?.tableFooterTemplate\" [ngTemplateOutletContext]=\"{ columns: columns }\"> </ng-template>\n </div>\n <div class=\"gantt-container-footer\" *ngIf=\"footerTemplate\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"> </ng-template>\n </div>\n </div>\n</ngx-gantt-root>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { setDefaultOptions } from 'date-fns';\nimport { NgxGanttBarComponent } from './components/bar/bar.component';\nimport { NgxGanttBaselineComponent } from './components/baseline/baseline.component';\nimport { GanttCalendarGridComponent } from './components/calendar/grid/calendar-grid.component';\nimport { GanttCalendarHeaderComponent } from './components/calendar/header/calendar-header.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttIconComponent } from './components/icon/icon.component';\nimport { GanttLinksComponent } from './components/links/links.component';\nimport { GanttLoaderComponent } from './components/loader/loader.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { NgxGanttRangeComponent } from './components/range/range.component';\nimport { GanttTableBodyComponent } from './components/table/body/gantt-table-body.component';\nimport { GanttTableHeaderComponent } from './components/table/header/gantt-table-header.component';\nimport { NgxGanttToolbarComponent } from './components/toolbar/toolbar.component';\nimport { NgxGanttComponent } from './gantt.component';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttRangeItemPipe } from './gantt.pipe';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n ScrollingModule,\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n GanttTableHeaderComponent,\n GanttTableBodyComponent,\n GanttMainComponent,\n GanttCalendarHeaderComponent,\n GanttCalendarGridComponent,\n GanttLinksComponent,\n GanttLoaderComponent,\n NgxGanttBarComponent,\n GanttIconComponent,\n GanttDragBackdropComponent,\n NgxGanttRangeComponent,\n NgxGanttRootComponent,\n NgxGanttBaselineComponent,\n NgxGanttToolbarComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe\n ],\n exports: [\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n NgxGanttRootComponent,\n NgxGanttBarComponent,\n NgxGanttRangeComponent,\n NgxGanttBaselineComponent,\n NgxGanttToolbarComponent,\n GanttCalendarHeaderComponent,\n GanttCalendarGridComponent,\n GanttDragBackdropComponent\n ],\n providers: [\n CdkVirtualScrollViewport,\n {\n provide: GANTT_GLOBAL_CONFIG,\n useValue: defaultConfig\n }\n ]\n})\nexport class NgxGanttModule {\n constructor(@Optional() @Inject(GANTT_GLOBAL_CONFIG) ganttGlobalConfig: GanttGlobalConfig) {\n setDefaultOptions({\n locale: ganttGlobalConfig?.dateOptions?.locale,\n weekStartsOn: ganttGlobalConfig?.dateOptions?.weekStartsOn || 1\n });\n }\n}\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 './components/baseline/baseline.component';\nexport * from './components/toolbar/toolbar.component';\nexport * from './components/loader/loader.component';\nexport * from './utils/date';\nexport * from './class';\nexport * from './views/view';\nexport { registerView } from './views/factory';\nexport * from './gantt-item-upper';\nexport * from './gantt.pipe';\nexport * from './gantt-print.service';\nexport * from './gantt.config';\nexport * from './components/calendar/header/calendar-header.component';\nexport * from './components/calendar/grid/calendar-grid.component';\nexport * from './components/drag-backdrop/drag-backdrop.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["viewOptions","i2.GanttDomService","i3.GanttDragContainer","i1.GanttDragContainer","takeUntil","startWith","auditTime","i3.GanttPrintService"],"mappings":"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"}