@levelcaptech/gantt-task-react-custom 0.4.1 → 0.4.2
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/README.md +64 -9
- package/dist/components/calendar/calendar.d.ts +2 -0
- package/dist/components/grid/grid-body.d.ts +2 -0
- package/dist/helpers/calendar-helper.d.ts +38 -0
- package/dist/helpers/jp-holidays.d.ts +14 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +186 -12
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +186 -12
- package/dist/index.modern.js.map +1 -1
- package/dist/test/calendar-helper.test.d.ts +1 -0
- package/dist/types/public-types.d.ts +43 -0
- package/package.json +1 -1
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/types/public-types.ts","../src/helpers/date-helper.ts","../src/constants/taskOptions.ts","../src/helpers/task-helper.ts","../node_modules/classnames/index.js","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/components/task-list/overlay-editor.tsx","../src/components/task-list/task-list.tsx","../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/grid/grid-body.tsx","../src/components/grid/grid.tsx","../src/components/calendar/top-part-of-calendar.tsx","../src/components/calendar/calendar.tsx","../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":["import { TaskProcessOption, TaskStatusOption } from \"../constants/taskOptions\";\n\nexport type TaskProcess = TaskProcessOption;\nexport type TaskStatus = TaskStatusOption;\nexport type EffortUnit = \"MH\" | \"MD\" | \"MM\";\nexport type VisibleField =\n | \"name\"\n | \"start\"\n | \"end\"\n | \"process\"\n | \"assignee\"\n | \"plannedStart\"\n | \"plannedEnd\"\n | \"plannedEffort\"\n | \"actualEffort\"\n | \"status\";\n\nexport type CellCommitTrigger = \"enter\";\n\nexport type CellCommitPayload = {\n rowId: string;\n columnId: VisibleField;\n value: string;\n trigger: CellCommitTrigger;\n};\n\nexport type ColumnState = {\n id: VisibleField;\n label: string;\n width: number;\n minWidth: number;\n visible: boolean;\n};\n\nexport type ColumnsState = ColumnState[];\n\nexport 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 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 * 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 process?: TaskProcess;\n assignee?: string;\n plannedStart?: Date;\n plannedEnd?: Date;\n plannedEffort?: number;\n actualEffort?: number;\n status?: TaskStatus;\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 * Invokes when task list fields are updated (process, status, planned dates, assignee, effort).\n */\n onTaskUpdate?: (taskId: string, updatedFields: Partial<Task>) => void;\n /**\n * Invokes when a task list cell edit is committed.\n * Notification only; the library does not update tasks or UI.\n * Host must validate/persist, update tasks, and pass new props for rerender.\n */\n onCellCommit?: (payload: CellCommitPayload) => Promise<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 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 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 visibleFields?: VisibleField[];\n effortDisplayUnit?: EffortUnit;\n enableColumnDrag?: boolean;\n TooltipContent?: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n effortDisplayUnit?: EffortUnit;\n }>;\n TaskListHeader?: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n visibleFields: VisibleField[];\n columnsState?: ColumnsState;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableColumnDrag?: boolean;\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 visibleFields: VisibleField[];\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n effortDisplayUnit: EffortUnit;\n columnsState?: ColumnsState;\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 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 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 */\nconst 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 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","export const TASK_PROCESS_OPTIONS = [\n \"設計\",\n \"開発\",\n \"テスト\",\n \"レビュー\",\n \"リリース\",\n \"その他\",\n] as const;\n\nexport const TASK_STATUS_OPTIONS = [\"未着手\", \"進行中\", \"完了\", \"保留\"] as const;\n\nexport type TaskProcessOption = (typeof TASK_PROCESS_OPTIONS)[number];\nexport type TaskStatusOption = (typeof TASK_STATUS_OPTIONS)[number];\n\nexport const TASK_STATUS_COLORS: Record<TaskStatusOption, string> = {\n 未着手: \"#9e9e9e\",\n 進行中: \"#2196f3\",\n 完了: \"#4caf50\",\n 保留: \"#ff9800\",\n};\n\nexport const TASK_STATUS_BADGE_TEXT: Record<TaskStatusOption, string> = {\n 未着手: \"未\",\n 進行中: \"進\",\n 完了: \"完\",\n 保留: \"保\",\n};\n","import {\n TASK_PROCESS_OPTIONS,\n TASK_STATUS_BADGE_TEXT,\n TASK_STATUS_COLORS,\n TASK_STATUS_OPTIONS,\n} from \"../constants/taskOptions\";\nimport { EffortUnit, TaskProcess, TaskStatus, VisibleField } from \"../types/public-types\";\n\nexport const DEFAULT_VISIBLE_FIELDS: VisibleField[] = [\n \"name\",\n \"start\",\n \"end\",\n \"process\",\n \"assignee\",\n \"plannedStart\",\n \"plannedEnd\",\n \"plannedEffort\",\n \"actualEffort\",\n \"status\",\n];\n\nconst padTwo = (value: number) => value.toString().padStart(2, \"0\");\n\nexport const formatDate = (date?: Date) => {\n if (!date) return \"\";\n return `${date.getFullYear()}-${padTwo(date.getMonth() + 1)}-${padTwo(\n date.getDate()\n )}`;\n};\n\nexport const parseDateFromInput = (value: string) => {\n if (!value) return undefined;\n const [year, month, day] = value.split(\"-\").map(v => parseInt(v, 10));\n if (\n Number.isNaN(year) ||\n Number.isNaN(month) ||\n Number.isNaN(day) ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31 /* 31日超を除外し、月ごとの上限(例: 2月30日)はDateコンストラクタの正規化+ラウンドトリップ比較で検証 */\n ) {\n return undefined;\n }\n const date = new Date(year, month - 1, day);\n if (\n Number.isNaN(date.getTime()) ||\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return undefined;\n }\n return date;\n};\n\nexport const formatEffort = (\n effort?: number,\n unit: EffortUnit = \"MH\"\n): string => {\n if (effort === undefined || effort === null || !Number.isFinite(effort) || effort < 0) {\n return \"\";\n }\n const base =\n unit === \"MD\" ? 8 : unit === \"MM\" ? 160 : 1; /* MD:8h, MM:160h */\n const converted = effort / base;\n const rounded =\n unit === \"MH\" ? effort : Math.round(converted * 10) / 10;\n return `${rounded}${unit}`;\n};\n\nexport const sanitizeEffortInput = (value: string) => {\n if (value === \"\") return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || parsed < 0) return undefined;\n return parsed;\n};\n\nconst DEFAULT_TASK_PROCESS: TaskProcess = (\n TASK_PROCESS_OPTIONS.includes(\"その他\")\n ? \"その他\"\n : TASK_PROCESS_OPTIONS[0]\n) as TaskProcess;\n\nexport const normalizeProcess = (process?: TaskProcess) =>\n TASK_PROCESS_OPTIONS.includes(process as TaskProcess)\n ? (process as TaskProcess)\n : DEFAULT_TASK_PROCESS;\n\nexport const normalizeStatus = (status?: TaskStatus) =>\n TASK_STATUS_OPTIONS.includes(status as TaskStatus)\n ? (status as TaskStatus)\n : TASK_STATUS_OPTIONS[0];\n\nexport const getStatusColor = (status?: TaskStatus) =>\n TASK_STATUS_COLORS[normalizeStatus(status)];\n\nexport const getStatusBadgeText = (status?: TaskStatus) =>\n TASK_STATUS_BADGE_TEXT[normalizeStatus(status)];\n\nexport const resolveVisibleFields = (visibleFields?: VisibleField[]) =>\n visibleFields && visibleFields.length > 0\n ? visibleFields\n : DEFAULT_VISIBLE_FIELDS;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\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, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./task-list-table.module.css\";\nimport {\n TASK_PROCESS_OPTIONS,\n TASK_STATUS_OPTIONS,\n} from \"../../constants/taskOptions\";\nimport { CellCommitTrigger, VisibleField } from \"../../types/public-types\";\n\ntype EditingState = {\n mode: \"viewing\" | \"selected\" | \"editing\";\n rowId: string | null;\n columnId: VisibleField | null;\n pending: boolean;\n errorMessage: string | null;\n};\n\ntype OverlayRect = {\n top: number;\n left: number;\n width: number;\n height: number;\n};\n\ntype OverlayEditorProps = {\n editingState: EditingState;\n taskListRef: React.RefObject<HTMLDivElement>;\n headerContainerRef?: React.RefObject<HTMLDivElement>;\n bodyContainerRef?: React.RefObject<HTMLDivElement>;\n onCommit: (value: string, trigger: CellCommitTrigger) => Promise<void>;\n onCancel: (reason: \"escape\" | \"nochange-blur\" | \"unmounted\") => void;\n};\n\ntype OverlayInputType = \"text\" | \"date\" | \"number\" | \"select\";\n\nconst NULL_CHAR_REGEX = new RegExp(String.fromCharCode(0), \"g\");\nconst ALPHANUMERIC_REGEX = /[a-zA-Z0-9]/;\n\nconst resolveOverlayInputType = (\n columnId: VisibleField | null\n): OverlayInputType => {\n switch (columnId) {\n case \"start\":\n case \"end\":\n case \"plannedStart\":\n case \"plannedEnd\":\n return \"date\";\n case \"plannedEffort\":\n case \"actualEffort\":\n return \"number\";\n case \"process\":\n case \"status\":\n return \"select\";\n case \"name\":\n case \"assignee\":\n default:\n return \"text\";\n }\n};\n\nconst escapeSelectorValue = (value: string) => {\n if (typeof CSS !== \"undefined\" && typeof CSS.escape === \"function\") {\n return CSS.escape(value);\n }\n const sanitized = value.replace(NULL_CHAR_REGEX, \"\\uFFFD\");\n return Array.from(sanitized)\n .map((char, index) => {\n const codePoint = char.codePointAt(0);\n if (codePoint === undefined) {\n return \"\";\n }\n if (\n (codePoint >= 0x1 && codePoint <= 0x1f) ||\n codePoint === 0x7f ||\n (index === 0 && codePoint >= 0x30 && codePoint <= 0x39) ||\n (index === 1 &&\n codePoint >= 0x30 &&\n codePoint <= 0x39 &&\n sanitized.charCodeAt(0) === 0x2d)\n ) {\n return `\\\\${codePoint.toString(16)} `;\n }\n if (char === \"-\" || char === \"_\" || ALPHANUMERIC_REGEX.test(char)) {\n return char;\n }\n return `\\\\${char}`;\n })\n .join(\"\");\n};\n\nexport const OverlayEditor: React.FC<OverlayEditorProps> = ({\n editingState,\n taskListRef,\n headerContainerRef,\n bodyContainerRef,\n onCommit,\n onCancel,\n}) => {\n const [rect, setRect] = useState<OverlayRect | null>(null);\n const [targetElement, setTargetElement] = useState<HTMLElement | null>(null);\n const inputRef = useRef<HTMLInputElement | HTMLSelectElement | null>(null);\n const defaultValueRef = useRef(\"\");\n const compositionRef = useRef(false);\n const rafIdRef = useRef<number | null>(null);\n\n const inputType = useMemo(\n () => resolveOverlayInputType(editingState.columnId),\n [editingState.columnId]\n );\n const selectOptions = useMemo<readonly string[]>(() => {\n if (editingState.columnId === \"process\") {\n return TASK_PROCESS_OPTIONS;\n }\n if (editingState.columnId === \"status\") {\n return TASK_STATUS_OPTIONS;\n }\n return [];\n }, [editingState.columnId]);\n\n const portalRoot = useMemo(() => {\n if (typeof document === \"undefined\") {\n return null;\n }\n return document.body;\n }, []);\n\n const resolveDefaultValue = useCallback((target: HTMLElement) => {\n const input = target.querySelector(\"input, textarea, select\");\n if (input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement) {\n return input.value;\n }\n if (input instanceof HTMLSelectElement) {\n return input.value;\n }\n return (target.textContent ?? \"\").trim();\n }, []);\n\n const findTargetElement = useCallback(() => {\n if (!taskListRef.current || !editingState.rowId || !editingState.columnId) {\n return null;\n }\n const rowId = escapeSelectorValue(editingState.rowId);\n const columnId = escapeSelectorValue(editingState.columnId);\n return taskListRef.current.querySelector<HTMLElement>(\n `[data-row-id=\"${rowId}\"][data-column-id=\"${columnId}\"]`\n );\n }, [editingState.columnId, editingState.rowId, taskListRef]);\n\n const updateRect = useCallback(() => {\n if (editingState.mode !== \"editing\") {\n setRect(null);\n setTargetElement(null);\n return;\n }\n const target = findTargetElement();\n if (!target) {\n setRect(null);\n setTargetElement(null);\n onCancel(\"unmounted\");\n return;\n }\n if (targetElement !== target) {\n const nextDefaultValue = resolveDefaultValue(target);\n defaultValueRef.current = nextDefaultValue;\n if (inputRef.current) {\n inputRef.current.value = nextDefaultValue;\n }\n setTargetElement(target);\n }\n const nextRect = target.getBoundingClientRect();\n setRect({\n top: Math.round(nextRect.top),\n left: Math.round(nextRect.left),\n width: Math.round(nextRect.width),\n height: Math.round(nextRect.height),\n });\n }, [\n editingState.mode,\n findTargetElement,\n onCancel,\n resolveDefaultValue,\n targetElement,\n ]);\n\n const scheduleRectUpdate = useCallback(() => {\n if (rafIdRef.current !== null) {\n return;\n }\n rafIdRef.current = window.requestAnimationFrame(() => {\n rafIdRef.current = null;\n updateRect();\n });\n }, [updateRect]);\n\n useEffect(() => {\n if (editingState.mode !== \"editing\") {\n defaultValueRef.current = \"\";\n compositionRef.current = false;\n setRect(null);\n setTargetElement(null);\n return;\n }\n scheduleRectUpdate();\n }, [editingState.mode, scheduleRectUpdate]);\n\n useEffect(() => {\n if (editingState.mode !== \"editing\") {\n return undefined;\n }\n const handleScroll = () => scheduleRectUpdate();\n const handleResize = () => scheduleRectUpdate();\n window.addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true,\n });\n window.addEventListener(\"resize\", handleResize, { capture: true });\n document.addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true,\n });\n const scrollTargets = [\n taskListRef.current,\n bodyContainerRef?.current,\n headerContainerRef?.current,\n ].filter(Boolean);\n scrollTargets.forEach(element =>\n (element as HTMLElement).addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true,\n })\n );\n const ResizeObserverConstructor =\n typeof window !== \"undefined\"\n ? (\n window as typeof window & {\n ResizeObserver?: new (callback: (entries: Array<{ target: Element }>) => void) => {\n observe: (target: Element) => void;\n disconnect: () => void;\n };\n }\n ).ResizeObserver\n : undefined;\n const resizeObserver = ResizeObserverConstructor\n ? new ResizeObserverConstructor(() => scheduleRectUpdate())\n : null;\n const observedElements = [\n targetElement,\n taskListRef.current,\n bodyContainerRef?.current,\n headerContainerRef?.current,\n ].filter(Boolean);\n observedElements.forEach(element =>\n resizeObserver?.observe(element as HTMLElement)\n );\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n window.removeEventListener(\"resize\", handleResize, { capture: true });\n document.removeEventListener(\"scroll\", handleScroll, { capture: true });\n scrollTargets.forEach(element =>\n (element as HTMLElement).removeEventListener(\"scroll\", handleScroll, {\n capture: true,\n })\n );\n resizeObserver?.disconnect();\n };\n }, [\n bodyContainerRef,\n editingState.mode,\n headerContainerRef,\n scheduleRectUpdate,\n targetElement,\n taskListRef,\n ]);\n\n useEffect(() => {\n return () => {\n if (rafIdRef.current !== null) {\n window.cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (editingState.mode !== \"editing\") {\n return;\n }\n const input = inputRef.current;\n if (!input) {\n return;\n }\n if (editingState.pending) {\n input.focus();\n return;\n }\n input.focus();\n if (input instanceof HTMLInputElement) {\n input.select();\n }\n }, [editingState.mode, editingState.pending, targetElement]);\n\n const handleCommit = useCallback(async () => {\n if (editingState.pending) {\n return;\n }\n const input = inputRef.current;\n if (!input) {\n return;\n }\n await onCommit(input.value, \"enter\");\n }, [editingState.pending, onCommit]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement | HTMLSelectElement>) => {\n if (editingState.pending) {\n if (event.key === \"Escape\" || event.key === \"Enter\") {\n event.preventDefault();\n }\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n void handleCommit();\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n onCancel(\"escape\");\n }\n },\n [editingState.pending, handleCommit, onCancel]\n );\n\n const handleBlur = useCallback(() => {\n if (editingState.pending || compositionRef.current) {\n return;\n }\n const input = inputRef.current;\n if (!input) {\n return;\n }\n if (input.value === defaultValueRef.current) {\n onCancel(\"nochange-blur\");\n }\n }, [editingState.pending, onCancel]);\n\n const handleInput = useCallback(\n (event: React.FormEvent<HTMLInputElement | HTMLSelectElement>) => {\n if (!editingState.pending) {\n return;\n }\n const input = event.currentTarget;\n input.value = defaultValueRef.current;\n },\n [editingState.pending]\n );\n\n const handleCompositionStart = () => {\n compositionRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n compositionRef.current = false;\n };\n\n const handleInputElementRef = useCallback(\n (element: HTMLInputElement | HTMLSelectElement | null) => {\n inputRef.current = element;\n },\n []\n );\n\n if (editingState.mode !== \"editing\" || !rect || !portalRoot) {\n return null;\n }\n\n return createPortal(\n <div\n className={`${styles.overlayEditor} ${\n editingState.pending ? styles.overlayEditorPending : \"\"\n }`}\n data-testid=\"overlay-editor\"\n style={{\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n }}\n >\n {inputType === \"select\" ? (\n <select\n className={styles.taskListSelect}\n data-testid=\"overlay-editor-input\"\n aria-label=\"セル編集\"\n defaultValue={defaultValueRef.current}\n style={{ height: \"100%\" }}\n ref={handleInputElementRef}\n disabled={editingState.pending}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onInput={handleInput}\n onChange={handleInput}\n >\n {selectOptions.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n ) : (\n <input\n className={styles.taskListInput}\n data-testid=\"overlay-editor-input\"\n type={inputType}\n aria-label=\"セル編集\"\n defaultValue={defaultValueRef.current}\n style={{ height: \"100%\" }}\n ref={handleInputElementRef}\n readOnly={editingState.pending}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onInput={handleInput}\n onChange={handleInput}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n />\n )}\n {editingState.errorMessage && (\n <div className={styles.overlayEditorError} role=\"alert\">\n {editingState.errorMessage}\n </div>\n )}\n </div>,\n portalRoot\n );\n};\n","import React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\nimport {\n CellCommitPayload,\n ColumnState,\n ColumnsState,\n EffortUnit,\n Task,\n VisibleField,\n} from \"../../types/public-types\";\nimport { OverlayEditor } from \"./overlay-editor\";\n\nexport type EditingTrigger = \"dblclick\" | \"enter\" | \"key\";\ntype CommitTrigger = CellCommitPayload[\"trigger\"];\ntype EditingMode = \"viewing\" | \"selected\" | \"editing\";\ntype EditingState = {\n mode: EditingMode;\n rowId: string | null;\n columnId: VisibleField | null;\n trigger: EditingTrigger | null;\n pending: boolean;\n errorMessage: string | null;\n};\n\ntype EditingStateContextValue = {\n editingState: EditingState;\n selectCell: (rowId: string, columnId: VisibleField) => void;\n startEditing: (rowId: string, columnId: VisibleField, trigger: EditingTrigger) => void;\n};\n\nexport const TaskListEditingStateContext =\n React.createContext<EditingStateContextValue | null>(null);\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 horizontalScroll?: number;\n visibleFields: VisibleField[];\n effortDisplayUnit: EffortUnit;\n tasks: Task[];\n taskListRef: React.RefObject<HTMLDivElement>;\n headerContainerRef?: React.RefObject<HTMLDivElement>;\n bodyContainerRef?: React.RefObject<HTMLDivElement>;\n horizontalContainerClass?: string;\n selectedTask: BarTask | undefined;\n setSelectedTask: (task: string) => void;\n onExpanderClick: (task: Task) => void;\n onHorizontalScroll?: (event: SyntheticEvent<HTMLDivElement>) => void;\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n onCellCommit?: (payload: CellCommitPayload) => Promise<void>;\n TaskListHeader: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n visibleFields: VisibleField[];\n columnsState?: ColumnsState;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableColumnDrag?: boolean;\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 visibleFields: VisibleField[];\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n onCellCommit?: (payload: CellCommitPayload) => Promise<void>;\n effortDisplayUnit: EffortUnit;\n columnsState?: ColumnsState;\n }>;\n enableColumnDrag?: boolean;\n};\n\nexport const DEFAULT_MIN_WIDTH = 32;\nexport const getDefaultWidth = (field: VisibleField, rowWidth: string): number =>\n field === \"name\" ? 140 : Number.parseInt(rowWidth, 10) || 155;\n\nexport const TaskList: React.FC<TaskListProps> = ({\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n rowHeight,\n scrollY,\n horizontalScroll = 0,\n tasks,\n selectedTask,\n setSelectedTask,\n onExpanderClick,\n ganttHeight,\n taskListRef,\n headerContainerRef,\n bodyContainerRef,\n horizontalContainerClass,\n TaskListHeader,\n TaskListTable,\n visibleFields,\n onUpdateTask,\n onCellCommit,\n effortDisplayUnit,\n enableColumnDrag = true,\n onHorizontalScroll,\n}) => {\n const internalHorizontalRef = useRef<HTMLDivElement>(null);\n const internalHeaderRef = useRef<HTMLDivElement>(null);\n const horizontalContainerRef = bodyContainerRef ?? internalHorizontalRef;\n const headerRef = headerContainerRef ?? internalHeaderRef;\n useEffect(() => {\n if (horizontalContainerRef.current) {\n horizontalContainerRef.current.scrollTop = scrollY;\n }\n }, [scrollY, horizontalContainerRef]);\n\n useEffect(() => {\n if (horizontalContainerRef.current) {\n horizontalContainerRef.current.scrollLeft = horizontalScroll;\n }\n if (headerRef.current) {\n headerRef.current.scrollLeft = horizontalScroll;\n }\n }, [horizontalScroll, horizontalContainerRef, headerRef]);\n\n const initialColumns = useMemo<ColumnsState>(\n () =>\n visibleFields.map(\n (field): ColumnState => ({\n id: field,\n label: field,\n width: getDefaultWidth(field, rowWidth),\n minWidth: DEFAULT_MIN_WIDTH,\n visible: true,\n })\n ),\n [visibleFields, rowWidth]\n );\n\n const [columnsState, setColumnsState] = useState<ColumnsState>(initialColumns);\n\n useEffect(() => {\n setColumnsState(prev => {\n const existingMap = new Map(prev.map(column => [column.id, column]));\n const nextColumns: ColumnsState = visibleFields.map(field => {\n const existing = existingMap.get(field);\n if (existing) {\n return existing;\n }\n return {\n id: field,\n label: field,\n width: getDefaultWidth(field, rowWidth),\n minWidth: DEFAULT_MIN_WIDTH,\n visible: true,\n };\n });\n return nextColumns;\n });\n }, [visibleFields, rowWidth]);\n const visibleColumns = useMemo(\n () => columnsState.filter(column => column.visible),\n [columnsState]\n );\n\n const headerProps = {\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n visibleFields,\n columnsState,\n setColumnsState,\n enableColumnDrag,\n };\n const selectedTaskId = selectedTask ? selectedTask.id : \"\";\n const tableProps = {\n rowHeight,\n rowWidth,\n fontFamily,\n fontSize,\n tasks,\n selectedTaskId: selectedTaskId,\n setSelectedTask,\n onExpanderClick,\n visibleFields,\n onUpdateTask,\n onCellCommit,\n effortDisplayUnit,\n columnsState: visibleColumns,\n };\n\n const [editingState, setEditingState] = useState<EditingState>({\n mode: \"viewing\",\n rowId: null,\n columnId: null,\n trigger: null,\n pending: false,\n errorMessage: null,\n });\n const previousEditingStateRef = useRef<EditingState | null>(null);\n\n const closeEditing = useCallback(() => {\n setEditingState(prev => {\n if (prev.mode === \"viewing\") {\n return prev;\n }\n return {\n mode: \"viewing\",\n rowId: null,\n columnId: null,\n trigger: null,\n pending: false,\n errorMessage: null,\n };\n });\n }, []);\n const mountedRef = useRef(true);\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const cancelEditing = useCallback(\n (reason: \"escape\" | \"nochange-blur\" | \"unmounted\") => {\n if (editingState.mode !== \"editing\") {\n return;\n }\n console.debug(\"[edit:cancel]\", {\n rowId: editingState.rowId,\n columnId: editingState.columnId,\n reason,\n });\n closeEditing();\n },\n [closeEditing, editingState.columnId, editingState.mode, editingState.rowId]\n );\n\n const commitEditing = useCallback(\n async (value: string, trigger: CommitTrigger) => {\n if (!onCellCommit) {\n return;\n }\n if (editingState.mode !== \"editing\" || editingState.pending) {\n return;\n }\n if (!editingState.rowId || !editingState.columnId) {\n return;\n }\n const rowId = editingState.rowId;\n const columnId = editingState.columnId;\n setEditingState(prev => {\n if (\n prev.mode !== \"editing\" ||\n prev.pending ||\n prev.rowId !== rowId ||\n prev.columnId !== columnId\n ) {\n return prev;\n }\n return { ...prev, pending: true, errorMessage: null };\n });\n try {\n await onCellCommit({ rowId, columnId, value, trigger });\n if (!mountedRef.current) {\n return;\n }\n setEditingState(prev => {\n if (\n prev.mode !== \"editing\" ||\n prev.rowId !== rowId ||\n prev.columnId !== columnId\n ) {\n return prev;\n }\n return {\n mode: \"viewing\",\n rowId: null,\n columnId: null,\n trigger: null,\n pending: false,\n errorMessage: null,\n };\n });\n } catch (error) {\n console.error(\"[commit:error]\", {\n rowId,\n columnId,\n trigger,\n message: error instanceof Error ? error.message : \"unknown\",\n });\n if (!mountedRef.current) {\n return;\n }\n setEditingState(prev => {\n if (\n prev.mode !== \"editing\" ||\n prev.rowId !== rowId ||\n prev.columnId !== columnId\n ) {\n return prev;\n }\n return {\n ...prev,\n pending: false,\n errorMessage: \"Commit failed. Please retry.\",\n };\n });\n }\n },\n [editingState, onCellCommit]\n );\n\n const selectCell = useCallback((rowId: string, columnId: VisibleField) => {\n console.debug(\"[TaskList] select cell\", { rowId, columnId });\n setEditingState({\n mode: \"selected\",\n rowId,\n columnId,\n trigger: null,\n pending: false,\n errorMessage: null,\n });\n }, []);\n\n const startEditing = useCallback(\n (rowId: string, columnId: VisibleField, trigger: EditingTrigger) => {\n if (editingState.pending) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"pending\",\n rowId,\n columnId,\n });\n return;\n }\n console.debug(\"[TaskList] enter editing\", { rowId, columnId, trigger });\n setEditingState({\n mode: \"editing\",\n rowId,\n columnId,\n trigger,\n pending: false,\n errorMessage: null,\n });\n },\n [editingState.pending]\n );\n\n useEffect(() => {\n const previous = previousEditingStateRef.current;\n if (previous) {\n const buildLogContext = () => ({\n rowId: editingState.rowId ?? previous.rowId,\n columnId: editingState.columnId ?? previous.columnId,\n trigger: editingState.trigger ?? previous.trigger,\n });\n if (previous.mode !== \"editing\" && editingState.mode === \"editing\") {\n console.log(\"[edit:start]\", buildLogContext());\n }\n if (!previous.pending && editingState.pending) {\n console.log(\"[commit:start]\", buildLogContext());\n }\n if (previous.pending && !editingState.pending) {\n const logContext = buildLogContext();\n if (editingState.mode === \"editing\") {\n console.log(\"[commit:reject]\", logContext);\n } else {\n console.log(\"[commit:resolve]\", logContext);\n }\n }\n if (previous.mode === \"editing\" && editingState.mode !== \"editing\") {\n console.log(\"[edit:end]\", { ...buildLogContext(), to: editingState.mode });\n }\n }\n previousEditingStateRef.current = editingState;\n }, [editingState]);\n\n const editingContextValue = useMemo(\n () => ({\n editingState,\n selectCell,\n startEditing,\n }),\n [editingState, selectCell, startEditing]\n );\n\n return (\n <div ref={taskListRef}>\n <OverlayEditor\n editingState={editingState}\n taskListRef={taskListRef}\n headerContainerRef={headerRef}\n bodyContainerRef={horizontalContainerRef}\n onCommit={commitEditing}\n onCancel={cancelEditing}\n />\n <div\n ref={headerRef}\n onScroll={onHorizontalScroll}\n style={{ width: \"100%\", overflowX: \"hidden\" }}\n >\n <TaskListHeader {...headerProps} />\n </div>\n <div\n ref={horizontalContainerRef}\n className={horizontalContainerClass}\n style={ganttHeight ? { height: ganttHeight } : {}}\n onScroll={onHorizontalScroll}\n >\n <TaskListEditingStateContext.Provider value={editingContextValue}>\n <TaskListTable {...tableProps} />\n </TaskListEditingStateContext.Provider>\n </div>\n </div>\n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { resolveVisibleFields } from \"../../helpers/task-helper\";\nimport {\n ColumnState,\n ColumnsState,\n VisibleField,\n} from \"../../types/public-types\";\nimport styles from \"./task-list-header.module.css\";\nimport classNames from \"classnames\";\nimport { getDefaultWidth, DEFAULT_MIN_WIDTH } from \"./task-list\";\nimport {\n DndContext,\n DragEndEvent,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n arrayMove,\n useSortable,\n horizontalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nexport const TaskListHeaderDefault: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n visibleFields: VisibleField[];\n columnsState?: ColumnsState;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableColumnDrag?: boolean;\n}> = ({\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n visibleFields,\n columnsState,\n setColumnsState,\n enableColumnDrag = true,\n}) => {\n const labels: Record<VisibleField, string> = {\n name: \"タスク名\",\n start: \"開始日\",\n end: \"終了日\",\n process: \"工程\",\n assignee: \"担当者\",\n plannedStart: \"予定開始\",\n plannedEnd: \"予定終了\",\n plannedEffort: \"予定工数\",\n actualEffort: \"実績工数\",\n status: \"ステータス\",\n };\n const fallbackColumns = resolveVisibleFields(visibleFields).map(\n (field): ColumnState => ({\n id: field,\n label: labels[field],\n width: getDefaultWidth(field, rowWidth),\n minWidth: DEFAULT_MIN_WIDTH,\n visible: true,\n })\n );\n const resolvedColumns = useMemo(\n () =>\n (columnsState || fallbackColumns).filter(column => column.visible !== false),\n [columnsState, fallbackColumns]\n );\n const sensors = useSensors(useSensor(PointerSensor));\n const [resizingId, setResizingId] = useState<string | null>(null);\n const onDragEnd = (event: DragEndEvent) => {\n if (!setColumnsState || !enableColumnDrag) return;\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n setColumnsState(prev => {\n const visible = prev.filter(column => column.visible !== false);\n const oldIndex = visible.findIndex(column => column.id === active.id);\n const newIndex = visible.findIndex(column => column.id === over.id);\n if (oldIndex < 0 || newIndex < 0) return prev;\n const moved = arrayMove(visible, oldIndex, newIndex);\n let idx = 0;\n return prev.map(column =>\n column.visible !== false ? moved[idx++] : column\n );\n });\n };\n const headerContent = (\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 {resolvedColumns.map((column, index) => (\n <React.Fragment key={column.id}>\n <SortableHeaderItem\n column={column}\n labels={labels}\n setColumnsState={setColumnsState}\n enableDrag={enableColumnDrag && !!setColumnsState}\n setResizingId={setResizingId}\n isResizing={resizingId === column.id}\n />\n {index !== resolvedColumns.length - 1 && (\n <div\n className={styles.ganttTable_HeaderSeparator}\n style={{\n height: headerHeight * 0.5,\n marginTop: headerHeight * 0.2,\n }}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n\n return (\n <DndContext sensors={sensors} onDragEnd={enableColumnDrag ? onDragEnd : undefined}>\n <SortableContext\n items={resolvedColumns.map(column => column.id)}\n strategy={horizontalListSortingStrategy}\n >\n {headerContent}\n </SortableContext>\n </DndContext>\n );\n};\n\nconst SortableHeaderItem: React.FC<{\n column: ColumnState;\n labels: Record<VisibleField, string>;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableDrag: boolean;\n setResizingId: (id: string | null) => void;\n isResizing: boolean;\n}> = ({ column, labels, setColumnsState, enableDrag, setResizingId, isResizing }) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({\n id: column.id,\n disabled: !enableDrag,\n });\n const startXRef = useRef<number | null>(null);\n const startWidthRef = useRef<number | null>(null);\n const moveHandlerRef = useRef<((event: MouseEvent) => void) | null>(null);\n const upHandlerRef = useRef<(() => void) | null>(null);\n\n useEffect(() => {\n return () => {\n if (moveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", moveHandlerRef.current);\n moveHandlerRef.current = null;\n }\n if (upHandlerRef.current) {\n document.removeEventListener(\"mouseup\", upHandlerRef.current);\n upHandlerRef.current = null;\n }\n };\n }, []);\n\n const style: React.CSSProperties = {\n minWidth: column.width,\n maxWidth: column.width,\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const onMouseDownResize: React.MouseEventHandler<HTMLDivElement> = event => {\n event.stopPropagation();\n event.preventDefault();\n startXRef.current = event.clientX;\n startWidthRef.current = column.width;\n setResizingId(column.id);\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (startXRef.current == null || startWidthRef.current == null) return;\n const delta = moveEvent.clientX - startXRef.current;\n const nextWidth = Math.max(column.minWidth, startWidthRef.current + delta);\n setColumnsState?.(prev =>\n prev.map(item =>\n item.id === column.id ? { ...item, width: nextWidth } : item\n )\n );\n };\n\n const handleMouseUp = () => {\n startXRef.current = null;\n startWidthRef.current = null;\n setResizingId(null);\n if (moveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", moveHandlerRef.current);\n moveHandlerRef.current = null;\n }\n if (upHandlerRef.current) {\n document.removeEventListener(\"mouseup\", upHandlerRef.current);\n upHandlerRef.current = null;\n }\n };\n\n moveHandlerRef.current = handleMouseMove;\n upHandlerRef.current = handleMouseUp;\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n ref={setNodeRef}\n className={classNames(styles.ganttTable_HeaderItem, {\n [styles.ganttTable_HeaderItemDragging]: isDragging,\n })}\n style={style}\n >\n <div\n className={classNames(styles.ganttTable_DragHandle, {\n [styles.ganttTable_DragHandleDisabled]: !enableDrag,\n })}\n {...attributes}\n {...listeners}\n aria-label=\"Drag column\"\n onMouseDown={event => event.stopPropagation()}\n >\n <span className={styles.ganttTable_DragIcon} aria-hidden=\"true\">\n ⋮⋮\n </span>\n </div>\n <div className={styles.ganttTable_HeaderLabel}>{labels[column.id]}</div>\n <div\n className={classNames(styles.ganttTable_ResizeHandle, {\n [styles.ganttTable_ResizeHandleActive]: isResizing,\n })}\n onMouseDown={onMouseDownResize}\n aria-label=\"Resize column\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"./task-list-table.module.css\";\nimport { ColumnsState, EffortUnit, Task, VisibleField } from \"../../types/public-types\";\nimport { getDefaultWidth, TaskListEditingStateContext } from \"./task-list\";\nimport {\n formatDate,\n formatEffort,\n getStatusBadgeText,\n getStatusColor,\n normalizeProcess,\n normalizeStatus,\n resolveVisibleFields,\n} from \"../../helpers/task-helper\";\n\nexport const TaskListTableDefault: React.FC<{\n rowHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n tasks: Task[];\n selectedTaskId: string;\n setSelectedTask: (taskId: string) => void;\n onExpanderClick: (task: Task) => void;\n visibleFields: VisibleField[];\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n onCellCommit?: (payload: {\n rowId: string;\n columnId: VisibleField;\n value: string;\n trigger: \"enter\";\n }) => Promise<void>;\n effortDisplayUnit: EffortUnit;\n columnsState?: ColumnsState;\n}> = ({\n rowHeight,\n rowWidth,\n tasks,\n fontFamily,\n fontSize,\n onExpanderClick,\n visibleFields,\n onCellCommit,\n effortDisplayUnit,\n columnsState,\n}) => {\n const columns =\n columnsState?.filter(column => column.visible !== false) ??\n resolveVisibleFields(visibleFields).map(field => ({\n id: field,\n width: getDefaultWidth(field, rowWidth),\n }));\n const isCommitEnabled = !!onCellCommit;\n const allowEditing = isCommitEnabled;\n const editingContext = React.useContext(TaskListEditingStateContext);\n const editingState = editingContext?.editingState;\n const editableFields = new Set<VisibleField>([\n \"name\",\n \"start\",\n \"end\",\n \"process\",\n \"assignee\",\n \"plannedStart\",\n \"plannedEnd\",\n \"plannedEffort\",\n \"actualEffort\",\n \"status\",\n ]);\n const columnIds = columns.map(column =>\n typeof column === \"string\" ? column : column.id\n );\n\n const resolveColumnId = (column: (typeof columns)[number]) =>\n (typeof column === \"string\" ? column : column.id) as VisibleField;\n\n const isCellEditable = (task: Task, columnId: VisibleField) => {\n const tableEditable = allowEditing;\n const columnEditable = editableFields.has(columnId);\n const rowEditable = task.isDisabled !== true;\n const cellEditableByRule = true;\n return tableEditable && columnEditable && rowEditable && cellEditableByRule;\n };\n\n const selectCell = editingContext?.selectCell;\n const startEditing = editingContext?.startEditing;\n\n const findCellPosition = () => {\n if (!editingState || editingState.mode === \"viewing\") {\n return null;\n }\n const rowIndex = tasks.findIndex(task => task.id === editingState.rowId);\n const columnIndex = columnIds.indexOf(editingState.columnId as VisibleField);\n if (rowIndex < 0 || columnIndex < 0) {\n return null;\n }\n return { rowIndex, columnIndex };\n };\n\n const resolveSelectedCell = () => {\n if (!editingState || editingState.mode !== \"selected\") {\n return null;\n }\n const columnId = editingState.columnId as VisibleField | null;\n if (!columnId || !columnIds.includes(columnId)) {\n return null;\n }\n const task = tasks.find(row => row.id === editingState.rowId);\n if (!task) {\n return null;\n }\n return { task, columnId };\n };\n\n const moveSelection = (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n if (!selectCell || tasks.length === 0 || columnIds.length === 0) {\n return;\n }\n const position = findCellPosition();\n if (!position) {\n const firstColumn = columnIds[0];\n selectCell(tasks[0].id, firstColumn);\n return;\n }\n let { rowIndex, columnIndex } = position;\n switch (direction) {\n case \"up\":\n rowIndex = Math.max(0, rowIndex - 1);\n break;\n case \"down\":\n rowIndex = Math.min(tasks.length - 1, rowIndex + 1);\n break;\n case \"left\":\n columnIndex = Math.max(0, columnIndex - 1);\n break;\n case \"right\":\n columnIndex = Math.min(columnIds.length - 1, columnIndex + 1);\n break;\n default:\n break;\n }\n selectCell(tasks[rowIndex].id, columnIds[columnIndex]);\n };\n\n const shouldIgnoreKeyEvent = (target: EventTarget) => {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n if (target.isContentEditable) {\n return true;\n }\n const tagName = target.tagName;\n return tagName === \"INPUT\" || tagName === \"TEXTAREA\" || tagName === \"SELECT\";\n };\n\n const handleWrapperKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.defaultPrevented) {\n return;\n }\n if (shouldIgnoreKeyEvent(event.target)) {\n return;\n }\n if (editingState?.mode === \"editing\") {\n return;\n }\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveSelection(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveSelection(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveSelection(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveSelection(\"right\");\n return;\n default:\n break;\n }\n if (editingState?.mode !== \"selected\") {\n return;\n }\n const selectedCell = resolveSelectedCell();\n if (!selectedCell || !startEditing) {\n return;\n }\n if (event.key === \"Enter\") {\n if (!isCellEditable(selectedCell.task, selectedCell.columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: selectedCell.task.id,\n columnId: selectedCell.columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(\n selectedCell.task.id,\n selectedCell.columnId,\n \"enter\"\n );\n return;\n }\n if (event.key === \"Escape\") {\n return;\n }\n const isPrintableKey =\n event.key.length === 1 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey;\n if (isPrintableKey) {\n if (!isCellEditable(selectedCell.task, selectedCell.columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: selectedCell.task.id,\n columnId: selectedCell.columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(selectedCell.task.id, selectedCell.columnId, \"key\");\n }\n };\n\n return (\n <div\n className={styles.taskListWrapper}\n tabIndex={0}\n onKeyDown={handleWrapperKeyDown}\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 const renderCell = (field: VisibleField) => {\n switch (field) {\n case \"name\":\n return (\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 );\n case \"start\":\n return <span>{formatDate(t.start)}</span>;\n case \"end\":\n return <span>{formatDate(t.end)}</span>;\n case \"process\":\n return <span>{normalizeProcess(t.process)}</span>;\n case \"assignee\":\n return <span>{t.assignee || \"\"}</span>;\n case \"plannedStart\":\n return <span>{formatDate(t.plannedStart)}</span>;\n case \"plannedEnd\":\n return <span>{formatDate(t.plannedEnd)}</span>;\n case \"plannedEffort\":\n return (\n <span>{formatEffort(t.plannedEffort, effortDisplayUnit)}</span>\n );\n case \"actualEffort\":\n return (\n <span>{formatEffort(t.actualEffort, effortDisplayUnit)}</span>\n );\n case \"status\":\n {\n const statusValue = normalizeStatus(t.status);\n return (\n <div className={styles.statusWrapper}>\n <span\n className={styles.statusBadge}\n style={{ backgroundColor: getStatusColor(statusValue) }}\n >\n {getStatusBadgeText(statusValue)}\n </span>\n <span className={styles.statusText}>{statusValue}</span>\n </div>\n );\n }\n default:\n return null;\n }\n };\n return (\n <div\n className={styles.taskListTableRow}\n style={{ height: rowHeight }}\n key={`${t.id}row`}\n >\n {columns.map(column => {\n const columnId = resolveColumnId(column);\n const isSelected =\n editingState?.mode !== \"viewing\" &&\n editingState?.rowId === t.id &&\n editingState?.columnId === columnId;\n const handleCellClick = (\n event: React.MouseEvent<HTMLDivElement>\n ) => {\n if (editingState?.mode === \"editing\") {\n const pending = editingState.pending;\n console.log(\"[edit:select]\", { rowId: t.id, columnId, pending });\n if (pending) {\n return;\n }\n }\n if (selectCell) {\n selectCell(t.id, columnId);\n }\n event.currentTarget.focus();\n };\n\n const handleCellDoubleClick = () => {\n if (!startEditing) {\n return;\n }\n if (!isCellEditable(t, columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: t.id,\n columnId,\n });\n return;\n }\n startEditing(t.id, columnId, \"dblclick\");\n };\n\n const handleCellKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ) => {\n if (shouldIgnoreKeyEvent(event.target)) {\n return;\n }\n if (!isSelected || editingState?.mode !== \"selected\") {\n return;\n }\n if (event.key === \"Enter\") {\n if (!startEditing) {\n return;\n }\n if (!isCellEditable(t, columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: t.id,\n columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(t.id, columnId, \"enter\");\n return;\n }\n if (event.key === \"Escape\") {\n return;\n }\n const isPrintableKey =\n event.key.length === 1 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey;\n if (isPrintableKey) {\n if (!startEditing) {\n return;\n }\n if (!isCellEditable(t, columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: t.id,\n columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(t.id, columnId, \"key\");\n }\n };\n\n return (\n <div\n key={`${t.id}-${columnId}`}\n className={styles.taskListCell}\n data-row-id={t.id}\n data-column-id={columnId}\n aria-selected={isSelected || undefined}\n tabIndex={isSelected ? 0 : -1}\n onClick={handleCellClick}\n onDoubleClick={handleCellDoubleClick}\n onKeyDown={handleCellKeyDown}\n style={{\n minWidth:\n typeof column === \"string\"\n ? rowWidth\n : `${column.width}px`,\n maxWidth:\n typeof column === \"string\"\n ? rowWidth\n : `${column.width}px`,\n }}\n title={columnId === \"name\" ? t.name : undefined}\n >\n {renderCell(columnId)}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n};\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { EffortUnit, Task } from \"../../types/public-types\";\nimport { BarTask } from \"../../types/bar-task\";\nimport {\n formatDate,\n formatEffort,\n getStatusBadgeText,\n getStatusColor,\n normalizeProcess,\n normalizeStatus,\n} from \"../../helpers/task-helper\";\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 effortDisplayUnit?: EffortUnit;\n }>;\n effortDisplayUnit: EffortUnit;\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 effortDisplayUnit,\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\n task={task}\n fontSize={fontSize}\n fontFamily={fontFamily}\n effortDisplayUnit={effortDisplayUnit}\n />\n </div>\n );\n};\n\nexport const StandardTooltipContent: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n effortDisplayUnit?: EffortUnit;\n}> = ({ task, fontSize, fontFamily, effortDisplayUnit = \"MH\" }) => {\n const style = {\n fontSize,\n fontFamily,\n };\n const normalizedStatus = normalizeStatus(task.status);\n const normalizedProcess = normalizeProcess(task.process);\n const dateRange = `${formatDate(task.start)} 〜 ${formatDate(task.end)}`;\n const plannedRange =\n task.plannedStart || task.plannedEnd\n ? `${formatDate(task.plannedStart)} 〜 ${formatDate(task.plannedEnd)}`\n : \"\";\n const plannedEffort = formatEffort(task.plannedEffort, effortDisplayUnit);\n const actualEffort = formatEffort(task.actualEffort, effortDisplayUnit);\n return (\n <div className={styles.tooltipDefaultContainer} style={style}>\n <div className={styles.tooltipTitle}>\n <b className={styles.tooltipName}>{task.name}</b>\n <span className={styles.tooltipDate}>{dateRange}</span>\n </div>\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>工程</span>\n <span className={styles.tooltipValue}>{normalizedProcess}</span>\n </div>\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>担当</span>\n <span className={styles.tooltipValue}>{task.assignee || \"-\"}</span>\n </div>\n {plannedRange && (\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>予定</span>\n <span className={styles.tooltipValue}>{plannedRange}</span>\n </div>\n )}\n {plannedEffort && (\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>予定工数</span>\n <span className={styles.tooltipValue}>{plannedEffort}</span>\n </div>\n )}\n {actualEffort && (\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>実績工数</span>\n <span className={styles.tooltipValue}>{actualEffort}</span>\n </div>\n )}\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>ステータス</span>\n <span className={styles.tooltipValue}>\n <span\n className={styles.tooltipStatus}\n style={{ backgroundColor: getStatusColor(normalizedStatus) }}\n >\n {getStatusBadgeText(normalizedStatus)}\n </span>\n <span className={styles.tooltipStatusText}>{normalizedStatus}</span>\n </span>\n </div>\n {!!task.progress && (\n <p className={styles.tooltipDefaultContainerParagraph}>\n 進捗率: {task.progress} %\n </p>\n )}\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 position: \"absolute\",\n top: headerHeight,\n height: ganttHeight,\n right: rtl ? undefined : 0,\n left: rtl ? 0 : undefined,\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, { 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 getCachedDateTimeFormat,\n getDaysInMonth,\n getLocalDayOfWeek,\n getLocaleMonth,\n getWeekNumberISO8601,\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};\n\nexport const Calendar: React.FC<CalendarProps> = ({\n dateSetup,\n locale,\n viewMode,\n rtl,\n headerHeight,\n columnWidth,\n fontFamily,\n fontSize,\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.9}\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.9}\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.9}\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.9}\n />\n );\n }\n weeksCount = 0;\n }\n weeksCount++;\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.9}\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.9}\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.9}\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.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 </g>\n );\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) => {\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 );\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): 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 );\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 );\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): 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 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 ...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 };\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 progressPoint = getProgressPoint(\n +!rtl * task.progressWidth + task.progressX,\n task.y,\n task.height\n );\n const handleHeight = task.height - 2;\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 {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, useMemo } from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\nimport { GanttContentMoveAction } from \"../../types/gantt-task-actions\";\nimport {\n getStatusBadgeText,\n getStatusColor,\n normalizeStatus,\n} from \"../../helpers/task-helper\";\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 isProgressChangeable,\n isDateChangeable,\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 const normalizedStatus = normalizeStatus(task.status);\n const statusColor = getStatusColor(normalizedStatus);\n const statusBadgeText = getStatusBadgeText(normalizedStatus);\n\n const taskItemProps = useMemo(\n () => ({\n task,\n arrowIndent,\n taskHeight,\n isProgressChangeable,\n isDateChangeable,\n isDelete,\n isSelected,\n rtl,\n onEventStart,\n }),\n [\n task,\n arrowIndent,\n taskHeight,\n isProgressChangeable,\n isDateChangeable,\n isDelete,\n isSelected,\n rtl,\n onEventStart,\n ]\n );\n\n useEffect(() => {\n switch (task.typeInternal) {\n case \"milestone\":\n setTaskItem(<Milestone {...taskItemProps} />);\n break;\n case \"project\":\n setTaskItem(<Project {...taskItemProps} />);\n break;\n case \"smalltask\":\n setTaskItem(<BarSmall {...taskItemProps} />);\n break;\n default:\n setTaskItem(<Bar {...taskItemProps} />);\n break;\n }\n }, [\n task,\n taskItemProps,\n ]);\n\n const getBBoxWidth = () => {\n if (!textRef.current || typeof textRef.current.getBBox !== \"function\") {\n return 0;\n }\n return textRef.current.getBBox().width;\n };\n\n useEffect(() => {\n setIsTextInside(getBBoxWidth() < task.x2 - task.x1);\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 getBBoxWidth() -\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 {!!statusBadgeText && (\n <tspan className={style.statusDot} fill={statusColor}>\n ●\n </tspan>\n )}\n <tspan dx={statusBadgeText ? 4 : 0}>{task.name}</tspan>\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 =\n svg?.current && \"createSVGPoint\" in svg.current\n ? svg.current.createSVGPoint()\n : undefined;\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 verticalGanttContainerRef?: React.RefObject<HTMLDivElement>;\n};\nexport const TaskGantt: React.FC<TaskGanttProps> = ({\n gridProps,\n calendarProps,\n barProps,\n ganttHeight,\n scrollY,\n scrollX,\n verticalGanttContainerRef,\n}) => {\n const ganttSVGRef = useRef<SVGSVGElement>(null);\n const horizontalContainerRef = useRef<HTMLDivElement>(null);\n const internalVerticalRef = useRef<HTMLDivElement>(null);\n const ganttContainerRef = verticalGanttContainerRef || internalVerticalRef;\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 (ganttContainerRef.current) {\n ganttContainerRef.current.scrollLeft = scrollX;\n }\n }, [scrollX, ganttContainerRef]);\n\n return (\n <div\n className={styles.ganttVerticalContainer}\n ref={ganttContainerRef}\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 type HorizontalScrollProps = {\n scroll: number;\n svgWidth: number;\n scrollerWidth?: number;\n rtl: boolean;\n onScroll: (event: SyntheticEvent<HTMLDivElement>) => void;\n \"data-testid\"?: string;\n containerRef?: React.RefObject<HTMLDivElement>;\n hidden?: boolean;\n};\n\nexport const HorizontalScroll: React.FC<HorizontalScrollProps> = ({\n scroll,\n svgWidth,\n scrollerWidth,\n rtl,\n onScroll,\n \"data-testid\": dataTestId,\n containerRef,\n hidden,\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const wrapperRef = containerRef ?? scrollRef;\n\n useEffect(() => {\n if (wrapperRef.current) {\n wrapperRef.current.scrollLeft = scroll;\n }\n }, [scroll, wrapperRef]);\n\n return (\n <div\n dir={rtl ? \"rtl\" : \"ltr\"}\n className={styles.scrollWrapper}\n onScroll={onScroll}\n ref={wrapperRef}\n data-testid={dataTestId}\n style={hidden ? { display: \"none\" } : { width: svgWidth }}\n >\n <div style={{ width: scrollerWidth ?? 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 { DEFAULT_VISIBLE_FIELDS } from \"../../helpers/task-helper\";\nimport styles from \"./gantt.module.css\";\n\nconst DEFAULT_TASK_LIST_WIDTH = 450;\nconst MIN_PANE_WIDTH = 150;\nconst SPLIT_HANDLE_WIDTH = 8;\n\nconst clampTaskListWidth = (width: number, containerWidth: number) => {\n const maxWidth = Math.max(\n MIN_PANE_WIDTH,\n containerWidth - MIN_PANE_WIDTH - SPLIT_HANDLE_WIDTH\n );\n return Math.min(Math.max(width, MIN_PANE_WIDTH), maxWidth);\n};\n\nexport const Gantt: React.FunctionComponent<GanttProps> = ({\n tasks,\n headerHeight = 50,\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 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 visibleFields = DEFAULT_VISIBLE_FIELDS,\n effortDisplayUnit = \"MH\",\n enableColumnDrag,\n onDateChange,\n onProgressChange,\n onDoubleClick,\n onClick,\n onDelete,\n onSelect,\n onExpanderClick,\n onTaskUpdate,\n onCellCommit,\n}) => {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const taskListRef = useRef<HTMLDivElement>(null);\n const taskListHeaderRef = useRef<HTMLDivElement>(null);\n const taskListBodyRef = useRef<HTMLDivElement>(null);\n const ganttContainerRef = useRef<HTMLDivElement>(null);\n const splitStartXRef = useRef<number | null>(null);\n const splitStartWidthRef = useRef<number | null>(null);\n const splitMoveHandlerRef = useRef<((event: MouseEvent) => void) | null>(null);\n const splitUpHandlerRef = useRef<(() => void) | null>(null);\n const supportsPointerEvents =\n typeof window !== \"undefined\" && \"PointerEvent\" in window;\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(DEFAULT_TASK_LIST_WIDTH);\n const [wrapperWidth, setWrapperWidth] = useState(0);\n const [isResizing, setIsResizing] = useState(false);\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 [scrollXLeft, setScrollXLeft] = useState(0);\n const [scrollXRight, setScrollXRight] = useState(-1);\n const [leftScrollerWidth, setLeftScrollerWidth] = useState(1430);\n const ignoreScrollLeftRef = useRef(false);\n const ignoreScrollRightRef = useRef(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 (scrollXRight === -1) {\n setScrollXRight(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 )\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 scrollXRight,\n onExpanderClick,\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 setScrollXRight(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 const updateWrapperWidth = () => {\n if (wrapperRef.current) {\n setWrapperWidth(wrapperRef.current.offsetWidth);\n }\n };\n updateWrapperWidth();\n window.addEventListener(\"resize\", updateWrapperWidth);\n return () => window.removeEventListener(\"resize\", updateWrapperWidth);\n }, []);\n\n useEffect(() => {\n if (!listCellWidth) {\n setTaskListWidth(0);\n return;\n }\n if (wrapperWidth) {\n setTaskListWidth(prev => clampTaskListWidth(prev, wrapperWidth));\n }\n }, [listCellWidth, wrapperWidth]);\n\n const taskListOffset = listCellWidth\n ? taskListWidth + SPLIT_HANDLE_WIDTH\n : 0;\n\n useEffect(() => {\n if (wrapperWidth) {\n setSvgContainerWidth(Math.max(wrapperWidth - taskListOffset, 0));\n }\n }, [wrapperWidth, taskListOffset]);\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 useEffect(() => {\n return () => {\n if (splitMoveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", splitMoveHandlerRef.current);\n splitMoveHandlerRef.current = null;\n }\n if (splitUpHandlerRef.current) {\n document.removeEventListener(\"mouseup\", splitUpHandlerRef.current);\n splitUpHandlerRef.current = null;\n }\n };\n }, []);\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 = scrollXRight + scrollMove;\n if (newScrollX < 0) {\n newScrollX = 0;\n } else if (newScrollX > svgWidth) {\n newScrollX = svgWidth;\n }\n ignoreScrollRightRef.current = true;\n setScrollXRight(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\n // subscribe if scroll is necessary\n const wrapperEl = wrapperRef.current;\n wrapperEl?.addEventListener(\"wheel\", handleWheel, {\n passive: false,\n });\n return () => {\n wrapperEl?.removeEventListener(\"wheel\", handleWheel);\n };\n }, [\n scrollY,\n scrollXRight,\n ganttHeight,\n svgWidth,\n rtl,\n ganttFullHeight,\n ]);\n\n // update left scroller width from the task list body content\n useEffect(() => {\n const updateLeftScroller = () => {\n const el = taskListBodyRef.current;\n if (el) {\n setLeftScrollerWidth(el.scrollWidth || 0);\n }\n };\n updateLeftScroller();\n const RO = (window as any).ResizeObserver;\n const ro = RO ? new RO(updateLeftScroller) : null;\n if (ro && taskListBodyRef.current) {\n ro.observe(taskListBodyRef.current);\n }\n window.addEventListener(\"resize\", updateLeftScroller);\n return () => {\n if (ro) {\n ro.disconnect();\n }\n window.removeEventListener(\"resize\", updateLeftScroller);\n };\n }, [tasks, fontFamily, fontSize, listCellWidth, taskListBodyRef, visibleFields]);\n\n const handleScrollY = (event: SyntheticEvent<HTMLDivElement>) => {\n if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollLeftRef.current) {\n setScrollY(event.currentTarget.scrollTop);\n ignoreScrollLeftRef.current = true;\n } else {\n ignoreScrollLeftRef.current = false;\n }\n };\n\n const handleScrollLeft = (event: SyntheticEvent<HTMLDivElement>) => {\n if (\n scrollXLeft !== event.currentTarget.scrollLeft &&\n !ignoreScrollLeftRef.current\n ) {\n setScrollXLeft(event.currentTarget.scrollLeft);\n ignoreScrollLeftRef.current = true;\n } else {\n ignoreScrollLeftRef.current = false;\n }\n };\n\n const handleScrollRight = (event: SyntheticEvent<HTMLDivElement>) => {\n if (\n scrollXRight !== event.currentTarget.scrollLeft &&\n !ignoreScrollRightRef.current\n ) {\n setScrollXRight(event.currentTarget.scrollLeft);\n ignoreScrollRightRef.current = true;\n } else {\n ignoreScrollRightRef.current = false;\n }\n if (ganttContainerRef.current && ganttContainerRef.current.scrollLeft !== event.currentTarget.scrollLeft) {\n ganttContainerRef.current.scrollLeft = event.currentTarget.scrollLeft;\n }\n };\n\n /**\n * Handles arrow keys events and transform it to new scroll\n */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const target = event.target;\n if (target instanceof HTMLElement) {\n if (\n target.isContentEditable ||\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\"\n ) {\n return;\n }\n }\n event.preventDefault();\n let newScrollY = scrollY;\n let newScrollX = scrollXRight;\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 ignoreScrollRightRef.current = true;\n setScrollXRight(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 };\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 updateTaskListWidth = (clientX: number) => {\n if (splitStartXRef.current == null || splitStartWidthRef.current == null) {\n return;\n }\n if (!wrapperRef.current) {\n return;\n }\n const delta = clientX - splitStartXRef.current;\n const nextWidth = clampTaskListWidth(\n splitStartWidthRef.current + delta,\n wrapperRef.current.offsetWidth\n );\n setTaskListWidth(nextWidth);\n };\n\n const handleSplitPointerDown: React.PointerEventHandler<HTMLDivElement> =\n event => {\n event.preventDefault();\n splitStartXRef.current = event.clientX;\n splitStartWidthRef.current = taskListWidth;\n setIsResizing(true);\n if (event.currentTarget.setPointerCapture) {\n event.currentTarget.setPointerCapture(event.pointerId);\n }\n };\n\n const handleSplitPointerMove: React.PointerEventHandler<HTMLDivElement> =\n event => {\n updateTaskListWidth(event.clientX);\n };\n\n const handleSplitPointerUp: React.PointerEventHandler<HTMLDivElement> = event => {\n splitStartXRef.current = null;\n splitStartWidthRef.current = null;\n setIsResizing(false);\n if (event.currentTarget.releasePointerCapture) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n };\n\n const handleSplitMouseDown: React.MouseEventHandler<HTMLDivElement> = event => {\n event.preventDefault();\n splitStartXRef.current = event.clientX;\n splitStartWidthRef.current = taskListWidth;\n setIsResizing(true);\n if (splitMoveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", splitMoveHandlerRef.current);\n }\n if (splitUpHandlerRef.current) {\n document.removeEventListener(\"mouseup\", splitUpHandlerRef.current);\n }\n const handleMouseMove = (moveEvent: MouseEvent) => {\n updateTaskListWidth(moveEvent.clientX);\n };\n const handleMouseUp = () => {\n splitStartXRef.current = null;\n splitStartWidthRef.current = null;\n setIsResizing(false);\n if (splitMoveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", splitMoveHandlerRef.current);\n splitMoveHandlerRef.current = null;\n }\n if (splitUpHandlerRef.current) {\n document.removeEventListener(\"mouseup\", splitUpHandlerRef.current);\n splitUpHandlerRef.current = null;\n }\n };\n splitMoveHandlerRef.current = handleMouseMove;\n splitUpHandlerRef.current = handleMouseUp;\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\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 };\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 headerHeight,\n scrollY,\n horizontalScroll: scrollXLeft,\n ganttHeight,\n horizontalContainerClass: styles.horizontalContainer,\n headerContainerRef: taskListHeaderRef,\n bodyContainerRef: taskListBodyRef,\n onHorizontalScroll: handleScrollLeft,\n selectedTask,\n taskListRef,\n setSelectedTask: handleSelectedTask,\n onExpanderClick: handleExpanderClick,\n TaskListHeader,\n TaskListTable,\n visibleFields,\n onUpdateTask: onTaskUpdate,\n onCellCommit,\n effortDisplayUnit,\n enableColumnDrag,\n };\n return (\n <div>\n <div\n className={styles.wrapper}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n ref={wrapperRef}\n >\n {listCellWidth && (\n <div\n className={styles.taskListPanel}\n style={{ width: taskListWidth }}\n data-testid=\"task-list-panel\"\n >\n <TaskList {...tableProps} />\n </div>\n )}\n {listCellWidth && (\n <div\n className={`${styles.splitHandle} ${\n isResizing ? styles.splitHandleActive : \"\"\n }`}\n onPointerDown={supportsPointerEvents ? handleSplitPointerDown : undefined}\n onPointerMove={supportsPointerEvents ? handleSplitPointerMove : undefined}\n onPointerUp={supportsPointerEvents ? handleSplitPointerUp : undefined}\n onPointerCancel={supportsPointerEvents ? handleSplitPointerUp : undefined}\n onMouseDown={supportsPointerEvents ? undefined : handleSplitMouseDown}\n role=\"separator\"\n aria-label=\"Task/Schedule divider\"\n aria-orientation=\"vertical\"\n data-testid=\"pane-splitter\"\n />\n )}\n <div\n className={styles.ganttPanel}\n style={{ minWidth: MIN_PANE_WIDTH }}\n data-testid=\"gantt-panel\"\n >\n <TaskGantt\n gridProps={gridProps}\n calendarProps={calendarProps}\n barProps={barProps}\n ganttHeight={ganttHeight}\n scrollY={scrollY}\n scrollX={scrollXRight}\n verticalGanttContainerRef={ganttContainerRef}\n />\n </div>\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={scrollXRight}\n scrollY={scrollY}\n task={ganttEvent.changedTask}\n headerHeight={headerHeight}\n taskListWidth={taskListOffset}\n TooltipContent={TooltipContent}\n rtl={rtl}\n svgWidth={svgWidth}\n effortDisplayUnit={effortDisplayUnit}\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 <div className={styles.scrollRow} style={{ \"--splitter-width\": `${SPLIT_HANDLE_WIDTH}px` } as React.CSSProperties}>\n <div className={styles.scrollCellLeft}>\n {listCellWidth && (\n <HorizontalScroll\n svgWidth={taskListWidth}\n scrollerWidth={leftScrollerWidth}\n scroll={scrollXLeft}\n rtl={rtl}\n onScroll={handleScrollLeft}\n />\n )}\n </div>\n {listCellWidth && <div className={styles.scrollSplitter} />}\n <div className={styles.scrollCellRight}>\n <HorizontalScroll\n svgWidth={svgWidth}\n scroll={scrollXRight}\n rtl={rtl}\n onScroll={handleScrollRight}\n />\n </div>\n </div>\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","_iterator","_createForOfIteratorHelperLoose","_step","done","task","value","end","Year","QuarterYear","Month","Week","getMonday","Day","QuarterDay","HalfDay","Hour","seedDates","startDate","endDate","currentDate","dates","push","getLocaleMonth","locale","bottomValue","month","format","replace","toLocaleUpperCase","getLocalDayOfWeek","weekday","day","getDay","diff","setDate","getWeekNumberISO8601","tmpDate","valueOf","dayNumber","firstThursday","setMonth","weekNumber","Math","ceil","toString","length","getDaysInMonth","year","TASK_PROCESS_OPTIONS","TASK_STATUS_OPTIONS","TASK_STATUS_COLORS","未着手","進行中","完了","保留","TASK_STATUS_BADGE_TEXT","DEFAULT_VISIBLE_FIELDS","padTwo","padStart","formatDate","parseDateFromInput","undefined","_value$split$map","split","map","v","parseInt","Number","isNaN","getTime","formatEffort","effort","unit","isFinite","base","converted","rounded","round","sanitizeEffortInput","parsed","DEFAULT_TASK_PROCESS","includes","normalizeProcess","process","normalizeStatus","status","getStatusColor","getStatusBadgeText","resolveVisibleFields","visibleFields","NULL_CHAR_REGEX","RegExp","String","fromCharCode","ALPHANUMERIC_REGEX","resolveOverlayInputType","columnId","escapeSelectorValue","CSS","escape","sanitized","Array","from","char","index","codePoint","codePointAt","charCodeAt","test","join","OverlayEditor","_ref","editingState","taskListRef","headerContainerRef","bodyContainerRef","onCommit","onCancel","_useState","useState","rect","setRect","_useState2","targetElement","setTargetElement","inputRef","useRef","defaultValueRef","compositionRef","rafIdRef","inputType","useMemo","selectOptions","portalRoot","document","body","resolveDefaultValue","useCallback","target","input","querySelector","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","_target$textContent","textContent","trim","findTargetElement","current","rowId","updateRect","mode","nextDefaultValue","nextRect","getBoundingClientRect","top","left","width","height","scheduleRectUpdate","window","requestAnimationFrame","useEffect","handleScroll","handleResize","addEventListener","capture","passive","scrollTargets","filter","Boolean","forEach","element","ResizeObserverConstructor","ResizeObserver","resizeObserver","observedElements","observe","removeEventListener","disconnect","cancelAnimationFrame","pending","focus","select","handleCommit","Promise","resolve","then","e","reject","handleKeyDown","event","preventDefault","handleBlur","handleInput","currentTarget","handleCompositionStart","handleCompositionEnd","handleInputElementRef","createPortal","React","className","styles","overlayEditor","overlayEditorPending","style","taskListSelect","defaultValue","ref","disabled","onKeyDown","onBlur","onInput","onChange","option","taskListInput","type","readOnly","onCompositionStart","onCompositionEnd","errorMessage","overlayEditorError","role","TaskListEditingStateContext","createContext","DEFAULT_MIN_WIDTH","getDefaultWidth","field","rowWidth","TaskList","headerHeight","fontFamily","fontSize","rowHeight","scrollY","_ref$horizontalScroll","horizontalScroll","selectedTask","setSelectedTask","onExpanderClick","ganttHeight","horizontalContainerClass","TaskListHeader","TaskListTable","onUpdateTask","onCellCommit","effortDisplayUnit","_ref$enableColumnDrag","enableColumnDrag","onHorizontalScroll","internalHorizontalRef","internalHeaderRef","horizontalContainerRef","headerRef","scrollTop","scrollLeft","initialColumns","id","label","minWidth","visible","columnsState","setColumnsState","prev","existingMap","Map","column","nextColumns","existing","get","visibleColumns","headerProps","selectedTaskId","tableProps","trigger","setEditingState","previousEditingStateRef","closeEditing","mountedRef","cancelEditing","reason","console","debug","commitEditing","_extends","_catch","error","message","Error","selectCell","startEditing","previous","buildLogContext","_editingState$rowId","_editingState$columnI","_editingState$trigger","log","logContext","to","editingContextValue","onScroll","overflowX","Provider","TaskListHeaderDefault","labels","name","assignee","plannedStart","plannedEnd","plannedEffort","actualEffort","fallbackColumns","resolvedColumns","sensors","useSensors","useSensor","PointerSensor","resizingId","setResizingId","onDragEnd","active","over","oldIndex","findIndex","newIndex","moved","arrayMove","idx","headerContent","ganttTable","ganttTable_Header","Fragment","SortableHeaderItem","enableDrag","isResizing","ganttTable_HeaderSeparator","marginTop","DndContext","SortableContext","items","strategy","horizontalListSortingStrategy","_ref2","_useSortable","useSortable","attributes","listeners","setNodeRef","transform","transition","isDragging","startXRef","startWidthRef","moveHandlerRef","upHandlerRef","maxWidth","Transform","onMouseDownResize","stopPropagation","clientX","handleMouseMove","moveEvent","delta","nextWidth","max","item","handleMouseUp","classNames","ganttTable_HeaderItem","_classNames","ganttTable_HeaderItemDragging","ganttTable_DragHandle","_classNames2","ganttTable_DragHandleDisabled","onMouseDown","ganttTable_DragIcon","ganttTable_HeaderLabel","ganttTable_ResizeHandle","_classNames3","ganttTable_ResizeHandleActive","TaskListTableDefault","columns","_columnsState$filter","isCommitEnabled","allowEditing","editingContext","useContext","editableFields","Set","columnIds","resolveColumnId","isCellEditable","tableEditable","columnEditable","has","rowEditable","isDisabled","cellEditableByRule","findCellPosition","rowIndex","columnIndex","resolveSelectedCell","find","row","moveSelection","direction","position","firstColumn","min","shouldIgnoreKeyEvent","HTMLElement","isContentEditable","tagName","handleWrapperKeyDown","defaultPrevented","selectedCell","isPrintableKey","metaKey","ctrlKey","altKey","taskListWrapper","tabIndex","t","expanderSymbol","hideChildren","renderCell","taskListNameWrapper","taskListExpander","taskListEmptyExpander","onClick","statusValue","statusWrapper","statusBadge","backgroundColor","statusText","taskListTableRow","isSelected","handleCellClick","handleCellDoubleClick","handleCellKeyDown","taskListCell","onDoubleClick","title","Tooltip","rtl","svgContainerHeight","svgContainerWidth","scrollX","arrowIndent","taskListWidth","TooltipContent","tooltipRef","relatedY","setRelatedY","relatedX","setRelatedX","tooltipHeight","offsetHeight","tooltipWidth","offsetWidth","newRelatedY","newRelatedX","x1","x2","tooltipLeftmostPoint","fullChartWidth","tooltipLowerPoint","tooltipDetailsContainer","tooltipDetailsContainerHidden","StandardTooltipContent","_ref2$effortDisplayUn","normalizedStatus","normalizedProcess","dateRange","plannedRange","tooltipDefaultContainer","tooltipTitle","tooltipName","tooltipDate","tooltipRow","tooltipLabel","tooltipValue","tooltipStatus","tooltipStatusText","progress","tooltipDefaultContainerParagraph","VerticalScroll","scroll","ganttFullHeight","scrollRef","right","GridBody","svgWidth","columnWidth","todayColor","y","gridRows","rowLines","x","y1","y2","gridRowLine","gridRow","now","tickX","ticks","today","i","gridTick","fill","Grid","props","TopPartOfCalendar","x1Line","y1Line","y2Line","xText","yText","calendarTopTick","calendarTopText","Calendar","dateSetup","getCalendarValuesForYear","topValues","bottomValues","topDefaultHeight","calendarBottomText","topValue","getCalendarValuesForQuarterYear","quarter","floor","abs","getCalendarValuesForMonth","getCalendarValuesForWeek","weeksCount","getCalendarValuesForDay","getCalendarValuesForPartOfDay","hour","getCalendarValuesForHour","displayDate","topPosition","_getCalendarValuesFor","_getCalendarValuesFor2","_getCalendarValuesFor3","_getCalendarValuesFor4","_getCalendarValuesFor5","_getCalendarValuesFor6","_getCalendarValuesFor7","calendarHeader","Arrow","taskFrom","taskTo","taskHeight","path","trianglePoints","_drownPathAndTriangle","drownPathAndTriangleRTL","_drownPathAndTriangle2","drownPathAndTriangle","strokeWidth","d","points","indexCompare","taskToEndPosition","taskFromEndPosition","taskFromHorizontalOffsetValue","taskToHorizontalOffsetValue","convertToBarTasks","barCornerRadius","handleWidth","barProgressColor","barProgressSelectedColor","barBackgroundColor","barBackgroundSelectedColor","projectProgressColor","projectProgressSelectedColor","projectBackgroundColor","projectBackgroundSelectedColor","milestoneBackgroundColor","milestoneBackgroundSelectedColor","barTasks","convertToBarTask","dependencies","_loop","j","dependence","barChildren","barTask","convertToMilestone","convertToBar","taskXCoordinateRTL","taskXCoordinate","typeInternal","_progressWithByParams","progressWithByParams","progressWidth","progressX","taskYCoordinate","backgroundSelectedColor","progressColor","progressSelectedColor","rotatedHeight","xDate","remainderMillis","percentOfInterval","taskX1","taskX2","progressByX","barWidth","progressPercent","progressByXRTL","getProgressPoint","taskY","point","startByX","xStep","steps","additionalXValue","newX","endByX","moveByX","newX1","newX2","dateByX","taskX","taskDate","timeStep","getTimezoneOffset","handleTaskBySVGMouseEvent","svgX","action","initEventX1Delta","result","handleTaskBySVGMouseEventForMilestone","handleTaskBySVGMouseEventForBar","changedTask","isChanged","_progressWithByParams2","_progressWithByParams3","_progressWithByParams4","_moveByX","newMoveX1","newMoveX2","_progressWithByParams5","_moveByX2","isKeyboardEvent","removeHiddenTasks","groupedTasks","groupedTask","children","getChildren","taskList","project","taskChildren","apply","concat","sortTasks","taskA","taskB","orderA","displayOrder","MAX_VALUE","orderB","BarDisplay","getProcessColor","getBarColor","ry","rx","barBackground","BarDateHandle","barHandle","BarProgressHandle","progressPoint","Bar","isProgressChangeable","isDateChangeable","onEventStart","handleHeight","barWrapper","BarSmall","Milestone","milestoneWrapper","milestoneBackground","Project","barColor","processColor","projectWith","projectLeftTriangle","projectRightTriangle","projectWrapper","projectBackground","projectTop","TaskItem","_props","isDelete","textRef","taskItem","setTaskItem","isTextInside","setIsTextInside","statusColor","statusBadgeText","taskItemProps","getBBoxWidth","getBBox","getX","hasChild","onMouseEnter","onMouseLeave","onFocus","barLabel","barLabelOutside","statusDot","dx","TaskGanttContent","ganttEvent","svg","arrowColor","setGanttEvent","setFailedTask","onDateChange","onProgressChange","onDelete","createSVGPoint","setXStep","setInitEventX1Delta","_useState3","isMoving","setIsMoving","dateDelta","newXStep","cursor","matrixTransform","_svg$current$getScree","getScreenCTM","inverse","_handleTaskBySVGMouse","operationSuccess","originalSelectedTask","_svg$current$getScree2","_handleTaskBySVGMouse2","newChangedTask","isNotLikeOriginal","_temp4","_temp","_temp6","_temp2","_temp5","handleBarEventStart","_temp9","_temp8","_temp7","_svg$current$getScree3","stroke","child","TaskGantt","gridProps","calendarProps","barProps","verticalGanttContainerRef","ganttSVGRef","internalVerticalRef","ganttContainerRef","newBarProps","ganttVerticalContainer","dir","xmlns","horizontalContainer","HorizontalScroll","scrollerWidth","dataTestId","containerRef","hidden","wrapperRef","scrollWrapper","display","DEFAULT_TASK_LIST_WIDTH","MIN_PANE_WIDTH","SPLIT_HANDLE_WIDTH","clampTaskListWidth","containerWidth","Gantt","_ref$headerHeight","_ref$columnWidth","_ref$listCellWidth","listCellWidth","_ref$rowHeight","_ref$ganttHeight","_ref$viewMode","_ref$preStepsCount","_ref$locale","_ref$barFill","barFill","_ref$barCornerRadius","_ref$barProgressColor","_ref$barProgressSelec","_ref$barBackgroundCol","_ref$barBackgroundSel","_ref$projectProgressC","_ref$projectProgressS","_ref$projectBackgroun","_ref$projectBackgroun2","_ref$milestoneBackgro","_ref$milestoneBackgro2","_ref$rtl","_ref$handleWidth","_ref$timeStep","_ref$arrowColor","_ref$fontFamily","_ref$fontSize","_ref$arrowIndent","_ref$todayColor","viewDate","_ref$TooltipContent","_ref$TaskListHeader","_ref$TaskListTable","_ref$visibleFields","_ref$effortDisplayUni","onSelect","onTaskUpdate","taskListHeaderRef","taskListBodyRef","splitStartXRef","splitStartWidthRef","splitMoveHandlerRef","splitUpHandlerRef","supportsPointerEvents","_ganttDateRange","setDateSetup","currentViewDate","setCurrentViewDate","setTaskListWidth","_useState4","wrapperWidth","setWrapperWidth","_useState5","setIsResizing","_useState6","setSvgContainerWidth","_useState7","setSvgContainerHeight","_useState8","setBarTasks","_useState9","_useState0","_useState1","failedTask","_useState10","setScrollY","_useState11","scrollXLeft","setScrollXLeft","_useState12","scrollXRight","setScrollXRight","_useState13","leftScrollerWidth","setLeftScrollerWidth","ignoreScrollLeftRef","ignoreScrollRightRef","filteredTasks","sort","_ganttDateRange2","newDates","reverse","prevStateTask","newTaskList","updateWrapperWidth","taskListOffset","handleWheel","shiftKey","deltaX","scrollMove","deltaY","newScrollX","newScrollY","wrapperEl","updateLeftScroller","el","scrollWidth","RO","ro","handleScrollY","handleScrollLeft","handleScrollRight","isX","handleSelectedTask","taskId","newSelectedTask","oldSelectedTask","handleExpanderClick","updateTaskListWidth","handleSplitPointerDown","setPointerCapture","pointerId","handleSplitPointerMove","handleSplitPointerUp","releasePointerCapture","handleSplitMouseDown","wrapper","taskListPanel","splitHandle","splitHandleActive","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","ganttPanel","scrollRow","scrollCellLeft","scrollSplitter","scrollCellRight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/types/public-types.ts","../src/helpers/date-helper.ts","../src/constants/taskOptions.ts","../src/helpers/task-helper.ts","../node_modules/classnames/index.js","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/components/task-list/overlay-editor.tsx","../src/components/task-list/task-list.tsx","../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/helpers/jp-holidays.ts","../src/helpers/calendar-helper.ts","../src/components/grid/grid-body.tsx","../src/components/grid/grid.tsx","../src/components/calendar/top-part-of-calendar.tsx","../src/components/calendar/calendar.tsx","../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":["import { TaskProcessOption, TaskStatusOption } from \"../constants/taskOptions\";\n\nexport type TaskProcess = TaskProcessOption;\nexport type TaskStatus = TaskStatusOption;\nexport type EffortUnit = \"MH\" | \"MD\" | \"MM\";\nexport type VisibleField =\n | \"name\"\n | \"start\"\n | \"end\"\n | \"process\"\n | \"assignee\"\n | \"plannedStart\"\n | \"plannedEnd\"\n | \"plannedEffort\"\n | \"actualEffort\"\n | \"status\";\n\nexport type CellCommitTrigger = \"enter\";\n\nexport type CellCommitPayload = {\n rowId: string;\n columnId: VisibleField;\n value: string;\n trigger: CellCommitTrigger;\n};\n\nexport type ColumnState = {\n id: VisibleField;\n label: string;\n width: number;\n minWidth: number;\n visible: boolean;\n};\n\nexport type ColumnsState = ColumnState[];\n\nexport 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 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 * 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 process?: TaskProcess;\n assignee?: string;\n plannedStart?: Date;\n plannedEnd?: Date;\n plannedEffort?: number;\n actualEffort?: number;\n status?: TaskStatus;\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 * Invokes when task list fields are updated (process, status, planned dates, assignee, effort).\n */\n onTaskUpdate?: (taskId: string, updatedFields: Partial<Task>) => void;\n /**\n * Invokes when a task list cell edit is committed.\n * Notification only; the library does not update tasks or UI.\n * Host must validate/persist, update tasks, and pass new props for rerender.\n */\n onCellCommit?: (payload: CellCommitPayload) => Promise<void>;\n}\n\nexport interface CalendarConfig {\n /**\n * Locale for date formatting. Defaults to \"ja\" for Japanese.\n */\n locale?: string;\n /**\n * Date format identifier. Currently supports \"MM/dd(EEE)\" for Japanese calendar display.\n * This is a legacy identifier and not interpreted as a date-fns format string.\n */\n dateFormat?: string;\n /**\n * Enable Japanese holidays as non-working days. Defaults to true.\n */\n enableJPHoliday?: boolean;\n /**\n * Highlight non-working days with gray background. Defaults to true.\n */\n highlightNonWorkingDays?: boolean;\n /**\n * Treat Saturday as a working day. Defaults to false.\n */\n workOnSaturday?: boolean;\n /**\n * Additional holidays in ISO-like date string format.\n * Year must be 4 digits; month and day may be 1–2 digits and are zero-padded internally\n * (e.g. \"2024-1-5\" is normalized to \"2024-01-05\").\n * These dates will be treated as non-working days.\n */\n extraHolidays?: string[];\n /**\n * Special working days in ISO-like date string format.\n * Year must be 4 digits; month and day may be 1–2 digits and are zero-padded internally\n * (e.g. \"2024-1-5\" is normalized to \"2024-01-05\").\n * These dates override weekends, holidays, and extraHolidays.\n */\n extraWorkingDays?: string[];\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 * Calendar configuration for working day calculation and date display.\n * If not specified, no calendar customization is applied and\n * Japanese holiday/highlight features remain disabled (opt-in behavior).\n */\n calendar?: CalendarConfig;\n}\n\nexport interface StylingOption {\n headerHeight?: number;\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 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 visibleFields?: VisibleField[];\n effortDisplayUnit?: EffortUnit;\n enableColumnDrag?: boolean;\n TooltipContent?: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n effortDisplayUnit?: EffortUnit;\n }>;\n TaskListHeader?: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n visibleFields: VisibleField[];\n columnsState?: ColumnsState;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableColumnDrag?: boolean;\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 visibleFields: VisibleField[];\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n effortDisplayUnit: EffortUnit;\n columnsState?: ColumnsState;\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 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 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 */\nconst 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 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","export const TASK_PROCESS_OPTIONS = [\n \"設計\",\n \"開発\",\n \"テスト\",\n \"レビュー\",\n \"リリース\",\n \"その他\",\n] as const;\n\nexport const TASK_STATUS_OPTIONS = [\"未着手\", \"進行中\", \"完了\", \"保留\"] as const;\n\nexport type TaskProcessOption = (typeof TASK_PROCESS_OPTIONS)[number];\nexport type TaskStatusOption = (typeof TASK_STATUS_OPTIONS)[number];\n\nexport const TASK_STATUS_COLORS: Record<TaskStatusOption, string> = {\n 未着手: \"#9e9e9e\",\n 進行中: \"#2196f3\",\n 完了: \"#4caf50\",\n 保留: \"#ff9800\",\n};\n\nexport const TASK_STATUS_BADGE_TEXT: Record<TaskStatusOption, string> = {\n 未着手: \"未\",\n 進行中: \"進\",\n 完了: \"完\",\n 保留: \"保\",\n};\n","import {\n TASK_PROCESS_OPTIONS,\n TASK_STATUS_BADGE_TEXT,\n TASK_STATUS_COLORS,\n TASK_STATUS_OPTIONS,\n} from \"../constants/taskOptions\";\nimport { EffortUnit, TaskProcess, TaskStatus, VisibleField } from \"../types/public-types\";\n\nexport const DEFAULT_VISIBLE_FIELDS: VisibleField[] = [\n \"name\",\n \"start\",\n \"end\",\n \"process\",\n \"assignee\",\n \"plannedStart\",\n \"plannedEnd\",\n \"plannedEffort\",\n \"actualEffort\",\n \"status\",\n];\n\nconst padTwo = (value: number) => value.toString().padStart(2, \"0\");\n\nexport const formatDate = (date?: Date) => {\n if (!date) return \"\";\n return `${date.getFullYear()}-${padTwo(date.getMonth() + 1)}-${padTwo(\n date.getDate()\n )}`;\n};\n\nexport const parseDateFromInput = (value: string) => {\n if (!value) return undefined;\n const [year, month, day] = value.split(\"-\").map(v => parseInt(v, 10));\n if (\n Number.isNaN(year) ||\n Number.isNaN(month) ||\n Number.isNaN(day) ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31 /* 31日超を除外し、月ごとの上限(例: 2月30日)はDateコンストラクタの正規化+ラウンドトリップ比較で検証 */\n ) {\n return undefined;\n }\n const date = new Date(year, month - 1, day);\n if (\n Number.isNaN(date.getTime()) ||\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return undefined;\n }\n return date;\n};\n\nexport const formatEffort = (\n effort?: number,\n unit: EffortUnit = \"MH\"\n): string => {\n if (effort === undefined || effort === null || !Number.isFinite(effort) || effort < 0) {\n return \"\";\n }\n const base =\n unit === \"MD\" ? 8 : unit === \"MM\" ? 160 : 1; /* MD:8h, MM:160h */\n const converted = effort / base;\n const rounded =\n unit === \"MH\" ? effort : Math.round(converted * 10) / 10;\n return `${rounded}${unit}`;\n};\n\nexport const sanitizeEffortInput = (value: string) => {\n if (value === \"\") return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || parsed < 0) return undefined;\n return parsed;\n};\n\nconst DEFAULT_TASK_PROCESS: TaskProcess = (\n TASK_PROCESS_OPTIONS.includes(\"その他\")\n ? \"その他\"\n : TASK_PROCESS_OPTIONS[0]\n) as TaskProcess;\n\nexport const normalizeProcess = (process?: TaskProcess) =>\n TASK_PROCESS_OPTIONS.includes(process as TaskProcess)\n ? (process as TaskProcess)\n : DEFAULT_TASK_PROCESS;\n\nexport const normalizeStatus = (status?: TaskStatus) =>\n TASK_STATUS_OPTIONS.includes(status as TaskStatus)\n ? (status as TaskStatus)\n : TASK_STATUS_OPTIONS[0];\n\nexport const getStatusColor = (status?: TaskStatus) =>\n TASK_STATUS_COLORS[normalizeStatus(status)];\n\nexport const getStatusBadgeText = (status?: TaskStatus) =>\n TASK_STATUS_BADGE_TEXT[normalizeStatus(status)];\n\nexport const resolveVisibleFields = (visibleFields?: VisibleField[]) =>\n visibleFields && visibleFields.length > 0\n ? visibleFields\n : DEFAULT_VISIBLE_FIELDS;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\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, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./task-list-table.module.css\";\nimport {\n TASK_PROCESS_OPTIONS,\n TASK_STATUS_OPTIONS,\n} from \"../../constants/taskOptions\";\nimport { CellCommitTrigger, VisibleField } from \"../../types/public-types\";\n\ntype EditingState = {\n mode: \"viewing\" | \"selected\" | \"editing\";\n rowId: string | null;\n columnId: VisibleField | null;\n pending: boolean;\n errorMessage: string | null;\n};\n\ntype OverlayRect = {\n top: number;\n left: number;\n width: number;\n height: number;\n};\n\ntype OverlayEditorProps = {\n editingState: EditingState;\n taskListRef: React.RefObject<HTMLDivElement>;\n headerContainerRef?: React.RefObject<HTMLDivElement>;\n bodyContainerRef?: React.RefObject<HTMLDivElement>;\n onCommit: (value: string, trigger: CellCommitTrigger) => Promise<void>;\n onCancel: (reason: \"escape\" | \"nochange-blur\" | \"unmounted\") => void;\n};\n\ntype OverlayInputType = \"text\" | \"date\" | \"number\" | \"select\";\n\nconst NULL_CHAR_REGEX = new RegExp(String.fromCharCode(0), \"g\");\nconst ALPHANUMERIC_REGEX = /[a-zA-Z0-9]/;\n\nconst resolveOverlayInputType = (\n columnId: VisibleField | null\n): OverlayInputType => {\n switch (columnId) {\n case \"start\":\n case \"end\":\n case \"plannedStart\":\n case \"plannedEnd\":\n return \"date\";\n case \"plannedEffort\":\n case \"actualEffort\":\n return \"number\";\n case \"process\":\n case \"status\":\n return \"select\";\n case \"name\":\n case \"assignee\":\n default:\n return \"text\";\n }\n};\n\nconst escapeSelectorValue = (value: string) => {\n if (typeof CSS !== \"undefined\" && typeof CSS.escape === \"function\") {\n return CSS.escape(value);\n }\n const sanitized = value.replace(NULL_CHAR_REGEX, \"\\uFFFD\");\n return Array.from(sanitized)\n .map((char, index) => {\n const codePoint = char.codePointAt(0);\n if (codePoint === undefined) {\n return \"\";\n }\n if (\n (codePoint >= 0x1 && codePoint <= 0x1f) ||\n codePoint === 0x7f ||\n (index === 0 && codePoint >= 0x30 && codePoint <= 0x39) ||\n (index === 1 &&\n codePoint >= 0x30 &&\n codePoint <= 0x39 &&\n sanitized.charCodeAt(0) === 0x2d)\n ) {\n return `\\\\${codePoint.toString(16)} `;\n }\n if (char === \"-\" || char === \"_\" || ALPHANUMERIC_REGEX.test(char)) {\n return char;\n }\n return `\\\\${char}`;\n })\n .join(\"\");\n};\n\nexport const OverlayEditor: React.FC<OverlayEditorProps> = ({\n editingState,\n taskListRef,\n headerContainerRef,\n bodyContainerRef,\n onCommit,\n onCancel,\n}) => {\n const [rect, setRect] = useState<OverlayRect | null>(null);\n const [targetElement, setTargetElement] = useState<HTMLElement | null>(null);\n const inputRef = useRef<HTMLInputElement | HTMLSelectElement | null>(null);\n const defaultValueRef = useRef(\"\");\n const compositionRef = useRef(false);\n const rafIdRef = useRef<number | null>(null);\n\n const inputType = useMemo(\n () => resolveOverlayInputType(editingState.columnId),\n [editingState.columnId]\n );\n const selectOptions = useMemo<readonly string[]>(() => {\n if (editingState.columnId === \"process\") {\n return TASK_PROCESS_OPTIONS;\n }\n if (editingState.columnId === \"status\") {\n return TASK_STATUS_OPTIONS;\n }\n return [];\n }, [editingState.columnId]);\n\n const portalRoot = useMemo(() => {\n if (typeof document === \"undefined\") {\n return null;\n }\n return document.body;\n }, []);\n\n const resolveDefaultValue = useCallback((target: HTMLElement) => {\n const input = target.querySelector(\"input, textarea, select\");\n if (input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement) {\n return input.value;\n }\n if (input instanceof HTMLSelectElement) {\n return input.value;\n }\n return (target.textContent ?? \"\").trim();\n }, []);\n\n const findTargetElement = useCallback(() => {\n if (!taskListRef.current || !editingState.rowId || !editingState.columnId) {\n return null;\n }\n const rowId = escapeSelectorValue(editingState.rowId);\n const columnId = escapeSelectorValue(editingState.columnId);\n return taskListRef.current.querySelector<HTMLElement>(\n `[data-row-id=\"${rowId}\"][data-column-id=\"${columnId}\"]`\n );\n }, [editingState.columnId, editingState.rowId, taskListRef]);\n\n const updateRect = useCallback(() => {\n if (editingState.mode !== \"editing\") {\n setRect(null);\n setTargetElement(null);\n return;\n }\n const target = findTargetElement();\n if (!target) {\n setRect(null);\n setTargetElement(null);\n onCancel(\"unmounted\");\n return;\n }\n if (targetElement !== target) {\n const nextDefaultValue = resolveDefaultValue(target);\n defaultValueRef.current = nextDefaultValue;\n if (inputRef.current) {\n inputRef.current.value = nextDefaultValue;\n }\n setTargetElement(target);\n }\n const nextRect = target.getBoundingClientRect();\n setRect({\n top: Math.round(nextRect.top),\n left: Math.round(nextRect.left),\n width: Math.round(nextRect.width),\n height: Math.round(nextRect.height),\n });\n }, [\n editingState.mode,\n findTargetElement,\n onCancel,\n resolveDefaultValue,\n targetElement,\n ]);\n\n const scheduleRectUpdate = useCallback(() => {\n if (rafIdRef.current !== null) {\n return;\n }\n rafIdRef.current = window.requestAnimationFrame(() => {\n rafIdRef.current = null;\n updateRect();\n });\n }, [updateRect]);\n\n useEffect(() => {\n if (editingState.mode !== \"editing\") {\n defaultValueRef.current = \"\";\n compositionRef.current = false;\n setRect(null);\n setTargetElement(null);\n return;\n }\n scheduleRectUpdate();\n }, [editingState.mode, scheduleRectUpdate]);\n\n useEffect(() => {\n if (editingState.mode !== \"editing\") {\n return undefined;\n }\n const handleScroll = () => scheduleRectUpdate();\n const handleResize = () => scheduleRectUpdate();\n window.addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true,\n });\n window.addEventListener(\"resize\", handleResize, { capture: true });\n document.addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true,\n });\n const scrollTargets = [\n taskListRef.current,\n bodyContainerRef?.current,\n headerContainerRef?.current,\n ].filter(Boolean);\n scrollTargets.forEach(element =>\n (element as HTMLElement).addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true,\n })\n );\n const ResizeObserverConstructor =\n typeof window !== \"undefined\"\n ? (\n window as typeof window & {\n ResizeObserver?: new (callback: (entries: Array<{ target: Element }>) => void) => {\n observe: (target: Element) => void;\n disconnect: () => void;\n };\n }\n ).ResizeObserver\n : undefined;\n const resizeObserver = ResizeObserverConstructor\n ? new ResizeObserverConstructor(() => scheduleRectUpdate())\n : null;\n const observedElements = [\n targetElement,\n taskListRef.current,\n bodyContainerRef?.current,\n headerContainerRef?.current,\n ].filter(Boolean);\n observedElements.forEach(element =>\n resizeObserver?.observe(element as HTMLElement)\n );\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n window.removeEventListener(\"resize\", handleResize, { capture: true });\n document.removeEventListener(\"scroll\", handleScroll, { capture: true });\n scrollTargets.forEach(element =>\n (element as HTMLElement).removeEventListener(\"scroll\", handleScroll, {\n capture: true,\n })\n );\n resizeObserver?.disconnect();\n };\n }, [\n bodyContainerRef,\n editingState.mode,\n headerContainerRef,\n scheduleRectUpdate,\n targetElement,\n taskListRef,\n ]);\n\n useEffect(() => {\n return () => {\n if (rafIdRef.current !== null) {\n window.cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n };\n }, []);\n\n useEffect(() => {\n if (editingState.mode !== \"editing\") {\n return;\n }\n const input = inputRef.current;\n if (!input) {\n return;\n }\n if (editingState.pending) {\n input.focus();\n return;\n }\n input.focus();\n if (input instanceof HTMLInputElement) {\n input.select();\n }\n }, [editingState.mode, editingState.pending, targetElement]);\n\n const handleCommit = useCallback(async () => {\n if (editingState.pending) {\n return;\n }\n const input = inputRef.current;\n if (!input) {\n return;\n }\n await onCommit(input.value, \"enter\");\n }, [editingState.pending, onCommit]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement | HTMLSelectElement>) => {\n if (editingState.pending) {\n if (event.key === \"Escape\" || event.key === \"Enter\") {\n event.preventDefault();\n }\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n void handleCommit();\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n onCancel(\"escape\");\n }\n },\n [editingState.pending, handleCommit, onCancel]\n );\n\n const handleBlur = useCallback(() => {\n if (editingState.pending || compositionRef.current) {\n return;\n }\n const input = inputRef.current;\n if (!input) {\n return;\n }\n if (input.value === defaultValueRef.current) {\n onCancel(\"nochange-blur\");\n }\n }, [editingState.pending, onCancel]);\n\n const handleInput = useCallback(\n (event: React.FormEvent<HTMLInputElement | HTMLSelectElement>) => {\n if (!editingState.pending) {\n return;\n }\n const input = event.currentTarget;\n input.value = defaultValueRef.current;\n },\n [editingState.pending]\n );\n\n const handleCompositionStart = () => {\n compositionRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n compositionRef.current = false;\n };\n\n const handleInputElementRef = useCallback(\n (element: HTMLInputElement | HTMLSelectElement | null) => {\n inputRef.current = element;\n },\n []\n );\n\n if (editingState.mode !== \"editing\" || !rect || !portalRoot) {\n return null;\n }\n\n return createPortal(\n <div\n className={`${styles.overlayEditor} ${\n editingState.pending ? styles.overlayEditorPending : \"\"\n }`}\n data-testid=\"overlay-editor\"\n style={{\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n }}\n >\n {inputType === \"select\" ? (\n <select\n className={styles.taskListSelect}\n data-testid=\"overlay-editor-input\"\n aria-label=\"セル編集\"\n defaultValue={defaultValueRef.current}\n style={{ height: \"100%\" }}\n ref={handleInputElementRef}\n disabled={editingState.pending}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onInput={handleInput}\n onChange={handleInput}\n >\n {selectOptions.map(option => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n ) : (\n <input\n className={styles.taskListInput}\n data-testid=\"overlay-editor-input\"\n type={inputType}\n aria-label=\"セル編集\"\n defaultValue={defaultValueRef.current}\n style={{ height: \"100%\" }}\n ref={handleInputElementRef}\n readOnly={editingState.pending}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onInput={handleInput}\n onChange={handleInput}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n />\n )}\n {editingState.errorMessage && (\n <div className={styles.overlayEditorError} role=\"alert\">\n {editingState.errorMessage}\n </div>\n )}\n </div>,\n portalRoot\n );\n};\n","import React, {\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\nimport {\n CellCommitPayload,\n ColumnState,\n ColumnsState,\n EffortUnit,\n Task,\n VisibleField,\n} from \"../../types/public-types\";\nimport { OverlayEditor } from \"./overlay-editor\";\n\nexport type EditingTrigger = \"dblclick\" | \"enter\" | \"key\";\ntype CommitTrigger = CellCommitPayload[\"trigger\"];\ntype EditingMode = \"viewing\" | \"selected\" | \"editing\";\ntype EditingState = {\n mode: EditingMode;\n rowId: string | null;\n columnId: VisibleField | null;\n trigger: EditingTrigger | null;\n pending: boolean;\n errorMessage: string | null;\n};\n\ntype EditingStateContextValue = {\n editingState: EditingState;\n selectCell: (rowId: string, columnId: VisibleField) => void;\n startEditing: (rowId: string, columnId: VisibleField, trigger: EditingTrigger) => void;\n};\n\nexport const TaskListEditingStateContext =\n React.createContext<EditingStateContextValue | null>(null);\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 horizontalScroll?: number;\n visibleFields: VisibleField[];\n effortDisplayUnit: EffortUnit;\n tasks: Task[];\n taskListRef: React.RefObject<HTMLDivElement>;\n headerContainerRef?: React.RefObject<HTMLDivElement>;\n bodyContainerRef?: React.RefObject<HTMLDivElement>;\n horizontalContainerClass?: string;\n selectedTask: BarTask | undefined;\n setSelectedTask: (task: string) => void;\n onExpanderClick: (task: Task) => void;\n onHorizontalScroll?: (event: SyntheticEvent<HTMLDivElement>) => void;\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n onCellCommit?: (payload: CellCommitPayload) => Promise<void>;\n TaskListHeader: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n visibleFields: VisibleField[];\n columnsState?: ColumnsState;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableColumnDrag?: boolean;\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 visibleFields: VisibleField[];\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n onCellCommit?: (payload: CellCommitPayload) => Promise<void>;\n effortDisplayUnit: EffortUnit;\n columnsState?: ColumnsState;\n }>;\n enableColumnDrag?: boolean;\n};\n\nexport const DEFAULT_MIN_WIDTH = 32;\nexport const getDefaultWidth = (field: VisibleField, rowWidth: string): number =>\n field === \"name\" ? 140 : Number.parseInt(rowWidth, 10) || 155;\n\nexport const TaskList: React.FC<TaskListProps> = ({\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n rowHeight,\n scrollY,\n horizontalScroll = 0,\n tasks,\n selectedTask,\n setSelectedTask,\n onExpanderClick,\n ganttHeight,\n taskListRef,\n headerContainerRef,\n bodyContainerRef,\n horizontalContainerClass,\n TaskListHeader,\n TaskListTable,\n visibleFields,\n onUpdateTask,\n onCellCommit,\n effortDisplayUnit,\n enableColumnDrag = true,\n onHorizontalScroll,\n}) => {\n const internalHorizontalRef = useRef<HTMLDivElement>(null);\n const internalHeaderRef = useRef<HTMLDivElement>(null);\n const horizontalContainerRef = bodyContainerRef ?? internalHorizontalRef;\n const headerRef = headerContainerRef ?? internalHeaderRef;\n useEffect(() => {\n if (horizontalContainerRef.current) {\n horizontalContainerRef.current.scrollTop = scrollY;\n }\n }, [scrollY, horizontalContainerRef]);\n\n useEffect(() => {\n if (horizontalContainerRef.current) {\n horizontalContainerRef.current.scrollLeft = horizontalScroll;\n }\n if (headerRef.current) {\n headerRef.current.scrollLeft = horizontalScroll;\n }\n }, [horizontalScroll, horizontalContainerRef, headerRef]);\n\n const initialColumns = useMemo<ColumnsState>(\n () =>\n visibleFields.map(\n (field): ColumnState => ({\n id: field,\n label: field,\n width: getDefaultWidth(field, rowWidth),\n minWidth: DEFAULT_MIN_WIDTH,\n visible: true,\n })\n ),\n [visibleFields, rowWidth]\n );\n\n const [columnsState, setColumnsState] = useState<ColumnsState>(initialColumns);\n\n useEffect(() => {\n setColumnsState(prev => {\n const existingMap = new Map(prev.map(column => [column.id, column]));\n const nextColumns: ColumnsState = visibleFields.map(field => {\n const existing = existingMap.get(field);\n if (existing) {\n return existing;\n }\n return {\n id: field,\n label: field,\n width: getDefaultWidth(field, rowWidth),\n minWidth: DEFAULT_MIN_WIDTH,\n visible: true,\n };\n });\n return nextColumns;\n });\n }, [visibleFields, rowWidth]);\n const visibleColumns = useMemo(\n () => columnsState.filter(column => column.visible),\n [columnsState]\n );\n\n const headerProps = {\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n visibleFields,\n columnsState,\n setColumnsState,\n enableColumnDrag,\n };\n const selectedTaskId = selectedTask ? selectedTask.id : \"\";\n const tableProps = {\n rowHeight,\n rowWidth,\n fontFamily,\n fontSize,\n tasks,\n selectedTaskId: selectedTaskId,\n setSelectedTask,\n onExpanderClick,\n visibleFields,\n onUpdateTask,\n onCellCommit,\n effortDisplayUnit,\n columnsState: visibleColumns,\n };\n\n const [editingState, setEditingState] = useState<EditingState>({\n mode: \"viewing\",\n rowId: null,\n columnId: null,\n trigger: null,\n pending: false,\n errorMessage: null,\n });\n const previousEditingStateRef = useRef<EditingState | null>(null);\n\n const closeEditing = useCallback(() => {\n setEditingState(prev => {\n if (prev.mode === \"viewing\") {\n return prev;\n }\n return {\n mode: \"viewing\",\n rowId: null,\n columnId: null,\n trigger: null,\n pending: false,\n errorMessage: null,\n };\n });\n }, []);\n const mountedRef = useRef(true);\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n const cancelEditing = useCallback(\n (reason: \"escape\" | \"nochange-blur\" | \"unmounted\") => {\n if (editingState.mode !== \"editing\") {\n return;\n }\n console.debug(\"[edit:cancel]\", {\n rowId: editingState.rowId,\n columnId: editingState.columnId,\n reason,\n });\n closeEditing();\n },\n [closeEditing, editingState.columnId, editingState.mode, editingState.rowId]\n );\n\n const commitEditing = useCallback(\n async (value: string, trigger: CommitTrigger) => {\n if (!onCellCommit) {\n return;\n }\n if (editingState.mode !== \"editing\" || editingState.pending) {\n return;\n }\n if (!editingState.rowId || !editingState.columnId) {\n return;\n }\n const rowId = editingState.rowId;\n const columnId = editingState.columnId;\n setEditingState(prev => {\n if (\n prev.mode !== \"editing\" ||\n prev.pending ||\n prev.rowId !== rowId ||\n prev.columnId !== columnId\n ) {\n return prev;\n }\n return { ...prev, pending: true, errorMessage: null };\n });\n try {\n await onCellCommit({ rowId, columnId, value, trigger });\n if (!mountedRef.current) {\n return;\n }\n setEditingState(prev => {\n if (\n prev.mode !== \"editing\" ||\n prev.rowId !== rowId ||\n prev.columnId !== columnId\n ) {\n return prev;\n }\n return {\n mode: \"viewing\",\n rowId: null,\n columnId: null,\n trigger: null,\n pending: false,\n errorMessage: null,\n };\n });\n } catch (error) {\n console.error(\"[commit:error]\", {\n rowId,\n columnId,\n trigger,\n message: error instanceof Error ? error.message : \"unknown\",\n });\n if (!mountedRef.current) {\n return;\n }\n setEditingState(prev => {\n if (\n prev.mode !== \"editing\" ||\n prev.rowId !== rowId ||\n prev.columnId !== columnId\n ) {\n return prev;\n }\n return {\n ...prev,\n pending: false,\n errorMessage: \"Commit failed. Please retry.\",\n };\n });\n }\n },\n [editingState, onCellCommit]\n );\n\n const selectCell = useCallback((rowId: string, columnId: VisibleField) => {\n console.debug(\"[TaskList] select cell\", { rowId, columnId });\n setEditingState({\n mode: \"selected\",\n rowId,\n columnId,\n trigger: null,\n pending: false,\n errorMessage: null,\n });\n }, []);\n\n const startEditing = useCallback(\n (rowId: string, columnId: VisibleField, trigger: EditingTrigger) => {\n if (editingState.pending) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"pending\",\n rowId,\n columnId,\n });\n return;\n }\n console.debug(\"[TaskList] enter editing\", { rowId, columnId, trigger });\n setEditingState({\n mode: \"editing\",\n rowId,\n columnId,\n trigger,\n pending: false,\n errorMessage: null,\n });\n },\n [editingState.pending]\n );\n\n useEffect(() => {\n const previous = previousEditingStateRef.current;\n if (previous) {\n const buildLogContext = () => ({\n rowId: editingState.rowId ?? previous.rowId,\n columnId: editingState.columnId ?? previous.columnId,\n trigger: editingState.trigger ?? previous.trigger,\n });\n if (previous.mode !== \"editing\" && editingState.mode === \"editing\") {\n console.log(\"[edit:start]\", buildLogContext());\n }\n if (!previous.pending && editingState.pending) {\n console.log(\"[commit:start]\", buildLogContext());\n }\n if (previous.pending && !editingState.pending) {\n const logContext = buildLogContext();\n if (editingState.mode === \"editing\") {\n console.log(\"[commit:reject]\", logContext);\n } else {\n console.log(\"[commit:resolve]\", logContext);\n }\n }\n if (previous.mode === \"editing\" && editingState.mode !== \"editing\") {\n console.log(\"[edit:end]\", { ...buildLogContext(), to: editingState.mode });\n }\n }\n previousEditingStateRef.current = editingState;\n }, [editingState]);\n\n const editingContextValue = useMemo(\n () => ({\n editingState,\n selectCell,\n startEditing,\n }),\n [editingState, selectCell, startEditing]\n );\n\n return (\n <div ref={taskListRef}>\n <OverlayEditor\n editingState={editingState}\n taskListRef={taskListRef}\n headerContainerRef={headerRef}\n bodyContainerRef={horizontalContainerRef}\n onCommit={commitEditing}\n onCancel={cancelEditing}\n />\n <div\n ref={headerRef}\n onScroll={onHorizontalScroll}\n style={{ width: \"100%\", overflowX: \"hidden\" }}\n >\n <TaskListHeader {...headerProps} />\n </div>\n <div\n ref={horizontalContainerRef}\n className={horizontalContainerClass}\n style={ganttHeight ? { height: ganttHeight } : {}}\n onScroll={onHorizontalScroll}\n >\n <TaskListEditingStateContext.Provider value={editingContextValue}>\n <TaskListTable {...tableProps} />\n </TaskListEditingStateContext.Provider>\n </div>\n </div>\n );\n};\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { resolveVisibleFields } from \"../../helpers/task-helper\";\nimport {\n ColumnState,\n ColumnsState,\n VisibleField,\n} from \"../../types/public-types\";\nimport styles from \"./task-list-header.module.css\";\nimport classNames from \"classnames\";\nimport { getDefaultWidth, DEFAULT_MIN_WIDTH } from \"./task-list\";\nimport {\n DndContext,\n DragEndEvent,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n arrayMove,\n useSortable,\n horizontalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\nexport const TaskListHeaderDefault: React.FC<{\n headerHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n visibleFields: VisibleField[];\n columnsState?: ColumnsState;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableColumnDrag?: boolean;\n}> = ({\n headerHeight,\n fontFamily,\n fontSize,\n rowWidth,\n visibleFields,\n columnsState,\n setColumnsState,\n enableColumnDrag = true,\n}) => {\n const labels: Record<VisibleField, string> = {\n name: \"タスク名\",\n start: \"開始日\",\n end: \"終了日\",\n process: \"工程\",\n assignee: \"担当者\",\n plannedStart: \"予定開始\",\n plannedEnd: \"予定終了\",\n plannedEffort: \"予定工数\",\n actualEffort: \"実績工数\",\n status: \"ステータス\",\n };\n const fallbackColumns = resolveVisibleFields(visibleFields).map(\n (field): ColumnState => ({\n id: field,\n label: labels[field],\n width: getDefaultWidth(field, rowWidth),\n minWidth: DEFAULT_MIN_WIDTH,\n visible: true,\n })\n );\n const resolvedColumns = useMemo(\n () =>\n (columnsState || fallbackColumns).filter(column => column.visible !== false),\n [columnsState, fallbackColumns]\n );\n const sensors = useSensors(useSensor(PointerSensor));\n const [resizingId, setResizingId] = useState<string | null>(null);\n const onDragEnd = (event: DragEndEvent) => {\n if (!setColumnsState || !enableColumnDrag) return;\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n setColumnsState(prev => {\n const visible = prev.filter(column => column.visible !== false);\n const oldIndex = visible.findIndex(column => column.id === active.id);\n const newIndex = visible.findIndex(column => column.id === over.id);\n if (oldIndex < 0 || newIndex < 0) return prev;\n const moved = arrayMove(visible, oldIndex, newIndex);\n let idx = 0;\n return prev.map(column =>\n column.visible !== false ? moved[idx++] : column\n );\n });\n };\n const headerContent = (\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 {resolvedColumns.map((column, index) => (\n <React.Fragment key={column.id}>\n <SortableHeaderItem\n column={column}\n labels={labels}\n setColumnsState={setColumnsState}\n enableDrag={enableColumnDrag && !!setColumnsState}\n setResizingId={setResizingId}\n isResizing={resizingId === column.id}\n />\n {index !== resolvedColumns.length - 1 && (\n <div\n className={styles.ganttTable_HeaderSeparator}\n style={{\n height: headerHeight * 0.5,\n marginTop: headerHeight * 0.2,\n }}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n\n return (\n <DndContext sensors={sensors} onDragEnd={enableColumnDrag ? onDragEnd : undefined}>\n <SortableContext\n items={resolvedColumns.map(column => column.id)}\n strategy={horizontalListSortingStrategy}\n >\n {headerContent}\n </SortableContext>\n </DndContext>\n );\n};\n\nconst SortableHeaderItem: React.FC<{\n column: ColumnState;\n labels: Record<VisibleField, string>;\n setColumnsState?: React.Dispatch<React.SetStateAction<ColumnsState>>;\n enableDrag: boolean;\n setResizingId: (id: string | null) => void;\n isResizing: boolean;\n}> = ({ column, labels, setColumnsState, enableDrag, setResizingId, isResizing }) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({\n id: column.id,\n disabled: !enableDrag,\n });\n const startXRef = useRef<number | null>(null);\n const startWidthRef = useRef<number | null>(null);\n const moveHandlerRef = useRef<((event: MouseEvent) => void) | null>(null);\n const upHandlerRef = useRef<(() => void) | null>(null);\n\n useEffect(() => {\n return () => {\n if (moveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", moveHandlerRef.current);\n moveHandlerRef.current = null;\n }\n if (upHandlerRef.current) {\n document.removeEventListener(\"mouseup\", upHandlerRef.current);\n upHandlerRef.current = null;\n }\n };\n }, []);\n\n const style: React.CSSProperties = {\n minWidth: column.width,\n maxWidth: column.width,\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n const onMouseDownResize: React.MouseEventHandler<HTMLDivElement> = event => {\n event.stopPropagation();\n event.preventDefault();\n startXRef.current = event.clientX;\n startWidthRef.current = column.width;\n setResizingId(column.id);\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (startXRef.current == null || startWidthRef.current == null) return;\n const delta = moveEvent.clientX - startXRef.current;\n const nextWidth = Math.max(column.minWidth, startWidthRef.current + delta);\n setColumnsState?.(prev =>\n prev.map(item =>\n item.id === column.id ? { ...item, width: nextWidth } : item\n )\n );\n };\n\n const handleMouseUp = () => {\n startXRef.current = null;\n startWidthRef.current = null;\n setResizingId(null);\n if (moveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", moveHandlerRef.current);\n moveHandlerRef.current = null;\n }\n if (upHandlerRef.current) {\n document.removeEventListener(\"mouseup\", upHandlerRef.current);\n upHandlerRef.current = null;\n }\n };\n\n moveHandlerRef.current = handleMouseMove;\n upHandlerRef.current = handleMouseUp;\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n return (\n <div\n ref={setNodeRef}\n className={classNames(styles.ganttTable_HeaderItem, {\n [styles.ganttTable_HeaderItemDragging]: isDragging,\n })}\n style={style}\n >\n <div\n className={classNames(styles.ganttTable_DragHandle, {\n [styles.ganttTable_DragHandleDisabled]: !enableDrag,\n })}\n {...attributes}\n {...listeners}\n aria-label=\"Drag column\"\n onMouseDown={event => event.stopPropagation()}\n >\n <span className={styles.ganttTable_DragIcon} aria-hidden=\"true\">\n ⋮⋮\n </span>\n </div>\n <div className={styles.ganttTable_HeaderLabel}>{labels[column.id]}</div>\n <div\n className={classNames(styles.ganttTable_ResizeHandle, {\n [styles.ganttTable_ResizeHandleActive]: isResizing,\n })}\n onMouseDown={onMouseDownResize}\n aria-label=\"Resize column\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n </div>\n );\n};\n","import React from \"react\";\nimport styles from \"./task-list-table.module.css\";\nimport { ColumnsState, EffortUnit, Task, VisibleField } from \"../../types/public-types\";\nimport { getDefaultWidth, TaskListEditingStateContext } from \"./task-list\";\nimport {\n formatDate,\n formatEffort,\n getStatusBadgeText,\n getStatusColor,\n normalizeProcess,\n normalizeStatus,\n resolveVisibleFields,\n} from \"../../helpers/task-helper\";\n\nexport const TaskListTableDefault: React.FC<{\n rowHeight: number;\n rowWidth: string;\n fontFamily: string;\n fontSize: string;\n tasks: Task[];\n selectedTaskId: string;\n setSelectedTask: (taskId: string) => void;\n onExpanderClick: (task: Task) => void;\n visibleFields: VisibleField[];\n onUpdateTask?: (taskId: string, updatedFields: Partial<Task>) => void;\n onCellCommit?: (payload: {\n rowId: string;\n columnId: VisibleField;\n value: string;\n trigger: \"enter\";\n }) => Promise<void>;\n effortDisplayUnit: EffortUnit;\n columnsState?: ColumnsState;\n}> = ({\n rowHeight,\n rowWidth,\n tasks,\n fontFamily,\n fontSize,\n onExpanderClick,\n visibleFields,\n onCellCommit,\n effortDisplayUnit,\n columnsState,\n}) => {\n const columns =\n columnsState?.filter(column => column.visible !== false) ??\n resolveVisibleFields(visibleFields).map(field => ({\n id: field,\n width: getDefaultWidth(field, rowWidth),\n }));\n const isCommitEnabled = !!onCellCommit;\n const allowEditing = isCommitEnabled;\n const editingContext = React.useContext(TaskListEditingStateContext);\n const editingState = editingContext?.editingState;\n const editableFields = new Set<VisibleField>([\n \"name\",\n \"start\",\n \"end\",\n \"process\",\n \"assignee\",\n \"plannedStart\",\n \"plannedEnd\",\n \"plannedEffort\",\n \"actualEffort\",\n \"status\",\n ]);\n const columnIds = columns.map(column =>\n typeof column === \"string\" ? column : column.id\n );\n\n const resolveColumnId = (column: (typeof columns)[number]) =>\n (typeof column === \"string\" ? column : column.id) as VisibleField;\n\n const isCellEditable = (task: Task, columnId: VisibleField) => {\n const tableEditable = allowEditing;\n const columnEditable = editableFields.has(columnId);\n const rowEditable = task.isDisabled !== true;\n const cellEditableByRule = true;\n return tableEditable && columnEditable && rowEditable && cellEditableByRule;\n };\n\n const selectCell = editingContext?.selectCell;\n const startEditing = editingContext?.startEditing;\n\n const findCellPosition = () => {\n if (!editingState || editingState.mode === \"viewing\") {\n return null;\n }\n const rowIndex = tasks.findIndex(task => task.id === editingState.rowId);\n const columnIndex = columnIds.indexOf(editingState.columnId as VisibleField);\n if (rowIndex < 0 || columnIndex < 0) {\n return null;\n }\n return { rowIndex, columnIndex };\n };\n\n const resolveSelectedCell = () => {\n if (!editingState || editingState.mode !== \"selected\") {\n return null;\n }\n const columnId = editingState.columnId as VisibleField | null;\n if (!columnId || !columnIds.includes(columnId)) {\n return null;\n }\n const task = tasks.find(row => row.id === editingState.rowId);\n if (!task) {\n return null;\n }\n return { task, columnId };\n };\n\n const moveSelection = (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n if (!selectCell || tasks.length === 0 || columnIds.length === 0) {\n return;\n }\n const position = findCellPosition();\n if (!position) {\n const firstColumn = columnIds[0];\n selectCell(tasks[0].id, firstColumn);\n return;\n }\n let { rowIndex, columnIndex } = position;\n switch (direction) {\n case \"up\":\n rowIndex = Math.max(0, rowIndex - 1);\n break;\n case \"down\":\n rowIndex = Math.min(tasks.length - 1, rowIndex + 1);\n break;\n case \"left\":\n columnIndex = Math.max(0, columnIndex - 1);\n break;\n case \"right\":\n columnIndex = Math.min(columnIds.length - 1, columnIndex + 1);\n break;\n default:\n break;\n }\n selectCell(tasks[rowIndex].id, columnIds[columnIndex]);\n };\n\n const shouldIgnoreKeyEvent = (target: EventTarget) => {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n if (target.isContentEditable) {\n return true;\n }\n const tagName = target.tagName;\n return tagName === \"INPUT\" || tagName === \"TEXTAREA\" || tagName === \"SELECT\";\n };\n\n const handleWrapperKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.defaultPrevented) {\n return;\n }\n if (shouldIgnoreKeyEvent(event.target)) {\n return;\n }\n if (editingState?.mode === \"editing\") {\n return;\n }\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n moveSelection(\"up\");\n return;\n case \"ArrowDown\":\n event.preventDefault();\n moveSelection(\"down\");\n return;\n case \"ArrowLeft\":\n event.preventDefault();\n moveSelection(\"left\");\n return;\n case \"ArrowRight\":\n event.preventDefault();\n moveSelection(\"right\");\n return;\n default:\n break;\n }\n if (editingState?.mode !== \"selected\") {\n return;\n }\n const selectedCell = resolveSelectedCell();\n if (!selectedCell || !startEditing) {\n return;\n }\n if (event.key === \"Enter\") {\n if (!isCellEditable(selectedCell.task, selectedCell.columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: selectedCell.task.id,\n columnId: selectedCell.columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(\n selectedCell.task.id,\n selectedCell.columnId,\n \"enter\"\n );\n return;\n }\n if (event.key === \"Escape\") {\n return;\n }\n const isPrintableKey =\n event.key.length === 1 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey;\n if (isPrintableKey) {\n if (!isCellEditable(selectedCell.task, selectedCell.columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: selectedCell.task.id,\n columnId: selectedCell.columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(selectedCell.task.id, selectedCell.columnId, \"key\");\n }\n };\n\n return (\n <div\n className={styles.taskListWrapper}\n tabIndex={0}\n onKeyDown={handleWrapperKeyDown}\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 const renderCell = (field: VisibleField) => {\n switch (field) {\n case \"name\":\n return (\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 );\n case \"start\":\n return <span>{formatDate(t.start)}</span>;\n case \"end\":\n return <span>{formatDate(t.end)}</span>;\n case \"process\":\n return <span>{normalizeProcess(t.process)}</span>;\n case \"assignee\":\n return <span>{t.assignee || \"\"}</span>;\n case \"plannedStart\":\n return <span>{formatDate(t.plannedStart)}</span>;\n case \"plannedEnd\":\n return <span>{formatDate(t.plannedEnd)}</span>;\n case \"plannedEffort\":\n return (\n <span>{formatEffort(t.plannedEffort, effortDisplayUnit)}</span>\n );\n case \"actualEffort\":\n return (\n <span>{formatEffort(t.actualEffort, effortDisplayUnit)}</span>\n );\n case \"status\":\n {\n const statusValue = normalizeStatus(t.status);\n return (\n <div className={styles.statusWrapper}>\n <span\n className={styles.statusBadge}\n style={{ backgroundColor: getStatusColor(statusValue) }}\n >\n {getStatusBadgeText(statusValue)}\n </span>\n <span className={styles.statusText}>{statusValue}</span>\n </div>\n );\n }\n default:\n return null;\n }\n };\n return (\n <div\n className={styles.taskListTableRow}\n style={{ height: rowHeight }}\n key={`${t.id}row`}\n >\n {columns.map(column => {\n const columnId = resolveColumnId(column);\n const isSelected =\n editingState?.mode !== \"viewing\" &&\n editingState?.rowId === t.id &&\n editingState?.columnId === columnId;\n const handleCellClick = (\n event: React.MouseEvent<HTMLDivElement>\n ) => {\n if (editingState?.mode === \"editing\") {\n const pending = editingState.pending;\n console.log(\"[edit:select]\", { rowId: t.id, columnId, pending });\n if (pending) {\n return;\n }\n }\n if (selectCell) {\n selectCell(t.id, columnId);\n }\n event.currentTarget.focus();\n };\n\n const handleCellDoubleClick = () => {\n if (!startEditing) {\n return;\n }\n if (!isCellEditable(t, columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: t.id,\n columnId,\n });\n return;\n }\n startEditing(t.id, columnId, \"dblclick\");\n };\n\n const handleCellKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ) => {\n if (shouldIgnoreKeyEvent(event.target)) {\n return;\n }\n if (!isSelected || editingState?.mode !== \"selected\") {\n return;\n }\n if (event.key === \"Enter\") {\n if (!startEditing) {\n return;\n }\n if (!isCellEditable(t, columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: t.id,\n columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(t.id, columnId, \"enter\");\n return;\n }\n if (event.key === \"Escape\") {\n return;\n }\n const isPrintableKey =\n event.key.length === 1 &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.altKey;\n if (isPrintableKey) {\n if (!startEditing) {\n return;\n }\n if (!isCellEditable(t, columnId)) {\n console.debug(\"[TaskList] ignore enter editing\", {\n reason: \"not-editable\",\n rowId: t.id,\n columnId,\n });\n return;\n }\n event.preventDefault();\n startEditing(t.id, columnId, \"key\");\n }\n };\n\n return (\n <div\n key={`${t.id}-${columnId}`}\n className={styles.taskListCell}\n data-row-id={t.id}\n data-column-id={columnId}\n aria-selected={isSelected || undefined}\n tabIndex={isSelected ? 0 : -1}\n onClick={handleCellClick}\n onDoubleClick={handleCellDoubleClick}\n onKeyDown={handleCellKeyDown}\n style={{\n minWidth:\n typeof column === \"string\"\n ? rowWidth\n : `${column.width}px`,\n maxWidth:\n typeof column === \"string\"\n ? rowWidth\n : `${column.width}px`,\n }}\n title={columnId === \"name\" ? t.name : undefined}\n >\n {renderCell(columnId)}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n};\n","import React, { useRef, useEffect, useState } from \"react\";\nimport { EffortUnit, Task } from \"../../types/public-types\";\nimport { BarTask } from \"../../types/bar-task\";\nimport {\n formatDate,\n formatEffort,\n getStatusBadgeText,\n getStatusColor,\n normalizeProcess,\n normalizeStatus,\n} from \"../../helpers/task-helper\";\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 effortDisplayUnit?: EffortUnit;\n }>;\n effortDisplayUnit: EffortUnit;\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 effortDisplayUnit,\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\n task={task}\n fontSize={fontSize}\n fontFamily={fontFamily}\n effortDisplayUnit={effortDisplayUnit}\n />\n </div>\n );\n};\n\nexport const StandardTooltipContent: React.FC<{\n task: Task;\n fontSize: string;\n fontFamily: string;\n effortDisplayUnit?: EffortUnit;\n}> = ({ task, fontSize, fontFamily, effortDisplayUnit = \"MH\" }) => {\n const style = {\n fontSize,\n fontFamily,\n };\n const normalizedStatus = normalizeStatus(task.status);\n const normalizedProcess = normalizeProcess(task.process);\n const dateRange = `${formatDate(task.start)} 〜 ${formatDate(task.end)}`;\n const plannedRange =\n task.plannedStart || task.plannedEnd\n ? `${formatDate(task.plannedStart)} 〜 ${formatDate(task.plannedEnd)}`\n : \"\";\n const plannedEffort = formatEffort(task.plannedEffort, effortDisplayUnit);\n const actualEffort = formatEffort(task.actualEffort, effortDisplayUnit);\n return (\n <div className={styles.tooltipDefaultContainer} style={style}>\n <div className={styles.tooltipTitle}>\n <b className={styles.tooltipName}>{task.name}</b>\n <span className={styles.tooltipDate}>{dateRange}</span>\n </div>\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>工程</span>\n <span className={styles.tooltipValue}>{normalizedProcess}</span>\n </div>\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>担当</span>\n <span className={styles.tooltipValue}>{task.assignee || \"-\"}</span>\n </div>\n {plannedRange && (\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>予定</span>\n <span className={styles.tooltipValue}>{plannedRange}</span>\n </div>\n )}\n {plannedEffort && (\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>予定工数</span>\n <span className={styles.tooltipValue}>{plannedEffort}</span>\n </div>\n )}\n {actualEffort && (\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>実績工数</span>\n <span className={styles.tooltipValue}>{actualEffort}</span>\n </div>\n )}\n <div className={styles.tooltipRow}>\n <span className={styles.tooltipLabel}>ステータス</span>\n <span className={styles.tooltipValue}>\n <span\n className={styles.tooltipStatus}\n style={{ backgroundColor: getStatusColor(normalizedStatus) }}\n >\n {getStatusBadgeText(normalizedStatus)}\n </span>\n <span className={styles.tooltipStatusText}>{normalizedStatus}</span>\n </span>\n </div>\n {!!task.progress && (\n <p className={styles.tooltipDefaultContainerParagraph}>\n 進捗率: {task.progress} %\n </p>\n )}\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 position: \"absolute\",\n top: headerHeight,\n height: ganttHeight,\n right: rtl ? undefined : 0,\n left: rtl ? 0 : undefined,\n }}\n className={styles.scroll}\n onScroll={onScroll}\n ref={scrollRef}\n >\n <div style={{ height: ganttFullHeight, width: 1 }} />\n </div>\n );\n};\n","/**\n * Japanese national holidays data\n * Format: YYYY-MM-DD\n * This data should be updated periodically with new releases\n */\nexport const JP_HOLIDAYS: Record<number, string[]> = {\n 2024: [\n \"2024-01-01\", // 元日\n \"2024-01-08\", // 成人の日\n \"2024-02-11\", // 建国記念の日\n \"2024-02-12\", // 振替休日\n \"2024-02-23\", // 天皇誕生日\n \"2024-03-20\", // 春分の日\n \"2024-04-29\", // 昭和の日\n \"2024-05-03\", // 憲法記念日\n \"2024-05-04\", // みどりの日\n \"2024-05-05\", // こどもの日\n \"2024-05-06\", // 振替休日\n \"2024-07-15\", // 海の日\n \"2024-08-11\", // 山の日\n \"2024-08-12\", // 振替休日\n \"2024-09-16\", // 敬老の日\n \"2024-09-22\", // 秋分の日\n \"2024-09-23\", // 振替休日\n \"2024-10-14\", // スポーツの日\n \"2024-11-03\", // 文化の日\n \"2024-11-04\", // 振替休日\n \"2024-11-23\", // 勤労感謝の日\n ],\n 2025: [\n \"2025-01-01\", // 元日\n \"2025-01-13\", // 成人の日\n \"2025-02-11\", // 建国記念の日\n \"2025-02-23\", // 天皇誕生日\n \"2025-02-24\", // 振替休日\n \"2025-03-20\", // 春分の日\n \"2025-04-29\", // 昭和の日\n \"2025-05-03\", // 憲法記念日\n \"2025-05-04\", // みどりの日\n \"2025-05-05\", // こどもの日\n \"2025-05-06\", // 振替休日\n \"2025-07-21\", // 海の日\n \"2025-08-11\", // 山の日\n \"2025-09-15\", // 敬老の日\n \"2025-09-23\", // 秋分の日\n \"2025-10-13\", // スポーツの日\n \"2025-11-03\", // 文化の日\n \"2025-11-23\", // 勤労感謝の日\n \"2025-11-24\", // 振替休日\n ],\n 2026: [\n \"2026-01-01\", // 元日\n \"2026-01-12\", // 成人の日\n \"2026-02-11\", // 建国記念の日\n \"2026-02-23\", // 天皇誕生日\n \"2026-03-20\", // 春分の日\n \"2026-04-29\", // 昭和の日\n \"2026-05-03\", // 憲法記念日\n \"2026-05-04\", // みどりの日\n \"2026-05-05\", // こどもの日\n \"2026-05-06\", // 振替休日\n \"2026-07-20\", // 海の日\n \"2026-08-11\", // 山の日\n \"2026-09-21\", // 敬老の日\n \"2026-09-22\", // 秋分の日\n \"2026-10-12\", // スポーツの日\n \"2026-11-03\", // 文化の日\n \"2026-11-23\", // 勤労感謝の日\n ],\n};\n\n/**\n * Get all Japanese holidays as a Set for fast lookup\n */\nexport const getJPHolidaySet = (): Set<string> => {\n const holidays = new Set<string>();\n Object.values(JP_HOLIDAYS).forEach((yearHolidays) => {\n yearHolidays.forEach((holiday) => holidays.add(holiday));\n });\n return holidays;\n};\n\n/**\n * Cached Japanese holidays set for performance\n */\nexport const JP_HOLIDAYS_SET = getJPHolidaySet();\n","import { CalendarConfig } from \"../types/public-types\";\nimport { JP_HOLIDAYS_SET } from \"./jp-holidays\";\n\n/**\n * Normalized calendar configuration with default values\n */\nexport interface NormalizedCalendarConfig {\n locale: string;\n dateFormat: string;\n enableJPHoliday: boolean;\n highlightNonWorkingDays: boolean;\n workOnSaturday: boolean;\n extraHolidays: Set<string>;\n extraWorkingDays: Set<string>;\n}\n\n/**\n * Module-scoped set to track warnings already emitted (works in both browser and SSR)\n */\nconst emittedWarnings = new Set<string>();\n\n/**\n * Helper to emit a warning only once per unique key\n */\nconst warnOnce = (key: string, message: string): void => {\n if (!emittedWarnings.has(key) && typeof console !== \"undefined\") {\n console.warn(message);\n emittedWarnings.add(key);\n }\n};\n\n/**\n * Normalize and validate calendar configuration\n */\nexport const normalizeCalendarConfig = (\n config: CalendarConfig\n): NormalizedCalendarConfig => {\n // When calendar config is provided, default to Japanese locale unless overridden\n // Normalize locale by trimming whitespace and falling back to \"ja\" if empty\n const rawLocale = config.locale?.trim() || \"\";\n const locale = rawLocale || \"ja\";\n const dateFormat = config.dateFormat || \"MM/dd(EEE)\";\n const enableJPHoliday = config.enableJPHoliday ?? true;\n const highlightNonWorkingDays = config.highlightNonWorkingDays ?? true;\n const workOnSaturday = config.workOnSaturday === true;\n\n // Validate and normalize ISO date strings\n const extraHolidays = new Set<string>();\n if (config.extraHolidays) {\n config.extraHolidays.forEach((dateStr) => {\n const normalized = normalizeISODate(dateStr);\n if (normalized) {\n extraHolidays.add(normalized);\n }\n });\n }\n\n const extraWorkingDays = new Set<string>();\n if (config.extraWorkingDays) {\n config.extraWorkingDays.forEach((dateStr) => {\n const normalized = normalizeISODate(dateStr);\n if (normalized) {\n extraWorkingDays.add(normalized);\n }\n });\n }\n\n // Warn if non-ja locale is specified when calendar is configured (only once per normalized locale)\n if (!locale.toLowerCase().startsWith(\"ja\")) {\n const localeKey = locale.trim().toLowerCase();\n warnOnce(\n `gantt-calendar-locale-${localeKey}`,\n `[Gantt Calendar] Non-Japanese locale \"${locale}\" specified. ` +\n `Holiday definitions (including Japanese public holidays) are still based on the Japanese calendar.`\n );\n }\n\n // Warn if non-default dateFormat is specified (only once per normalized format)\n // Note: dateFormat is currently a legacy field and does not affect rendering\n if (dateFormat !== \"MM/dd(EEE)\") {\n const dateFormatKey = dateFormat.trim().toLowerCase();\n warnOnce(\n `gantt-calendar-dateFormat-${dateFormatKey}`,\n `[Gantt Calendar] Custom dateFormat \"${dateFormat}\" specified. ` +\n `Note: dateFormat is currently a legacy field and does not affect date rendering. ` +\n `The format \"MM/dd(EEE)\" is used internally regardless of this setting.`\n );\n }\n\n return {\n locale,\n dateFormat,\n enableJPHoliday,\n highlightNonWorkingDays,\n workOnSaturday,\n extraHolidays,\n extraWorkingDays,\n };\n};\n\n/**\n * Normalize ISO date string (YYYY-MM-DD) to valid date\n * Returns canonical YYYY-MM-DD format or null if invalid\n */\nexport const normalizeISODate = (dateStr: string): string | null => {\n try {\n const trimmed = dateStr.trim();\n\n // Strictly validate format: YYYY-M-D where year is 4 digits and month/day are 1–2 digits\n // This prevents inputs with trailing characters (e.g. \"2024-01-15abc\") from being accepted.\n if (!/^\\d{4}-\\d{1,2}-\\d{1,2}$/.test(trimmed)) {\n return null;\n }\n\n const parts = trimmed.split(\"-\");\n if (parts.length !== 3) return null;\n\n const year = Number(parts[0]);\n const month = Number(parts[1]);\n const day = Number(parts[2]);\n\n // Validate ranges\n if (\n isNaN(year) ||\n isNaN(month) ||\n isNaN(day) ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31\n ) {\n return null;\n }\n\n // Create date and verify it matches input (catches invalid dates like 2/30)\n const date = new Date(year, month - 1, day);\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day\n ) {\n return null;\n }\n\n // Return canonical zero-padded format\n const paddedMonth = String(month).padStart(2, \"0\");\n const paddedDay = String(day).padStart(2, \"0\");\n return `${year}-${paddedMonth}-${paddedDay}`;\n } catch (e) {\n if (typeof console !== \"undefined\") {\n console.warn(`[Gantt Calendar] Invalid date string: ${dateStr}`);\n }\n return null;\n }\n};\n\n/**\n * Convert Date to ISO date string (YYYY-MM-DD)\n */\nexport const toISODateString = (date: Date): string => {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n};\n\n/**\n * Check if a date is a working day according to calendar configuration\n */\nexport const isWorkingDay = (\n date: Date,\n config: NormalizedCalendarConfig\n): boolean => {\n const dateStr = toISODateString(date);\n\n // Priority 1: extraWorkingDays overrides everything\n if (config.extraWorkingDays.has(dateStr)) {\n return true;\n }\n\n // Priority 2: extraHolidays makes it non-working\n if (config.extraHolidays.has(dateStr)) {\n return false;\n }\n\n // Priority 3: Check day of week\n const dayOfWeek = date.getDay();\n \n // Sunday is always non-working\n if (dayOfWeek === 0) {\n return false;\n }\n\n // Saturday depends on workOnSaturday setting\n if (dayOfWeek === 6 && !config.workOnSaturday) {\n return false;\n }\n\n // Priority 4: Check Japanese holidays\n if (config.enableJPHoliday) {\n if (JP_HOLIDAYS_SET.has(dateStr)) {\n return false;\n }\n }\n\n // Default: working day\n return true;\n};\n\n/**\n * Count working days between two dates (inclusive)\n */\nexport const countWorkingDays = (\n startDate: Date,\n endDate: Date,\n config: NormalizedCalendarConfig\n): number => {\n let count = 0;\n const currentDate = new Date(startDate);\n \n while (currentDate <= endDate) {\n if (isWorkingDay(currentDate, config)) {\n count++;\n }\n currentDate.setDate(currentDate.getDate() + 1);\n }\n \n return count;\n};\n\n/**\n * Format date in MM/dd(曜) format using Intl.DateTimeFormat\n */\nexport const formatJapaneseDate = (date: Date): string => {\n try {\n const formatter = new Intl.DateTimeFormat(\"ja\", {\n month: \"2-digit\",\n day: \"2-digit\",\n weekday: \"short\",\n });\n\n const parts = formatter.formatToParts(date);\n let month = \"\";\n let day = \"\";\n let weekday = \"\";\n\n parts.forEach((part) => {\n if (part.type === \"month\") {\n month = part.value;\n } else if (part.type === \"day\") {\n day = part.value;\n } else if (part.type === \"weekday\") {\n weekday = part.value;\n }\n });\n\n return `${month}/${day}(${weekday})`;\n } catch (e) {\n // Fallback to simple format if Intl fails\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${month}/${day}`;\n }\n};\n","import React, { ReactChild } from \"react\";\nimport { Task } from \"../../types/public-types\";\nimport { addToDate } from \"../../helpers/date-helper\";\nimport {\n isWorkingDay,\n NormalizedCalendarConfig,\n} from \"../../helpers/calendar-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 calendarConfig?: NormalizedCalendarConfig;\n};\nexport const GridBody: React.FC<GridBodyProps> = ({\n tasks,\n dates,\n rowHeight,\n svgWidth,\n columnWidth,\n todayColor,\n rtl,\n calendarConfig,\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 const nonWorkingDays: 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\n // Highlight non-working days\n if (\n calendarConfig &&\n calendarConfig.highlightNonWorkingDays &&\n !isWorkingDay(date, calendarConfig)\n ) {\n nonWorkingDays.push(\n <rect\n key={`non-working-${date.getTime()}`}\n x={tickX}\n y={0}\n width={columnWidth}\n height={y}\n fill=\"rgba(0, 0, 0, 0.05)\"\n />\n );\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=\"nonWorkingDays\">{nonWorkingDays}</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 getCachedDateTimeFormat,\n getDaysInMonth,\n getLocalDayOfWeek,\n getLocaleMonth,\n getWeekNumberISO8601,\n} from \"../../helpers/date-helper\";\nimport {\n formatJapaneseDate,\n NormalizedCalendarConfig,\n} from \"../../helpers/calendar-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 calendarConfig?: NormalizedCalendarConfig;\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 calendarConfig,\n}) => {\n // Use calendarConfig.locale if calendar is configured, otherwise fall back to locale prop\n const effectiveLocale = calendarConfig?.locale || locale;\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.9}\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.9}\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, effectiveLocale);\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.9}\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, effectiveLocale)}, ${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.9}\n />\n );\n }\n weeksCount = 0;\n }\n weeksCount++;\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 // Use Japanese format if calendarConfig is provided and locale is Japanese (e.g. \"ja\", \"ja-JP\")\n const useJapaneseFormat =\n !!calendarConfig &&\n typeof calendarConfig.locale === \"string\" &&\n calendarConfig.locale.toLowerCase().startsWith(\"ja\");\n const bottomValue = useJapaneseFormat\n ? formatJapaneseDate(date)\n : `${getLocalDayOfWeek(date, effectiveLocale, \"short\")}, ${date.getDate().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, effectiveLocale);\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.9}\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(effectiveLocale, {\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 effectiveLocale,\n \"short\"\n )}, ${date.getDate()} ${getLocaleMonth(date, effectiveLocale)}`;\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.9}\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(effectiveLocale, {\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 effectiveLocale,\n \"long\"\n )}, ${displayDate.getDate()} ${getLocaleMonth(displayDate, effectiveLocale)}`;\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.9}\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.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 </g>\n );\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) => {\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 );\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): 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 );\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 );\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): 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 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 ...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 };\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 progressPoint = getProgressPoint(\n +!rtl * task.progressWidth + task.progressX,\n task.y,\n task.height\n );\n const handleHeight = task.height - 2;\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 {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, useMemo } from \"react\";\nimport { BarTask } from \"../../types/bar-task\";\nimport { GanttContentMoveAction } from \"../../types/gantt-task-actions\";\nimport {\n getStatusBadgeText,\n getStatusColor,\n normalizeStatus,\n} from \"../../helpers/task-helper\";\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 isProgressChangeable,\n isDateChangeable,\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 const normalizedStatus = normalizeStatus(task.status);\n const statusColor = getStatusColor(normalizedStatus);\n const statusBadgeText = getStatusBadgeText(normalizedStatus);\n\n const taskItemProps = useMemo(\n () => ({\n task,\n arrowIndent,\n taskHeight,\n isProgressChangeable,\n isDateChangeable,\n isDelete,\n isSelected,\n rtl,\n onEventStart,\n }),\n [\n task,\n arrowIndent,\n taskHeight,\n isProgressChangeable,\n isDateChangeable,\n isDelete,\n isSelected,\n rtl,\n onEventStart,\n ]\n );\n\n useEffect(() => {\n switch (task.typeInternal) {\n case \"milestone\":\n setTaskItem(<Milestone {...taskItemProps} />);\n break;\n case \"project\":\n setTaskItem(<Project {...taskItemProps} />);\n break;\n case \"smalltask\":\n setTaskItem(<BarSmall {...taskItemProps} />);\n break;\n default:\n setTaskItem(<Bar {...taskItemProps} />);\n break;\n }\n }, [\n task,\n taskItemProps,\n ]);\n\n const getBBoxWidth = () => {\n if (!textRef.current || typeof textRef.current.getBBox !== \"function\") {\n return 0;\n }\n return textRef.current.getBBox().width;\n };\n\n useEffect(() => {\n setIsTextInside(getBBoxWidth() < task.x2 - task.x1);\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 getBBoxWidth() -\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 {!!statusBadgeText && (\n <tspan className={style.statusDot} fill={statusColor}>\n ●\n </tspan>\n )}\n <tspan dx={statusBadgeText ? 4 : 0}>{task.name}</tspan>\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 =\n svg?.current && \"createSVGPoint\" in svg.current\n ? svg.current.createSVGPoint()\n : undefined;\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 verticalGanttContainerRef?: React.RefObject<HTMLDivElement>;\n};\nexport const TaskGantt: React.FC<TaskGanttProps> = ({\n gridProps,\n calendarProps,\n barProps,\n ganttHeight,\n scrollY,\n scrollX,\n verticalGanttContainerRef,\n}) => {\n const ganttSVGRef = useRef<SVGSVGElement>(null);\n const horizontalContainerRef = useRef<HTMLDivElement>(null);\n const internalVerticalRef = useRef<HTMLDivElement>(null);\n const ganttContainerRef = verticalGanttContainerRef || internalVerticalRef;\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 (ganttContainerRef.current) {\n ganttContainerRef.current.scrollLeft = scrollX;\n }\n }, [scrollX, ganttContainerRef]);\n\n return (\n <div\n className={styles.ganttVerticalContainer}\n ref={ganttContainerRef}\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 type HorizontalScrollProps = {\n scroll: number;\n svgWidth: number;\n scrollerWidth?: number;\n rtl: boolean;\n onScroll: (event: SyntheticEvent<HTMLDivElement>) => void;\n \"data-testid\"?: string;\n containerRef?: React.RefObject<HTMLDivElement>;\n hidden?: boolean;\n};\n\nexport const HorizontalScroll: React.FC<HorizontalScrollProps> = ({\n scroll,\n svgWidth,\n scrollerWidth,\n rtl,\n onScroll,\n \"data-testid\": dataTestId,\n containerRef,\n hidden,\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const wrapperRef = containerRef ?? scrollRef;\n\n useEffect(() => {\n if (wrapperRef.current) {\n wrapperRef.current.scrollLeft = scroll;\n }\n }, [scroll, wrapperRef]);\n\n return (\n <div\n dir={rtl ? \"rtl\" : \"ltr\"}\n className={styles.scrollWrapper}\n onScroll={onScroll}\n ref={wrapperRef}\n data-testid={dataTestId}\n style={hidden ? { display: \"none\" } : { width: svgWidth }}\n >\n <div style={{ width: scrollerWidth ?? 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 { DEFAULT_VISIBLE_FIELDS } from \"../../helpers/task-helper\";\nimport { normalizeCalendarConfig } from \"../../helpers/calendar-helper\";\nimport styles from \"./gantt.module.css\";\n\nconst DEFAULT_TASK_LIST_WIDTH = 450;\nconst MIN_PANE_WIDTH = 150;\nconst SPLIT_HANDLE_WIDTH = 8;\n\nconst clampTaskListWidth = (width: number, containerWidth: number) => {\n const maxWidth = Math.max(\n MIN_PANE_WIDTH,\n containerWidth - MIN_PANE_WIDTH - SPLIT_HANDLE_WIDTH\n );\n return Math.min(Math.max(width, MIN_PANE_WIDTH), maxWidth);\n};\n\nexport const Gantt: React.FunctionComponent<GanttProps> = ({\n tasks,\n headerHeight = 50,\n columnWidth = 60,\n listCellWidth = \"155px\",\n rowHeight = 50,\n ganttHeight = 0,\n viewMode = ViewMode.Day,\n preStepsCount = 1,\n locale = \"en-GB\",\n calendar,\n barFill = 60,\n barCornerRadius = 3,\n barProgressColor = \"#a3a3ff\",\n barProgressSelectedColor = \"#8282f5\",\n barBackgroundColor = \"#b8c2cc\",\n barBackgroundSelectedColor = \"#aeb8c2\",\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 visibleFields = DEFAULT_VISIBLE_FIELDS,\n effortDisplayUnit = \"MH\",\n enableColumnDrag,\n onDateChange,\n onProgressChange,\n onDoubleClick,\n onClick,\n onDelete,\n onSelect,\n onExpanderClick,\n onTaskUpdate,\n onCellCommit,\n}) => {\n // Normalize calendar configuration (only when calendar prop is provided)\n const calendarConfig = useMemo(\n () => (calendar ? normalizeCalendarConfig(calendar) : undefined),\n [calendar]\n );\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const taskListRef = useRef<HTMLDivElement>(null);\n const taskListHeaderRef = useRef<HTMLDivElement>(null);\n const taskListBodyRef = useRef<HTMLDivElement>(null);\n const ganttContainerRef = useRef<HTMLDivElement>(null);\n const splitStartXRef = useRef<number | null>(null);\n const splitStartWidthRef = useRef<number | null>(null);\n const splitMoveHandlerRef = useRef<((event: MouseEvent) => void) | null>(null);\n const splitUpHandlerRef = useRef<(() => void) | null>(null);\n const supportsPointerEvents =\n typeof window !== \"undefined\" && \"PointerEvent\" in window;\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(DEFAULT_TASK_LIST_WIDTH);\n const [wrapperWidth, setWrapperWidth] = useState(0);\n const [isResizing, setIsResizing] = useState(false);\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 [scrollXLeft, setScrollXLeft] = useState(0);\n const [scrollXRight, setScrollXRight] = useState(-1);\n const [leftScrollerWidth, setLeftScrollerWidth] = useState(1430);\n const ignoreScrollLeftRef = useRef(false);\n const ignoreScrollRightRef = useRef(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 (scrollXRight === -1) {\n setScrollXRight(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 )\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 scrollXRight,\n onExpanderClick,\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 setScrollXRight(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 const updateWrapperWidth = () => {\n if (wrapperRef.current) {\n setWrapperWidth(wrapperRef.current.offsetWidth);\n }\n };\n updateWrapperWidth();\n window.addEventListener(\"resize\", updateWrapperWidth);\n return () => window.removeEventListener(\"resize\", updateWrapperWidth);\n }, []);\n\n useEffect(() => {\n if (!listCellWidth) {\n setTaskListWidth(0);\n return;\n }\n if (wrapperWidth) {\n setTaskListWidth(prev => clampTaskListWidth(prev, wrapperWidth));\n }\n }, [listCellWidth, wrapperWidth]);\n\n const taskListOffset = listCellWidth\n ? taskListWidth + SPLIT_HANDLE_WIDTH\n : 0;\n\n useEffect(() => {\n if (wrapperWidth) {\n setSvgContainerWidth(Math.max(wrapperWidth - taskListOffset, 0));\n }\n }, [wrapperWidth, taskListOffset]);\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 useEffect(() => {\n return () => {\n if (splitMoveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", splitMoveHandlerRef.current);\n splitMoveHandlerRef.current = null;\n }\n if (splitUpHandlerRef.current) {\n document.removeEventListener(\"mouseup\", splitUpHandlerRef.current);\n splitUpHandlerRef.current = null;\n }\n };\n }, []);\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 = scrollXRight + scrollMove;\n if (newScrollX < 0) {\n newScrollX = 0;\n } else if (newScrollX > svgWidth) {\n newScrollX = svgWidth;\n }\n ignoreScrollRightRef.current = true;\n setScrollXRight(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\n // subscribe if scroll is necessary\n const wrapperEl = wrapperRef.current;\n wrapperEl?.addEventListener(\"wheel\", handleWheel, {\n passive: false,\n });\n return () => {\n wrapperEl?.removeEventListener(\"wheel\", handleWheel);\n };\n }, [\n scrollY,\n scrollXRight,\n ganttHeight,\n svgWidth,\n rtl,\n ganttFullHeight,\n ]);\n\n // update left scroller width from the task list body content\n useEffect(() => {\n const updateLeftScroller = () => {\n const el = taskListBodyRef.current;\n if (el) {\n setLeftScrollerWidth(el.scrollWidth || 0);\n }\n };\n updateLeftScroller();\n const RO = (window as any).ResizeObserver;\n const ro = RO ? new RO(updateLeftScroller) : null;\n if (ro && taskListBodyRef.current) {\n ro.observe(taskListBodyRef.current);\n }\n window.addEventListener(\"resize\", updateLeftScroller);\n return () => {\n if (ro) {\n ro.disconnect();\n }\n window.removeEventListener(\"resize\", updateLeftScroller);\n };\n }, [tasks, fontFamily, fontSize, listCellWidth, taskListBodyRef, visibleFields]);\n\n const handleScrollY = (event: SyntheticEvent<HTMLDivElement>) => {\n if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollLeftRef.current) {\n setScrollY(event.currentTarget.scrollTop);\n ignoreScrollLeftRef.current = true;\n } else {\n ignoreScrollLeftRef.current = false;\n }\n };\n\n const handleScrollLeft = (event: SyntheticEvent<HTMLDivElement>) => {\n if (\n scrollXLeft !== event.currentTarget.scrollLeft &&\n !ignoreScrollLeftRef.current\n ) {\n setScrollXLeft(event.currentTarget.scrollLeft);\n ignoreScrollLeftRef.current = true;\n } else {\n ignoreScrollLeftRef.current = false;\n }\n };\n\n const handleScrollRight = (event: SyntheticEvent<HTMLDivElement>) => {\n if (\n scrollXRight !== event.currentTarget.scrollLeft &&\n !ignoreScrollRightRef.current\n ) {\n setScrollXRight(event.currentTarget.scrollLeft);\n ignoreScrollRightRef.current = true;\n } else {\n ignoreScrollRightRef.current = false;\n }\n if (ganttContainerRef.current && ganttContainerRef.current.scrollLeft !== event.currentTarget.scrollLeft) {\n ganttContainerRef.current.scrollLeft = event.currentTarget.scrollLeft;\n }\n };\n\n /**\n * Handles arrow keys events and transform it to new scroll\n */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const target = event.target;\n if (target instanceof HTMLElement) {\n if (\n target.isContentEditable ||\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\"\n ) {\n return;\n }\n }\n event.preventDefault();\n let newScrollY = scrollY;\n let newScrollX = scrollXRight;\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 ignoreScrollRightRef.current = true;\n setScrollXRight(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 };\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 updateTaskListWidth = (clientX: number) => {\n if (splitStartXRef.current == null || splitStartWidthRef.current == null) {\n return;\n }\n if (!wrapperRef.current) {\n return;\n }\n const delta = clientX - splitStartXRef.current;\n const nextWidth = clampTaskListWidth(\n splitStartWidthRef.current + delta,\n wrapperRef.current.offsetWidth\n );\n setTaskListWidth(nextWidth);\n };\n\n const handleSplitPointerDown: React.PointerEventHandler<HTMLDivElement> =\n event => {\n event.preventDefault();\n splitStartXRef.current = event.clientX;\n splitStartWidthRef.current = taskListWidth;\n setIsResizing(true);\n if (event.currentTarget.setPointerCapture) {\n event.currentTarget.setPointerCapture(event.pointerId);\n }\n };\n\n const handleSplitPointerMove: React.PointerEventHandler<HTMLDivElement> =\n event => {\n updateTaskListWidth(event.clientX);\n };\n\n const handleSplitPointerUp: React.PointerEventHandler<HTMLDivElement> = event => {\n splitStartXRef.current = null;\n splitStartWidthRef.current = null;\n setIsResizing(false);\n if (event.currentTarget.releasePointerCapture) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n };\n\n const handleSplitMouseDown: React.MouseEventHandler<HTMLDivElement> = event => {\n event.preventDefault();\n splitStartXRef.current = event.clientX;\n splitStartWidthRef.current = taskListWidth;\n setIsResizing(true);\n if (splitMoveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", splitMoveHandlerRef.current);\n }\n if (splitUpHandlerRef.current) {\n document.removeEventListener(\"mouseup\", splitUpHandlerRef.current);\n }\n const handleMouseMove = (moveEvent: MouseEvent) => {\n updateTaskListWidth(moveEvent.clientX);\n };\n const handleMouseUp = () => {\n splitStartXRef.current = null;\n splitStartWidthRef.current = null;\n setIsResizing(false);\n if (splitMoveHandlerRef.current) {\n document.removeEventListener(\"mousemove\", splitMoveHandlerRef.current);\n splitMoveHandlerRef.current = null;\n }\n if (splitUpHandlerRef.current) {\n document.removeEventListener(\"mouseup\", splitUpHandlerRef.current);\n splitUpHandlerRef.current = null;\n }\n };\n splitMoveHandlerRef.current = handleMouseMove;\n splitUpHandlerRef.current = handleMouseUp;\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n const gridProps: GridProps = {\n columnWidth,\n svgWidth,\n tasks: tasks,\n rowHeight,\n dates: dateSetup.dates,\n todayColor,\n rtl,\n calendarConfig,\n };\n const calendarProps: CalendarProps = {\n dateSetup,\n locale,\n viewMode,\n headerHeight,\n columnWidth,\n fontFamily,\n fontSize,\n rtl,\n calendarConfig,\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 headerHeight,\n scrollY,\n horizontalScroll: scrollXLeft,\n ganttHeight,\n horizontalContainerClass: styles.horizontalContainer,\n headerContainerRef: taskListHeaderRef,\n bodyContainerRef: taskListBodyRef,\n onHorizontalScroll: handleScrollLeft,\n selectedTask,\n taskListRef,\n setSelectedTask: handleSelectedTask,\n onExpanderClick: handleExpanderClick,\n TaskListHeader,\n TaskListTable,\n visibleFields,\n onUpdateTask: onTaskUpdate,\n onCellCommit,\n effortDisplayUnit,\n enableColumnDrag,\n };\n return (\n <div>\n <div\n className={styles.wrapper}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n ref={wrapperRef}\n >\n {listCellWidth && (\n <div\n className={styles.taskListPanel}\n style={{ width: taskListWidth }}\n data-testid=\"task-list-panel\"\n >\n <TaskList {...tableProps} />\n </div>\n )}\n {listCellWidth && (\n <div\n className={`${styles.splitHandle} ${\n isResizing ? styles.splitHandleActive : \"\"\n }`}\n onPointerDown={supportsPointerEvents ? handleSplitPointerDown : undefined}\n onPointerMove={supportsPointerEvents ? handleSplitPointerMove : undefined}\n onPointerUp={supportsPointerEvents ? handleSplitPointerUp : undefined}\n onPointerCancel={supportsPointerEvents ? handleSplitPointerUp : undefined}\n onMouseDown={supportsPointerEvents ? undefined : handleSplitMouseDown}\n role=\"separator\"\n aria-label=\"Task/Schedule divider\"\n aria-orientation=\"vertical\"\n data-testid=\"pane-splitter\"\n />\n )}\n <div\n className={styles.ganttPanel}\n style={{ minWidth: MIN_PANE_WIDTH }}\n data-testid=\"gantt-panel\"\n >\n <TaskGantt\n gridProps={gridProps}\n calendarProps={calendarProps}\n barProps={barProps}\n ganttHeight={ganttHeight}\n scrollY={scrollY}\n scrollX={scrollXRight}\n verticalGanttContainerRef={ganttContainerRef}\n />\n </div>\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={scrollXRight}\n scrollY={scrollY}\n task={ganttEvent.changedTask}\n headerHeight={headerHeight}\n taskListWidth={taskListOffset}\n TooltipContent={TooltipContent}\n rtl={rtl}\n svgWidth={svgWidth}\n effortDisplayUnit={effortDisplayUnit}\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 <div className={styles.scrollRow} style={{ \"--splitter-width\": `${SPLIT_HANDLE_WIDTH}px` } as React.CSSProperties}>\n <div className={styles.scrollCellLeft}>\n {listCellWidth && (\n <HorizontalScroll\n svgWidth={taskListWidth}\n scrollerWidth={leftScrollerWidth}\n scroll={scrollXLeft}\n rtl={rtl}\n onScroll={handleScrollLeft}\n />\n )}\n </div>\n {listCellWidth && <div className={styles.scrollSplitter} />}\n <div className={styles.scrollCellRight}>\n <HorizontalScroll\n svgWidth={svgWidth}\n scroll={scrollXRight}\n rtl={rtl}\n onScroll={handleScrollRight}\n />\n </div>\n </div>\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","_iterator","_createForOfIteratorHelperLoose","_step","done","task","value","end","Year","QuarterYear","Month","Week","getMonday","Day","QuarterDay","HalfDay","Hour","seedDates","startDate","endDate","currentDate","dates","push","getLocaleMonth","locale","bottomValue","month","format","replace","toLocaleUpperCase","getLocalDayOfWeek","weekday","day","getDay","diff","setDate","getWeekNumberISO8601","tmpDate","valueOf","dayNumber","firstThursday","setMonth","weekNumber","Math","ceil","toString","length","getDaysInMonth","year","TASK_PROCESS_OPTIONS","TASK_STATUS_OPTIONS","TASK_STATUS_COLORS","未着手","進行中","完了","保留","TASK_STATUS_BADGE_TEXT","DEFAULT_VISIBLE_FIELDS","padTwo","padStart","formatDate","parseDateFromInput","undefined","_value$split$map","split","map","v","parseInt","Number","isNaN","getTime","formatEffort","effort","unit","isFinite","base","converted","rounded","round","sanitizeEffortInput","parsed","DEFAULT_TASK_PROCESS","includes","normalizeProcess","process","normalizeStatus","status","getStatusColor","getStatusBadgeText","resolveVisibleFields","visibleFields","NULL_CHAR_REGEX","RegExp","String","fromCharCode","ALPHANUMERIC_REGEX","resolveOverlayInputType","columnId","escapeSelectorValue","CSS","escape","sanitized","Array","from","char","index","codePoint","codePointAt","charCodeAt","test","join","OverlayEditor","_ref","editingState","taskListRef","headerContainerRef","bodyContainerRef","onCommit","onCancel","_useState","useState","rect","setRect","_useState2","targetElement","setTargetElement","inputRef","useRef","defaultValueRef","compositionRef","rafIdRef","inputType","useMemo","selectOptions","portalRoot","document","body","resolveDefaultValue","useCallback","target","input","querySelector","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","_target$textContent","textContent","trim","findTargetElement","current","rowId","updateRect","mode","nextDefaultValue","nextRect","getBoundingClientRect","top","left","width","height","scheduleRectUpdate","window","requestAnimationFrame","useEffect","handleScroll","handleResize","addEventListener","capture","passive","scrollTargets","filter","Boolean","forEach","element","ResizeObserverConstructor","ResizeObserver","resizeObserver","observedElements","observe","removeEventListener","disconnect","cancelAnimationFrame","pending","focus","select","handleCommit","Promise","resolve","then","e","reject","handleKeyDown","event","preventDefault","handleBlur","handleInput","currentTarget","handleCompositionStart","handleCompositionEnd","handleInputElementRef","createPortal","React","className","styles","overlayEditor","overlayEditorPending","style","taskListSelect","defaultValue","ref","disabled","onKeyDown","onBlur","onInput","onChange","option","taskListInput","type","readOnly","onCompositionStart","onCompositionEnd","errorMessage","overlayEditorError","role","TaskListEditingStateContext","createContext","DEFAULT_MIN_WIDTH","getDefaultWidth","field","rowWidth","TaskList","headerHeight","fontFamily","fontSize","rowHeight","scrollY","_ref$horizontalScroll","horizontalScroll","selectedTask","setSelectedTask","onExpanderClick","ganttHeight","horizontalContainerClass","TaskListHeader","TaskListTable","onUpdateTask","onCellCommit","effortDisplayUnit","_ref$enableColumnDrag","enableColumnDrag","onHorizontalScroll","internalHorizontalRef","internalHeaderRef","horizontalContainerRef","headerRef","scrollTop","scrollLeft","initialColumns","id","label","minWidth","visible","columnsState","setColumnsState","prev","existingMap","Map","column","nextColumns","existing","get","visibleColumns","headerProps","selectedTaskId","tableProps","trigger","setEditingState","previousEditingStateRef","closeEditing","mountedRef","cancelEditing","reason","console","debug","commitEditing","_extends","_catch","error","message","Error","selectCell","startEditing","previous","buildLogContext","_editingState$rowId","_editingState$columnI","_editingState$trigger","log","logContext","to","editingContextValue","onScroll","overflowX","Provider","TaskListHeaderDefault","labels","name","assignee","plannedStart","plannedEnd","plannedEffort","actualEffort","fallbackColumns","resolvedColumns","sensors","useSensors","useSensor","PointerSensor","resizingId","setResizingId","onDragEnd","active","over","oldIndex","findIndex","newIndex","moved","arrayMove","idx","headerContent","ganttTable","ganttTable_Header","Fragment","SortableHeaderItem","enableDrag","isResizing","ganttTable_HeaderSeparator","marginTop","DndContext","SortableContext","items","strategy","horizontalListSortingStrategy","_ref2","_useSortable","useSortable","attributes","listeners","setNodeRef","transform","transition","isDragging","startXRef","startWidthRef","moveHandlerRef","upHandlerRef","maxWidth","Transform","onMouseDownResize","stopPropagation","clientX","handleMouseMove","moveEvent","delta","nextWidth","max","item","handleMouseUp","classNames","ganttTable_HeaderItem","_classNames","ganttTable_HeaderItemDragging","ganttTable_DragHandle","_classNames2","ganttTable_DragHandleDisabled","onMouseDown","ganttTable_DragIcon","ganttTable_HeaderLabel","ganttTable_ResizeHandle","_classNames3","ganttTable_ResizeHandleActive","TaskListTableDefault","columns","_columnsState$filter","isCommitEnabled","allowEditing","editingContext","useContext","editableFields","Set","columnIds","resolveColumnId","isCellEditable","tableEditable","columnEditable","has","rowEditable","isDisabled","cellEditableByRule","findCellPosition","rowIndex","columnIndex","resolveSelectedCell","find","row","moveSelection","direction","position","firstColumn","min","shouldIgnoreKeyEvent","HTMLElement","isContentEditable","tagName","handleWrapperKeyDown","defaultPrevented","selectedCell","isPrintableKey","metaKey","ctrlKey","altKey","taskListWrapper","tabIndex","t","expanderSymbol","hideChildren","renderCell","taskListNameWrapper","taskListExpander","taskListEmptyExpander","onClick","statusValue","statusWrapper","statusBadge","backgroundColor","statusText","taskListTableRow","isSelected","handleCellClick","handleCellDoubleClick","handleCellKeyDown","taskListCell","onDoubleClick","title","Tooltip","rtl","svgContainerHeight","svgContainerWidth","scrollX","arrowIndent","taskListWidth","TooltipContent","tooltipRef","relatedY","setRelatedY","relatedX","setRelatedX","tooltipHeight","offsetHeight","tooltipWidth","offsetWidth","newRelatedY","newRelatedX","x1","x2","tooltipLeftmostPoint","fullChartWidth","tooltipLowerPoint","tooltipDetailsContainer","tooltipDetailsContainerHidden","StandardTooltipContent","_ref2$effortDisplayUn","normalizedStatus","normalizedProcess","dateRange","plannedRange","tooltipDefaultContainer","tooltipTitle","tooltipName","tooltipDate","tooltipRow","tooltipLabel","tooltipValue","tooltipStatus","tooltipStatusText","progress","tooltipDefaultContainerParagraph","VerticalScroll","scroll","ganttFullHeight","scrollRef","right","JP_HOLIDAYS","getJPHolidaySet","holidays","Object","values","yearHolidays","holiday","add","JP_HOLIDAYS_SET","emittedWarnings","warnOnce","warn","normalizeCalendarConfig","config","rawLocale","_config$locale","dateFormat","enableJPHoliday","_config$enableJPHolid","highlightNonWorkingDays","_config$highlightNonW","workOnSaturday","extraHolidays","dateStr","normalized","normalizeISODate","extraWorkingDays","toLowerCase","startsWith","localeKey","dateFormatKey","trimmed","parts","paddedMonth","paddedDay","toISODateString","isWorkingDay","dayOfWeek","formatJapaneseDate","formatter","formatToParts","part","GridBody","svgWidth","columnWidth","todayColor","calendarConfig","y","gridRows","rowLines","x","y1","y2","gridRowLine","gridRow","now","tickX","ticks","nonWorkingDays","today","i","gridTick","fill","Grid","props","TopPartOfCalendar","x1Line","y1Line","y2Line","xText","yText","calendarTopTick","calendarTopText","Calendar","dateSetup","effectiveLocale","getCalendarValuesForYear","topValues","bottomValues","topDefaultHeight","calendarBottomText","topValue","getCalendarValuesForQuarterYear","quarter","floor","abs","getCalendarValuesForMonth","getCalendarValuesForWeek","weeksCount","getCalendarValuesForDay","useJapaneseFormat","getCalendarValuesForPartOfDay","hour","getCalendarValuesForHour","displayDate","topPosition","_getCalendarValuesFor","_getCalendarValuesFor2","_getCalendarValuesFor3","_getCalendarValuesFor4","_getCalendarValuesFor5","_getCalendarValuesFor6","_getCalendarValuesFor7","calendarHeader","Arrow","taskFrom","taskTo","taskHeight","path","trianglePoints","_drownPathAndTriangle","drownPathAndTriangleRTL","_drownPathAndTriangle2","drownPathAndTriangle","strokeWidth","d","points","indexCompare","taskToEndPosition","taskFromEndPosition","taskFromHorizontalOffsetValue","taskToHorizontalOffsetValue","convertToBarTasks","barCornerRadius","handleWidth","barProgressColor","barProgressSelectedColor","barBackgroundColor","barBackgroundSelectedColor","projectProgressColor","projectProgressSelectedColor","projectBackgroundColor","projectBackgroundSelectedColor","milestoneBackgroundColor","milestoneBackgroundSelectedColor","barTasks","convertToBarTask","dependencies","_loop","j","dependence","barChildren","barTask","convertToMilestone","convertToBar","taskXCoordinateRTL","taskXCoordinate","typeInternal","_progressWithByParams","progressWithByParams","progressWidth","progressX","taskYCoordinate","backgroundSelectedColor","progressColor","progressSelectedColor","rotatedHeight","xDate","remainderMillis","percentOfInterval","taskX1","taskX2","progressByX","barWidth","progressPercent","progressByXRTL","getProgressPoint","taskY","point","startByX","xStep","steps","additionalXValue","newX","endByX","moveByX","newX1","newX2","dateByX","taskX","taskDate","timeStep","getTimezoneOffset","handleTaskBySVGMouseEvent","svgX","action","initEventX1Delta","result","handleTaskBySVGMouseEventForMilestone","handleTaskBySVGMouseEventForBar","changedTask","isChanged","_progressWithByParams2","_progressWithByParams3","_progressWithByParams4","_moveByX","newMoveX1","newMoveX2","_progressWithByParams5","_moveByX2","isKeyboardEvent","removeHiddenTasks","groupedTasks","groupedTask","children","getChildren","taskList","project","taskChildren","apply","concat","sortTasks","taskA","taskB","orderA","displayOrder","MAX_VALUE","orderB","BarDisplay","getProcessColor","getBarColor","ry","rx","barBackground","BarDateHandle","barHandle","BarProgressHandle","progressPoint","Bar","isProgressChangeable","isDateChangeable","onEventStart","handleHeight","barWrapper","BarSmall","Milestone","milestoneWrapper","milestoneBackground","Project","barColor","processColor","projectWith","projectLeftTriangle","projectRightTriangle","projectWrapper","projectBackground","projectTop","TaskItem","_props","isDelete","textRef","taskItem","setTaskItem","isTextInside","setIsTextInside","statusColor","statusBadgeText","taskItemProps","getBBoxWidth","getBBox","getX","hasChild","onMouseEnter","onMouseLeave","onFocus","barLabel","barLabelOutside","statusDot","dx","TaskGanttContent","ganttEvent","svg","arrowColor","setGanttEvent","setFailedTask","onDateChange","onProgressChange","onDelete","createSVGPoint","setXStep","setInitEventX1Delta","_useState3","isMoving","setIsMoving","dateDelta","newXStep","cursor","matrixTransform","_svg$current$getScree","getScreenCTM","inverse","_handleTaskBySVGMouse","operationSuccess","originalSelectedTask","_svg$current$getScree2","_handleTaskBySVGMouse2","newChangedTask","isNotLikeOriginal","_temp4","_temp","_temp6","_temp2","_temp5","handleBarEventStart","_temp9","_temp8","_temp7","_svg$current$getScree3","stroke","child","TaskGantt","gridProps","calendarProps","barProps","verticalGanttContainerRef","ganttSVGRef","internalVerticalRef","ganttContainerRef","newBarProps","ganttVerticalContainer","dir","xmlns","horizontalContainer","HorizontalScroll","scrollerWidth","dataTestId","containerRef","hidden","wrapperRef","scrollWrapper","display","DEFAULT_TASK_LIST_WIDTH","MIN_PANE_WIDTH","SPLIT_HANDLE_WIDTH","clampTaskListWidth","containerWidth","Gantt","_ref$headerHeight","_ref$columnWidth","_ref$listCellWidth","listCellWidth","_ref$rowHeight","_ref$ganttHeight","_ref$viewMode","_ref$preStepsCount","_ref$locale","calendar","_ref$barFill","barFill","_ref$barCornerRadius","_ref$barProgressColor","_ref$barProgressSelec","_ref$barBackgroundCol","_ref$barBackgroundSel","_ref$projectProgressC","_ref$projectProgressS","_ref$projectBackgroun","_ref$projectBackgroun2","_ref$milestoneBackgro","_ref$milestoneBackgro2","_ref$rtl","_ref$handleWidth","_ref$timeStep","_ref$arrowColor","_ref$fontFamily","_ref$fontSize","_ref$arrowIndent","_ref$todayColor","viewDate","_ref$TooltipContent","_ref$TaskListHeader","_ref$TaskListTable","_ref$visibleFields","_ref$effortDisplayUni","onSelect","onTaskUpdate","taskListHeaderRef","taskListBodyRef","splitStartXRef","splitStartWidthRef","splitMoveHandlerRef","splitUpHandlerRef","supportsPointerEvents","_ganttDateRange","setDateSetup","currentViewDate","setCurrentViewDate","setTaskListWidth","_useState4","wrapperWidth","setWrapperWidth","_useState5","setIsResizing","_useState6","setSvgContainerWidth","_useState7","setSvgContainerHeight","_useState8","setBarTasks","_useState9","_useState0","_useState1","failedTask","_useState10","setScrollY","_useState11","scrollXLeft","setScrollXLeft","_useState12","scrollXRight","setScrollXRight","_useState13","leftScrollerWidth","setLeftScrollerWidth","ignoreScrollLeftRef","ignoreScrollRightRef","filteredTasks","sort","_ganttDateRange2","newDates","reverse","prevStateTask","newTaskList","updateWrapperWidth","taskListOffset","handleWheel","shiftKey","deltaX","scrollMove","deltaY","newScrollX","newScrollY","wrapperEl","updateLeftScroller","el","scrollWidth","RO","ro","handleScrollY","handleScrollLeft","handleScrollRight","isX","handleSelectedTask","taskId","newSelectedTask","oldSelectedTask","handleExpanderClick","updateTaskListWidth","handleSplitPointerDown","setPointerCapture","pointerId","handleSplitPointerMove","handleSplitPointerUp","releasePointerCapture","handleSplitMouseDown","wrapper","taskListPanel","splitHandle","splitHandleActive","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","ganttPanel","scrollRow","scrollCellLeft","scrollSplitter","scrollCellRight"],"mappings":"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"}
|