@worktile/gantt 19.0.3 → 19.0.5

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/views/view.ts","../../../packages/gantt/src/i18n/i18n.ts","../../../packages/gantt/src/i18n/locales/zh-hans.ts","../../../packages/gantt/src/i18n/locales/zh-hant.ts","../../../packages/gantt/src/i18n/locales/en-us.ts","../../../packages/gantt/src/i18n/locales/ja-jp.ts","../../../packages/gantt/src/i18n/locales/de-de.ts","../../../packages/gantt/src/i18n/locales/ru-ru.ts","../../../packages/gantt/src/i18n/index.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.config.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/components/scrollbar/scrollbar.component.ts","../../../packages/gantt/src/components/scrollbar/scrollbar.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 GanttTableItemClickEvent<T = unknown> {\n event: Event;\n current?: GanttItem<T>;\n}\n\nexport class GanttSelectedEvent<T = unknown> extends GanttTableItemClickEvent<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 Locale,\n FirstWeekContainsDate\n} from 'date-fns';\n\nimport { TZDate } from '@date-fns/tz';\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\nlet timeZone: string;\n\nexport function setDefaultTimeZone(zone: string) {\n timeZone = zone ?? undefined;\n}\n\nexport function getDefaultTimeZone() {\n return timeZone;\n}\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 = new TZDate(fromUnixTime(+date), timeZone);\n } else {\n this.value = new TZDate(date as any, timeZone);\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 TZDate(new Date(), timeZone);\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?: FirstWeekContainsDate;\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 | Date;\n end?: number | Date;\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 laneStyle?: 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 laneStyle?: 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(\n item: GanttItem,\n level: number,\n private view?: GanttView\n ) {\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.laneStyle = this.origin.laneStyle;\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","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 { differenceInCalendarDays, differenceInHours, differenceInMinutes } from 'date-fns';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDateFormat } from '../gantt.config';\nimport { GanttDate, GanttDateUtil, differenceInDays } from '../utils/date';\nimport { zhHansLocale } from '../i18n';\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 /** @deprecated dateFormat is deprecated, please use dateDisplayFormats or setting i18n locale */\n dateFormat?: GanttDateFormat;\n dateDisplayFormats?: { primary?: string; secondary?: string };\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 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 dateFormats: {\n primary?: string;\n secondary?: string;\n } = {};\n\n constructor(start: GanttViewDate, end: GanttViewDate, options: GanttViewOptions) {\n this.options = Object.assign({}, viewOptions, options);\n\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\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 { InjectionToken } from '@angular/core';\nimport { Locale as DateFnsLocale } from 'date-fns';\nimport { GanttViewType } from '../class';\n\nexport enum GanttI18nLocale {\n zhHans = 'zh-hans',\n zhHant = 'zh-hant',\n enUs = 'en-us',\n deDe = 'de-de',\n jaJp = 'ja-jp',\n ruRu = 'ru-ru'\n}\n\nexport type GanttI18nLocaleConfig = {\n id: GanttI18nLocale | string;\n dateLocale?: DateFnsLocale;\n views: Record<\n GanttViewType,\n {\n label: string;\n dateFormats: {\n primary?: string;\n secondary?: string;\n };\n }\n >;\n};\n\nexport const GANTT_I18N_LOCALE_TOKEN = new InjectionToken<GanttI18nLocaleConfig[]>('gantt-i18n-locale');\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.zhHans,\n views: {\n [GanttViewType.hour]: {\n label: '小时',\n dateFormats: {\n primary: 'M月d日',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: '天',\n dateFormats: {\n primary: 'yyyy年MM月',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: '周',\n dateFormats: {\n primary: 'yyyy年',\n secondary: '第w周'\n }\n },\n [GanttViewType.month]: {\n label: '月',\n dateFormats: {\n primary: `yyyy年'Q'Q`,\n secondary: 'M月'\n }\n },\n [GanttViewType.quarter]: {\n label: '季',\n dateFormats: {\n primary: 'yyyy年',\n secondary: `yyyy年'Q'Q`\n }\n },\n [GanttViewType.year]: {\n label: '年',\n dateFormats: {\n secondary: 'yyyy年'\n }\n }\n }\n};\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.zhHant,\n views: {\n [GanttViewType.hour]: {\n label: '小時',\n dateFormats: {\n primary: 'M月d日',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: '天',\n dateFormats: {\n primary: 'yyyy年MM月',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: '週',\n dateFormats: {\n primary: 'yyyy年',\n secondary: '第w週'\n }\n },\n [GanttViewType.month]: {\n label: '月',\n dateFormats: {\n primary: `yyyy年'Q'Q`,\n secondary: 'M月'\n }\n },\n [GanttViewType.quarter]: {\n label: '季',\n dateFormats: {\n primary: 'yyyy年',\n secondary: `yyyy年'Q'Q`\n }\n },\n [GanttViewType.year]: {\n label: '年',\n dateFormats: {\n secondary: 'yyyy年'\n }\n }\n }\n};\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.enUs,\n views: {\n [GanttViewType.hour]: {\n label: 'Hourly',\n dateFormats: {\n primary: 'MMM d',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: 'Daily',\n dateFormats: {\n primary: 'MMM yyyy',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: 'Weekly',\n dateFormats: {\n primary: 'yyyy',\n secondary: 'wo'\n }\n },\n [GanttViewType.month]: {\n label: 'Monthly',\n dateFormats: {\n primary: \"yyyy 'Q'Q\",\n secondary: 'MMM'\n }\n },\n [GanttViewType.quarter]: {\n label: 'Quarterly',\n dateFormats: {\n primary: 'yyyy',\n secondary: \"yyyy 'Q'Q\"\n }\n },\n [GanttViewType.year]: {\n label: 'Yearly',\n dateFormats: {\n secondary: 'yyyy'\n }\n }\n }\n};\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.jaJp,\n views: {\n [GanttViewType.hour]: {\n label: '毎時',\n dateFormats: {\n primary: 'M月d日',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: '日',\n dateFormats: {\n primary: 'yyyy年M月d日',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: '週',\n dateFormats: {\n primary: 'yyyy年',\n secondary: '第w週'\n }\n },\n [GanttViewType.month]: {\n label: '月',\n dateFormats: {\n primary: `yyyy年M月`,\n secondary: 'M月'\n }\n },\n [GanttViewType.quarter]: {\n label: '四半期',\n dateFormats: {\n primary: 'yyyy年',\n secondary: `yyyy年第Q四半期`\n }\n },\n [GanttViewType.year]: {\n label: '年',\n dateFormats: {\n secondary: 'yyyy年'\n }\n }\n }\n};\n","import { de } from 'date-fns/locale';\nimport { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.deDe,\n dateLocale: de,\n views: {\n [GanttViewType.hour]: {\n label: 'Stündlich',\n dateFormats: {\n primary: 'dd. MMM',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: 'Täglich',\n dateFormats: {\n primary: 'MMM yyyy',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: 'Wöchentlich',\n dateFormats: {\n primary: 'yyyy',\n secondary: `w. 'Woche'`\n }\n },\n [GanttViewType.month]: {\n label: 'Monatlich',\n dateFormats: {\n primary: 'MMM yyyy',\n secondary: 'MMM'\n }\n },\n [GanttViewType.quarter]: {\n label: 'Vierteljährlich',\n dateFormats: {\n primary: 'yyyy',\n secondary: `Q. 'Quartal' yyyy`\n }\n },\n [GanttViewType.year]: {\n label: 'Jährlich',\n dateFormats: {\n secondary: 'yyyy'\n }\n }\n }\n};\n","import { ru } from 'date-fns/locale';\nimport { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.ruRu,\n dateLocale: ru,\n views: {\n [GanttViewType.hour]: {\n label: 'Ежечасно',\n dateFormats: {\n primary: 'd MMM',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: 'Ежедневно',\n dateFormats: {\n primary: 'MMMM yyyy',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: 'Еженедельно',\n dateFormats: {\n primary: 'yyyy',\n secondary: 'Неделя w'\n }\n },\n [GanttViewType.month]: {\n label: 'Ежемесячно',\n dateFormats: {\n primary: 'MMMM yyyy',\n secondary: 'MMM'\n }\n },\n [GanttViewType.quarter]: {\n label: 'Ежеквартально',\n dateFormats: {\n primary: 'yyyy',\n secondary: 'Квартал Q yyyy'\n }\n },\n [GanttViewType.year]: {\n label: 'Ежегодно',\n dateFormats: {\n secondary: 'yyyy'\n }\n }\n }\n};\n","import { default as zhHansLocale } from './locales/zh-hans';\nimport { default as zhHantLocale } from './locales/zh-hant';\nimport { default as enUsLocale } from './locales/en-us';\nimport { default as jaJpLocale } from './locales/ja-jp';\nimport { default as deDeLocale } from './locales/de-de';\nimport { default as ruRuLocale } from './locales/ru-ru';\nimport { GANTT_I18N_LOCALE_TOKEN } from './i18n';\nimport { Provider } from '@angular/core';\n\nexport * from './i18n';\n\nexport { zhHansLocale, zhHantLocale, enUsLocale, jaJpLocale, deDeLocale, ruRuLocale };\n\nexport const i18nLocaleProvides: Provider[] = [\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: zhHansLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: zhHantLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: enUsLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: jaJpLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: deDeLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: ruRuLocale, multi: true }\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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.month.dateFormats\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 || this.options.dateDisplayFormats.primary),\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 || this.options.dateDisplayFormats.secondary),\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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.quarter.dateFormats\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 || this.options.dateDisplayFormats.primary)}`,\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 || this.options.dateDisplayFormats.secondary),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { zhHantLocale } from '../i18n';\nimport { 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 dateDisplayFormats: zhHantLocale.views.day.dateFormats\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 || this.options.dateDisplayFormats.primary),\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.format(this.options.dateDisplayFormats.secondary) || 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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.week.dateFormats\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 || this.options.dateDisplayFormats.primary),\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 || this.options.dateDisplayFormats.secondary)}`,\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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.year.dateFormats\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(\n this.options.dateFormat?.year || this.options.dateDisplayFormats.secondary || this.options.dateDisplayFormats.primary\n )}`,\n i * this.getCellWidth() + this.getCellWidth() / 2,\n pointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { zhHantLocale } from '../i18n';\nimport { 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 dateDisplayFormats: zhHantLocale.views.hour.dateFormats,\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 || this.options.dateDisplayFormats.primary),\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 || this.options.dateDisplayFormats.secondary),\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 { inject, Inject, InjectionToken } from '@angular/core';\nimport { Locale } from 'date-fns';\nimport { GanttLinkLineType, GanttLinkOptions, GanttLinkType } from './class/link';\nimport { Injectable } from '@angular/core';\nimport { GANTT_I18N_LOCALE_TOKEN, GanttI18nLocaleConfig, GanttI18nLocale } from './i18n/i18n';\nimport zhHans from './i18n/locales/zh-hans';\nimport zhHant from './i18n/locales/zh-hant';\nimport { setDefaultTimeZone } from './utils/date';\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 /**\n * @deprecated dateOptions is deprecated, use i18n locale setting instead\n * http://gantt.ngnice.com/guides/configuration/i18n\n */\n locale?: Locale;\n timeZone?: string;\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 locale?: GanttI18nLocale | string;\n /** @deprecated dateFormat is deprecated, please configure through i18n. http://gantt.ngnice.com/guides/configuration/i18n */\n dateFormat?: GanttDateFormat;\n dateOptions?: GanttDateOptions;\n linkOptions?: GanttLinkOptions;\n styleOptions?: GanttStyleOptions;\n}\n\nexport const defaultConfig: GanttGlobalConfig = {\n locale: GanttI18nLocale.zhHans,\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 dateOptions: {\n weekStartsOn: 1\n }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n\n@Injectable({ providedIn: 'root' })\nexport class GanttConfigService {\n public config: GanttGlobalConfig;\n\n private i18nLocales: Record<GanttI18nLocale, GanttI18nLocaleConfig>;\n\n constructor(@Inject(GANTT_GLOBAL_CONFIG) globalConfig: GanttGlobalConfig) {\n const localeId = globalConfig.locale || defaultConfig.locale;\n this.config = {\n locale: localeId,\n dateFormat: Object.assign({}, defaultConfig.dateFormat, globalConfig.dateFormat),\n styleOptions: Object.assign({}, defaultConfig.styleOptions, globalConfig.styleOptions),\n linkOptions: Object.assign({}, defaultConfig.linkOptions, globalConfig.linkOptions),\n dateOptions: Object.assign({}, defaultConfig.dateOptions, globalConfig.dateOptions)\n };\n\n this.i18nLocales = inject(GANTT_I18N_LOCALE_TOKEN).reduce(\n (result, localeConfig) => {\n result[localeConfig.id] = localeConfig; // 这里使用 `id` 作为 key\n return result;\n },\n {\n ['zh-cn']: zhHans,\n ['zh-tw']: zhHant\n } as Record<GanttI18nLocale | string, GanttI18nLocaleConfig>\n );\n\n if (this.config.dateOptions?.timeZone) {\n setDefaultTimeZone(this.config.dateOptions.timeZone);\n }\n }\n\n setLocale(locale: string) {\n this.config.locale = locale;\n }\n\n private getLocaleConfig() {\n return this.i18nLocales[this.config.locale] ?? this.i18nLocales[this.config.locale.toLowerCase()] ?? zhHans;\n }\n\n getViewsLocale(): GanttI18nLocaleConfig['views'] {\n return this.getLocaleConfig().views;\n }\n\n getDateLocale() {\n return this.config.dateOptions?.locale ?? this.getLocaleConfig().dateLocale;\n }\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 OnInit,\n OnDestroy,\n OnChanges,\n inject\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, getUnixTime } from './utils/date';\nimport { uniqBy, flatten, recursiveItems, getFlatItems, Dictionary, keyBy } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GanttConfigService, 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({}, this.configService.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 @Input() quickTimeFocus = false;\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 configService = inject(GanttConfigService);\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, // @Inject(GANTT_GLOBAL_CONFIG) public config: GanttGlobalConfig\n protected config: GanttGlobalConfig\n ) {}\n\n private createView() {\n const viewDate = this.getViewDate();\n\n this.styles = Object.assign({}, this.configService.config.styleOptions, this.styles);\n this.viewOptions.dateFormat = Object.assign({}, this.configService.config.dateFormat, this.viewOptions.dateFormat);\n this.viewOptions.styleOptions = Object.assign({}, this.configService.config.styleOptions, this.viewOptions.styleOptions);\n this.viewOptions.dateDisplayFormats = this.configService.getViewsLocale()[this.viewType]?.dateFormats;\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 const itemStart = item.start instanceof Date ? getUnixTime(item.start) : item.start;\n start = start ? Math.min(start, itemStart) : itemStart;\n }\n if (item.end && !this.end) {\n const itemEnd = item.start instanceof Date ? getUnixTime(item.start) : item.start;\n end = end ? Math.max(end, itemEnd) : itemEnd;\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.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 { ElementRef, Inject, Injectable, NgZone, OnDestroy, PLATFORM_ID, WritableSignal, signal } from '@angular/core';\nimport { EMPTY, Observable, Subject, fromEvent, merge } from 'rxjs';\nimport { auditTime, map, pairwise, 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 public visibleRangeX: WritableSignal<{ min: number; max: number }> = signal({ min: 0, max: 0 });\n\n private mainFooter: Element;\n\n private mainScrollbar: Element;\n\n private unsubscribe$ = new Subject<void>();\n\n constructor(\n private ngZone: NgZone,\n @Inject(PLATFORM_ID) private platformId: string\n ) {}\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 this.setVisibleRangeX();\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 getResizeByElement(element: Element) {\n return new Observable((observer) => {\n const resizeObserver = new ResizeObserver(() => {\n observer.next();\n });\n resizeObserver.observe(element);\n });\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 setVisibleRangeX() {\n this.visibleRangeX.set({\n min: this.mainContainer.scrollLeft,\n max: this.mainContainer.scrollLeft + this.mainContainer.clientWidth\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 { effect, ElementRef, Injectable, NgZone, OnDestroy, signal, WritableSignal } 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: WritableSignal<GanttItemInternal> = signal(null);\n\n private hasMonitorMouseEvent: boolean;\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 linkDragRefs: DragRef[] = [];\n\n private barHandleDragRefs: 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 effect(() => {\n const item: GanttItemInternal = this.item();\n if (item) {\n this.createDrags();\n }\n });\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 if (!this.hasMonitorMouseEvent && (!this.dragDisabled || !this.linkDragDisabled)) {\n this.hasMonitorMouseEvent = true;\n const dropClass =\n this.ganttUpper.linkOptions?.dependencyTypes?.length === 1 &&\n this.ganttUpper.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.linkDragDisabled) {\n this.barElement.classList.add(dropClass);\n this.dragContainer.emitLinkDragEntered({\n item: this.item(),\n element: this.barElement\n });\n }\n } else {\n if (!this.dragDisabled || !this.linkDragDisabled) {\n this.barElement.classList.add(activeClass);\n }\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\n private createBarDrag() {\n const dragRef = this.createDragRef(this.barElement);\n dragRef.disabled = this.dragDisabled;\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\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.disabled = this.dragDisabled;\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.disabled = this.linkDragDisabled;\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 initialize(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n this.barElement = elementRef.nativeElement;\n this.ganttUpper = ganttUpper;\n this.item.set(item);\n }\n\n private createBarDragRef() {\n if (this.barDragRef) {\n this.barDragRef.disabled = this.dragDisabled;\n } else if (!this.dragDisabled) {\n this.barDragRef = this.createBarDrag();\n }\n }\n\n private createBarHandleDragRefs() {\n if (this.barHandleDragRefs.length > 0) {\n this.barHandleDragRefs.forEach((dragRef) => {\n dragRef.disabled = this.dragDisabled;\n });\n } else if (!this.dragDisabled) {\n this.barHandleDragRefs = this.createBarHandleDrags();\n }\n }\n\n private createLinkDragRefs() {\n if (this.linkDragRefs.length > 0) {\n this.linkDragRefs.forEach((dragRef) => {\n dragRef.disabled = this.linkDragDisabled;\n });\n } else if (!this.linkDragDisabled) {\n this.linkDragRefs = this.createLinkHandleDrags();\n }\n }\n\n createDrags() {\n this.createMouseEvents();\n this.createBarDragRef();\n this.createBarHandleDragRefs();\n this.createLinkDragRefs();\n }\n\n updateItem(item: GanttItemInternal) {\n this.item.set(item);\n }\n\n ngOnDestroy() {\n this.closeDragBackdrop();\n this.barDragRef?.dispose();\n this.linkDragRefs?.forEach((dragRef) => dragRef.dispose());\n this.barHandleDragRefs?.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 { 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 imports: [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.initialize(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 @if (item.draggable && ganttUpper.draggable) {\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n }\n </div>\n @if (item.linkable && ganttUpper.linkable) {\n <div class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n }\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n @if (item.progress >= 0) {\n <div class=\"gantt-bar-content-progress\" [style.width.%]=\"item.progress * 100\"></div>\n }\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 { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-baseline,gantt-baseline',\n templateUrl: './baseline.component.html',\n imports: [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(\n private elementRef: ElementRef<HTMLElement>,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper\n ) {}\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","@if (baselineItem) {\n <div #content class=\"baseline-content\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: baselineItem.origin, refs: baselineItem.refs }\"\n ></ng-template>\n </div>\n}\n","import { Component, OnInit, HostBinding, OnChanges, SimpleChanges, OnDestroy, NgZone, Inject, ElementRef } from '@angular/core';\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';\n\nconst mainHeight = 5000;\n\n@Component({\n selector: 'gantt-calendar-grid',\n templateUrl: './calendar-grid.component.html',\n standalone: true\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 ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n @if (ganttUpper.showTodayLine) {\n <span class=\"today-line\"> </span>\n }\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n @if (view.showTimeline) {\n <g>\n @for (point of view.secondaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.cellWidth\"\n [attr.x2]=\"($index + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n }\n </g>\n }\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n </g>\n</svg>\n","import { Component, OnInit, HostBinding, Inject, NgZone, ElementRef } from '@angular/core';\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 { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'gantt-calendar-header',\n templateUrl: './calendar-header.component.html',\n imports: [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","<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 @for (point of view.primaryDatePoints; track point.x) {\n <text\n class=\"primary-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 } @for (point of view.secondaryDatePoints; track point.x) {\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 }\n\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n }\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>`;\nconst arrowLeftIcon = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" height=\"1em\" width=\"1em\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"adinavigation/arrow-left\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.4 4.15L4.438 7.315a.6.6 0 0 1-.876-.82l3.97-4.243a.598.598 0 0 1 .93-.057l3.97 4.323a.6.6 0 1 1-.885.812L8.6 4.118v9.149c0 .404-.269.733-.6.733-.332 0-.6-.329-.6-.733V4.15z\" id=\"adi形状结合\" transform=\"rotate(-90 7.995 8)\"></path></g></svg>`;\nconst arrowRightIcon = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" height=\"1em\" width=\"1em\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"adlnavigation/arrow-right\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.4 4.15L4.438 7.315a.6.6 0 0 1-.876-.82l3.97-4.243a.598.598 0 0 1 .93-.057l3.97 4.323a.6.6 0 1 1-.885.812L8.6 4.118v9.149c0 .404-.269.733-.6.733-.332 0-.6-.329-.6-.733V4.15z\" id=\"adl形状结合\" transform=\"rotate(90 7.995 8)\"></path></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 'arrow-left': arrowLeftIcon,\n 'arrow-right': arrowRightIcon\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';\n\n@Component({\n selector: 'gantt-links-overlay',\n templateUrl: './links.component.html',\n imports: []\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 @for (link of links; track trackBy(i); let i = $index) {\n <ng-container>\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 <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 @if (showArrow) {\n <defs>\n @if (link.type === ganttLinkTypes.sf) {\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"180\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n } @else {\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 }\n </defs>\n }\n </ng-container>\n }\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 { GanttGroupInternal, GanttItemInternal, 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\n@Pipe({\n name: 'isGanttGroup',\n standalone: true\n})\nexport class IsGanttGroupPipe implements PipeTransform {\n transform(data: GanttItemInternal | GanttGroupInternal): data is GanttGroupInternal {\n return !!(data as GanttGroupInternal).items;\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 { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-range,gantt-range',\n templateUrl: './range.component.html',\n imports: [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","@if (item.start && item.end) {\n <div class=\"gantt-range-main\">\n @if (item.progress >= 0) {\n <div class=\"gantt-range-main-progress\" [style.width.%]=\"item.progress * 100\"></div>\n }\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}\n","import { Component, HostBinding, Inject, Input, TemplateRef, Output, EventEmitter, OnInit, AfterViewInit, NgZone } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal, GanttBarClickEvent, GanttLineClickEvent, GanttItem } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttGroupPipe } from '../../gantt.pipe';\nimport { NgxGanttBaselineComponent } from '../baseline/baseline.component';\nimport { NgxGanttBarComponent } from '../bar/bar.component';\nimport { NgxGanttRangeComponent } from '../range/range.component';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { GanttLinksComponent } from '../links/links.component';\nimport { NgxGanttRootComponent } from './../../root.component';\nimport { GanttIconComponent } from '../icon/icon.component';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { combineLatest, from, Subject, take, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'gantt-main',\n templateUrl: './gantt-main.component.html',\n imports: [\n GanttLinksComponent,\n NgClass,\n NgTemplateOutlet,\n NgxGanttRangeComponent,\n NgxGanttBarComponent,\n NgxGanttBaselineComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe,\n IsGanttGroupPipe,\n GanttIconComponent\n ]\n})\nexport class GanttMainComponent implements OnInit {\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 @Input() ganttRoot: NgxGanttRootComponent;\n\n @Input() quickTimeFocus: boolean;\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 private unsubscribe$ = new Subject<void>();\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n public dom: GanttDomService,\n protected ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\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 this.setupResize();\n });\n });\n }\n\n toItemType(data: GanttItemInternal | GanttGroupInternal) {\n return data as GanttItemInternal;\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n\n private setupResize() {\n combineLatest([this.dom.getResize(), this.dom.getResizeByElement(this.dom.mainContainer)])\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.dom.setVisibleRangeX();\n });\n }\n\n quickTime(item: GanttItem, type: 'left' | 'right') {\n const date = type === 'left' ? item.start || item.end : item.end || item.start;\n this.ganttRoot.scrollToDate(date);\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 @for (data of viewportItems; track trackBy($index, data)) {\n @if (data | isGanttGroup) {\n <div class=\"gantt-group\" [style.height.px]=\"ganttUpper.styles.lineHeight\" [ngClass]=\"data.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: data }\"></ng-template>\n </div>\n }\n @if (!(data | isGanttGroup)) {\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [style]=\"data.laneStyle\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(data.id)\"\n >\n @if (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 }\n @if ((data.type | isGanttRangeItem) || (data.type | isGanttBarItem)) {\n @if (data.type | isGanttRangeItem) {\n <gantt-range [template]=\"rangeTemplate\" [item]=\"data\"></gantt-range>\n }\n @if (data.type | isGanttBarItem) {\n <gantt-bar [item]=\"data\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n }\n @if (ganttUpper.baselineItemsMap[data.id]) {\n <gantt-baseline [baselineItem]=\"ganttUpper.baselineItemsMap[data.id]\" [template]=\"baselineTemplate\"></gantt-baseline>\n }\n }\n </div>\n }\n }\n</div>\n\n@if (quickTimeFocus) {\n <div class=\"gantt-quick-time-focus-container\" [style.width.px]=\"ganttUpper.view.width\">\n <div class=\"gantt-quick-time-focus\" [style.width.px]=\"dom.visibleRangeX().max - dom.visibleRangeX().min\">\n @for (data of viewportItems; track trackBy(i, data); let i = $index) {\n @let item = toItemType(data);\n <div class=\"gantt-quick-time-focus-item\" [style.height.px]=\"ganttUpper.styles.lineHeight\">\n <span class=\"ml-2\">\n @if (item.refs?.x < dom.visibleRangeX().min && item.refs?.width) {\n <a class=\"gantt-quick-time-focus-item-arrow link-secondary\" href=\"javascript:;\" (click)=\"quickTime(item.origin, 'left')\">\n <gantt-icon iconName=\"arrow-left\"></gantt-icon>\n </a>\n }\n </span>\n <span class=\"mr-2\">\n @if (item.refs?.x + item.refs?.width > dom.visibleRangeX().max && item.refs?.width) {\n <a class=\"gantt-quick-time-focus-item-arrow link-secondary\" href=\"javascript:;\" (click)=\"quickTime(item.origin, 'right')\">\n <gantt-icon iconName=\"arrow-right\"></gantt-icon>\n </a>\n }\n </span>\n </div>\n }\n </div>\n </div>\n}\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 { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GANTT_ABSTRACT_TOKEN, GanttAbstractComponent } from '../../../gantt-abstract';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { setStyleWithVendorPrefix } from '../../../utils/set-style-with-vendor-prefix';\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 imports: [NgTemplateOutlet, CdkDrag]\n})\nexport class GanttTableHeaderComponent implements OnInit, OnDestroy {\n public dragStartLeft: number;\n\n public tableWidth = 0;\n\n public customWidth: number;\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) public gantt: GanttAbstractComponent,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.columnsChange();\n this.columns.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n if (!this.gantt?.table?.width && !this.customWidth) {\n this.columnsChange();\n }\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 = this.gantt?.table?.width ?? this.customWidth ?? this.getCalcWidth(tableWidth);\n this.gantt.cdr.detectChanges();\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 this.tableWidth = this.gantt?.table?.width ?? this.customWidth ?? this.getCalcWidth(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 this.tableWidth = this.getCalcWidth(parseInt(tableWidth + dragWidth, 10));\n this.customWidth = this.tableWidth;\n if (this.gantt.table) {\n this.gantt.table.resizeChange.emit(this.tableWidth);\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 private getCalcWidth(width: number): number {\n return this.gantt.table?.maxWidth && width > this.gantt.table?.maxWidth ? this.gantt.table?.maxWidth : width;\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-table-header-container\" [style.width.px]=\"tableWidth\" cdkScrollable>\n @for (column of columns; track $index) {\n <div class=\"gantt-table-column\" [style.width]=\"column.columnWidth\">\n @if (column.headerTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"column.headerTemplateRef\"> </ng-container>\n } @else {\n {{ column.name }}\n }\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 }\n <div class=\"gantt-table-column\"></div>\n</div>\n\n@if (gantt?.table?.settingsSlot) {\n <ng-template [ngTemplateOutlet]=\"gantt?.table?.settingsSlot\"></ng-template>\n}\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 { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragHandle, CdkDragMove, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren\n} from '@angular/core';\nimport { auditTime, filter, fromEvent, merge, startWith, Subject, takeUntil } from 'rxjs';\nimport {\n GanttGroupInternal,\n GanttItemInternal,\n GanttSelectedEvent,\n GanttTableDragDroppedEvent,\n GanttTableDragEndedEvent,\n GanttTableDragEnterPredicateContext,\n GanttTableDragStartedEvent,\n GanttTableDropPosition\n} from '../../../class';\nimport { GANTT_ABSTRACT_TOKEN, GanttAbstractComponent } from '../../../gantt-abstract';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../../gantt-upper';\nimport { IsGanttGroupPipe, IsGanttRangeItemPipe } from '../../../gantt.pipe';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { passiveListenerOptions } from '../../../utils/passive-listeners';\nimport { GanttIconComponent } from '../../icon/icon.component';\nimport { defaultColumnWidth } from '../header/gantt-table-header.component';\n\n@Component({\n selector: 'gantt-table-body',\n templateUrl: './gantt-table-body.component.html',\n imports: [CdkDropList, GanttIconComponent, NgTemplateOutlet, NgClass, CdkDrag, CdkDragHandle, IsGanttRangeItemPipe, IsGanttGroupPipe]\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;\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 public sideContainer: Element;\n\n public headerContainer: Element;\n\n public footerContainer: Element;\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 private ngZone: NgZone\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.initialize();\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 initialize() {\n this.sideContainer = this.document.getElementsByClassName('gantt-side-container')[0];\n this.headerContainer = this.document.getElementsByClassName('gantt-table-header-container')[0];\n this.footerContainer = this.document.getElementsByClassName('gantt-table-footer')[0];\n this.monitorScrollChange();\n }\n\n private monitorScrollChange() {\n const scrollObservers = [\n fromEvent(this.sideContainer, 'scroll', passiveListenerOptions),\n fromEvent(this.headerContainer, 'scroll', passiveListenerOptions)\n ];\n this.ngZone.runOutsideAngular(() =>\n merge(...scrollObservers)\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n const target = event.currentTarget as HTMLElement;\n const classList = target.classList;\n if (classList.contains('gantt-table-header-container')) {\n this.sideContainer && (this.sideContainer.scrollLeft = target.scrollLeft);\n this.footerContainer && (this.footerContainer.scrollLeft = target.scrollLeft);\n } else {\n this.headerContainer && (this.headerContainer.scrollLeft = target.scrollLeft);\n this.footerContainer && (this.footerContainer.scrollLeft = target.scrollLeft);\n }\n })\n );\n }\n\n expandGroup(group: GanttGroupInternal) {\n this.gantt.expandGroup(group);\n }\n\n expandChildren(event: MouseEvent, item: GanttItemInternal) {\n event.stopPropagation();\n this.gantt.expandChildren(item);\n }\n\n 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 @if (!viewportItems?.length) {\n @if (!emptyTemplate) {\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">没有数据</div>\n }\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n }\n\n @if (viewportItems && viewportItems.length > 0) {\n @for (item of viewportItems; track trackBy($index, item)) {\n @if (item | isGanttGroup) {\n <div class=\"gantt-table-group\" [style.height.px]=\"gantt.styles.lineHeight\" [ngClass]=\"item.class\">\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 @if (groupTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, group: item.origin }\"\n ></ng-template>\n } @else {\n <span class=\"group-title\">{{ item.title }}</span>\n }\n </div>\n </div>\n }\n @if (!(item | isGanttGroup)) {\n <div\n (click)=\"itemClick.emit({ event: $event, current: item.origin, 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 @for (column of columns; track $index; let first = $first) {\n <div [classList]=\"column.classList\" [style.width]=\"column.columnWidth\">\n <!-- drag icon -->\n @if (first && draggable) {\n <gantt-icon\n class=\"gantt-drag-handle\"\n iconName=\"drag\"\n cdkDragHandle\n [cdkDragHandleDisabled]=\"(draggable && item.itemDraggable === false) || !draggable\"\n ></gantt-icon>\n }\n <!-- expand icon -->\n @if (column?.showExpandIcon || (!hasExpandIcon && first)) {\n <div class=\"gantt-expand-icon\" [style.marginLeft.px]=\"item.level * 20\">\n @if (item.level < gantt.maxLevel - 1 && ((gantt.async && item.expandable) || item.children?.length > 0)) {\n @if (!item.loading) {\n <gantt-icon\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n >\n </gantt-icon>\n }\n @if (item.loading) {\n <gantt-icon [iconName]=\"'loading'\"></gantt-icon>\n }\n }\n </div>\n }\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 }\n <div class=\"gantt-table-column\"></div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n }\n }\n }\n</div>\n","import { Component, HostBinding, Input, TemplateRef, Inject, inject } from '@angular/core';\nimport { GanttViewType } from '../../class';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GanttConfigService } from '../../gantt.config';\n\n@Component({\n selector: 'ngx-gantt-toolbar,gantt-toolbar',\n templateUrl: './toolbar.component.html',\n imports: [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 views = inject(GanttConfigService).getViewsLocale();\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 @if (!template) {\n @if (this.ganttUpper.toolbarOptions?.viewTypes?.length) {\n <div class=\"toolbar-views\">\n @for (viewType of this.ganttUpper.toolbarOptions?.viewTypes; track viewType) {\n @if (views[viewType]) {\n <div class=\"toolbar-view\" [class.active]=\"viewType === this.ganttUpper.viewType\" (click)=\"selectView(viewType)\">\n {{ views[viewType].label }}\n </div>\n }\n }\n </div>\n }\n }\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n</div>\n","import { Component, Inject, Input } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { NgClass } from '@angular/common';\nimport { NgxGanttRootComponent } from '../../root.component';\n\n@Component({\n selector: 'gantt-scrollbar',\n templateUrl: `./scrollbar.component.html`,\n imports: [NgClass]\n})\nexport class GanttScrollbarComponent {\n @Input() hasFooter: boolean = false;\n\n @Input() tableWidth: number;\n\n @Input() ganttRoot: NgxGanttRootComponent;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n}\n","<div\n class=\"gantt-scrollbar\"\n [ngClass]=\"{ 'gantt-scrollbar-bg': hasFooter }\"\n [style.height.px]=\"ganttRoot?.horizontalScrollbarHeight + 1\"\n [style.right.px]=\"ganttRoot?.verticalScrollbarWidth\"\n>\n <div class=\"gantt-table-scrollbar\" [class.with-scrollbar]=\"ganttRoot?.horizontalScrollbarHeight\" [style.width.px]=\"tableWidth\"></div>\n <div class=\"gantt-main-scrollbar\">\n <div class=\"h-100\" [style.width.px]=\"ganttRoot['view']?.width\"></div>\n </div>\n</div>\n","import { Injectable, ElementRef } from '@angular/core';\n\n@Injectable()\nexport class GanttPrintService {\n private root: HTMLElement;\n\n private mainContainer: HTMLElement;\n\n constructor() {}\n\n private setInlineStyles(targetElem: Element) {\n const svgElements = Array.from(targetElem.getElementsByTagName('svg'));\n for (const svgElement of svgElements) {\n this.recursElementChildren(svgElement);\n }\n }\n\n private recursElementChildren(node: SVGSVGElement | HTMLElement) {\n const transformProperties = [\n 'fill',\n 'color',\n 'font-size',\n 'stroke',\n 'font',\n 'text-anchor',\n 'stroke-dasharray',\n 'shape-rendering',\n 'stroke-width'\n ];\n if (!node.style) {\n return;\n }\n const styles = getComputedStyle(node);\n for (const transformProperty of transformProperties) {\n node.style[transformProperty] = styles[transformProperty];\n }\n for (const child of Array.from(node.childNodes)) {\n this.recursElementChildren(child as SVGSVGElement);\n }\n }\n\n register(root: ElementRef<HTMLElement>) {\n this.root = root.nativeElement;\n this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0] as HTMLElement;\n }\n\n async print(name: string = 'download', ignoreElementClass?: string) {\n const root = this.root as HTMLElement;\n\n const mainContainer = this.mainContainer as HTMLElement;\n // set print width\n const printWidth = root.offsetWidth;\n\n // set print height\n const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;\n\n const html2canvas = (await import(/* webpackChunkName: 'html2canvas' */ 'html2canvas')).default;\n\n html2canvas(root, {\n logging: false,\n allowTaint: true,\n useCORS: true,\n width: printWidth,\n height: printHeight,\n ignoreElements: (element) => {\n if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {\n return true;\n }\n if (element.classList.contains('gantt-calendar-today-overlay')) {\n return true;\n }\n },\n\n onclone: (cloneDocument: Document) => {\n const ganttClass = root.className;\n const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\\s+/g, '.')}`) as HTMLElement;\n const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container') as HTMLElement;\n const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-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 { 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 imports: [\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 && !this.ganttUpper.quickTimeFocus) {\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 | Date | GanttDate) {\n let x: number;\n if (typeof date === 'number' || date instanceof Date) {\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","@if (sideTemplate) {\n <div class=\"gantt-side\" [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}\n@if (mainTemplate) {\n <div class=\"gantt-container\">\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}\n<ng-content></ng-content>\n@if (ganttUpper.showToolbar || ganttUpper.toolbarTemplate) {\n <gantt-toolbar [template]=\"ganttUpper.toolbarTemplate\"> </gantt-toolbar>\n}\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 GanttTableDragDroppedEvent,\n GanttTableDragEndedEvent,\n GanttTableDragEnterPredicateContext,\n GanttTableDragStartedEvent,\n GanttTableEvent,\n GanttTableItemClickEvent\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() maxWidth: number;\n\n @Input() width: number;\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 @Output() resizeChange = new EventEmitter<number>();\n\n @Output() itemClick = new EventEmitter<GanttTableItemClickEvent>();\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 @ContentChild('settingsSlot', { static: true }) settingsSlot: TemplateRef<any>;\n}\n","import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, ViewportRuler } from '@angular/cdk/scrolling';\nimport { NgClass, 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 GanttViewType,\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 { GanttScrollbarComponent } from './components/scrollbar/scrollbar.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\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 imports: [\n NgxGanttRootComponent,\n GanttTableHeaderComponent,\n GanttCalendarHeaderComponent,\n GanttLoaderComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n NgClass,\n CdkVirtualForOf,\n GanttTableBodyComponent,\n GanttCalendarGridComponent,\n GanttMainComponent,\n GanttDragBackdropComponent,\n GanttScrollbarComponent,\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 this.table.itemClick.emit({\n event: selectEvent.event,\n current: selectEvent.current\n });\n\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 | Date | 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 changeView(type: GanttViewType) {\n super.changeView(type);\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\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 @if (loading) {\n <gantt-loader></gantt-loader>\n }\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 [ganttRoot]=\"ganttRoot\"\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n [baselineTemplate]=\"baselineTemplate\"\n [quickTimeFocus]=\"quickTimeFocus\"\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 <gantt-scrollbar\n [ganttRoot]=\"ganttRoot\"\n [hasFooter]=\"!!table?.tableFooterTemplate\"\n [tableWidth]=\"tableHeader.tableWidth\"\n ></gantt-scrollbar>\n\n @if (table?.tableFooterTemplate || footerTemplate) {\n <div\n class=\"gantt-footer\"\n cdkScrollable\n [style.right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [style.bottom.px]=\"ganttRoot.horizontalScrollbarHeight\"\n >\n @if (table?.tableFooterTemplate) {\n <div class=\"gantt-table-footer\" [style.width.px]=\"tableHeader.tableWidth + 1\">\n <ng-template [ngTemplateOutlet]=\"table?.tableFooterTemplate\" [ngTemplateOutletContext]=\"{ columns: columns }\"> </ng-template>\n </div>\n }\n @if (footerTemplate) {\n <div class=\"gantt-container-footer\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"> </ng-template>\n </div>\n }\n </div>\n }\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 } 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, GanttConfigService, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttGroupPipe, IsGanttRangeItemPipe } from './gantt.pipe';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GanttScrollbarComponent } from './components/scrollbar/scrollbar.component';\nimport { i18nLocaleProvides } from './i18n';\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 GanttScrollbarComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe,\n IsGanttGroupPipe\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 GanttScrollbarComponent\n ],\n providers: [\n CdkVirtualScrollViewport,\n {\n provide: GANTT_GLOBAL_CONFIG,\n useValue: defaultConfig\n },\n ...i18nLocaleProvides\n ]\n})\nexport class NgxGanttModule {\n constructor() {\n const configService = inject(GanttConfigService);\n\n setDefaultOptions({\n locale: configService.getDateLocale(),\n weekStartsOn: configService.config?.dateOptions?.weekStartsOn\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 {\n GanttI18nLocaleConfig,\n GanttI18nLocale,\n GANTT_I18N_LOCALE_TOKEN,\n zhHansLocale,\n zhHantLocale,\n enUsLocale,\n jaJpLocale,\n deDeLocale,\n ruRuLocale\n} from './i18n';\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';\nexport * from './components/scrollbar/scrollbar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["viewOptions","zhHansLocale","zhHantLocale","i2.GanttDomService","i3.GanttDragContainer","i1.GanttDragContainer","take","takeUntil","i1.GanttDomService","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/views/view.ts","../../../packages/gantt/src/i18n/i18n.ts","../../../packages/gantt/src/i18n/locales/zh-hans.ts","../../../packages/gantt/src/i18n/locales/zh-hant.ts","../../../packages/gantt/src/i18n/locales/en-us.ts","../../../packages/gantt/src/i18n/locales/ja-jp.ts","../../../packages/gantt/src/i18n/locales/de-de.ts","../../../packages/gantt/src/i18n/locales/ru-ru.ts","../../../packages/gantt/src/i18n/index.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.config.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/components/scrollbar/scrollbar.component.ts","../../../packages/gantt/src/components/scrollbar/scrollbar.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 GanttTableItemClickEvent<T = unknown> {\n event: Event;\n current?: GanttItem<T>;\n}\n\nexport class GanttSelectedEvent<T = unknown> extends GanttTableItemClickEvent<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 Locale,\n FirstWeekContainsDate\n} from 'date-fns';\n\nimport { TZDate } from '@date-fns/tz';\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\nlet timeZone: string;\n\nexport function setDefaultTimeZone(zone: string) {\n timeZone = zone ?? undefined;\n}\n\nexport function getDefaultTimeZone() {\n return timeZone;\n}\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 = new TZDate(fromUnixTime(+date), timeZone);\n } else {\n this.value = new TZDate(date as any, timeZone);\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 TZDate(new Date(), timeZone);\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?: FirstWeekContainsDate;\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 | Date;\n end?: number | Date;\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 laneStyle?: 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 laneStyle?: 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(\n item: GanttItem,\n level: number,\n private view?: GanttView\n ) {\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.laneStyle = this.origin.laneStyle;\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","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 { differenceInCalendarDays, differenceInHours, differenceInMinutes } from 'date-fns';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from '../class';\nimport { GanttDatePoint } from '../class/date-point';\nimport { GanttDateFormat } from '../gantt.config';\nimport { GanttDate, GanttDateUtil, differenceInDays } from '../utils/date';\nimport { zhHansLocale } from '../i18n';\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 /** @deprecated dateFormat is deprecated, please use dateDisplayFormats or setting i18n locale */\n dateFormat?: GanttDateFormat;\n dateDisplayFormats?: { primary?: string; secondary?: string };\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 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 dateFormats: {\n primary?: string;\n secondary?: string;\n } = {};\n\n constructor(start: GanttViewDate, end: GanttViewDate, options: GanttViewOptions) {\n this.options = Object.assign({}, viewOptions, options);\n\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\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 { InjectionToken } from '@angular/core';\nimport { Locale as DateFnsLocale } from 'date-fns';\nimport { GanttViewType } from '../class';\n\nexport enum GanttI18nLocale {\n zhHans = 'zh-hans',\n zhHant = 'zh-hant',\n enUs = 'en-us',\n deDe = 'de-de',\n jaJp = 'ja-jp',\n ruRu = 'ru-ru'\n}\n\nexport type GanttI18nLocaleConfig = {\n id: GanttI18nLocale | string;\n dateLocale?: DateFnsLocale;\n views: Record<\n GanttViewType,\n {\n label: string;\n dateFormats: {\n primary?: string;\n secondary?: string;\n };\n }\n >;\n};\n\nexport const GANTT_I18N_LOCALE_TOKEN = new InjectionToken<GanttI18nLocaleConfig[]>('gantt-i18n-locale');\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.zhHans,\n views: {\n [GanttViewType.hour]: {\n label: '小时',\n dateFormats: {\n primary: 'M月d日',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: '天',\n dateFormats: {\n primary: 'yyyy年MM月',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: '周',\n dateFormats: {\n primary: 'yyyy年',\n secondary: '第w周'\n }\n },\n [GanttViewType.month]: {\n label: '月',\n dateFormats: {\n primary: `yyyy年'Q'Q`,\n secondary: 'M月'\n }\n },\n [GanttViewType.quarter]: {\n label: '季',\n dateFormats: {\n primary: 'yyyy年',\n secondary: `yyyy年'Q'Q`\n }\n },\n [GanttViewType.year]: {\n label: '年',\n dateFormats: {\n secondary: 'yyyy年'\n }\n }\n }\n};\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.zhHant,\n views: {\n [GanttViewType.hour]: {\n label: '小時',\n dateFormats: {\n primary: 'M月d日',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: '天',\n dateFormats: {\n primary: 'yyyy年MM月',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: '週',\n dateFormats: {\n primary: 'yyyy年',\n secondary: '第w週'\n }\n },\n [GanttViewType.month]: {\n label: '月',\n dateFormats: {\n primary: `yyyy年'Q'Q`,\n secondary: 'M月'\n }\n },\n [GanttViewType.quarter]: {\n label: '季',\n dateFormats: {\n primary: 'yyyy年',\n secondary: `yyyy年'Q'Q`\n }\n },\n [GanttViewType.year]: {\n label: '年',\n dateFormats: {\n secondary: 'yyyy年'\n }\n }\n }\n};\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.enUs,\n views: {\n [GanttViewType.hour]: {\n label: 'Hourly',\n dateFormats: {\n primary: 'MMM d',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: 'Daily',\n dateFormats: {\n primary: 'MMM yyyy',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: 'Weekly',\n dateFormats: {\n primary: 'yyyy',\n secondary: 'wo'\n }\n },\n [GanttViewType.month]: {\n label: 'Monthly',\n dateFormats: {\n primary: \"yyyy 'Q'Q\",\n secondary: 'MMM'\n }\n },\n [GanttViewType.quarter]: {\n label: 'Quarterly',\n dateFormats: {\n primary: 'yyyy',\n secondary: \"yyyy 'Q'Q\"\n }\n },\n [GanttViewType.year]: {\n label: 'Yearly',\n dateFormats: {\n secondary: 'yyyy'\n }\n }\n }\n};\n","import { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.jaJp,\n views: {\n [GanttViewType.hour]: {\n label: '毎時',\n dateFormats: {\n primary: 'M月d日',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: '日',\n dateFormats: {\n primary: 'yyyy年M月d日',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: '週',\n dateFormats: {\n primary: 'yyyy年',\n secondary: '第w週'\n }\n },\n [GanttViewType.month]: {\n label: '月',\n dateFormats: {\n primary: `yyyy年M月`,\n secondary: 'M月'\n }\n },\n [GanttViewType.quarter]: {\n label: '四半期',\n dateFormats: {\n primary: 'yyyy年',\n secondary: `yyyy年第Q四半期`\n }\n },\n [GanttViewType.year]: {\n label: '年',\n dateFormats: {\n secondary: 'yyyy年'\n }\n }\n }\n};\n","import { de } from 'date-fns/locale';\nimport { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.deDe,\n dateLocale: de,\n views: {\n [GanttViewType.hour]: {\n label: 'Stündlich',\n dateFormats: {\n primary: 'dd. MMM',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: 'Täglich',\n dateFormats: {\n primary: 'MMM yyyy',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: 'Wöchentlich',\n dateFormats: {\n primary: 'yyyy',\n secondary: `w. 'Woche'`\n }\n },\n [GanttViewType.month]: {\n label: 'Monatlich',\n dateFormats: {\n primary: 'MMM yyyy',\n secondary: 'MMM'\n }\n },\n [GanttViewType.quarter]: {\n label: 'Vierteljährlich',\n dateFormats: {\n primary: 'yyyy',\n secondary: `Q. 'Quartal' yyyy`\n }\n },\n [GanttViewType.year]: {\n label: 'Jährlich',\n dateFormats: {\n secondary: 'yyyy'\n }\n }\n }\n};\n","import { ru } from 'date-fns/locale';\nimport { GanttViewType } from '../../class';\nimport { GanttI18nLocale } from '../i18n';\n\nexport default {\n id: GanttI18nLocale.ruRu,\n dateLocale: ru,\n views: {\n [GanttViewType.hour]: {\n label: 'Ежечасно',\n dateFormats: {\n primary: 'd MMM',\n secondary: 'HH:mm'\n }\n },\n [GanttViewType.day]: {\n label: 'Ежедневно',\n dateFormats: {\n primary: 'MMMM yyyy',\n secondary: 'd'\n }\n },\n [GanttViewType.week]: {\n label: 'Еженедельно',\n dateFormats: {\n primary: 'yyyy',\n secondary: 'Неделя w'\n }\n },\n [GanttViewType.month]: {\n label: 'Ежемесячно',\n dateFormats: {\n primary: 'MMMM yyyy',\n secondary: 'MMM'\n }\n },\n [GanttViewType.quarter]: {\n label: 'Ежеквартально',\n dateFormats: {\n primary: 'yyyy',\n secondary: 'Квартал Q yyyy'\n }\n },\n [GanttViewType.year]: {\n label: 'Ежегодно',\n dateFormats: {\n secondary: 'yyyy'\n }\n }\n }\n};\n","import { default as zhHansLocale } from './locales/zh-hans';\nimport { default as zhHantLocale } from './locales/zh-hant';\nimport { default as enUsLocale } from './locales/en-us';\nimport { default as jaJpLocale } from './locales/ja-jp';\nimport { default as deDeLocale } from './locales/de-de';\nimport { default as ruRuLocale } from './locales/ru-ru';\nimport { GANTT_I18N_LOCALE_TOKEN } from './i18n';\nimport { Provider } from '@angular/core';\n\nexport * from './i18n';\n\nexport { zhHansLocale, zhHantLocale, enUsLocale, jaJpLocale, deDeLocale, ruRuLocale };\n\nexport const i18nLocaleProvides: Provider[] = [\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: zhHansLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: zhHantLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: enUsLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: jaJpLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: deDeLocale, multi: true },\n { provide: GANTT_I18N_LOCALE_TOKEN, useValue: ruRuLocale, multi: true }\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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.month.dateFormats\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 || this.options.dateDisplayFormats.primary),\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 || this.options.dateDisplayFormats.secondary),\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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.quarter.dateFormats\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 || this.options.dateDisplayFormats.primary)}`,\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 || this.options.dateDisplayFormats.secondary),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { zhHantLocale } from '../i18n';\nimport { 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 dateDisplayFormats: zhHantLocale.views.day.dateFormats\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 || this.options.dateDisplayFormats.primary),\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.format(this.options.dateDisplayFormats.secondary) || 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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.week.dateFormats\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 || this.options.dateDisplayFormats.primary),\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 || this.options.dateDisplayFormats.secondary)}`,\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';\nimport { zhHantLocale } from '../i18n';\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 dateDisplayFormats: zhHantLocale.views.year.dateFormats\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(\n this.options.dateFormat?.year || this.options.dateDisplayFormats.secondary || this.options.dateDisplayFormats.primary\n )}`,\n i * this.getCellWidth() + this.getCellWidth() / 2,\n pointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { zhHantLocale } from '../i18n';\nimport { 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 dateDisplayFormats: zhHantLocale.views.hour.dateFormats,\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 || this.options.dateDisplayFormats.primary),\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 || this.options.dateDisplayFormats.secondary),\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 { inject, Inject, InjectionToken } from '@angular/core';\nimport { Locale } from 'date-fns';\nimport { GanttLinkLineType, GanttLinkOptions, GanttLinkType } from './class/link';\nimport { Injectable } from '@angular/core';\nimport { GANTT_I18N_LOCALE_TOKEN, GanttI18nLocaleConfig, GanttI18nLocale } from './i18n/i18n';\nimport zhHans from './i18n/locales/zh-hans';\nimport zhHant from './i18n/locales/zh-hant';\nimport { setDefaultTimeZone } from './utils/date';\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 /**\n * @deprecated dateOptions is deprecated, use i18n locale setting instead\n * http://gantt.ngnice.com/guides/configuration/i18n\n */\n locale?: Locale;\n timeZone?: string;\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 locale?: GanttI18nLocale | string;\n /** @deprecated dateFormat is deprecated, please configure through i18n. http://gantt.ngnice.com/guides/configuration/i18n */\n dateFormat?: GanttDateFormat;\n dateOptions?: GanttDateOptions;\n linkOptions?: GanttLinkOptions;\n styleOptions?: GanttStyleOptions;\n}\n\nexport const defaultConfig: GanttGlobalConfig = {\n locale: GanttI18nLocale.zhHans,\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 dateOptions: {\n weekStartsOn: 1\n }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n\n@Injectable({ providedIn: 'root' })\nexport class GanttConfigService {\n public config: GanttGlobalConfig;\n\n private i18nLocales: Record<GanttI18nLocale, GanttI18nLocaleConfig>;\n\n constructor(@Inject(GANTT_GLOBAL_CONFIG) globalConfig: GanttGlobalConfig) {\n const localeId = globalConfig.locale || defaultConfig.locale;\n this.config = {\n locale: localeId,\n dateFormat: Object.assign({}, defaultConfig.dateFormat, globalConfig.dateFormat),\n styleOptions: Object.assign({}, defaultConfig.styleOptions, globalConfig.styleOptions),\n linkOptions: Object.assign({}, defaultConfig.linkOptions, globalConfig.linkOptions),\n dateOptions: Object.assign({}, defaultConfig.dateOptions, globalConfig.dateOptions)\n };\n\n this.i18nLocales = inject(GANTT_I18N_LOCALE_TOKEN).reduce(\n (result, localeConfig) => {\n result[localeConfig.id] = localeConfig; // 这里使用 `id` 作为 key\n return result;\n },\n {\n ['zh-cn']: zhHans,\n ['zh-tw']: zhHant\n } as Record<GanttI18nLocale | string, GanttI18nLocaleConfig>\n );\n\n if (this.config.dateOptions?.timeZone) {\n setDefaultTimeZone(this.config.dateOptions.timeZone);\n }\n }\n\n setLocale(locale: string) {\n this.config.locale = locale;\n }\n\n private getLocaleConfig() {\n return this.i18nLocales[this.config.locale] ?? this.i18nLocales[this.config.locale.toLowerCase()] ?? zhHans;\n }\n\n getViewsLocale(): GanttI18nLocaleConfig['views'] {\n return this.getLocaleConfig().views;\n }\n\n getDateLocale() {\n return this.config.dateOptions?.locale ?? this.getLocaleConfig().dateLocale;\n }\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 OnInit,\n OnDestroy,\n OnChanges,\n inject\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, getUnixTime } from './utils/date';\nimport { uniqBy, flatten, recursiveItems, getFlatItems, Dictionary, keyBy } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GanttConfigService, GanttGlobalConfig, GanttStyleOptions, defaultConfig } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty, coerceCssPixelValue } 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({}, this.configService.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 @Input() quickTimeFocus = false;\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 configService = inject(GanttConfigService);\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, // @Inject(GANTT_GLOBAL_CONFIG) public config: GanttGlobalConfig\n protected config: GanttGlobalConfig\n ) {}\n\n private createView() {\n const viewDate = this.getViewDate();\n\n this.styles = Object.assign({}, this.configService.config.styleOptions, this.styles);\n this.viewOptions.dateFormat = Object.assign({}, this.configService.config.dateFormat, this.viewOptions.dateFormat);\n this.viewOptions.styleOptions = Object.assign({}, this.configService.config.styleOptions, this.viewOptions.styleOptions);\n this.viewOptions.dateDisplayFormats = this.configService.getViewsLocale()[this.viewType]?.dateFormats;\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 const itemStart = item.start instanceof Date ? getUnixTime(item.start) : item.start;\n start = start ? Math.min(start, itemStart) : itemStart;\n }\n if (item.end && !this.end) {\n const itemEnd = item.start instanceof Date ? getUnixTime(item.start) : item.start;\n end = end ? Math.max(end, itemEnd) : itemEnd;\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 private initCssVariables() {\n this.element.style.setProperty('--gantt-header-height', coerceCssPixelValue(this.styles.headerHeight));\n this.element.style.setProperty('--gantt-line-height', coerceCssPixelValue(this.styles.lineHeight));\n this.element.style.setProperty('--gantt-bar-height', coerceCssPixelValue(this.styles.barHeight));\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.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.setupBaselineItems();\n this.computeItemsRefs(...this.baselineItems);\n this.initSelectionModel();\n this.initCssVariables();\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 { ElementRef, Inject, Injectable, NgZone, OnDestroy, PLATFORM_ID, WritableSignal, signal } from '@angular/core';\nimport { EMPTY, Observable, Subject, fromEvent, merge } from 'rxjs';\nimport { auditTime, map, pairwise, 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 public visibleRangeX: WritableSignal<{ min: number; max: number }> = signal({ min: 0, max: 0 });\n\n private mainFooter: Element;\n\n private mainScrollbar: Element;\n\n private unsubscribe$ = new Subject<void>();\n\n constructor(\n private ngZone: NgZone,\n @Inject(PLATFORM_ID) private platformId: string\n ) {}\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 this.setVisibleRangeX();\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 getResizeByElement(element: Element) {\n return new Observable((observer) => {\n const resizeObserver = new ResizeObserver(() => {\n observer.next();\n });\n resizeObserver.observe(element);\n });\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 setVisibleRangeX() {\n this.visibleRangeX.set({\n min: this.mainContainer.scrollLeft,\n max: this.mainContainer.scrollLeft + this.mainContainer.clientWidth\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 { effect, ElementRef, Injectable, NgZone, OnDestroy, signal, WritableSignal } 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: WritableSignal<GanttItemInternal> = signal(null);\n\n private hasMonitorMouseEvent: boolean;\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 linkDragRefs: DragRef[] = [];\n\n private barHandleDragRefs: 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 effect(() => {\n const item: GanttItemInternal = this.item();\n if (item) {\n this.createDrags();\n }\n });\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 if (!this.hasMonitorMouseEvent && (!this.dragDisabled || !this.linkDragDisabled)) {\n this.hasMonitorMouseEvent = true;\n const dropClass =\n this.ganttUpper.linkOptions?.dependencyTypes?.length === 1 &&\n this.ganttUpper.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.linkDragDisabled) {\n this.barElement.classList.add(dropClass);\n this.dragContainer.emitLinkDragEntered({\n item: this.item(),\n element: this.barElement\n });\n }\n } else {\n if (!this.dragDisabled || !this.linkDragDisabled) {\n this.barElement.classList.add(activeClass);\n }\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\n private createBarDrag() {\n const dragRef = this.createDragRef(this.barElement);\n dragRef.disabled = this.dragDisabled;\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\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.disabled = this.dragDisabled;\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.disabled = this.linkDragDisabled;\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 initialize(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n this.barElement = elementRef.nativeElement;\n this.ganttUpper = ganttUpper;\n this.item.set(item);\n }\n\n private createBarDragRef() {\n if (this.barDragRef) {\n this.barDragRef.disabled = this.dragDisabled;\n } else if (!this.dragDisabled) {\n this.barDragRef = this.createBarDrag();\n }\n }\n\n private createBarHandleDragRefs() {\n if (this.barHandleDragRefs.length > 0) {\n this.barHandleDragRefs.forEach((dragRef) => {\n dragRef.disabled = this.dragDisabled;\n });\n } else if (!this.dragDisabled) {\n this.barHandleDragRefs = this.createBarHandleDrags();\n }\n }\n\n private createLinkDragRefs() {\n if (this.linkDragRefs.length > 0) {\n this.linkDragRefs.forEach((dragRef) => {\n dragRef.disabled = this.linkDragDisabled;\n });\n } else if (!this.linkDragDisabled) {\n this.linkDragRefs = this.createLinkHandleDrags();\n }\n }\n\n createDrags() {\n this.createMouseEvents();\n this.createBarDragRef();\n this.createBarHandleDragRefs();\n this.createLinkDragRefs();\n }\n\n updateItem(item: GanttItemInternal) {\n this.item.set(item);\n }\n\n ngOnDestroy() {\n this.closeDragBackdrop();\n this.barDragRef?.dispose();\n this.linkDragRefs?.forEach((dragRef) => dragRef.dispose());\n this.barHandleDragRefs?.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 { 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 imports: [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.initialize(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 @if (item.draggable && ganttUpper.draggable) {\n <span class=\"handle\" #handle></span>\n <span class=\"handle\" #handle></span>\n }\n </div>\n @if (item.linkable && ganttUpper.linkable) {\n <div class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n }\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n @if (item.progress >= 0) {\n <div class=\"gantt-bar-content-progress\" [style.width.%]=\"item.progress * 100\"></div>\n }\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 { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-baseline,gantt-baseline',\n templateUrl: './baseline.component.html',\n imports: [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(\n private elementRef: ElementRef<HTMLElement>,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper\n ) {}\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","@if (baselineItem) {\n <div #content class=\"baseline-content\">\n <ng-template\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ item: baselineItem.origin, refs: baselineItem.refs }\"\n ></ng-template>\n </div>\n}\n","import { Component, OnInit, HostBinding, OnChanges, SimpleChanges, OnDestroy, NgZone, Inject, ElementRef } from '@angular/core';\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';\n\nconst mainHeight = 5000;\n\n@Component({\n selector: 'gantt-calendar-grid',\n templateUrl: './calendar-grid.component.html',\n standalone: true\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 ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n @if (ganttUpper.showTodayLine) {\n <span class=\"today-line\"> </span>\n }\n</div>\n\n<svg class=\"gantt-calendar-grid-main\" [attr.width]=\"view.width\" [attr.height]=\"ganttUpper.styles.headerHeight - 1\">\n <g>\n @if (view.showTimeline) {\n <g>\n @for (point of view.secondaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.cellWidth\"\n [attr.x2]=\"($index + 1) * view.cellWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n }\n </g>\n }\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n }\n </g>\n </g>\n</svg>\n","import { Component, OnInit, HostBinding, Inject, NgZone, ElementRef } from '@angular/core';\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 { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'gantt-calendar-header',\n templateUrl: './calendar-header.component.html',\n imports: [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","<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 @for (point of view.primaryDatePoints; track point.x) {\n <text\n class=\"primary-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 } @for (point of view.secondaryDatePoints; track point.x) {\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 }\n\n <g>\n @for (point of view.primaryDatePoints; track point.x) {\n <line\n [attr.x1]=\"($index + 1) * view.primaryWidth\"\n [attr.x2]=\"($index + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"ganttUpper.styles.headerHeight\"\n class=\"primary-line\"\n ></line>\n }\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>`;\nconst arrowLeftIcon = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" height=\"1em\" width=\"1em\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"adinavigation/arrow-left\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.4 4.15L4.438 7.315a.6.6 0 0 1-.876-.82l3.97-4.243a.598.598 0 0 1 .93-.057l3.97 4.323a.6.6 0 1 1-.885.812L8.6 4.118v9.149c0 .404-.269.733-.6.733-.332 0-.6-.329-.6-.733V4.15z\" id=\"adi形状结合\" transform=\"rotate(-90 7.995 8)\"></path></g></svg>`;\nconst arrowRightIcon = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" height=\"1em\" width=\"1em\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"adlnavigation/arrow-right\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.4 4.15L4.438 7.315a.6.6 0 0 1-.876-.82l3.97-4.243a.598.598 0 0 1 .93-.057l3.97 4.323a.6.6 0 1 1-.885.812L8.6 4.118v9.149c0 .404-.269.733-.6.733-.332 0-.6-.329-.6-.733V4.15z\" id=\"adl形状结合\" transform=\"rotate(90 7.995 8)\"></path></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 'arrow-left': arrowLeftIcon,\n 'arrow-right': arrowRightIcon\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';\n\n@Component({\n selector: 'gantt-links-overlay',\n templateUrl: './links.component.html',\n imports: []\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 @for (link of links; track trackBy(i); let i = $index) {\n <ng-container>\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 <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 @if (showArrow) {\n <defs>\n @if (link.type === ganttLinkTypes.sf) {\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"180\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n } @else {\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 }\n </defs>\n }\n </ng-container>\n }\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 { GanttGroupInternal, GanttItemInternal, 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\n@Pipe({\n name: 'isGanttGroup',\n standalone: true\n})\nexport class IsGanttGroupPipe implements PipeTransform {\n transform(data: GanttItemInternal | GanttGroupInternal): data is GanttGroupInternal {\n return !!(data as GanttGroupInternal).items;\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 { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngx-gantt-range,gantt-range',\n templateUrl: './range.component.html',\n imports: [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","@if (item.start && item.end) {\n <div class=\"gantt-range-main\">\n @if (item.progress >= 0) {\n <div class=\"gantt-range-main-progress\" [style.width.%]=\"item.progress * 100\"></div>\n }\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}\n","import { Component, HostBinding, Inject, Input, TemplateRef, Output, EventEmitter, OnInit, AfterViewInit, NgZone } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal, GanttBarClickEvent, GanttLineClickEvent, GanttItem } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttGroupPipe } from '../../gantt.pipe';\nimport { NgxGanttBaselineComponent } from '../baseline/baseline.component';\nimport { NgxGanttBarComponent } from '../bar/bar.component';\nimport { NgxGanttRangeComponent } from '../range/range.component';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { GanttLinksComponent } from '../links/links.component';\nimport { NgxGanttRootComponent } from './../../root.component';\nimport { GanttIconComponent } from '../icon/icon.component';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { combineLatest, from, Subject, take, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'gantt-main',\n templateUrl: './gantt-main.component.html',\n imports: [\n GanttLinksComponent,\n NgClass,\n NgTemplateOutlet,\n NgxGanttRangeComponent,\n NgxGanttBarComponent,\n NgxGanttBaselineComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe,\n IsGanttGroupPipe,\n GanttIconComponent\n ]\n})\nexport class GanttMainComponent implements OnInit {\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 @Input() ganttRoot: NgxGanttRootComponent;\n\n @Input() quickTimeFocus: boolean;\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 private unsubscribe$ = new Subject<void>();\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n public dom: GanttDomService,\n protected ngZone: NgZone\n ) {}\n\n ngOnInit(): void {\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 this.setupResize();\n });\n });\n }\n\n toItemType(data: GanttItemInternal | GanttGroupInternal) {\n return data as GanttItemInternal;\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n\n private setupResize() {\n combineLatest([this.dom.getResize(), this.dom.getResizeByElement(this.dom.mainContainer)])\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.dom.setVisibleRangeX();\n });\n }\n\n quickTime(item: GanttItem, type: 'left' | 'right') {\n const date = type === 'left' ? item.start || item.end : item.end || item.start;\n this.ganttRoot.scrollToDate(date);\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 @for (data of viewportItems; track trackBy($index, data)) {\n @if (data | isGanttGroup) {\n <div class=\"gantt-group\" [style.height.px]=\"ganttUpper.styles.lineHeight\" [ngClass]=\"data.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: data }\"></ng-template>\n </div>\n }\n @if (!(data | isGanttGroup)) {\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [style]=\"data.laneStyle\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(data.id)\"\n >\n @if (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 }\n @if ((data.type | isGanttRangeItem) || (data.type | isGanttBarItem)) {\n @if (data.type | isGanttRangeItem) {\n <gantt-range [template]=\"rangeTemplate\" [item]=\"data\"></gantt-range>\n }\n @if (data.type | isGanttBarItem) {\n <gantt-bar [item]=\"data\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n }\n @if (ganttUpper.baselineItemsMap[data.id]) {\n <gantt-baseline [baselineItem]=\"ganttUpper.baselineItemsMap[data.id]\" [template]=\"baselineTemplate\"></gantt-baseline>\n }\n }\n </div>\n }\n }\n</div>\n\n@if (quickTimeFocus) {\n <div class=\"gantt-quick-time-focus-container\" [style.width.px]=\"ganttUpper.view.width\">\n <div class=\"gantt-quick-time-focus\" [style.width.px]=\"dom.visibleRangeX().max - dom.visibleRangeX().min\">\n @for (data of viewportItems; track trackBy(i, data); let i = $index) {\n @let item = toItemType(data);\n <div class=\"gantt-quick-time-focus-item\" [style.height.px]=\"ganttUpper.styles.lineHeight\">\n <span class=\"ml-2\">\n @if (item.refs?.x < dom.visibleRangeX().min && item.refs?.width) {\n <a class=\"gantt-quick-time-focus-item-arrow link-secondary\" href=\"javascript:;\" (click)=\"quickTime(item.origin, 'left')\">\n <gantt-icon iconName=\"arrow-left\"></gantt-icon>\n </a>\n }\n </span>\n <span class=\"mr-2\">\n @if (item.refs?.x + item.refs?.width > dom.visibleRangeX().max && item.refs?.width) {\n <a class=\"gantt-quick-time-focus-item-arrow link-secondary\" href=\"javascript:;\" (click)=\"quickTime(item.origin, 'right')\">\n <gantt-icon iconName=\"arrow-right\"></gantt-icon>\n </a>\n }\n </span>\n </div>\n }\n </div>\n </div>\n}\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 { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { GANTT_ABSTRACT_TOKEN, GanttAbstractComponent } from '../../../gantt-abstract';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { setStyleWithVendorPrefix } from '../../../utils/set-style-with-vendor-prefix';\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 imports: [NgTemplateOutlet, CdkDrag]\n})\nexport class GanttTableHeaderComponent implements OnInit, OnDestroy {\n public dragStartLeft: number;\n\n public tableWidth = 0;\n\n public customWidth: number;\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) public gantt: GanttAbstractComponent,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n this.columnsChange();\n this.columns.changes.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n if (!this.gantt?.table?.width && !this.customWidth) {\n this.columnsChange();\n }\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 = this.gantt?.table?.width ?? this.customWidth ?? this.getCalcWidth(tableWidth);\n this.gantt.cdr.detectChanges();\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 this.tableWidth = this.gantt?.table?.width ?? this.customWidth ?? this.getCalcWidth(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 this.tableWidth = this.getCalcWidth(parseInt(tableWidth + dragWidth, 10));\n this.customWidth = this.tableWidth;\n if (this.gantt.table) {\n this.gantt.table.resizeChange.emit(this.tableWidth);\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 private getCalcWidth(width: number): number {\n return this.gantt.table?.maxWidth && width > this.gantt.table?.maxWidth ? this.gantt.table?.maxWidth : width;\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-table-header-container\" [style.width.px]=\"tableWidth\" cdkScrollable>\n @for (column of columns; track $index) {\n <div class=\"gantt-table-column\" [style.width]=\"column.columnWidth\">\n @if (column.headerTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"column.headerTemplateRef\"> </ng-container>\n } @else {\n {{ column.name }}\n }\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 }\n <div class=\"gantt-table-column gantt-table-column-placeholder\"></div>\n</div>\n\n@if (gantt?.table?.settingsSlot) {\n <ng-template [ngTemplateOutlet]=\"gantt?.table?.settingsSlot\"></ng-template>\n}\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 { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragHandle, CdkDragMove, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren\n} from '@angular/core';\nimport { auditTime, filter, fromEvent, merge, startWith, Subject, takeUntil } from 'rxjs';\nimport {\n GanttGroupInternal,\n GanttItemInternal,\n GanttSelectedEvent,\n GanttTableDragDroppedEvent,\n GanttTableDragEndedEvent,\n GanttTableDragEnterPredicateContext,\n GanttTableDragStartedEvent,\n GanttTableDropPosition\n} from '../../../class';\nimport { GANTT_ABSTRACT_TOKEN, GanttAbstractComponent } from '../../../gantt-abstract';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../../gantt-upper';\nimport { IsGanttGroupPipe, IsGanttRangeItemPipe } from '../../../gantt.pipe';\nimport { NgxGanttTableColumnComponent } from '../../../table/gantt-column.component';\nimport { passiveListenerOptions } from '../../../utils/passive-listeners';\nimport { GanttIconComponent } from '../../icon/icon.component';\nimport { defaultColumnWidth } from '../header/gantt-table-header.component';\n\n@Component({\n selector: 'gantt-table-body',\n templateUrl: './gantt-table-body.component.html',\n imports: [CdkDropList, GanttIconComponent, NgTemplateOutlet, NgClass, CdkDrag, CdkDragHandle, IsGanttRangeItemPipe, IsGanttGroupPipe]\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;\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 public sideContainer: Element;\n\n public headerContainer: Element;\n\n public footerContainer: Element;\n\n public tableScrollbarContainer: Element;\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 protected elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone\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.initialize();\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 initialize() {\n this.sideContainer = this.document.getElementsByClassName('gantt-side-container')[0];\n this.headerContainer = this.document.getElementsByClassName('gantt-table-header-container')[0];\n this.footerContainer = this.document.getElementsByClassName('gantt-table-footer')[0];\n this.tableScrollbarContainer = this.document.getElementsByClassName('gantt-table-scrollbar')[0];\n this.monitorScrollChange();\n }\n\n private monitorScrollChange() {\n const scrollObservers = [\n fromEvent(this.sideContainer, 'scroll', passiveListenerOptions),\n fromEvent(this.headerContainer, 'scroll', passiveListenerOptions),\n fromEvent(this.tableScrollbarContainer, 'scroll', passiveListenerOptions)\n ];\n this.ngZone.runOutsideAngular(() =>\n merge(...scrollObservers)\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n const target = event.currentTarget as HTMLElement;\n this.headerContainer && (this.headerContainer.scrollLeft = target.scrollLeft);\n this.sideContainer && (this.sideContainer.scrollLeft = target.scrollLeft);\n this.tableScrollbarContainer && (this.tableScrollbarContainer.scrollLeft = target.scrollLeft);\n this.footerContainer && (this.footerContainer.scrollLeft = target.scrollLeft);\n })\n );\n }\n\n expandGroup(group: GanttGroupInternal) {\n this.gantt.expandGroup(group);\n }\n\n expandChildren(event: MouseEvent, item: GanttItemInternal) {\n event.stopPropagation();\n this.gantt.expandChildren(item);\n }\n\n 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 @if (!viewportItems?.length) {\n @if (!emptyTemplate) {\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">没有数据</div>\n }\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n }\n\n @if (viewportItems && viewportItems.length > 0) {\n @for (item of viewportItems; track trackBy($index, item)) {\n @if (item | isGanttGroup) {\n <div class=\"gantt-table-group\" [style.height.px]=\"gantt.styles.lineHeight\" [ngClass]=\"item.class\">\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 @if (groupTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, group: item.origin }\"\n ></ng-template>\n } @else {\n <span class=\"group-title\">{{ item.title }}</span>\n }\n </div>\n </div>\n }\n @if (!(item | isGanttGroup)) {\n <div\n (click)=\"itemClick.emit({ event: $event, current: item.origin, 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 @for (column of columns; track $index; let first = $first) {\n <div [classList]=\"column.classList\" [style.width]=\"column.columnWidth\">\n <!-- drag icon -->\n @if (first && draggable) {\n <gantt-icon\n class=\"gantt-drag-handle\"\n iconName=\"drag\"\n cdkDragHandle\n [cdkDragHandleDisabled]=\"(draggable && item.itemDraggable === false) || !draggable\"\n ></gantt-icon>\n }\n <!-- expand icon -->\n @if (column?.showExpandIcon || (!hasExpandIcon && first)) {\n <div class=\"gantt-expand-icon\" [style.marginLeft.px]=\"item.level * 20\">\n @if (item.level < gantt.maxLevel - 1 && ((gantt.async && item.expandable) || item.children?.length > 0)) {\n @if (!item.loading) {\n <gantt-icon\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n >\n </gantt-icon>\n }\n @if (item.loading) {\n <gantt-icon [iconName]=\"'loading'\"></gantt-icon>\n }\n }\n </div>\n }\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 }\n <div class=\"gantt-table-column gantt-table-column-placeholder\"></div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n }\n }\n }\n</div>\n","import { Component, HostBinding, Input, TemplateRef, Inject, inject } from '@angular/core';\nimport { GanttViewType } from '../../class';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { GanttConfigService } from '../../gantt.config';\n\n@Component({\n selector: 'ngx-gantt-toolbar,gantt-toolbar',\n templateUrl: './toolbar.component.html',\n imports: [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 views = inject(GanttConfigService).getViewsLocale();\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 @if (!template) {\n @if (this.ganttUpper.toolbarOptions?.viewTypes?.length) {\n <div class=\"toolbar-views\">\n @for (viewType of this.ganttUpper.toolbarOptions?.viewTypes; track viewType) {\n @if (views[viewType]) {\n <div class=\"toolbar-view\" [class.active]=\"viewType === this.ganttUpper.viewType\" (click)=\"selectView(viewType)\">\n {{ views[viewType].label }}\n </div>\n }\n }\n </div>\n }\n }\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n</div>\n","import { Component, Inject, Input } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { NgClass } from '@angular/common';\nimport { NgxGanttRootComponent } from '../../root.component';\n\n@Component({\n selector: 'gantt-scrollbar',\n templateUrl: `./scrollbar.component.html`,\n imports: [NgClass]\n})\nexport class GanttScrollbarComponent {\n @Input() hasFooter: boolean = false;\n\n @Input() tableWidth: number;\n\n @Input() ganttRoot: NgxGanttRootComponent;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n}\n","<div\n class=\"gantt-scrollbar\"\n [ngClass]=\"{ 'gantt-scrollbar-bg': hasFooter }\"\n [style.height.px]=\"ganttRoot?.horizontalScrollbarHeight + 1\"\n [style.right.px]=\"ganttRoot?.verticalScrollbarWidth\"\n>\n <div class=\"gantt-table-scrollbar\" [class.with-scrollbar]=\"ganttRoot?.horizontalScrollbarHeight\" [style.width.px]=\"tableWidth\">\n <div class=\"h-100\" [style.width.px]=\"ganttRoot.ganttUpper['ganttTableBody']?.elementRef?.nativeElement?.offsetWidth - 1 || 0\"></div>\n </div>\n <div class=\"gantt-main-scrollbar\">\n <div class=\"h-100\" [style.width.px]=\"ganttRoot['view']?.width\"></div>\n </div>\n</div>\n","import { Injectable, ElementRef } from '@angular/core';\n\n@Injectable()\nexport class GanttPrintService {\n private root: HTMLElement;\n\n private mainContainer: HTMLElement;\n\n constructor() {}\n\n private setInlineStyles(targetElem: Element) {\n const svgElements = Array.from(targetElem.getElementsByTagName('svg'));\n for (const svgElement of svgElements) {\n this.recursElementChildren(svgElement);\n }\n }\n\n private recursElementChildren(node: SVGSVGElement | HTMLElement) {\n const transformProperties = [\n 'fill',\n 'color',\n 'font-size',\n 'stroke',\n 'font',\n 'text-anchor',\n 'stroke-dasharray',\n 'shape-rendering',\n 'stroke-width'\n ];\n if (!node.style) {\n return;\n }\n const styles = getComputedStyle(node);\n for (const transformProperty of transformProperties) {\n node.style[transformProperty] = styles[transformProperty];\n }\n for (const child of Array.from(node.childNodes)) {\n this.recursElementChildren(child as SVGSVGElement);\n }\n }\n\n register(root: ElementRef<HTMLElement>) {\n this.root = root.nativeElement;\n this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0] as HTMLElement;\n }\n\n async print(name: string = 'download', ignoreElementClass?: string) {\n const root = this.root as HTMLElement;\n\n const mainContainer = this.mainContainer as HTMLElement;\n // set print width\n const printWidth = root.offsetWidth;\n\n // set print height\n const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;\n\n const html2canvas = (await import(/* webpackChunkName: 'html2canvas' */ 'html2canvas')).default;\n\n html2canvas(root, {\n logging: false,\n allowTaint: true,\n useCORS: true,\n width: printWidth,\n height: printHeight,\n ignoreElements: (element) => {\n if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {\n return true;\n }\n if (element.classList.contains('gantt-calendar-today-overlay')) {\n return true;\n }\n },\n\n onclone: (cloneDocument: Document) => {\n const ganttClass = root.className;\n const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\\s+/g, '.')}`) as HTMLElement;\n const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container') as HTMLElement;\n const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-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 { 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 imports: [\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 && !this.ganttUpper.quickTimeFocus) {\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 | Date | GanttDate) {\n let x: number;\n if (typeof date === 'number' || date instanceof Date) {\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","@if (sideTemplate) {\n <div class=\"gantt-side\" [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}\n@if (mainTemplate) {\n <div class=\"gantt-container\">\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}\n<ng-content></ng-content>\n@if (ganttUpper.showToolbar || ganttUpper.toolbarTemplate) {\n <gantt-toolbar [template]=\"ganttUpper.toolbarTemplate\"> </gantt-toolbar>\n}\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 GanttTableDragDroppedEvent,\n GanttTableDragEndedEvent,\n GanttTableDragEnterPredicateContext,\n GanttTableDragStartedEvent,\n GanttTableEvent,\n GanttTableItemClickEvent\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() maxWidth: number;\n\n @Input() width: number;\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 @Output() resizeChange = new EventEmitter<number>();\n\n @Output() itemClick = new EventEmitter<GanttTableItemClickEvent>();\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 @ContentChild('settingsSlot', { static: true }) settingsSlot: TemplateRef<any>;\n}\n","import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, ViewportRuler } from '@angular/cdk/scrolling';\nimport { NgClass, 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 GanttViewType,\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 { GanttScrollbarComponent } from './components/scrollbar/scrollbar.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\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 imports: [\n NgxGanttRootComponent,\n GanttTableHeaderComponent,\n GanttCalendarHeaderComponent,\n GanttLoaderComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n NgClass,\n CdkVirtualForOf,\n GanttTableBodyComponent,\n GanttCalendarGridComponent,\n GanttMainComponent,\n GanttDragBackdropComponent,\n GanttScrollbarComponent,\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 @ViewChild('ganttTableBody', { static: true }) ganttTableBody: ElementRef<HTMLDivElement>;\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 this.table.itemClick.emit({\n event: selectEvent.event,\n current: selectEvent.current\n });\n\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 | Date | 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 changeView(type: GanttViewType) {\n super.changeView(type);\n this.viewportItems = this.flatItems.slice(this.rangeStart, this.rangeEnd);\n this.computeTempDataRefs();\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 @if (loading) {\n <gantt-loader></gantt-loader>\n }\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 #ganttTableBody\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 [ganttRoot]=\"ganttRoot\"\n [flatItems]=\"flatItems\"\n [viewportItems]=\"viewportItems\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n [baselineTemplate]=\"baselineTemplate\"\n [quickTimeFocus]=\"quickTimeFocus\"\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 <gantt-scrollbar\n [ganttRoot]=\"ganttRoot\"\n [hasFooter]=\"!!table?.tableFooterTemplate\"\n [tableWidth]=\"tableHeader.tableWidth\"\n ></gantt-scrollbar>\n\n @if (table?.tableFooterTemplate || footerTemplate) {\n <div\n class=\"gantt-footer\"\n cdkScrollable\n [style.right.px]=\"ganttRoot.verticalScrollbarWidth\"\n [style.bottom.px]=\"ganttRoot.horizontalScrollbarHeight\"\n >\n @if (table?.tableFooterTemplate) {\n <div class=\"gantt-table-footer\" [style.width.px]=\"tableHeader.tableWidth + 1\">\n <ng-template [ngTemplateOutlet]=\"table?.tableFooterTemplate\" [ngTemplateOutletContext]=\"{ columns: columns }\"> </ng-template>\n </div>\n }\n @if (footerTemplate) {\n <div class=\"gantt-container-footer\">\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"> </ng-template>\n </div>\n }\n </div>\n }\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 } 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, GanttConfigService, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { IsGanttBarItemPipe, IsGanttCustomItemPipe, IsGanttGroupPipe, IsGanttRangeItemPipe } from './gantt.pipe';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GanttScrollbarComponent } from './components/scrollbar/scrollbar.component';\nimport { i18nLocaleProvides } from './i18n';\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 GanttScrollbarComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe,\n IsGanttGroupPipe\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 GanttScrollbarComponent\n ],\n providers: [\n CdkVirtualScrollViewport,\n {\n provide: GANTT_GLOBAL_CONFIG,\n useValue: defaultConfig\n },\n ...i18nLocaleProvides\n ]\n})\nexport class NgxGanttModule {\n constructor() {\n const configService = inject(GanttConfigService);\n\n setDefaultOptions({\n locale: configService.getDateLocale(),\n weekStartsOn: configService.config?.dateOptions?.weekStartsOn\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 {\n GanttI18nLocaleConfig,\n GanttI18nLocale,\n GANTT_I18N_LOCALE_TOKEN,\n zhHansLocale,\n zhHantLocale,\n enUsLocale,\n jaJpLocale,\n deDeLocale,\n ruRuLocale\n} from './i18n';\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';\nexport * from './components/scrollbar/scrollbar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["viewOptions","zhHansLocale","zhHantLocale","i2.GanttDomService","i3.GanttDragContainer","i1.GanttDragContainer","take","takeUntil","i1.GanttDomService","startWith","auditTime","i3.GanttPrintService"],"mappings":"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"}