@ezraghzf/gantt-task-react 0.4.0
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.
- package/LICENSE +21 -0
- package/README.md +152 -0
- package/dist/components/calendar/calendar.d.ts +16 -0
- package/dist/components/calendar/top-part-of-calendar.d.ts +11 -0
- package/dist/components/gantt/gantt.d.ts +3 -0
- package/dist/components/gantt/task-gantt-content.d.ts +25 -0
- package/dist/components/gantt/task-gantt.d.ts +13 -0
- package/dist/components/grid/grid-body.d.ts +12 -0
- package/dist/components/grid/grid.d.ts +4 -0
- package/dist/components/other/arrow.d.ts +12 -0
- package/dist/components/other/horizontal-scroll.d.ts +8 -0
- package/dist/components/other/tooltip.d.ts +29 -0
- package/dist/components/other/vertical-scroll.d.ts +9 -0
- package/dist/components/task-item/bar/bar-date-handle.d.ts +11 -0
- package/dist/components/task-item/bar/bar-display.d.ts +20 -0
- package/dist/components/task-item/bar/bar-progress-handle.d.ts +7 -0
- package/dist/components/task-item/bar/bar-small.d.ts +3 -0
- package/dist/components/task-item/bar/bar.d.ts +3 -0
- package/dist/components/task-item/milestone/milestone.d.ts +3 -0
- package/dist/components/task-item/project/project.d.ts +3 -0
- package/dist/components/task-item/task-item.d.ts +15 -0
- package/dist/components/task-list/task-list-header.d.ts +7 -0
- package/dist/components/task-list/task-list-table.d.ts +13 -0
- package/dist/components/task-list/task-list.d.ts +37 -0
- package/dist/helpers/bar-helper.d.ts +14 -0
- package/dist/helpers/date-helper.d.ts +21 -0
- package/dist/helpers/other-helper.d.ts +8 -0
- package/dist/index.css +312 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2885 -0
- package/dist/index.js.map +1 -0
- package/dist/index.modern.js +2884 -0
- package/dist/index.modern.js.map +1 -0
- package/dist/setupTests.d.ts +1 -0
- package/dist/test/date-helper.test.d.ts +1 -0
- package/dist/test/gant.test.d.ts +1 -0
- package/dist/types/bar-task.d.ts +24 -0
- package/dist/types/date-setup.d.ts +5 -0
- package/dist/types/gantt-task-actions.d.ts +8 -0
- package/dist/types/public-types.d.ts +147 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types/public-types.ts","../src/helpers/date-helper.ts","../src/components/task-list/task-list-header.tsx","../src/components/task-list/task-list-table.tsx","../src/components/other/tooltip.tsx","../src/components/other/vertical-scroll.tsx","../src/components/task-list/task-list.tsx","../src/components/grid/grid-body.tsx","../src/components/grid/grid.tsx","../src/components/calendar/top-part-of-calendar.tsx","../src/components/calendar/calendar.tsx","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/components/other/arrow.tsx","../src/helpers/bar-helper.ts","../src/helpers/other-helper.ts","../src/components/task-item/bar/bar-display.tsx","../src/components/task-item/bar/bar-date-handle.tsx","../src/components/task-item/bar/bar-progress-handle.tsx","../src/components/task-item/bar/bar.tsx","../src/components/task-item/bar/bar-small.tsx","../src/components/task-item/milestone/milestone.tsx","../src/components/task-item/project/project.tsx","../src/components/task-item/task-item.tsx","../src/components/gantt/task-gantt-content.tsx","../src/components/gantt/task-gantt.tsx","../src/components/other/horizontal-scroll.tsx","../src/components/gantt/gantt.tsx"],"sourcesContent":["export enum ViewMode {\n Hour = \"Hour\",\n QuarterDay = \"Quarter Day\",\n HalfDay = \"Half Day\",\n Day = \"Day\",\n /** ISO-8601 week */\n Week = \"Week\",\n Month = \"Month\",\n WeeklyMonth = \"WeeklyMonth\",\n QuarterYear = \"QuarterYear\",\n Year = \"Year\",\n}\nexport type TaskType = \"task\" | \"milestone\" | \"project\";\nexport interface Task {\n id: string;\n type: TaskType;\n name: string;\n start: Date;\n end: Date;\n /**\n * Optional baseline start date\n */\n baselineStart?: Date;\n /**\n * Optional baseline end date\n */\n baselineEnd?: Date;\n /**\n * From 0 to 100\n */\n progress: number;\n styles?: {\n backgroundColor?: string;\n backgroundSelectedColor?: string;\n progressColor?: string;\n progressSelectedColor?: string;\n };\n isDisabled?: boolean;\n project?: string;\n dependencies?: string[];\n hideChildren?: boolean;\n displayOrder?: number;\n}\n\nexport interface EventOption {\n /**\n * Time step value for date changes.\n */\n timeStep?: number;\n /**\n * Invokes on bar select on unselect.\n */\n onSelect?: (task: Task, isSelected: boolean) => void;\n /**\n * Invokes on bar double click.\n */\n onDoubleClick?: (task: Task) => void;\n /**\n * Invokes on bar click.\n */\n onClick?: (task: Task) => void;\n /**\n * Invokes on end and start time change. Chart undoes operation if method return false or error.\n */\n onDateChange?: (\n task: Task,\n children: Task[]\n ) => void | boolean | Promise<void> | Promise<boolean>;\n /**\n * Invokes on progress change. Chart undoes operation if method return false or error.\n */\n onProgressChange?: (\n task: Task,\n children: Task[]\n ) => void | boolean | Promise<void> | Promise<boolean>;\n /**\n * Invokes on delete selected task. Chart undoes operation if method return false or error.\n */\n onDelete?: (task: Task) => void | boolean | Promise<void> | Promise<boolean>;\n /**\n * Invokes on expander on task list\n */\n onExpanderClick?: (task: Task) => void;\n}\n\nexport interface DisplayOption {\n viewMode?: ViewMode;\n viewDate?: Date;\n preStepsCount?: number;\n /**\n * Specifies the month name language. Able formats: ISO 639-2, Java Locale\n */\n locale?: string;\n rtl?: boolean;\n}\n\nexport interface StylingOption {\n headerHeight?: number;\n headerBordered?:boolean;\n columnWidth?: number;\n listCellWidth?: string;\n rowHeight?: number;\n ganttHeight?: number;\n barCornerRadius?: number;\n handleWidth?: number;\n fontFamily?: string;\n fontSize?: string;\n /**\n * How many of row width can be taken by task.\n * From 0 to 100\n */\n barFill?: number;\n barProgressColor?: string;\n barProgressSelectedColor?: string;\n barBackgroundColor?: string;\n barBackgroundSelectedColor?: string;\n baselineBackgroundColor?: string;\n projectProgressColor?: string;\n projectProgressSelectedColor?: string;\n projectBackgroundColor?: string;\n projectBackgroundSelectedColor?: string;\n milestoneBackgroundColor?: string;\n milestoneBackgroundSelectedColor?: string;\n arrowColor?: string;\n arrowIndent?: number;\n todayColor?: string;\n TooltipContent?: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n }>;\n TaskListHeader?: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n }>;\n TaskListTable?: React.FC<{\n rowHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n locale: string;\n tasks: Task[];\n selectedTaskId: string;\n /**\n * Sets selected task by id\n */\n setSelectedTask: (taskId: string) => void;\n onExpanderClick: (task: Task) => void;\n }>;\n}\n\nexport interface GanttProps extends EventOption, DisplayOption, StylingOption {\n tasks: Task[];\n}\n","import { Task, ViewMode } from \"../types/public-types\";\nimport DateTimeFormatOptions = Intl.DateTimeFormatOptions;\nimport DateTimeFormat = Intl.DateTimeFormat;\n\ntype DateHelperScales =\n | \"year\"\n | \"month\"\n | \"day\"\n | \"hour\"\n | \"minute\"\n | \"second\"\n | \"millisecond\";\n\nconst intlDTCache = {};\nexport const getCachedDateTimeFormat = (\n locString: string | string[],\n opts: DateTimeFormatOptions = {}\n): DateTimeFormat => {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n};\n\nexport const addToDate = (\n date: Date,\n quantity: number,\n scale: DateHelperScales\n) => {\n const newDate = new Date(\n date.getFullYear() + (scale === \"year\" ? quantity : 0),\n date.getMonth() + (scale === \"month\" ? quantity : 0),\n date.getDate() + (scale === \"day\" ? quantity : 0),\n date.getHours() + (scale === \"hour\" ? quantity : 0),\n date.getMinutes() + (scale === \"minute\" ? quantity : 0),\n date.getSeconds() + (scale === \"second\" ? quantity : 0),\n date.getMilliseconds() + (scale === \"millisecond\" ? quantity : 0)\n );\n return newDate;\n};\n\nexport const startOfDate = (date: Date, scale: DateHelperScales) => {\n const scores = [\n \"millisecond\",\n \"second\",\n \"minute\",\n \"hour\",\n \"day\",\n \"month\",\n \"year\",\n ];\n\n const shouldReset = (_scale: DateHelperScales) => {\n const maxScore = scores.indexOf(scale);\n return scores.indexOf(_scale) <= maxScore;\n };\n const newDate = new Date(\n date.getFullYear(),\n shouldReset(\"year\") ? 0 : date.getMonth(),\n shouldReset(\"month\") ? 1 : date.getDate(),\n shouldReset(\"day\") ? 0 : date.getHours(),\n shouldReset(\"hour\") ? 0 : date.getMinutes(),\n shouldReset(\"minute\") ? 0 : date.getSeconds(),\n shouldReset(\"second\") ? 0 : date.getMilliseconds()\n );\n return newDate;\n};\n\nexport const ganttDateRange = (\n tasks: Task[],\n viewMode: ViewMode,\n preStepsCount: number\n) => {\n let newStartDate: Date = tasks[0].start;\n let newEndDate: Date = tasks[0].start;\n for (const task of tasks) {\n if (task.start < newStartDate) {\n newStartDate = task.start;\n }\n if (task.end > newEndDate) {\n newEndDate = task.end;\n }\n }\n switch (viewMode) {\n case ViewMode.Year:\n newStartDate = addToDate(newStartDate, -1, \"year\");\n newStartDate = startOfDate(newStartDate, \"year\");\n newEndDate = addToDate(newEndDate, 1, \"year\");\n newEndDate = startOfDate(newEndDate, \"year\");\n break;\n case ViewMode.QuarterYear:\n newStartDate = addToDate(newStartDate, -3, \"month\");\n newStartDate = startOfDate(newStartDate, \"month\");\n newEndDate = addToDate(newEndDate, 3, \"year\");\n newEndDate = startOfDate(newEndDate, \"year\");\n break;\n case ViewMode.Month:\n newStartDate = addToDate(newStartDate, -1 * preStepsCount, \"month\");\n newStartDate = startOfDate(newStartDate, \"month\");\n newEndDate = addToDate(newEndDate, 1, \"year\");\n newEndDate = startOfDate(newEndDate, \"year\");\n break;\n case ViewMode.Week:\n case ViewMode.WeeklyMonth:\n newStartDate = startOfDate(newStartDate, \"day\");\n newStartDate = addToDate(\n getMonday(newStartDate),\n -7 * preStepsCount,\n \"day\"\n );\n newEndDate = startOfDate(newEndDate, \"day\");\n newEndDate = addToDate(newEndDate, 1.5, \"month\");\n break;\n case ViewMode.Day:\n newStartDate = startOfDate(newStartDate, \"day\");\n newStartDate = addToDate(newStartDate, -1 * preStepsCount, \"day\");\n newEndDate = startOfDate(newEndDate, \"day\");\n newEndDate = addToDate(newEndDate, 19, \"day\");\n break;\n case ViewMode.QuarterDay:\n newStartDate = startOfDate(newStartDate, \"day\");\n newStartDate = addToDate(newStartDate, -1 * preStepsCount, \"day\");\n newEndDate = startOfDate(newEndDate, \"day\");\n newEndDate = addToDate(newEndDate, 66, \"hour\"); // 24(1 day)*3 - 6\n break;\n case ViewMode.HalfDay:\n newStartDate = startOfDate(newStartDate, \"day\");\n newStartDate = addToDate(newStartDate, -1 * preStepsCount, \"day\");\n newEndDate = startOfDate(newEndDate, \"day\");\n newEndDate = addToDate(newEndDate, 108, \"hour\"); // 24(1 day)*5 - 12\n break;\n case ViewMode.Hour:\n newStartDate = startOfDate(newStartDate, \"hour\");\n newStartDate = addToDate(newStartDate, -1 * preStepsCount, \"hour\");\n newEndDate = startOfDate(newEndDate, \"day\");\n newEndDate = addToDate(newEndDate, 1, \"day\");\n break;\n }\n return [newStartDate, newEndDate];\n};\n\nexport const seedDates = (\n startDate: Date,\n endDate: Date,\n viewMode: ViewMode\n) => {\n let currentDate: Date = new Date(startDate);\n const dates: Date[] = [currentDate];\n while (currentDate < endDate) {\n switch (viewMode) {\n case ViewMode.Year:\n currentDate = addToDate(currentDate, 1, \"year\");\n break;\n case ViewMode.QuarterYear:\n currentDate = addToDate(currentDate, 3, \"month\");\n break;\n case ViewMode.Month:\n currentDate = addToDate(currentDate, 1, \"month\");\n break;\n case ViewMode.Week:\n case ViewMode.WeeklyMonth:\n currentDate = addToDate(currentDate, 7, \"day\");\n break;\n case ViewMode.Day:\n currentDate = addToDate(currentDate, 1, \"day\");\n break;\n case ViewMode.HalfDay:\n currentDate = addToDate(currentDate, 12, \"hour\");\n break;\n case ViewMode.QuarterDay:\n currentDate = addToDate(currentDate, 6, \"hour\");\n break;\n case ViewMode.Hour:\n currentDate = addToDate(currentDate, 1, \"hour\");\n break;\n }\n dates.push(currentDate);\n }\n return dates;\n};\n\nexport const getLocaleMonth = (date: Date, locale: string) => {\n let bottomValue = getCachedDateTimeFormat(locale, {\n month: \"long\",\n }).format(date);\n bottomValue = bottomValue.replace(\n bottomValue[0],\n bottomValue[0].toLocaleUpperCase()\n );\n return bottomValue;\n};\n\nexport const getLocalDayOfWeek = (\n date: Date,\n locale: string,\n format?: \"long\" | \"short\" | \"narrow\" | undefined\n) => {\n let bottomValue = getCachedDateTimeFormat(locale, {\n weekday: format,\n }).format(date);\n bottomValue = bottomValue.replace(\n bottomValue[0],\n bottomValue[0].toLocaleUpperCase()\n );\n return bottomValue;\n};\n\n/**\n * Returns monday of current week\n * @param date date for modify\n */\nexport const getMonday = (date: Date) => {\n const day = date.getDay();\n const diff = date.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is sunday\n return new Date(date.setDate(diff));\n};\n\nexport const getWeekNumberFromDate = (date: Date, startDate: Date) => {\n const start = getMonday(new Date(startDate));\n const current = getMonday(new Date(date));\n const diffTime = current.getTime() - start.getTime();\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n return Math.floor(diffDays / 7) + 1;\n};\n\nexport const getWeekNumberISO8601 = (date: Date) => {\n const tmpDate = new Date(date.valueOf());\n const dayNumber = (tmpDate.getDay() + 6) % 7;\n tmpDate.setDate(tmpDate.getDate() - dayNumber + 3);\n const firstThursday = tmpDate.valueOf();\n tmpDate.setMonth(0, 1);\n if (tmpDate.getDay() !== 4) {\n tmpDate.setMonth(0, 1 + ((4 - tmpDate.getDay() + 7) % 7));\n }\n const weekNumber = (\n 1 + Math.ceil((firstThursday - tmpDate.valueOf()) / 604800000)\n ).toString();\n\n if (weekNumber.length === 1) {\n return `0${weekNumber}`;\n } else {\n return weekNumber;\n }\n};\n\nexport const getDaysInMonth = (month: number, year: number) => {\n return new Date(year, month + 1, 0).getDate();\n};\n\nexport const getWeekNumberInMonth = (date: Date) => {\n return Math.ceil((date.getDate() + 6 - date.getDay()) / 7);\n};\n","import React from \"react\";\nimport styles from \"./task-list-header.module.css\";\n\nexport const TaskListHeaderDefault: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n}> = ({ headerHeight, fontFamily, fontSize, rowWidth }) => {\n return (\n <div\n className={styles.ganttTable}\n style={{\n fontFamily: fontFamily,\n fontSize: fontSize,\n }}\n >\n <div\n className={styles.ganttTable_Header}\n style={{\n height: headerHeight - 2,\n }}\n >\n <div\n className={styles.ganttTable_HeaderItem}\n style={{\n minWidth: rowWidth,\n }}\n >\n Name\n </div>\n <div\n className={styles.ganttTable_HeaderSeparator}\n style={{\n height: headerHeight * 0.8,\n marginTop: headerHeight * 0.1,\n }}\n />\n <div\n className={styles.ganttTable_HeaderItem}\n style={{\n minWidth: rowWidth,\n }}\n >\n From\n </div>\n <div\n className={styles.ganttTable_HeaderSeparator}\n style={{\n height: headerHeight * 0.8,\n marginTop: headerHeight * 0.1,\n }}\n />\n <div\n className={styles.ganttTable_HeaderItem}\n style={{\n minWidth: rowWidth,\n }}\n >\n To\n </div>\n </div>\n </div>\n );\n};\n","import React, { useMemo } from \"react\";\nimport styles from \"./task-list-table.module.css\";\nimport { Task } from \"../../types/public-types\";\n\nconst localeDateStringCache = {};\nconst toLocaleDateStringFactory =\n (locale: string) =>\n (date: Date, dateTimeOptions: Intl.DateTimeFormatOptions) => {\n const key = date.toString();\n let lds = localeDateStringCache[key];\n if (!lds) {\n lds = date.toLocaleDateString(locale, dateTimeOptions);\n localeDateStringCache[key] = lds;\n }\n return lds;\n };\nconst dateTimeOptions: Intl.DateTimeFormatOptions = {\n weekday: \"short\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n};\n\nexport const TaskListTableDefault: React.FC<{\n rowHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n locale: string;\n tasks: Task[];\n selectedTaskId: string;\n setSelectedTask: (taskId: string) => void;\n onExpanderClick: (task: Task) => void;\n}> = ({\n rowHeight,\n rowWidth,\n tasks,\n fontFamily,\n fontSize,\n locale,\n onExpanderClick,\n}) => {\n const toLocaleDateString = useMemo(\n () => toLocaleDateStringFactory(locale),\n [locale]\n );\n\n return (\n <div\n className={styles.taskListWrapper}\n style={{\n fontFamily: fontFamily,\n fontSize: fontSize,\n }}\n >\n {tasks.map(t => {\n let expanderSymbol = \"\";\n if (t.hideChildren === false) {\n expanderSymbol = \"▼\";\n } else if (t.hideChildren === true) {\n expanderSymbol = \"▶\";\n }\n\n return (\n <div\n className={styles.taskListTableRow}\n style={{ height: rowHeight }}\n key={`${t.id}row`}\n >\n <div\n className={styles.taskListCell}\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n title={t.name}\n >\n <div className={styles.taskListNameWrapper}>\n <div\n className={\n expanderSymbol\n ? styles.taskListExpander\n : styles.taskListEmptyExpander\n }\n onClick={() => onExpanderClick(t)}\n >\n {expanderSymbol}\n </div>\n <div>{t.name}</div>\n </div>\n </div>\n <div\n className={styles.taskListCell}\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n >\n {toLocaleDateString(t.start, dateTimeOptions)}\n </div>\n <div\n className={styles.taskListCell}\n style={{\n minWidth: rowWidth,\n maxWidth: rowWidth,\n }}\n >\n {toLocaleDateString(t.end, dateTimeOptions)}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { Task } from \"../../types/public-types\";\nimport { BarTask } from \"../../types/bar-task\";\nimport styles from \"./tooltip.module.css\";\n\nexport type TooltipProps = {\n task: BarTask;\n arrowIndent: number;\n rtl: boolean;\n svgContainerHeight: number;\n svgContainerWidth: number;\n svgWidth: number;\n headerHeight: number;\n taskListWidth: number;\n scrollX: number;\n scrollY: number;\n rowHeight: number;\n fontSize: string;\n fontFamily: string;\n TooltipContent: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n }>;\n};\nexport const Tooltip: React.FC<TooltipProps> = ({\n task,\n rowHeight,\n rtl,\n svgContainerHeight,\n svgContainerWidth,\n scrollX,\n scrollY,\n arrowIndent,\n fontSize,\n fontFamily,\n headerHeight,\n taskListWidth,\n TooltipContent,\n}) => {\n const tooltipRef = useRef<HTMLDivElement | null>(null);\n const [relatedY, setRelatedY] = useState(0);\n const [relatedX, setRelatedX] = useState(0);\n useEffect(() => {\n if (tooltipRef.current) {\n const tooltipHeight = tooltipRef.current.offsetHeight * 1.1;\n const tooltipWidth = tooltipRef.current.offsetWidth * 1.1;\n\n let newRelatedY = task.index * rowHeight - scrollY + headerHeight;\n let newRelatedX: number;\n if (rtl) {\n newRelatedX = task.x1 - arrowIndent * 1.5 - tooltipWidth - scrollX;\n if (newRelatedX < 0) {\n newRelatedX = task.x2 + arrowIndent * 1.5 - scrollX;\n }\n const tooltipLeftmostPoint = tooltipWidth + newRelatedX;\n if (tooltipLeftmostPoint > svgContainerWidth) {\n newRelatedX = svgContainerWidth - tooltipWidth;\n newRelatedY += rowHeight;\n }\n } else {\n newRelatedX = task.x2 + arrowIndent * 1.5 + taskListWidth - scrollX;\n const tooltipLeftmostPoint = tooltipWidth + newRelatedX;\n const fullChartWidth = taskListWidth + svgContainerWidth;\n if (tooltipLeftmostPoint > fullChartWidth) {\n newRelatedX =\n task.x1 +\n taskListWidth -\n arrowIndent * 1.5 -\n scrollX -\n tooltipWidth;\n }\n if (newRelatedX < taskListWidth) {\n newRelatedX = svgContainerWidth + taskListWidth - tooltipWidth;\n newRelatedY += rowHeight;\n }\n }\n\n const tooltipLowerPoint = tooltipHeight + newRelatedY - scrollY;\n if (tooltipLowerPoint > svgContainerHeight - scrollY) {\n newRelatedY = svgContainerHeight - tooltipHeight;\n }\n setRelatedY(newRelatedY);\n setRelatedX(newRelatedX);\n }\n }, [\n tooltipRef,\n task,\n arrowIndent,\n scrollX,\n scrollY,\n headerHeight,\n taskListWidth,\n rowHeight,\n svgContainerHeight,\n svgContainerWidth,\n rtl,\n ]);\n\n return (\n <div\n ref={tooltipRef}\n className={\n relatedX\n ? styles.tooltipDetailsContainer\n : styles.tooltipDetailsContainerHidden\n }\n style={{ left: relatedX, top: relatedY }}\n >\n <TooltipContent task={task} fontSize={fontSize} fontFamily={fontFamily} />\n </div>\n );\n};\n\nexport const StandardTooltipContent: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n}> = ({ task, fontSize, fontFamily }) => {\n const style = {\n fontSize,\n fontFamily,\n };\n return (\n <div className={styles.tooltipDefaultContainer} style={style}>\n <b style={{ fontSize: fontSize + 6 }}>{`${\n task.name\n }: ${task.start.getDate()}-${\n task.start.getMonth() + 1\n }-${task.start.getFullYear()} - ${task.end.getDate()}-${\n task.end.getMonth() + 1\n }-${task.end.getFullYear()}`}</b>\n {task.end.getTime() - task.start.getTime() !== 0 && (\n <p className={styles.tooltipDefaultContainerParagraph}>{`Duration: ${~~(\n (task.end.getTime() - task.start.getTime()) /\n (1000 * 60 * 60 * 24)\n )} day(s)`}</p>\n )}\n\n <p className={styles.tooltipDefaultContainerParagraph}>\n {!!task.progress && `Progress: ${task.progress} %`}\n </p>\n </div>\n );\n};\n","import React, { SyntheticEvent, useRef, useEffect } from \"react\";\nimport styles from \"./vertical-scroll.module.css\";\n\nexport const VerticalScroll: React.FC<{\n scroll: number;\n ganttHeight: number;\n ganttFullHeight: number;\n headerHeight: number;\n rtl: boolean;\n onScroll: (event: SyntheticEvent<HTMLDivElement>) => void;\n}> = ({\n scroll,\n ganttHeight,\n ganttFullHeight,\n headerHeight,\n rtl,\n onScroll,\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTop = scroll;\n }\n }, [scroll]);\n\n return (\n <div\n style={{\n height: ganttHeight,\n marginTop: headerHeight,\n marginLeft: rtl ? \"\" : \"-1rem\",\n }}\n className={styles.scroll}\n onScroll={onScroll}\n ref={scrollRef}\n >\n <div style={{ height: ganttFullHeight, width: 1 }} />\n </div>\n );\n};\n","import React, { useEffect, useRef } from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\nimport { Task } from \"../../types/public-types\";\n\nexport type TaskListProps = {\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n rowHeight: number;\n ganttHeight: number;\n scrollY: number;\n locale: string;\n tasks: Task[];\n taskListRef: React.RefObject<HTMLDivElement>;\n horizontalContainerClass?: string;\n selectedTask: BarTask | undefined;\n setSelectedTask: (task: string) => void;\n onExpanderClick: (task: Task) => void;\n TaskListHeader: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n }>;\n TaskListTable: React.FC<{\n rowHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n locale: string;\n tasks: Task[];\n selectedTaskId: string;\n setSelectedTask: (taskId: string) => void;\n onExpanderClick: (task: Task) => void;\n }>;\n};\n\nexport const TaskList: React.FC<TaskListProps> = ({\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n rowHeight,\n scrollY,\n tasks,\n selectedTask,\n setSelectedTask,\n onExpanderClick,\n locale,\n ganttHeight,\n taskListRef,\n horizontalContainerClass,\n TaskListHeader,\n TaskListTable,\n}) => {\n const horizontalContainerRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (horizontalContainerRef.current) {\n horizontalContainerRef.current.scrollTop = scrollY;\n }\n }, [scrollY]);\n\n const headerProps = {\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n };\n const selectedTaskId = selectedTask ? selectedTask.id : \"\";\n const tableProps = {\n rowHeight,\n rowWidth,\n fontFamily,\n fontSize,\n tasks,\n locale,\n selectedTaskId: selectedTaskId,\n setSelectedTask,\n onExpanderClick,\n };\n\n return (\n <div ref={taskListRef}>\n <TaskListHeader {...headerProps} />\n <div\n ref={horizontalContainerRef}\n className={horizontalContainerClass}\n style={ganttHeight ? { height: ganttHeight } : {}}\n >\n <TaskListTable {...tableProps} />\n </div>\n </div>\n );\n};\n","import React, { ReactChild } from \"react\";\nimport { Task } from \"../../types/public-types\";\nimport { addToDate } from \"../../helpers/date-helper\";\nimport styles from \"./grid.module.css\";\n\nexport type GridBodyProps = {\n tasks: Task[];\n dates: Date[];\n svgWidth: number;\n rowHeight: number;\n columnWidth: number;\n todayColor: string;\n rtl: boolean;\n};\nexport const GridBody: React.FC<GridBodyProps> = ({\n tasks,\n dates,\n rowHeight,\n svgWidth,\n columnWidth,\n todayColor,\n rtl,\n}) => {\n let y = 0;\n const gridRows: ReactChild[] = [];\n const rowLines: ReactChild[] = [\n <line\n key=\"RowLineFirst\"\n x=\"0\"\n y1={0}\n x2={svgWidth}\n y2={0}\n className={styles.gridRowLine}\n />,\n ];\n for (const task of tasks) {\n gridRows.push(\n <rect\n key={\"Row\" + task.id}\n x=\"0\"\n y={y}\n width={svgWidth}\n height={rowHeight}\n className={styles.gridRow}\n />\n );\n rowLines.push(\n <line\n key={\"RowLine\" + task.id}\n x=\"0\"\n y1={y + rowHeight}\n x2={svgWidth}\n y2={y + rowHeight}\n className={styles.gridRowLine}\n />\n );\n y += rowHeight;\n }\n\n const now = new Date();\n let tickX = 0;\n const ticks: ReactChild[] = [];\n let today: ReactChild = <rect />;\n for (let i = 0; i < dates.length; i++) {\n const date = dates[i];\n ticks.push(\n <line\n key={date.getTime()}\n x1={tickX}\n y1={0}\n x2={tickX}\n y2={y}\n className={styles.gridTick}\n />\n );\n if (\n (i + 1 !== dates.length &&\n date.getTime() < now.getTime() &&\n dates[i + 1].getTime() >= now.getTime()) ||\n // if current date is last\n (i !== 0 &&\n i + 1 === dates.length &&\n date.getTime() < now.getTime() &&\n addToDate(\n date,\n date.getTime() - dates[i - 1].getTime(),\n \"millisecond\"\n ).getTime() >= now.getTime())\n ) {\n today = (\n <rect\n x={tickX}\n y={0}\n width={columnWidth}\n height={y}\n fill={todayColor}\n />\n );\n }\n // rtl for today\n if (\n rtl &&\n i + 1 !== dates.length &&\n date.getTime() >= now.getTime() &&\n dates[i + 1].getTime() < now.getTime()\n ) {\n today = (\n <rect\n x={tickX + columnWidth}\n y={0}\n width={columnWidth}\n height={y}\n fill={todayColor}\n />\n );\n }\n tickX += columnWidth;\n }\n return (\n <g className=\"gridBody\">\n <g className=\"rows\">{gridRows}</g>\n <g className=\"rowLines\">{rowLines}</g>\n <g className=\"ticks\">{ticks}</g>\n <g className=\"today\">{today}</g>\n </g>\n );\n};\n","import React from \"react\";\nimport { GridBody, GridBodyProps } from \"./grid-body\";\n\nexport type GridProps = GridBodyProps;\nexport const Grid: React.FC<GridProps> = props => {\n return (\n <g className=\"grid\">\n <GridBody {...props} />\n </g>\n );\n};\n","import React from \"react\";\nimport styles from \"./calendar.module.css\";\n\ntype TopPartOfCalendarProps = {\n value: string;\n x1Line: number;\n y1Line: number;\n y2Line: number;\n xText: number;\n yText: number;\n};\n\nexport const TopPartOfCalendar: React.FC<TopPartOfCalendarProps> = ({\n value,\n x1Line,\n y1Line,\n y2Line,\n xText,\n yText,\n}) => {\n return (\n <g className=\"calendarTop\">\n <line\n x1={x1Line}\n y1={y1Line}\n x2={x1Line}\n y2={y2Line}\n className={styles.calendarTopTick}\n key={value + \"line\"}\n />\n <text\n key={value + \"text\"}\n y={yText}\n x={xText}\n className={styles.calendarTopText}\n >\n {value}\n </text>\n </g>\n );\n};\n","import React, { ReactChild } from \"react\";\nimport { ViewMode } from \"../../types/public-types\";\nimport { TopPartOfCalendar } from \"./top-part-of-calendar\";\nimport {\n addToDate,\n getCachedDateTimeFormat,\n getDaysInMonth,\n getLocalDayOfWeek,\n getLocaleMonth,\n getWeekNumberISO8601,\n getWeekNumberInMonth,\n getWeekNumberFromDate,\n} from \"../../helpers/date-helper\";\nimport { DateSetup } from \"../../types/date-setup\";\nimport styles from \"./calendar.module.css\";\n\nexport type CalendarProps = {\n dateSetup: DateSetup;\n locale: string;\n viewMode: ViewMode;\n rtl: boolean;\n headerHeight: number;\n columnWidth: number;\n fontFamily: string;\n fontSize: string;\n headerBordered?: boolean;\n startDate?: Date;\n};\n\nexport const Calendar: React.FC<CalendarProps> = ({\n dateSetup,\n locale,\n viewMode,\n rtl,\n headerHeight,\n columnWidth,\n fontFamily,\n fontSize,\n startDate,\n // headerBordered\n}) => {\n const getCalendarValuesForYear = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n const topDefaultHeight = headerHeight * 0.5;\n for (let i = 0; i < dateSetup.dates.length; i++) {\n const date = dateSetup.dates[i];\n const bottomValue = date.getFullYear();\n bottomValues.push(\n <text\n key={date.getTime()}\n y={headerHeight * 0.8}\n x={columnWidth * i + columnWidth * 0.5}\n className={styles.calendarBottomText}\n >\n {bottomValue}\n </text>\n );\n if (\n i === 0 ||\n date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()\n ) {\n const topValue = date.getFullYear().toString();\n let xText: number;\n if (rtl) {\n xText = (6 + i + date.getFullYear() + 1) * columnWidth;\n } else {\n xText = (6 + i - date.getFullYear()) * columnWidth;\n }\n topValues.push(\n <TopPartOfCalendar\n key={topValue}\n value={topValue}\n x1Line={columnWidth * i}\n y1Line={0}\n y2Line={headerHeight}\n xText={xText}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n }\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForQuarterYear = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n const topDefaultHeight = headerHeight * 0.5;\n for (let i = 0; i < dateSetup.dates.length; i++) {\n const date = dateSetup.dates[i];\n // const bottomValue = getLocaleMonth(date, locale);\n const quarter = \"Q\" + Math.floor((date.getMonth() + 3) / 3);\n bottomValues.push(\n <text\n key={date.getTime()}\n y={headerHeight * 0.8}\n x={columnWidth * i + columnWidth * 0.5}\n className={styles.calendarBottomText}\n >\n {quarter}\n </text>\n );\n if (\n i === 0 ||\n date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()\n ) {\n const topValue = date.getFullYear().toString();\n let xText: number;\n if (rtl) {\n xText = (6 + i + date.getMonth() + 1) * columnWidth;\n } else {\n xText = (6 + i - date.getMonth()) * columnWidth;\n }\n topValues.push(\n <TopPartOfCalendar\n key={topValue}\n value={topValue}\n x1Line={columnWidth * i}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={Math.abs(xText)}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n }\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForMonth = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n const topDefaultHeight = headerHeight * 0.5;\n for (let i = 0; i < dateSetup.dates.length; i++) {\n const date = dateSetup.dates[i];\n const bottomValue = getLocaleMonth(date, locale);\n bottomValues.push(\n <text\n key={bottomValue + date.getFullYear()}\n y={headerHeight * 0.8}\n x={columnWidth * i + columnWidth * 0.5}\n className={styles.calendarBottomText}\n >\n {bottomValue}\n </text>\n );\n if (\n i === 0 ||\n date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()\n ) {\n const topValue = date.getFullYear().toString();\n let xText: number;\n if (rtl) {\n xText = (6 + i + date.getMonth() + 1) * columnWidth;\n } else {\n xText = (6 + i - date.getMonth()) * columnWidth;\n }\n topValues.push(\n <TopPartOfCalendar\n key={topValue}\n value={topValue}\n x1Line={columnWidth * i}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={xText}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n }\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForWeek = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n let weeksCount: number = 1;\n const topDefaultHeight = headerHeight * 0.5;\n const dates = dateSetup.dates;\n for (let i = dates.length - 1; i >= 0; i--) {\n const date = dates[i];\n let topValue = \"\";\n if (i === 0 || date.getMonth() !== dates[i - 1].getMonth()) {\n // top\n topValue = `${getLocaleMonth(date, locale)}, ${date.getFullYear()}`;\n }\n // bottom\n const bottomValue = `W${getWeekNumberISO8601(date)}`;\n\n bottomValues.push(\n <text\n key={date.getTime()}\n y={headerHeight * 0.8}\n x={columnWidth * (i + +rtl)}\n className={styles.calendarBottomText}\n >\n {bottomValue}\n </text>\n );\n\n if (topValue) {\n // if last day is new month\n if (i !== dates.length - 1) {\n topValues.push(\n <TopPartOfCalendar\n key={topValue}\n value={topValue}\n x1Line={columnWidth * i + weeksCount * columnWidth}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={columnWidth * i + columnWidth * weeksCount * 0.5}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n weeksCount = 0;\n }\n weeksCount++;\n }\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForWeeklyMonth = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n let weeksCount: number = 0;\n const topDefaultHeight = headerHeight * 0.5;\n const dates = dateSetup.dates;\n for (let i = 0; i < dates.length; i++) {\n const date = dates[i];\n // bottom\n const nextDate = dates[i + 1] || addToDate(date, 7, \"day\");\n const endDayDate = new Date(nextDate);\n endDayDate.setDate(nextDate.getDate() - 1);\n const weekNumber = startDate \n ? getWeekNumberFromDate(date, startDate) \n : getWeekNumberInMonth(date);\n \n bottomValues.push(\n <g key={date.getTime()}>\n <line\n x1={columnWidth * i}\n y1={headerHeight * 0.5}\n x2={columnWidth * i}\n y2={headerHeight}\n className={styles.calendarTopTick}\n />\n <text\n y={headerHeight * 0.7}\n x={columnWidth * i + columnWidth * 0.5}\n className={styles.calendarBottomText}\n >\n {`W${weekNumber}`}\n </text>\n <text\n y={headerHeight * 0.9}\n x={columnWidth * i + columnWidth * 0.5}\n className={styles.calendarBottomText}\n >\n {`${date.getDate()}-${endDayDate.getDate()}`}\n </text>\n </g>\n );\n\n if (i !== 0 && date.getMonth() !== dates[i - 1].getMonth()) {\n const displayDate = dates[i - 1];\n const topValue = `${getLocaleMonth(displayDate, locale)}, ${displayDate.getFullYear()}`;\n topValues.push(\n <TopPartOfCalendar\n key={topValue}\n value={topValue}\n x1Line={columnWidth * i}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={columnWidth * (i - weeksCount * 0.5)}\n yText={topDefaultHeight * 0.7}\n />\n );\n weeksCount = 0;\n }\n weeksCount++;\n }\n if (dates.length > 0) {\n const displayDate = dates[dates.length - 1];\n const topValue = `${getLocaleMonth(displayDate, locale)}, ${displayDate.getFullYear()}`;\n topValues.push(\n <TopPartOfCalendar\n key={topValue}\n value={topValue}\n x1Line={columnWidth * dates.length}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={columnWidth * (dates.length - weeksCount * 0.5)}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForDay = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n const topDefaultHeight = headerHeight * 0.5;\n const dates = dateSetup.dates;\n for (let i = 0; i < dates.length; i++) {\n const date = dates[i];\n const bottomValue = `${getLocalDayOfWeek(date, locale, \"short\")}, ${date\n .getDate()\n .toString()}`;\n\n bottomValues.push(\n <text\n key={date.getTime()}\n y={headerHeight * 0.8}\n x={columnWidth * i + columnWidth * 0.5}\n className={styles.calendarBottomText}\n >\n {bottomValue}\n </text>\n );\n if (\n i + 1 !== dates.length &&\n date.getMonth() !== dates[i + 1].getMonth()\n ) {\n const topValue = getLocaleMonth(date, locale);\n\n topValues.push(\n <TopPartOfCalendar\n key={topValue + date.getFullYear()}\n value={topValue}\n x1Line={columnWidth * (i + 1)}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={\n columnWidth * (i + 1) -\n getDaysInMonth(date.getMonth(), date.getFullYear()) *\n columnWidth *\n 0.5\n }\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n }\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForPartOfDay = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n const ticks = viewMode === ViewMode.HalfDay ? 2 : 4;\n const topDefaultHeight = headerHeight * 0.5;\n const dates = dateSetup.dates;\n for (let i = 0; i < dates.length; i++) {\n const date = dates[i];\n const bottomValue = getCachedDateTimeFormat(locale, {\n hour: \"numeric\",\n }).format(date);\n\n bottomValues.push(\n <text\n key={date.getTime()}\n y={headerHeight * 0.8}\n x={columnWidth * (i + +rtl)}\n className={styles.calendarBottomText}\n fontFamily={fontFamily}\n >\n {bottomValue}\n </text>\n );\n if (i === 0 || date.getDate() !== dates[i - 1].getDate()) {\n const topValue = `${getLocalDayOfWeek(\n date,\n locale,\n \"short\"\n )}, ${date.getDate()} ${getLocaleMonth(date, locale)}`;\n topValues.push(\n <TopPartOfCalendar\n key={topValue + date.getFullYear()}\n value={topValue}\n x1Line={columnWidth * i + ticks * columnWidth}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={columnWidth * i + ticks * columnWidth * 0.5}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n }\n\n return [topValues, bottomValues];\n };\n\n const getCalendarValuesForHour = () => {\n const topValues: ReactChild[] = [];\n const bottomValues: ReactChild[] = [];\n const topDefaultHeight = headerHeight * 0.5;\n const dates = dateSetup.dates;\n for (let i = 0; i < dates.length; i++) {\n const date = dates[i];\n const bottomValue = getCachedDateTimeFormat(locale, {\n hour: \"numeric\",\n }).format(date);\n\n bottomValues.push(\n <text\n key={date.getTime()}\n y={headerHeight * 0.8}\n x={columnWidth * (i + +rtl)}\n className={styles.calendarBottomText}\n fontFamily={fontFamily}\n >\n {bottomValue}\n </text>\n );\n if (i !== 0 && date.getDate() !== dates[i - 1].getDate()) {\n const displayDate = dates[i - 1];\n const topValue = `${getLocalDayOfWeek(\n displayDate,\n locale,\n \"long\"\n )}, ${displayDate.getDate()} ${getLocaleMonth(displayDate, locale)}`;\n const topPosition = (date.getHours() - 24) / 2;\n topValues.push(\n <TopPartOfCalendar\n key={topValue + displayDate.getFullYear()}\n value={topValue}\n x1Line={columnWidth * i}\n y1Line={0}\n y2Line={topDefaultHeight}\n xText={columnWidth * (i + topPosition)}\n yText={topDefaultHeight * 0.7}\n />\n );\n }\n }\n\n return [topValues, bottomValues];\n };\n\n let topValues: ReactChild[] = [];\n let bottomValues: ReactChild[] = [];\n switch (dateSetup.viewMode) {\n case ViewMode.Year:\n [topValues, bottomValues] = getCalendarValuesForYear();\n break;\n case ViewMode.QuarterYear:\n [topValues, bottomValues] = getCalendarValuesForQuarterYear();\n break;\n case ViewMode.Month:\n [topValues, bottomValues] = getCalendarValuesForMonth();\n break;\n case ViewMode.Week:\n [topValues, bottomValues] = getCalendarValuesForWeek();\n break;\n case ViewMode.WeeklyMonth:\n [topValues, bottomValues] = getCalendarValuesForWeeklyMonth();\n break;\n case ViewMode.Day:\n [topValues, bottomValues] = getCalendarValuesForDay();\n break;\n case ViewMode.QuarterDay:\n case ViewMode.HalfDay:\n [topValues, bottomValues] = getCalendarValuesForPartOfDay();\n break;\n case ViewMode.Hour:\n [topValues, bottomValues] = getCalendarValuesForHour();\n }\n return (\n <g className=\"calendar\" fontSize={fontSize} fontFamily={fontFamily}>\n <rect\n x={0}\n y={0}\n width={columnWidth * dateSetup.dates.length}\n height={headerHeight}\n className={styles.calendarHeader}\n />\n {bottomValues} {topValues}\n <line\n x1={0}\n y1={headerHeight * 0.5}\n x2={columnWidth * dateSetup.dates.length}\n y2={headerHeight * 0.5}\n className={styles.calendarTopTick}\n />\n \n </g>\n );\n};\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\n\ntype ArrowProps = {\n taskFrom: BarTask;\n taskTo: BarTask;\n rowHeight: number;\n taskHeight: number;\n arrowIndent: number;\n rtl: boolean;\n};\nexport const Arrow: React.FC<ArrowProps> = ({\n taskFrom,\n taskTo,\n rowHeight,\n taskHeight,\n arrowIndent,\n rtl,\n}) => {\n let path: string;\n let trianglePoints: string;\n if (rtl) {\n [path, trianglePoints] = drownPathAndTriangleRTL(\n taskFrom,\n taskTo,\n rowHeight,\n taskHeight,\n arrowIndent\n );\n } else {\n [path, trianglePoints] = drownPathAndTriangle(\n taskFrom,\n taskTo,\n rowHeight,\n taskHeight,\n arrowIndent\n );\n }\n\n return (\n <g className=\"arrow\">\n <path strokeWidth=\"1.5\" d={path} fill=\"none\" />\n <polygon points={trianglePoints} />\n </g>\n );\n};\n\nconst drownPathAndTriangle = (\n taskFrom: BarTask,\n taskTo: BarTask,\n rowHeight: number,\n taskHeight: number,\n arrowIndent: number\n) => {\n const indexCompare = taskFrom.index > taskTo.index ? -1 : 1;\n const taskToEndPosition = taskTo.y + taskHeight / 2;\n const taskFromEndPosition = taskFrom.x2 + arrowIndent * 2;\n const taskFromHorizontalOffsetValue =\n taskFromEndPosition < taskTo.x1 ? \"\" : `H ${taskTo.x1 - arrowIndent}`;\n const taskToHorizontalOffsetValue =\n taskFromEndPosition > taskTo.x1\n ? arrowIndent\n : taskTo.x1 - taskFrom.x2 - arrowIndent;\n\n const path = `M ${taskFrom.x2} ${taskFrom.y + taskHeight / 2} \n h ${arrowIndent} \n v ${(indexCompare * rowHeight) / 2} \n ${taskFromHorizontalOffsetValue}\n V ${taskToEndPosition} \n h ${taskToHorizontalOffsetValue}`;\n\n const trianglePoints = `${taskTo.x1},${taskToEndPosition} \n ${taskTo.x1 - 5},${taskToEndPosition - 5} \n ${taskTo.x1 - 5},${taskToEndPosition + 5}`;\n return [path, trianglePoints];\n};\n\nconst drownPathAndTriangleRTL = (\n taskFrom: BarTask,\n taskTo: BarTask,\n rowHeight: number,\n taskHeight: number,\n arrowIndent: number\n) => {\n const indexCompare = taskFrom.index > taskTo.index ? -1 : 1;\n const taskToEndPosition = taskTo.y + taskHeight / 2;\n const taskFromEndPosition = taskFrom.x1 - arrowIndent * 2;\n const taskFromHorizontalOffsetValue =\n taskFromEndPosition > taskTo.x2 ? \"\" : `H ${taskTo.x2 + arrowIndent}`;\n const taskToHorizontalOffsetValue =\n taskFromEndPosition < taskTo.x2\n ? -arrowIndent\n : taskTo.x2 - taskFrom.x1 + arrowIndent;\n\n const path = `M ${taskFrom.x1} ${taskFrom.y + taskHeight / 2} \n h ${-arrowIndent} \n v ${(indexCompare * rowHeight) / 2} \n ${taskFromHorizontalOffsetValue}\n V ${taskToEndPosition} \n h ${taskToHorizontalOffsetValue}`;\n\n const trianglePoints = `${taskTo.x2},${taskToEndPosition} \n ${taskTo.x2 + 5},${taskToEndPosition + 5} \n ${taskTo.x2 + 5},${taskToEndPosition - 5}`;\n return [path, trianglePoints];\n};\n","import { Task } from \"../types/public-types\";\nimport { BarTask, TaskTypeInternal } from \"../types/bar-task\";\nimport { BarMoveAction } from \"../types/gantt-task-actions\";\n\nexport const convertToBarTasks = (\n tasks: Task[],\n dates: Date[],\n columnWidth: number,\n rowHeight: number,\n taskHeight: number,\n barCornerRadius: number,\n handleWidth: number,\n rtl: boolean,\n barProgressColor: string,\n barProgressSelectedColor: string,\n barBackgroundColor: string,\n barBackgroundSelectedColor: string,\n projectProgressColor: string,\n projectProgressSelectedColor: string,\n projectBackgroundColor: string,\n projectBackgroundSelectedColor: string,\n milestoneBackgroundColor: string,\n milestoneBackgroundSelectedColor: string,\n baselineBackgroundColor: string\n) => {\n let barTasks = tasks.map((t, i) => {\n return convertToBarTask(\n t,\n i,\n dates,\n columnWidth,\n rowHeight,\n taskHeight,\n barCornerRadius,\n handleWidth,\n rtl,\n barProgressColor,\n barProgressSelectedColor,\n barBackgroundColor,\n barBackgroundSelectedColor,\n projectProgressColor,\n projectProgressSelectedColor,\n projectBackgroundColor,\n projectBackgroundSelectedColor,\n milestoneBackgroundColor,\n milestoneBackgroundSelectedColor,\n baselineBackgroundColor\n );\n });\n\n // set dependencies\n barTasks = barTasks.map(task => {\n const dependencies = task.dependencies || [];\n for (let j = 0; j < dependencies.length; j++) {\n const dependence = barTasks.findIndex(\n value => value.id === dependencies[j]\n );\n if (dependence !== -1) barTasks[dependence].barChildren.push(task);\n }\n return task;\n });\n\n return barTasks;\n};\n\nconst convertToBarTask = (\n task: Task,\n index: number,\n dates: Date[],\n columnWidth: number,\n rowHeight: number,\n taskHeight: number,\n barCornerRadius: number,\n handleWidth: number,\n rtl: boolean,\n barProgressColor: string,\n barProgressSelectedColor: string,\n barBackgroundColor: string,\n barBackgroundSelectedColor: string,\n projectProgressColor: string,\n projectProgressSelectedColor: string,\n projectBackgroundColor: string,\n projectBackgroundSelectedColor: string,\n milestoneBackgroundColor: string,\n milestoneBackgroundSelectedColor: string,\n baselineBackgroundColor: string\n): BarTask => {\n let barTask: BarTask;\n switch (task.type) {\n case \"milestone\":\n barTask = convertToMilestone(\n task,\n index,\n dates,\n columnWidth,\n rowHeight,\n taskHeight,\n barCornerRadius,\n handleWidth,\n milestoneBackgroundColor,\n milestoneBackgroundSelectedColor\n );\n break;\n case \"project\":\n barTask = convertToBar(\n task,\n index,\n dates,\n columnWidth,\n rowHeight,\n taskHeight,\n barCornerRadius,\n handleWidth,\n rtl,\n projectProgressColor,\n projectProgressSelectedColor,\n projectBackgroundColor,\n projectBackgroundSelectedColor,\n baselineBackgroundColor\n );\n break;\n default:\n barTask = convertToBar(\n task,\n index,\n dates,\n columnWidth,\n rowHeight,\n taskHeight,\n barCornerRadius,\n handleWidth,\n rtl,\n barProgressColor,\n barProgressSelectedColor,\n barBackgroundColor,\n barBackgroundSelectedColor,\n baselineBackgroundColor\n );\n break;\n }\n return barTask;\n};\n\nconst convertToBar = (\n task: Task,\n index: number,\n dates: Date[],\n columnWidth: number,\n rowHeight: number,\n taskHeight: number,\n barCornerRadius: number,\n handleWidth: number,\n rtl: boolean,\n barProgressColor: string,\n barProgressSelectedColor: string,\n barBackgroundColor: string,\n barBackgroundSelectedColor: string,\n baselineBackgroundColor: string\n): BarTask => {\n let x1: number;\n let x2: number;\n if (rtl) {\n x2 = taskXCoordinateRTL(task.start, dates, columnWidth);\n x1 = taskXCoordinateRTL(task.end, dates, columnWidth);\n } else {\n x1 = taskXCoordinate(task.start, dates, columnWidth);\n x2 = taskXCoordinate(task.end, dates, columnWidth);\n }\n\n let baselineX1: number | undefined;\n let baselineX2: number | undefined;\n if (task.baselineStart && task.baselineEnd) {\n if (rtl) {\n baselineX2 = taskXCoordinateRTL(task.baselineStart, dates, columnWidth);\n baselineX1 = taskXCoordinateRTL(task.baselineEnd, dates, columnWidth);\n } else {\n baselineX1 = taskXCoordinate(task.baselineStart, dates, columnWidth);\n baselineX2 = taskXCoordinate(task.baselineEnd, dates, columnWidth);\n }\n }\n\n let typeInternal: TaskTypeInternal = task.type;\n if (typeInternal === \"task\" && x2 - x1 < handleWidth * 2) {\n typeInternal = \"smalltask\";\n x2 = x1 + handleWidth * 2;\n }\n\n const [progressWidth, progressX] = progressWithByParams(\n x1,\n x2,\n task.progress,\n rtl\n );\n const y = taskYCoordinate(index, rowHeight, taskHeight);\n const hideChildren = task.type === \"project\" ? task.hideChildren : undefined;\n\n const styles = {\n backgroundColor: barBackgroundColor,\n backgroundSelectedColor: barBackgroundSelectedColor,\n progressColor: barProgressColor,\n progressSelectedColor: barProgressSelectedColor,\n baselineBackgroundColor,\n ...task.styles,\n };\n return {\n ...task,\n typeInternal,\n x1,\n x2,\n y,\n index,\n progressX,\n progressWidth,\n barCornerRadius,\n handleWidth,\n hideChildren,\n height: taskHeight,\n barChildren: [],\n styles,\n baselineX1,\n baselineX2,\n };\n};\n\nconst convertToMilestone = (\n task: Task,\n index: number,\n dates: Date[],\n columnWidth: number,\n rowHeight: number,\n taskHeight: number,\n barCornerRadius: number,\n handleWidth: number,\n milestoneBackgroundColor: string,\n milestoneBackgroundSelectedColor: string\n): BarTask => {\n const x = taskXCoordinate(task.start, dates, columnWidth);\n const y = taskYCoordinate(index, rowHeight, taskHeight);\n\n const x1 = x - taskHeight * 0.5;\n const x2 = x + taskHeight * 0.5;\n\n const rotatedHeight = taskHeight / 1.414;\n const styles = {\n backgroundColor: milestoneBackgroundColor,\n backgroundSelectedColor: milestoneBackgroundSelectedColor,\n progressColor: \"\",\n progressSelectedColor: \"\",\n ...task.styles,\n };\n return {\n ...task,\n end: task.start,\n x1,\n x2,\n y,\n index,\n progressX: 0,\n progressWidth: 0,\n barCornerRadius,\n handleWidth,\n typeInternal: task.type,\n progress: 0,\n height: rotatedHeight,\n hideChildren: undefined,\n barChildren: [],\n styles,\n };\n};\n\nconst taskXCoordinate = (xDate: Date, dates: Date[], columnWidth: number) => {\n const index = dates.findIndex(d => d.getTime() >= xDate.getTime()) - 1;\n\n const remainderMillis = xDate.getTime() - dates[index].getTime();\n const percentOfInterval =\n remainderMillis / (dates[index + 1].getTime() - dates[index].getTime());\n const x = index * columnWidth + percentOfInterval * columnWidth;\n return x;\n};\nconst taskXCoordinateRTL = (\n xDate: Date,\n dates: Date[],\n columnWidth: number\n) => {\n let x = taskXCoordinate(xDate, dates, columnWidth);\n x += columnWidth;\n return x;\n};\nconst taskYCoordinate = (\n index: number,\n rowHeight: number,\n taskHeight: number\n) => {\n const y = index * rowHeight + (rowHeight - taskHeight) / 2;\n return y;\n};\n\nexport const progressWithByParams = (\n taskX1: number,\n taskX2: number,\n progress: number,\n rtl: boolean\n) => {\n const progressWidth = (taskX2 - taskX1) * progress * 0.01;\n let progressX: number;\n if (rtl) {\n progressX = taskX2 - progressWidth;\n } else {\n progressX = taskX1;\n }\n return [progressWidth, progressX];\n};\n\nexport const progressByProgressWidth = (\n progressWidth: number,\n barTask: BarTask\n) => {\n const barWidth = barTask.x2 - barTask.x1;\n const progressPercent = Math.round((progressWidth * 100) / barWidth);\n if (progressPercent >= 100) return 100;\n else if (progressPercent <= 0) return 0;\n else return progressPercent;\n};\n\nconst progressByX = (x: number, task: BarTask) => {\n if (x >= task.x2) return 100;\n else if (x <= task.x1) return 0;\n else {\n const barWidth = task.x2 - task.x1;\n const progressPercent = Math.round(((x - task.x1) * 100) / barWidth);\n return progressPercent;\n }\n};\nconst progressByXRTL = (x: number, task: BarTask) => {\n if (x >= task.x2) return 0;\n else if (x <= task.x1) return 100;\n else {\n const barWidth = task.x2 - task.x1;\n const progressPercent = Math.round(((task.x2 - x) * 100) / barWidth);\n return progressPercent;\n }\n};\n\nexport const getProgressPoint = (\n progressX: number,\n taskY: number,\n taskHeight: number\n) => {\n const point = [\n progressX - 5,\n taskY + taskHeight,\n progressX + 5,\n taskY + taskHeight,\n progressX,\n taskY + taskHeight - 8.66,\n ];\n return point.join(\",\");\n};\n\nconst startByX = (x: number, xStep: number, task: BarTask) => {\n if (x >= task.x2 - task.handleWidth * 2) {\n x = task.x2 - task.handleWidth * 2;\n }\n const steps = Math.round((x - task.x1) / xStep);\n const additionalXValue = steps * xStep;\n const newX = task.x1 + additionalXValue;\n return newX;\n};\n\nconst endByX = (x: number, xStep: number, task: BarTask) => {\n if (x <= task.x1 + task.handleWidth * 2) {\n x = task.x1 + task.handleWidth * 2;\n }\n const steps = Math.round((x - task.x2) / xStep);\n const additionalXValue = steps * xStep;\n const newX = task.x2 + additionalXValue;\n return newX;\n};\n\nconst moveByX = (x: number, xStep: number, task: BarTask) => {\n const steps = Math.round((x - task.x1) / xStep);\n const additionalXValue = steps * xStep;\n const newX1 = task.x1 + additionalXValue;\n const newX2 = newX1 + task.x2 - task.x1;\n return [newX1, newX2];\n};\n\nconst dateByX = (\n x: number,\n taskX: number,\n taskDate: Date,\n xStep: number,\n timeStep: number\n) => {\n let newDate = new Date(((x - taskX) / xStep) * timeStep + taskDate.getTime());\n newDate = new Date(\n newDate.getTime() +\n (newDate.getTimezoneOffset() - taskDate.getTimezoneOffset()) * 60000\n );\n return newDate;\n};\n\n/**\n * Method handles event in real time(mousemove) and on finish(mouseup)\n */\nexport const handleTaskBySVGMouseEvent = (\n svgX: number,\n action: BarMoveAction,\n selectedTask: BarTask,\n xStep: number,\n timeStep: number,\n initEventX1Delta: number,\n rtl: boolean\n): { isChanged: boolean; changedTask: BarTask } => {\n let result: { isChanged: boolean; changedTask: BarTask };\n switch (selectedTask.type) {\n case \"milestone\":\n result = handleTaskBySVGMouseEventForMilestone(\n svgX,\n action,\n selectedTask,\n xStep,\n timeStep,\n initEventX1Delta\n );\n break;\n default:\n result = handleTaskBySVGMouseEventForBar(\n svgX,\n action,\n selectedTask,\n xStep,\n timeStep,\n initEventX1Delta,\n rtl\n );\n break;\n }\n return result;\n};\n\nconst handleTaskBySVGMouseEventForBar = (\n svgX: number,\n action: BarMoveAction,\n selectedTask: BarTask,\n xStep: number,\n timeStep: number,\n initEventX1Delta: number,\n rtl: boolean\n): { isChanged: boolean; changedTask: BarTask } => {\n const changedTask: BarTask = { ...selectedTask };\n let isChanged = false;\n switch (action) {\n case \"progress\":\n if (rtl) {\n changedTask.progress = progressByXRTL(svgX, selectedTask);\n } else {\n changedTask.progress = progressByX(svgX, selectedTask);\n }\n isChanged = changedTask.progress !== selectedTask.progress;\n if (isChanged) {\n const [progressWidth, progressX] = progressWithByParams(\n changedTask.x1,\n changedTask.x2,\n changedTask.progress,\n rtl\n );\n changedTask.progressWidth = progressWidth;\n changedTask.progressX = progressX;\n }\n break;\n case \"start\": {\n const newX1 = startByX(svgX, xStep, selectedTask);\n changedTask.x1 = newX1;\n isChanged = changedTask.x1 !== selectedTask.x1;\n if (isChanged) {\n if (rtl) {\n changedTask.end = dateByX(\n newX1,\n selectedTask.x1,\n selectedTask.end,\n xStep,\n timeStep\n );\n } else {\n changedTask.start = dateByX(\n newX1,\n selectedTask.x1,\n selectedTask.start,\n xStep,\n timeStep\n );\n }\n const [progressWidth, progressX] = progressWithByParams(\n changedTask.x1,\n changedTask.x2,\n changedTask.progress,\n rtl\n );\n changedTask.progressWidth = progressWidth;\n changedTask.progressX = progressX;\n }\n break;\n }\n case \"end\": {\n const newX2 = endByX(svgX, xStep, selectedTask);\n changedTask.x2 = newX2;\n isChanged = changedTask.x2 !== selectedTask.x2;\n if (isChanged) {\n if (rtl) {\n changedTask.start = dateByX(\n newX2,\n selectedTask.x2,\n selectedTask.start,\n xStep,\n timeStep\n );\n } else {\n changedTask.end = dateByX(\n newX2,\n selectedTask.x2,\n selectedTask.end,\n xStep,\n timeStep\n );\n }\n const [progressWidth, progressX] = progressWithByParams(\n changedTask.x1,\n changedTask.x2,\n changedTask.progress,\n rtl\n );\n changedTask.progressWidth = progressWidth;\n changedTask.progressX = progressX;\n }\n break;\n }\n case \"move\": {\n const [newMoveX1, newMoveX2] = moveByX(\n svgX - initEventX1Delta,\n xStep,\n selectedTask\n );\n isChanged = newMoveX1 !== selectedTask.x1;\n if (isChanged) {\n changedTask.start = dateByX(\n newMoveX1,\n selectedTask.x1,\n selectedTask.start,\n xStep,\n timeStep\n );\n changedTask.end = dateByX(\n newMoveX2,\n selectedTask.x2,\n selectedTask.end,\n xStep,\n timeStep\n );\n changedTask.x1 = newMoveX1;\n changedTask.x2 = newMoveX2;\n const [progressWidth, progressX] = progressWithByParams(\n changedTask.x1,\n changedTask.x2,\n changedTask.progress,\n rtl\n );\n changedTask.progressWidth = progressWidth;\n changedTask.progressX = progressX;\n }\n break;\n }\n }\n return { isChanged, changedTask };\n};\n\nconst handleTaskBySVGMouseEventForMilestone = (\n svgX: number,\n action: BarMoveAction,\n selectedTask: BarTask,\n xStep: number,\n timeStep: number,\n initEventX1Delta: number\n): { isChanged: boolean; changedTask: BarTask } => {\n const changedTask: BarTask = { ...selectedTask };\n let isChanged = false;\n switch (action) {\n case \"move\": {\n const [newMoveX1, newMoveX2] = moveByX(\n svgX - initEventX1Delta,\n xStep,\n selectedTask\n );\n isChanged = newMoveX1 !== selectedTask.x1;\n if (isChanged) {\n changedTask.start = dateByX(\n newMoveX1,\n selectedTask.x1,\n selectedTask.start,\n xStep,\n timeStep\n );\n changedTask.end = changedTask.start;\n changedTask.x1 = newMoveX1;\n changedTask.x2 = newMoveX2;\n }\n break;\n }\n }\n return { isChanged, changedTask };\n};\n","import { BarTask } from \"../types/bar-task\";\nimport { Task } from \"../types/public-types\";\n\nexport function isKeyboardEvent(\n event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent\n): event is React.KeyboardEvent {\n return (event as React.KeyboardEvent).key !== undefined;\n}\n\nexport function isMouseEvent(\n event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent\n): event is React.MouseEvent {\n return (event as React.MouseEvent).clientX !== undefined;\n}\n\nexport function isBarTask(task: Task | BarTask): task is BarTask {\n return (task as BarTask).x1 !== undefined;\n}\n\nexport function removeHiddenTasks(tasks: Task[]) {\n const groupedTasks = tasks.filter(\n t => t.hideChildren && t.type === \"project\"\n );\n if (groupedTasks.length > 0) {\n for (let i = 0; groupedTasks.length > i; i++) {\n const groupedTask = groupedTasks[i];\n const children = getChildren(tasks, groupedTask);\n tasks = tasks.filter(t => children.indexOf(t) === -1);\n }\n }\n return tasks;\n}\n\nfunction getChildren(taskList: Task[], task: Task) {\n let tasks: Task[] = [];\n if (task.type !== \"project\") {\n tasks = taskList.filter(\n t => t.dependencies && t.dependencies.indexOf(task.id) !== -1\n );\n } else {\n tasks = taskList.filter(t => t.project && t.project === task.id);\n }\n var taskChildren: Task[] = [];\n tasks.forEach(t => {\n taskChildren.push(...getChildren(taskList, t));\n })\n tasks = tasks.concat(tasks, taskChildren);\n return tasks;\n}\n\nexport const sortTasks = (taskA: Task, taskB: Task) => {\n const orderA = taskA.displayOrder || Number.MAX_VALUE;\n const orderB = taskB.displayOrder || Number.MAX_VALUE;\n if (orderA > orderB) {\n return 1;\n } else if (orderA < orderB) {\n return -1;\n } else {\n return 0;\n }\n};\n","import React from \"react\";\nimport style from \"./bar.module.css\";\n\ntype BarDisplayProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n isSelected: boolean;\n /* progress start point */\n progressX: number;\n progressWidth: number;\n barCornerRadius: number;\n styles: {\n backgroundColor: string;\n backgroundSelectedColor: string;\n progressColor: string;\n progressSelectedColor: string;\n };\n onMouseDown: (event: React.MouseEvent<SVGPolygonElement, MouseEvent>) => void;\n};\nexport const BarDisplay: React.FC<BarDisplayProps> = ({\n x,\n y,\n width,\n height,\n isSelected,\n progressX,\n progressWidth,\n barCornerRadius,\n styles,\n onMouseDown,\n}) => {\n const getProcessColor = () => {\n return isSelected ? styles.progressSelectedColor : styles.progressColor;\n };\n\n const getBarColor = () => {\n return isSelected ? styles.backgroundSelectedColor : styles.backgroundColor;\n };\n\n return (\n <g onMouseDown={onMouseDown}>\n <rect\n x={x}\n width={width}\n y={y}\n height={height}\n ry={barCornerRadius}\n rx={barCornerRadius}\n fill={getBarColor()}\n className={style.barBackground}\n />\n <rect\n x={progressX}\n width={progressWidth}\n y={y}\n height={height}\n ry={barCornerRadius}\n rx={barCornerRadius}\n fill={getProcessColor()}\n />\n </g>\n );\n};\n","import React from \"react\";\nimport styles from \"./bar.module.css\";\n\ntype BarDateHandleProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n barCornerRadius: number;\n onMouseDown: (event: React.MouseEvent<SVGRectElement, MouseEvent>) => void;\n};\nexport const BarDateHandle: React.FC<BarDateHandleProps> = ({\n x,\n y,\n width,\n height,\n barCornerRadius,\n onMouseDown,\n}) => {\n return (\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n className={styles.barHandle}\n ry={barCornerRadius}\n rx={barCornerRadius}\n onMouseDown={onMouseDown}\n />\n );\n};\n","import React from \"react\";\nimport styles from \"./bar.module.css\";\n\ntype BarProgressHandleProps = {\n progressPoint: string;\n onMouseDown: (event: React.MouseEvent<SVGPolygonElement, MouseEvent>) => void;\n};\nexport const BarProgressHandle: React.FC<BarProgressHandleProps> = ({\n progressPoint,\n onMouseDown,\n}) => {\n return (\n <polygon\n className={styles.barHandle}\n points={progressPoint}\n onMouseDown={onMouseDown}\n />\n );\n};\n","import React from \"react\";\nimport { getProgressPoint } from \"../../../helpers/bar-helper\";\nimport { BarDisplay } from \"./bar-display\";\nimport { BarDateHandle } from \"./bar-date-handle\";\nimport { BarProgressHandle } from \"./bar-progress-handle\";\nimport { TaskItemProps } from \"../task-item\";\nimport styles from \"./bar.module.css\";\n\nexport const Bar: React.FC<TaskItemProps> = ({\n task,\n isProgressChangeable,\n isDateChangeable,\n rtl,\n onEventStart,\n isSelected,\n}) => {\n const hasBaseline =\n task.baselineX1 !== undefined && task.baselineX2 !== undefined;\n const mainBarHeight = hasBaseline ? task.height * 0.6 : task.height;\n const baselineHeight = task.height * 0.3;\n const baselineY = task.y + mainBarHeight + task.height * 0.1;\n\n const progressPoint = getProgressPoint(\n +!rtl * task.progressWidth + task.progressX,\n task.y,\n mainBarHeight\n );\n const handleHeight = mainBarHeight - 2;\n return (\n <g className={styles.barWrapper} tabIndex={0}>\n {hasBaseline && (\n <rect\n x={task.baselineX1}\n y={baselineY}\n width={task.baselineX2! - task.baselineX1!}\n height={baselineHeight}\n ry={task.barCornerRadius}\n rx={task.barCornerRadius}\n fill={task.styles.baselineBackgroundColor}\n className={styles.barBackground}\n />\n )}\n <BarDisplay\n x={task.x1}\n y={task.y}\n width={task.x2 - task.x1}\n height={mainBarHeight}\n progressX={task.progressX}\n progressWidth={task.progressWidth}\n barCornerRadius={task.barCornerRadius}\n styles={task.styles}\n isSelected={isSelected}\n onMouseDown={e => {\n isDateChangeable && onEventStart(\"move\", task, e);\n }}\n />\n <g className=\"handleGroup\">\n {isDateChangeable && (\n <g>\n {/* left */}\n <BarDateHandle\n x={task.x1 + 1}\n y={task.y + 1}\n width={task.handleWidth}\n height={handleHeight}\n barCornerRadius={task.barCornerRadius}\n onMouseDown={e => {\n onEventStart(\"start\", task, e);\n }}\n />\n {/* right */}\n <BarDateHandle\n x={task.x2 - task.handleWidth - 1}\n y={task.y + 1}\n width={task.handleWidth}\n height={handleHeight}\n barCornerRadius={task.barCornerRadius}\n onMouseDown={e => {\n onEventStart(\"end\", task, e);\n }}\n />\n </g>\n )}\n {isProgressChangeable && (\n <BarProgressHandle\n progressPoint={progressPoint}\n onMouseDown={e => {\n onEventStart(\"progress\", task, e);\n }}\n />\n )}\n </g>\n </g>\n );\n};\n","import React from \"react\";\nimport { getProgressPoint } from \"../../../helpers/bar-helper\";\nimport { BarDisplay } from \"./bar-display\";\nimport { BarProgressHandle } from \"./bar-progress-handle\";\nimport { TaskItemProps } from \"../task-item\";\nimport styles from \"./bar.module.css\";\n\nexport const BarSmall: React.FC<TaskItemProps> = ({\n task,\n isProgressChangeable,\n isDateChangeable,\n onEventStart,\n isSelected,\n}) => {\n const progressPoint = getProgressPoint(\n task.progressWidth + task.x1,\n task.y,\n task.height\n );\n return (\n <g className={styles.barWrapper} tabIndex={0}>\n <BarDisplay\n x={task.x1}\n y={task.y}\n width={task.x2 - task.x1}\n height={task.height}\n progressX={task.progressX}\n progressWidth={task.progressWidth}\n barCornerRadius={task.barCornerRadius}\n styles={task.styles}\n isSelected={isSelected}\n onMouseDown={e => {\n isDateChangeable && onEventStart(\"move\", task, e);\n }}\n />\n <g className=\"handleGroup\">\n {isProgressChangeable && (\n <BarProgressHandle\n progressPoint={progressPoint}\n onMouseDown={e => {\n onEventStart(\"progress\", task, e);\n }}\n />\n )}\n </g>\n </g>\n );\n};\n","import React from \"react\";\nimport { TaskItemProps } from \"../task-item\";\nimport styles from \"./milestone.module.css\";\n\nexport const Milestone: React.FC<TaskItemProps> = ({\n task,\n isDateChangeable,\n onEventStart,\n isSelected,\n}) => {\n const transform = `rotate(45 ${task.x1 + task.height * 0.356} \n ${task.y + task.height * 0.85})`;\n const getBarColor = () => {\n return isSelected\n ? task.styles.backgroundSelectedColor\n : task.styles.backgroundColor;\n };\n\n return (\n <g tabIndex={0} className={styles.milestoneWrapper}>\n <rect\n fill={getBarColor()}\n x={task.x1}\n width={task.height}\n y={task.y}\n height={task.height}\n rx={task.barCornerRadius}\n ry={task.barCornerRadius}\n transform={transform}\n className={styles.milestoneBackground}\n onMouseDown={e => {\n isDateChangeable && onEventStart(\"move\", task, e);\n }}\n />\n </g>\n );\n};\n","import React from \"react\";\nimport { TaskItemProps } from \"../task-item\";\nimport styles from \"./project.module.css\";\n\nexport const Project: React.FC<TaskItemProps> = ({ task, isSelected }) => {\n const barColor = isSelected\n ? task.styles.backgroundSelectedColor\n : task.styles.backgroundColor;\n const processColor = isSelected\n ? task.styles.progressSelectedColor\n : task.styles.progressColor;\n const projectWith = task.x2 - task.x1;\n\n const projectLeftTriangle = [\n task.x1,\n task.y + task.height / 2 - 1,\n task.x1,\n task.y + task.height,\n task.x1 + 15,\n task.y + task.height / 2 - 1,\n ].join(\",\");\n const projectRightTriangle = [\n task.x2,\n task.y + task.height / 2 - 1,\n task.x2,\n task.y + task.height,\n task.x2 - 15,\n task.y + task.height / 2 - 1,\n ].join(\",\");\n\n return (\n <g tabIndex={0} className={styles.projectWrapper}>\n <rect\n fill={barColor}\n x={task.x1}\n width={projectWith}\n y={task.y}\n height={task.height}\n rx={task.barCornerRadius}\n ry={task.barCornerRadius}\n className={styles.projectBackground}\n />\n <rect\n x={task.progressX}\n width={task.progressWidth}\n y={task.y}\n height={task.height}\n ry={task.barCornerRadius}\n rx={task.barCornerRadius}\n fill={processColor}\n />\n <rect\n fill={barColor}\n x={task.x1}\n width={projectWith}\n y={task.y}\n height={task.height / 2}\n rx={task.barCornerRadius}\n ry={task.barCornerRadius}\n className={styles.projectTop}\n />\n <polygon\n className={styles.projectTop}\n points={projectLeftTriangle}\n fill={barColor}\n />\n <polygon\n className={styles.projectTop}\n points={projectRightTriangle}\n fill={barColor}\n />\n </g>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\nimport { GanttContentMoveAction } from \"../../types/gantt-task-actions\";\nimport { Bar } from \"./bar/bar\";\nimport { BarSmall } from \"./bar/bar-small\";\nimport { Milestone } from \"./milestone/milestone\";\nimport { Project } from \"./project/project\";\nimport style from \"./task-list.module.css\";\n\nexport type TaskItemProps = {\n task: BarTask;\n arrowIndent: number;\n taskHeight: number;\n isProgressChangeable: boolean;\n isDateChangeable: boolean;\n isDelete: boolean;\n isSelected: boolean;\n rtl: boolean;\n onEventStart: (\n action: GanttContentMoveAction,\n selectedTask: BarTask,\n event?: React.MouseEvent | React.KeyboardEvent\n ) => any;\n};\n\nexport const TaskItem: React.FC<TaskItemProps> = props => {\n const {\n task,\n arrowIndent,\n isDelete,\n taskHeight,\n isSelected,\n rtl,\n onEventStart,\n } = {\n ...props,\n };\n const textRef = useRef<SVGTextElement>(null);\n const [taskItem, setTaskItem] = useState<JSX.Element>(<div />);\n const [isTextInside, setIsTextInside] = useState(true);\n\n useEffect(() => {\n switch (task.typeInternal) {\n case \"milestone\":\n setTaskItem(<Milestone {...props} />);\n break;\n case \"project\":\n setTaskItem(<Project {...props} />);\n break;\n case \"smalltask\":\n setTaskItem(<BarSmall {...props} />);\n break;\n default:\n setTaskItem(<Bar {...props} />);\n break;\n }\n }, [task, isSelected]);\n\n useEffect(() => {\n if (textRef.current) {\n setIsTextInside(textRef.current.getBBox().width < task.x2 - task.x1);\n }\n }, [textRef, task]);\n\n const getX = () => {\n const width = task.x2 - task.x1;\n const hasChild = task.barChildren.length > 0;\n if (isTextInside) {\n return task.x1 + width * 0.5;\n }\n if (rtl && textRef.current) {\n return (\n task.x1 -\n textRef.current.getBBox().width -\n arrowIndent * +hasChild -\n arrowIndent * 0.2\n );\n } else {\n return task.x1 + width + arrowIndent * +hasChild + arrowIndent * 0.2;\n }\n };\n\n return (\n <g\n onKeyDown={e => {\n switch (e.key) {\n case \"Delete\": {\n if (isDelete) onEventStart(\"delete\", task, e);\n break;\n }\n }\n e.stopPropagation();\n }}\n onMouseEnter={e => {\n onEventStart(\"mouseenter\", task, e);\n }}\n onMouseLeave={e => {\n onEventStart(\"mouseleave\", task, e);\n }}\n onDoubleClick={e => {\n onEventStart(\"dblclick\", task, e);\n }}\n onClick={e => {\n onEventStart(\"click\", task, e);\n }}\n onFocus={() => {\n onEventStart(\"select\", task);\n }}\n >\n {taskItem}\n <text\n x={getX()}\n y={task.y + taskHeight * 0.5}\n className={\n isTextInside\n ? style.barLabel\n : style.barLabel && style.barLabelOutside\n }\n ref={textRef}\n >\n {task.name}\n </text>\n </g>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { EventOption } from \"../../types/public-types\";\nimport { BarTask } from \"../../types/bar-task\";\nimport { Arrow } from \"../other/arrow\";\nimport { handleTaskBySVGMouseEvent } from \"../../helpers/bar-helper\";\nimport { isKeyboardEvent } from \"../../helpers/other-helper\";\nimport { TaskItem } from \"../task-item/task-item\";\nimport {\n BarMoveAction,\n GanttContentMoveAction,\n GanttEvent,\n} from \"../../types/gantt-task-actions\";\n\nexport type TaskGanttContentProps = {\n tasks: BarTask[];\n dates: Date[];\n ganttEvent: GanttEvent;\n selectedTask: BarTask | undefined;\n rowHeight: number;\n columnWidth: number;\n timeStep: number;\n svg?: React.RefObject<SVGSVGElement>;\n svgWidth: number;\n taskHeight: number;\n arrowColor: string;\n arrowIndent: number;\n fontSize: string;\n fontFamily: string;\n rtl: boolean;\n setGanttEvent: (value: GanttEvent) => void;\n setFailedTask: (value: BarTask | null) => void;\n setSelectedTask: (taskId: string) => void;\n} & EventOption;\n\nexport const TaskGanttContent: React.FC<TaskGanttContentProps> = ({\n tasks,\n dates,\n ganttEvent,\n selectedTask,\n rowHeight,\n columnWidth,\n timeStep,\n svg,\n taskHeight,\n arrowColor,\n arrowIndent,\n fontFamily,\n fontSize,\n rtl,\n setGanttEvent,\n setFailedTask,\n setSelectedTask,\n onDateChange,\n onProgressChange,\n onDoubleClick,\n onClick,\n onDelete,\n}) => {\n const point = svg?.current?.createSVGPoint();\n const [xStep, setXStep] = useState(0);\n const [initEventX1Delta, setInitEventX1Delta] = useState(0);\n const [isMoving, setIsMoving] = useState(false);\n\n // create xStep\n useEffect(() => {\n const dateDelta =\n dates[1].getTime() -\n dates[0].getTime() -\n dates[1].getTimezoneOffset() * 60 * 1000 +\n dates[0].getTimezoneOffset() * 60 * 1000;\n const newXStep = (timeStep * columnWidth) / dateDelta;\n setXStep(newXStep);\n }, [columnWidth, dates, timeStep]);\n\n useEffect(() => {\n const handleMouseMove = async (event: MouseEvent) => {\n if (!ganttEvent.changedTask || !point || !svg?.current) return;\n event.preventDefault();\n\n point.x = event.clientX;\n const cursor = point.matrixTransform(\n svg?.current.getScreenCTM()?.inverse()\n );\n\n const { isChanged, changedTask } = handleTaskBySVGMouseEvent(\n cursor.x,\n ganttEvent.action as BarMoveAction,\n ganttEvent.changedTask,\n xStep,\n timeStep,\n initEventX1Delta,\n rtl\n );\n if (isChanged) {\n setGanttEvent({ action: ganttEvent.action, changedTask });\n }\n };\n\n const handleMouseUp = async (event: MouseEvent) => {\n const { action, originalSelectedTask, changedTask } = ganttEvent;\n if (!changedTask || !point || !svg?.current || !originalSelectedTask)\n return;\n event.preventDefault();\n\n point.x = event.clientX;\n const cursor = point.matrixTransform(\n svg?.current.getScreenCTM()?.inverse()\n );\n const { changedTask: newChangedTask } = handleTaskBySVGMouseEvent(\n cursor.x,\n action as BarMoveAction,\n changedTask,\n xStep,\n timeStep,\n initEventX1Delta,\n rtl\n );\n\n const isNotLikeOriginal =\n originalSelectedTask.start !== newChangedTask.start ||\n originalSelectedTask.end !== newChangedTask.end ||\n originalSelectedTask.progress !== newChangedTask.progress;\n\n // remove listeners\n svg.current.removeEventListener(\"mousemove\", handleMouseMove);\n svg.current.removeEventListener(\"mouseup\", handleMouseUp);\n setGanttEvent({ action: \"\" });\n setIsMoving(false);\n\n // custom operation start\n let operationSuccess = true;\n if (\n (action === \"move\" || action === \"end\" || action === \"start\") &&\n onDateChange &&\n isNotLikeOriginal\n ) {\n try {\n const result = await onDateChange(\n newChangedTask,\n newChangedTask.barChildren\n );\n if (result !== undefined) {\n operationSuccess = result;\n }\n } catch (error) {\n operationSuccess = false;\n }\n } else if (onProgressChange && isNotLikeOriginal) {\n try {\n const result = await onProgressChange(\n newChangedTask,\n newChangedTask.barChildren\n );\n if (result !== undefined) {\n operationSuccess = result;\n }\n } catch (error) {\n operationSuccess = false;\n }\n }\n\n // If operation is failed - return old state\n if (!operationSuccess) {\n setFailedTask(originalSelectedTask);\n }\n };\n\n if (\n !isMoving &&\n (ganttEvent.action === \"move\" ||\n ganttEvent.action === \"end\" ||\n ganttEvent.action === \"start\" ||\n ganttEvent.action === \"progress\") &&\n svg?.current\n ) {\n svg.current.addEventListener(\"mousemove\", handleMouseMove);\n svg.current.addEventListener(\"mouseup\", handleMouseUp);\n setIsMoving(true);\n }\n }, [\n ganttEvent,\n xStep,\n initEventX1Delta,\n onProgressChange,\n timeStep,\n onDateChange,\n svg,\n isMoving,\n point,\n rtl,\n setFailedTask,\n setGanttEvent,\n ]);\n\n /**\n * Method is Start point of task change\n */\n const handleBarEventStart = async (\n action: GanttContentMoveAction,\n task: BarTask,\n event?: React.MouseEvent | React.KeyboardEvent\n ) => {\n if (!event) {\n if (action === \"select\") {\n setSelectedTask(task.id);\n }\n }\n // Keyboard events\n else if (isKeyboardEvent(event)) {\n if (action === \"delete\") {\n if (onDelete) {\n try {\n const result = await onDelete(task);\n if (result !== undefined && result) {\n setGanttEvent({ action, changedTask: task });\n }\n } catch (error) {\n console.error(\"Error on Delete. \" + error);\n }\n }\n }\n }\n // Mouse Events\n else if (action === \"mouseenter\") {\n if (!ganttEvent.action) {\n setGanttEvent({\n action,\n changedTask: task,\n originalSelectedTask: task,\n });\n }\n } else if (action === \"mouseleave\") {\n if (ganttEvent.action === \"mouseenter\") {\n setGanttEvent({ action: \"\" });\n }\n } else if (action === \"dblclick\") {\n !!onDoubleClick && onDoubleClick(task);\n } else if (action === \"click\") {\n !!onClick && onClick(task);\n }\n // Change task event start\n else if (action === \"move\") {\n if (!svg?.current || !point) return;\n point.x = event.clientX;\n const cursor = point.matrixTransform(\n svg.current.getScreenCTM()?.inverse()\n );\n setInitEventX1Delta(cursor.x - task.x1);\n setGanttEvent({\n action,\n changedTask: task,\n originalSelectedTask: task,\n });\n } else {\n setGanttEvent({\n action,\n changedTask: task,\n originalSelectedTask: task,\n });\n }\n };\n\n return (\n <g className=\"content\">\n <g className=\"arrows\" fill={arrowColor} stroke={arrowColor}>\n {tasks.map(task => {\n return task.barChildren.map(child => {\n return (\n <Arrow\n key={`Arrow from ${task.id} to ${tasks[child.index].id}`}\n taskFrom={task}\n taskTo={tasks[child.index]}\n rowHeight={rowHeight}\n taskHeight={taskHeight}\n arrowIndent={arrowIndent}\n rtl={rtl}\n />\n );\n });\n })}\n </g>\n <g className=\"bar\" fontFamily={fontFamily} fontSize={fontSize}>\n {tasks.map(task => {\n return (\n <TaskItem\n task={task}\n arrowIndent={arrowIndent}\n taskHeight={taskHeight}\n isProgressChangeable={!!onProgressChange && !task.isDisabled}\n isDateChangeable={!!onDateChange && !task.isDisabled}\n isDelete={!task.isDisabled}\n onEventStart={handleBarEventStart}\n key={task.id}\n isSelected={!!selectedTask && task.id === selectedTask.id}\n rtl={rtl}\n />\n );\n })}\n </g>\n </g>\n );\n};\n","import React, { useRef, useEffect } from \"react\";\nimport { GridProps, Grid } from \"../grid/grid\";\nimport { CalendarProps, Calendar } from \"../calendar/calendar\";\nimport { TaskGanttContentProps, TaskGanttContent } from \"./task-gantt-content\";\nimport styles from \"./gantt.module.css\";\n\nexport type TaskGanttProps = {\n gridProps: GridProps;\n calendarProps: CalendarProps;\n barProps: TaskGanttContentProps;\n ganttHeight: number;\n scrollY: number;\n scrollX: number;\n};\nexport const TaskGantt: React.FC<TaskGanttProps> = ({\n gridProps,\n calendarProps,\n barProps,\n ganttHeight,\n scrollY,\n scrollX,\n}) => {\n const ganttSVGRef = useRef<SVGSVGElement>(null);\n const horizontalContainerRef = useRef<HTMLDivElement>(null);\n const verticalGanttContainerRef = useRef<HTMLDivElement>(null);\n const newBarProps = { ...barProps, svg: ganttSVGRef };\n\n useEffect(() => {\n if (horizontalContainerRef.current) {\n horizontalContainerRef.current.scrollTop = scrollY;\n }\n }, [scrollY]);\n\n useEffect(() => {\n if (verticalGanttContainerRef.current) {\n verticalGanttContainerRef.current.scrollLeft = scrollX;\n }\n }, [scrollX]);\n\n return (\n <div\n className={styles.ganttVerticalContainer}\n ref={verticalGanttContainerRef}\n dir=\"ltr\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={gridProps.svgWidth}\n height={calendarProps.headerHeight}\n fontFamily={barProps.fontFamily}\n >\n <Calendar {...calendarProps} />\n </svg>\n <div\n ref={horizontalContainerRef}\n className={styles.horizontalContainer}\n style={\n ganttHeight\n ? { height: ganttHeight, width: gridProps.svgWidth }\n : { width: gridProps.svgWidth }\n }\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={gridProps.svgWidth}\n height={barProps.rowHeight * barProps.tasks.length}\n fontFamily={barProps.fontFamily}\n ref={ganttSVGRef}\n >\n <Grid {...gridProps} />\n <TaskGanttContent {...newBarProps} />\n </svg>\n </div>\n </div>\n );\n};\n","import React, { SyntheticEvent, useRef, useEffect } from \"react\";\nimport styles from \"./horizontal-scroll.module.css\";\n\nexport const HorizontalScroll: React.FC<{\n scroll: number;\n svgWidth: number;\n taskListWidth: number;\n rtl: boolean;\n onScroll: (event: SyntheticEvent<HTMLDivElement>) => void;\n}> = ({ scroll, svgWidth, taskListWidth, rtl, onScroll }) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollLeft = scroll;\n }\n }, [scroll]);\n\n return (\n <div\n dir=\"ltr\"\n style={{\n margin: rtl\n ? `0px ${taskListWidth}px 0px 0px`\n : `0px 0px 0px ${taskListWidth}px`,\n }}\n className={styles.scrollWrapper}\n onScroll={onScroll}\n ref={scrollRef}\n >\n <div style={{ width: svgWidth }} className={styles.scroll} />\n </div>\n );\n};\n","import React, {\n useState,\n SyntheticEvent,\n useRef,\n useEffect,\n useMemo,\n} from \"react\";\nimport { ViewMode, GanttProps, Task } from \"../../types/public-types\";\nimport { GridProps } from \"../grid/grid\";\nimport { ganttDateRange, seedDates } from \"../../helpers/date-helper\";\nimport { CalendarProps } from \"../calendar/calendar\";\nimport { TaskGanttContentProps } from \"./task-gantt-content\";\nimport { TaskListHeaderDefault } from \"../task-list/task-list-header\";\nimport { TaskListTableDefault } from \"../task-list/task-list-table\";\nimport { StandardTooltipContent, Tooltip } from \"../other/tooltip\";\nimport { VerticalScroll } from \"../other/vertical-scroll\";\nimport { TaskListProps, TaskList } from \"../task-list/task-list\";\nimport { TaskGantt } from \"./task-gantt\";\nimport { BarTask } from \"../../types/bar-task\";\nimport { convertToBarTasks } from \"../../helpers/bar-helper\";\nimport { GanttEvent } from \"../../types/gantt-task-actions\";\nimport { DateSetup } from \"../../types/date-setup\";\nimport { HorizontalScroll } from \"../other/horizontal-scroll\";\nimport { removeHiddenTasks, sortTasks } from \"../../helpers/other-helper\";\nimport styles from \"./gantt.module.css\";\n\nexport const Gantt: React.FunctionComponent<GanttProps> = ({\n tasks,\n headerHeight = 80,\n columnWidth = 60,\n listCellWidth = \"155px\",\n rowHeight = 50,\n ganttHeight = 0,\n viewMode = ViewMode.Day,\n preStepsCount = 1,\n locale = \"en-GB\",\n barFill = 60,\n barCornerRadius = 3,\n barProgressColor = \"#a3a3ff\",\n barProgressSelectedColor = \"#8282f5\",\n barBackgroundColor = \"#b8c2cc\",\n barBackgroundSelectedColor = \"#aeb8c2\",\n baselineBackgroundColor = \"#9CA3AF\",\n projectProgressColor = \"#7db59a\",\n projectProgressSelectedColor = \"#59a985\",\n projectBackgroundColor = \"#fac465\",\n projectBackgroundSelectedColor = \"#f7bb53\",\n milestoneBackgroundColor = \"#f1c453\",\n milestoneBackgroundSelectedColor = \"#f29e4c\",\n rtl = false,\n handleWidth = 8,\n timeStep = 300000,\n arrowColor = \"grey\",\n fontFamily = \"Arial, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue\",\n fontSize = \"14px\",\n arrowIndent = 20,\n todayColor = \"rgba(252, 248, 227, 0.5)\",\n viewDate,\n TooltipContent = StandardTooltipContent,\n TaskListHeader = TaskListHeaderDefault,\n TaskListTable = TaskListTableDefault,\n onDateChange,\n onProgressChange,\n onDoubleClick,\n onClick,\n onDelete,\n onSelect,\n onExpanderClick,\n}) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const taskListRef = useRef<HTMLDivElement>(null);\n const [dateSetup, setDateSetup] = useState<DateSetup>(() => {\n const [startDate, endDate] = ganttDateRange(tasks, viewMode, preStepsCount);\n return { viewMode, dates: seedDates(startDate, endDate, viewMode) };\n });\n const [currentViewDate, setCurrentViewDate] = useState<Date | undefined>(\n undefined\n );\n\n const [taskListWidth, setTaskListWidth] = useState(0);\n const [svgContainerWidth, setSvgContainerWidth] = useState(0);\n const [svgContainerHeight, setSvgContainerHeight] = useState(ganttHeight);\n const [barTasks, setBarTasks] = useState<BarTask[]>([]);\n const [ganttEvent, setGanttEvent] = useState<GanttEvent>({\n action: \"\",\n });\n const taskHeight = useMemo(\n () => (rowHeight * barFill) / 100,\n [rowHeight, barFill]\n );\n\n const [selectedTask, setSelectedTask] = useState<BarTask>();\n const [failedTask, setFailedTask] = useState<BarTask | null>(null);\n\n const svgWidth = dateSetup.dates.length * columnWidth;\n const ganttFullHeight = barTasks.length * rowHeight;\n\n const [scrollY, setScrollY] = useState(0);\n const [scrollX, setScrollX] = useState(-1);\n const [ignoreScrollEvent, setIgnoreScrollEvent] = useState(false);\n\n // task change events\n useEffect(() => {\n let filteredTasks: Task[];\n if (onExpanderClick) {\n filteredTasks = removeHiddenTasks(tasks);\n } else {\n filteredTasks = tasks;\n }\n filteredTasks = filteredTasks.sort(sortTasks);\n const [startDate, endDate] = ganttDateRange(\n filteredTasks,\n viewMode,\n preStepsCount\n );\n let newDates = seedDates(startDate, endDate, viewMode);\n if (rtl) {\n newDates = newDates.reverse();\n if (scrollX === -1) {\n setScrollX(newDates.length * columnWidth);\n }\n }\n setDateSetup({ dates: newDates, viewMode });\n setBarTasks(\n convertToBarTasks(\n filteredTasks,\n newDates,\n columnWidth,\n rowHeight,\n taskHeight,\n barCornerRadius,\n handleWidth,\n rtl,\n barProgressColor,\n barProgressSelectedColor,\n barBackgroundColor,\n barBackgroundSelectedColor,\n projectProgressColor,\n projectProgressSelectedColor,\n projectBackgroundColor,\n projectBackgroundSelectedColor,\n milestoneBackgroundColor,\n milestoneBackgroundSelectedColor,\n baselineBackgroundColor\n )\n );\n }, [\n tasks,\n viewMode,\n preStepsCount,\n rowHeight,\n barCornerRadius,\n columnWidth,\n taskHeight,\n handleWidth,\n barProgressColor,\n barProgressSelectedColor,\n barBackgroundColor,\n barBackgroundSelectedColor,\n projectProgressColor,\n projectProgressSelectedColor,\n projectBackgroundColor,\n projectBackgroundSelectedColor,\n milestoneBackgroundColor,\n milestoneBackgroundSelectedColor,\n rtl,\n scrollX,\n onExpanderClick,\n baselineBackgroundColor,\n ]);\n\n useEffect(() => {\n if (\n viewMode === dateSetup.viewMode &&\n ((viewDate && !currentViewDate) ||\n (viewDate && currentViewDate?.valueOf() !== viewDate.valueOf()))\n ) {\n const dates = dateSetup.dates;\n const index = dates.findIndex(\n (d, i) =>\n viewDate.valueOf() >= d.valueOf() &&\n i + 1 !== dates.length &&\n viewDate.valueOf() < dates[i + 1].valueOf()\n );\n if (index === -1) {\n return;\n }\n setCurrentViewDate(viewDate);\n setScrollX(columnWidth * index);\n }\n }, [\n viewDate,\n columnWidth,\n dateSetup.dates,\n dateSetup.viewMode,\n viewMode,\n currentViewDate,\n setCurrentViewDate,\n ]);\n\n useEffect(() => {\n const { changedTask, action } = ganttEvent;\n if (changedTask) {\n if (action === \"delete\") {\n setGanttEvent({ action: \"\" });\n setBarTasks(barTasks.filter(t => t.id !== changedTask.id));\n } else if (\n action === \"move\" ||\n action === \"end\" ||\n action === \"start\" ||\n action === \"progress\"\n ) {\n const prevStateTask = barTasks.find(t => t.id === changedTask.id);\n if (\n prevStateTask &&\n (prevStateTask.start.getTime() !== changedTask.start.getTime() ||\n prevStateTask.end.getTime() !== changedTask.end.getTime() ||\n prevStateTask.progress !== changedTask.progress)\n ) {\n // actions for change\n const newTaskList = barTasks.map(t =>\n t.id === changedTask.id ? changedTask : t\n );\n setBarTasks(newTaskList);\n }\n }\n }\n }, [ganttEvent, barTasks]);\n\n useEffect(() => {\n if (failedTask) {\n setBarTasks(barTasks.map(t => (t.id !== failedTask.id ? t : failedTask)));\n setFailedTask(null);\n }\n }, [failedTask, barTasks]);\n\n useEffect(() => {\n if (!listCellWidth) {\n setTaskListWidth(0);\n }\n if (taskListRef.current) {\n setTaskListWidth(taskListRef.current.offsetWidth);\n }\n }, [taskListRef, listCellWidth]);\n\n useEffect(() => {\n if (wrapperRef.current) {\n setSvgContainerWidth(wrapperRef.current.offsetWidth - taskListWidth);\n }\n }, [wrapperRef, taskListWidth]);\n\n useEffect(() => {\n if (ganttHeight) {\n setSvgContainerHeight(ganttHeight + headerHeight);\n } else {\n setSvgContainerHeight(tasks.length * rowHeight + headerHeight);\n }\n }, [ganttHeight, tasks, headerHeight, rowHeight]);\n\n // scroll events\n useEffect(() => {\n const handleWheel = (event: WheelEvent) => {\n if (event.shiftKey || event.deltaX) {\n const scrollMove = event.deltaX ? event.deltaX : event.deltaY;\n let newScrollX = scrollX + scrollMove;\n if (newScrollX < 0) {\n newScrollX = 0;\n } else if (newScrollX > svgWidth) {\n newScrollX = svgWidth;\n }\n setScrollX(newScrollX);\n event.preventDefault();\n } else if (ganttHeight) {\n let newScrollY = scrollY + event.deltaY;\n if (newScrollY < 0) {\n newScrollY = 0;\n } else if (newScrollY > ganttFullHeight - ganttHeight) {\n newScrollY = ganttFullHeight - ganttHeight;\n }\n if (newScrollY !== scrollY) {\n setScrollY(newScrollY);\n event.preventDefault();\n }\n }\n\n setIgnoreScrollEvent(true);\n };\n\n // subscribe if scroll is necessary\n wrapperRef.current?.addEventListener(\"wheel\", handleWheel, {\n passive: false,\n });\n return () => {\n wrapperRef.current?.removeEventListener(\"wheel\", handleWheel);\n };\n }, [\n wrapperRef,\n scrollY,\n scrollX,\n ganttHeight,\n svgWidth,\n rtl,\n ganttFullHeight,\n ]);\n\n const handleScrollY = (event: SyntheticEvent<HTMLDivElement>) => {\n if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollEvent) {\n setScrollY(event.currentTarget.scrollTop);\n setIgnoreScrollEvent(true);\n } else {\n setIgnoreScrollEvent(false);\n }\n };\n\n const handleScrollX = (event: SyntheticEvent<HTMLDivElement>) => {\n if (scrollX !== event.currentTarget.scrollLeft && !ignoreScrollEvent) {\n setScrollX(event.currentTarget.scrollLeft);\n setIgnoreScrollEvent(true);\n } else {\n setIgnoreScrollEvent(false);\n }\n };\n\n /**\n * Handles arrow keys events and transform it to new scroll\n */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n event.preventDefault();\n let newScrollY = scrollY;\n let newScrollX = scrollX;\n let isX = true;\n switch (event.key) {\n case \"Down\": // IE/Edge specific value\n case \"ArrowDown\":\n newScrollY += rowHeight;\n isX = false;\n break;\n case \"Up\": // IE/Edge specific value\n case \"ArrowUp\":\n newScrollY -= rowHeight;\n isX = false;\n break;\n case \"Left\":\n case \"ArrowLeft\":\n newScrollX -= columnWidth;\n break;\n case \"Right\": // IE/Edge specific value\n case \"ArrowRight\":\n newScrollX += columnWidth;\n break;\n }\n if (isX) {\n if (newScrollX < 0) {\n newScrollX = 0;\n } else if (newScrollX > svgWidth) {\n newScrollX = svgWidth;\n }\n setScrollX(newScrollX);\n } else {\n if (newScrollY < 0) {\n newScrollY = 0;\n } else if (newScrollY > ganttFullHeight - ganttHeight) {\n newScrollY = ganttFullHeight - ganttHeight;\n }\n setScrollY(newScrollY);\n }\n setIgnoreScrollEvent(true);\n };\n\n /**\n * Task select event\n */\n const handleSelectedTask = (taskId: string) => {\n const newSelectedTask = barTasks.find(t => t.id === taskId);\n const oldSelectedTask = barTasks.find(\n t => !!selectedTask && t.id === selectedTask.id\n );\n if (onSelect) {\n if (oldSelectedTask) {\n onSelect(oldSelectedTask, false);\n }\n if (newSelectedTask) {\n onSelect(newSelectedTask, true);\n }\n }\n setSelectedTask(newSelectedTask);\n };\n const handleExpanderClick = (task: Task) => {\n if (onExpanderClick && task.hideChildren !== undefined) {\n onExpanderClick({ ...task, hideChildren: !task.hideChildren });\n }\n };\n\n const minStartDate = useMemo(() => {\n if (tasks.length === 0) return new Date();\n let min = tasks[0].start;\n for (const t of tasks) {\n if (t.start < min) min = t.start;\n }\n return min;\n }, [tasks]);\n\n const gridProps: GridProps = {\n columnWidth,\n svgWidth,\n tasks: tasks,\n rowHeight,\n dates: dateSetup.dates,\n todayColor,\n rtl,\n };\n const calendarProps: CalendarProps = {\n dateSetup,\n locale,\n viewMode,\n headerHeight,\n columnWidth,\n fontFamily,\n fontSize,\n rtl,\n startDate: minStartDate,\n };\n const barProps: TaskGanttContentProps = {\n tasks: barTasks,\n dates: dateSetup.dates,\n ganttEvent,\n selectedTask,\n rowHeight,\n taskHeight,\n columnWidth,\n arrowColor,\n timeStep,\n fontFamily,\n fontSize,\n arrowIndent,\n svgWidth,\n rtl,\n setGanttEvent,\n setFailedTask,\n setSelectedTask: handleSelectedTask,\n onDateChange,\n onProgressChange,\n onDoubleClick,\n onClick,\n onDelete,\n };\n\n const tableProps: TaskListProps = {\n rowHeight,\n rowWidth: listCellWidth,\n fontFamily,\n fontSize,\n tasks: barTasks,\n locale,\n headerHeight,\n scrollY,\n ganttHeight,\n horizontalContainerClass: styles.horizontalContainer,\n selectedTask,\n taskListRef,\n setSelectedTask: handleSelectedTask,\n onExpanderClick: handleExpanderClick,\n TaskListHeader,\n TaskListTable,\n };\n return (\n <div>\n <div\n className={styles.wrapper}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n ref={wrapperRef}\n >\n {listCellWidth && <TaskList {...tableProps} />}\n <TaskGantt\n gridProps={gridProps}\n calendarProps={calendarProps}\n barProps={barProps}\n ganttHeight={ganttHeight}\n scrollY={scrollY}\n scrollX={scrollX}\n />\n {ganttEvent.changedTask && (\n <Tooltip\n arrowIndent={arrowIndent}\n rowHeight={rowHeight}\n svgContainerHeight={svgContainerHeight}\n svgContainerWidth={svgContainerWidth}\n fontFamily={fontFamily}\n fontSize={fontSize}\n scrollX={scrollX}\n scrollY={scrollY}\n task={ganttEvent.changedTask}\n headerHeight={headerHeight}\n taskListWidth={taskListWidth}\n TooltipContent={TooltipContent}\n rtl={rtl}\n svgWidth={svgWidth}\n />\n )}\n <VerticalScroll\n ganttFullHeight={ganttFullHeight}\n ganttHeight={ganttHeight}\n headerHeight={headerHeight}\n scroll={scrollY}\n onScroll={handleScrollY}\n rtl={rtl}\n />\n </div>\n <HorizontalScroll\n svgWidth={svgWidth}\n taskListWidth={taskListWidth}\n scroll={scrollX}\n rtl={rtl}\n onScroll={handleScrollX}\n />\n </div>\n );\n};\n"],"names":["ViewMode","intlDTCache","getCachedDateTimeFormat","locString","opts","key","JSON","stringify","dtf","Intl","DateTimeFormat","addToDate","date","quantity","scale","newDate","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","startOfDate","scores","shouldReset","_scale","maxScore","indexOf","ganttDateRange","tasks","viewMode","preStepsCount","newStartDate","start","newEndDate","task","end","Year","QuarterYear","Month","Week","WeeklyMonth","getMonday","Day","QuarterDay","HalfDay","Hour","seedDates","startDate","endDate","currentDate","dates","push","getLocaleMonth","locale","bottomValue","month","format","replace","toLocaleUpperCase","getLocalDayOfWeek","weekday","day","getDay","diff","setDate","getWeekNumberFromDate","current","diffTime","getTime","diffDays","Math","ceil","floor","getWeekNumberISO8601","tmpDate","valueOf","dayNumber","firstThursday","setMonth","weekNumber","toString","length","getDaysInMonth","year","getWeekNumberInMonth","TaskListHeaderDefault","headerHeight","fontFamily","fontSize","rowWidth","React","className","styles","ganttTable","style","ganttTable_Header","height","ganttTable_HeaderItem","minWidth","ganttTable_HeaderSeparator","marginTop","localeDateStringCache","toLocaleDateStringFactory","dateTimeOptions","lds","toLocaleDateString","TaskListTableDefault","rowHeight","onExpanderClick","useMemo","taskListWrapper","map","t","expanderSymbol","hideChildren","taskListTableRow","id","taskListCell","maxWidth","title","name","taskListNameWrapper","taskListExpander","taskListEmptyExpander","onClick","Tooltip","rtl","svgContainerHeight","svgContainerWidth","scrollX","scrollY","arrowIndent","taskListWidth","TooltipContent","tooltipRef","useRef","useState","relatedY","setRelatedY","relatedX","setRelatedX","useEffect","tooltipHeight","offsetHeight","tooltipWidth","offsetWidth","newRelatedY","index","newRelatedX","x1","x2","tooltipLeftmostPoint","fullChartWidth","tooltipLowerPoint","ref","tooltipDetailsContainer","tooltipDetailsContainerHidden","left","top","StandardTooltipContent","tooltipDefaultContainer","tooltipDefaultContainerParagraph","progress","VerticalScroll","scroll","ganttHeight","ganttFullHeight","onScroll","scrollRef","scrollTop","marginLeft","width","TaskList","selectedTask","setSelectedTask","taskListRef","horizontalContainerClass","TaskListHeader","TaskListTable","horizontalContainerRef","headerProps","selectedTaskId","tableProps","GridBody","svgWidth","columnWidth","todayColor","y","gridRows","rowLines","x","y1","y2","gridRowLine","gridRow","now","tickX","ticks","today","i","gridTick","fill","Grid","props","TopPartOfCalendar","value","x1Line","y1Line","y2Line","xText","yText","calendarTopTick","calendarTopText","Calendar","dateSetup","getCalendarValuesForYear","topValues","bottomValues","topDefaultHeight","calendarBottomText","topValue","getCalendarValuesForQuarterYear","quarter","abs","getCalendarValuesForMonth","getCalendarValuesForWeek","weeksCount","getCalendarValuesForWeeklyMonth","nextDate","endDayDate","displayDate","getCalendarValuesForDay","getCalendarValuesForPartOfDay","hour","getCalendarValuesForHour","topPosition","calendarHeader","Arrow","taskFrom","taskTo","taskHeight","path","trianglePoints","drownPathAndTriangleRTL","drownPathAndTriangle","strokeWidth","d","points","indexCompare","taskToEndPosition","taskFromEndPosition","taskFromHorizontalOffsetValue","taskToHorizontalOffsetValue","convertToBarTasks","barCornerRadius","handleWidth","barProgressColor","barProgressSelectedColor","barBackgroundColor","barBackgroundSelectedColor","projectProgressColor","projectProgressSelectedColor","projectBackgroundColor","projectBackgroundSelectedColor","milestoneBackgroundColor","milestoneBackgroundSelectedColor","baselineBackgroundColor","barTasks","convertToBarTask","dependencies","j","dependence","findIndex","barChildren","barTask","type","convertToMilestone","convertToBar","taskXCoordinateRTL","taskXCoordinate","baselineX1","baselineX2","baselineStart","baselineEnd","typeInternal","progressWithByParams","progressWidth","progressX","taskYCoordinate","undefined","backgroundColor","backgroundSelectedColor","progressColor","progressSelectedColor","rotatedHeight","xDate","remainderMillis","percentOfInterval","taskX1","taskX2","progressByX","barWidth","progressPercent","round","progressByXRTL","getProgressPoint","taskY","point","join","startByX","xStep","steps","additionalXValue","newX","endByX","moveByX","newX1","newX2","dateByX","taskX","taskDate","timeStep","getTimezoneOffset","handleTaskBySVGMouseEvent","svgX","action","initEventX1Delta","result","handleTaskBySVGMouseEventForMilestone","handleTaskBySVGMouseEventForBar","changedTask","isChanged","newMoveX1","newMoveX2","isKeyboardEvent","event","removeHiddenTasks","groupedTasks","filter","groupedTask","children","getChildren","taskList","project","taskChildren","forEach","concat","sortTasks","taskA","taskB","orderA","displayOrder","Number","MAX_VALUE","orderB","BarDisplay","isSelected","onMouseDown","getProcessColor","getBarColor","ry","rx","barBackground","BarDateHandle","barHandle","BarProgressHandle","progressPoint","Bar","isProgressChangeable","isDateChangeable","onEventStart","hasBaseline","mainBarHeight","baselineHeight","baselineY","handleHeight","barWrapper","tabIndex","e","BarSmall","Milestone","transform","milestoneWrapper","milestoneBackground","Project","barColor","processColor","projectWith","projectLeftTriangle","projectRightTriangle","projectWrapper","projectBackground","projectTop","TaskItem","isDelete","textRef","taskItem","setTaskItem","isTextInside","setIsTextInside","getBBox","getX","hasChild","onKeyDown","stopPropagation","onMouseEnter","onMouseLeave","onDoubleClick","onFocus","barLabel","barLabelOutside","TaskGanttContent","ganttEvent","svg","arrowColor","setGanttEvent","setFailedTask","onDateChange","onProgressChange","onDelete","createSVGPoint","setXStep","setInitEventX1Delta","isMoving","setIsMoving","dateDelta","newXStep","handleMouseMove","preventDefault","clientX","cursor","matrixTransform","getScreenCTM","inverse","handleMouseUp","operationSuccess","originalSelectedTask","newChangedTask","isNotLikeOriginal","removeEventListener","addEventListener","handleBarEventStart","error","console","stroke","child","isDisabled","TaskGantt","gridProps","calendarProps","barProps","ganttSVGRef","verticalGanttContainerRef","newBarProps","scrollLeft","ganttVerticalContainer","dir","xmlns","horizontalContainer","HorizontalScroll","margin","scrollWrapper","Gantt","listCellWidth","barFill","viewDate","onSelect","wrapperRef","setDateSetup","currentViewDate","setCurrentViewDate","setTaskListWidth","setSvgContainerWidth","setSvgContainerHeight","setBarTasks","failedTask","setScrollY","setScrollX","ignoreScrollEvent","setIgnoreScrollEvent","filteredTasks","sort","newDates","reverse","prevStateTask","find","newTaskList","handleWheel","shiftKey","deltaX","scrollMove","deltaY","newScrollX","newScrollY","passive","handleScrollY","currentTarget","handleScrollX","handleKeyDown","isX","handleSelectedTask","taskId","newSelectedTask","oldSelectedTask","handleExpanderClick","minStartDate","min","wrapper"],"mappings":"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"}
|