gantt-lib 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css.map +1 -1
- package/dist/index.js +30 -184
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -184
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +2 -2
- package/package.json +1 -1
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/ui.css","../src/styles.css","../src/components/TimeScaleHeader/TimeScaleHeader.css","../src/components/TaskRow/TaskRow.css","../src/components/TodayIndicator/TodayIndicator.css","../src/components/GridBackground/GridBackground.css","../src/components/DragGuideLines/DragGuideLines.css","../src/components/DependencyLines/DependencyLines.css","../src/components/TaskList/TaskList.css","../src/components/GanttChart/GanttChart.css"],"sourcesContent":["/* =========================================================\n * UI Components CSS — gantt-lib theming\n * All classes use gantt- prefix to avoid collisions\n * ========================================================= */\n\n/* CSS Variables for UI components */\n:root {\n --gantt-input-bg: #ffffff;\n --gantt-input-border: #d1d5db;\n --gantt-input-focus-ring: rgba(59, 130, 246, 0.5);\n --gantt-input-text: #1f2937;\n --gantt-input-placeholder: #9ca3af;\n --gantt-input-radius: 6px;\n\n --gantt-popover-bg: #ffffff;\n --gantt-popover-border: #e5e7eb;\n --gantt-popover-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\n --gantt-calendar-day-hover: #f3f4f6;\n --gantt-calendar-day-selected: #3b82f6;\n --gantt-calendar-day-selected-text: #ffffff;\n --gantt-calendar-day-today-bg: #eff6ff;\n --gantt-calendar-day-today-color: #1d4ed8;\n --gantt-calendar-day-outside-color: #d1d5db;\n --gantt-calendar-day-disabled-color: #d1d5db;\n\n --gantt-calendar-bg: #ffffff;\n --gantt-calendar-text: #1f2937;\n --gantt-calendar-text-weekend: #ef4444;\n --gantt-calendar-text-muted: #9ca3af;\n --gantt-calendar-day-today-border: #3b82f6;\n --gantt-calendar-day-range: #dbeafe;\n --gantt-calendar-day-disabled-text: #d1d5db;\n}\n\n/* =========================================================\n * Input\n * ========================================================= */\n\n.gantt-input {\n display: flex;\n height: 32px;\n width: 100%;\n border-radius: var(--gantt-input-radius);\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n transition: border-color 150ms, box-shadow 150ms;\n box-sizing: border-box;\n}\n\n.gantt-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-input::placeholder {\n color: var(--gantt-input-placeholder);\n}\n\n.gantt-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Button\n * ========================================================= */\n\n.gantt-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 0.875rem;\n font-family: inherit;\n font-weight: 500;\n padding: 0 12px;\n height: 32px;\n cursor: pointer;\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n color: var(--gantt-input-text);\n transition: background-color 100ms, box-shadow 100ms;\n user-select: none;\n}\n\n.gantt-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Ghost variant */\n.gantt-btn-ghost {\n background-color: transparent;\n border-color: transparent;\n}\n\n.gantt-btn-ghost:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n/* Outline variant */\n.gantt-btn-outline {\n background-color: transparent;\n}\n\n/* Icon size */\n.gantt-btn-icon {\n width: 28px;\n height: 28px;\n padding: 0;\n}\n\n/* Small size */\n.gantt-btn-sm {\n height: 26px;\n padding: 0 8px;\n font-size: 0.8rem;\n}\n\n/* =========================================================\n * Popover\n * ========================================================= */\n\n.gantt-popover {\n background: var(--gantt-popover-bg);\n border: 1px solid var(--gantt-popover-border);\n border-radius: 8px;\n box-shadow: var(--gantt-popover-shadow);\n padding: 4px;\n z-index: 1000;\n outline: none;\n animation: gantt-popover-in 120ms ease-out;\n}\n\n@keyframes gantt-popover-in {\n from {\n opacity: 0;\n transform: scale(0.97) translateY(-4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* =========================================================\n * DatePicker trigger button\n * ========================================================= */\n\n.gantt-datepicker-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: center;\n user-select: none;\n}\n\n.gantt-datepicker-trigger:hover {\n background-color: transparent;\n border-radius: 0;\n}\n\n.gantt-datepicker-trigger:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n border-radius: 2px;\n}\n\n.gantt-datepicker-trigger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Calendar — custom scrollable (gantt-cal-* / gantt-day-btn)\n * ========================================================= */\n\n.gantt-cal-container {\n max-height: 400px;\n overflow-y: auto;\n user-select: none;\n padding: 8px;\n font-family: inherit;\n background: var(--gantt-calendar-bg);\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month {\n margin-bottom: 16px;\n}\n\n.gantt-cal-month-header {\n font-size: 0.875rem;\n font-weight: 600;\n padding: 4px 0 8px;\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month-days {\n display: grid;\n grid-template-columns: repeat(7, 32px);\n gap: 2px;\n}\n\n.gantt-cal-empty-day {\n width: 32px;\n height: 32px;\n}\n\n.gantt-day-btn {\n width: 32px;\n height: 32px;\n font-size: 0.875rem;\n font-family: inherit;\n border: 1px solid transparent;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n color: var(--gantt-calendar-text);\n transition: background-color 100ms;\n}\n\n.gantt-day-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-day-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-day-btn.today {\n border-color: var(--gantt-calendar-day-today-border);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected {\n background-color: var(--gantt-calendar-day-selected);\n color: var(--gantt-calendar-day-selected-text);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected:hover {\n background-color: var(--gantt-calendar-day-selected);\n opacity: 0.9;\n}\n\n.gantt-day-btn.weekend:not(.selected) {\n color: var(--gantt-calendar-text-weekend);\n}\n\n.gantt-day-btn.past:not(.selected) {\n color: var(--gantt-calendar-text-muted);\n}\n\n.gantt-day-btn.past.weekend:not(.selected) {\n color: #fca5a5;\n}\n\n.gantt-day-btn.disabled {\n color: var(--gantt-calendar-day-disabled-text);\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.gantt-day-btn.disabled:hover {\n background: transparent;\n}\n\n/* =========================================================\n * Calendar navigation buttons\n * ========================================================= */\n\n.gantt-cal-nav {\n display: flex;\n gap: 4px;\n padding: 8px;\n border-top: 1px solid var(--gantt-input-border);\n margin-top: 4px;\n}\n\n.gantt-cal-nav .gantt-btn {\n flex: 1;\n min-width: 0;\n font-size: 0.8rem;\n padding: 0 8px;\n}\n","/* Gantt Chart CSS Variables - User customizable theming */\n@import './components/ui/ui.css';\n\n:root {\n /* Grid Colors */\n --gantt-grid-line-color: #e0e0e0;\n --gantt-cell-background: #ffffff;\n --gantt-row-hover-background: #f8f9fa;\n\n /* Dimensions */\n --gantt-row-height: 30px;\n --gantt-header-height: 40px;\n --gantt-day-width: 30px;\n --gantt-container-border-radius: 10px;\n\n /* Task Bar Styling */\n --gantt-task-bar-default-color: #3b82f6;\n --gantt-task-bar-text-color: #ffffff;\n --gantt-task-bar-border-radius: 4px;\n --gantt-task-bar-height: 24px;\n\n /* Today Indicator */\n --gantt-today-indicator-color: rgba(255, 0, 0, 0.6);\n --gantt-today-indicator-width: 2px;\n\n /* Calendar Grid - Weekend */\n --gantt-weekend-background: #fff9f8;\n --gantt-weekend-border: #fca5a5;\n\n /* Calendar Grid - Separators */\n --gantt-month-separator-width: 2px;\n --gantt-month-separator-color: #a1a1a1;\n --gantt-week-separator-width: 1px;\n --gantt-week-separator-color: #f3f4f6;\n --gantt-day-line-width: 1px;\n --gantt-day-line-color: #f3f4f6;\n\n /* Task List - Vertical Separators (hidden by default) */\n --gantt-tl-vertical-separators: none;\n --gantt-tl-vertical-separators-width: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n /* To enable separators, set: --gantt-tl-vertical-separators: var(--gantt-tl-vertical-separators-width); */\n\n /* Progress Bar Colors */\n --gantt-progress-color: rgba(0, 0, 0, 0.4);\n --gantt-progress-completed: #ffb800;\n --gantt-progress-accepted: #17c964;\n\n /* Dependency line colors */\n --gantt-dependency-line-color: rgba(0, 0, 55, 0.8);\n --gantt-dependency-cycle-color: #ef4444;\n\n /* Expired task color */\n --gantt-expired-color: #ef4444;\n\n /* Parent Task Styling (Phase 19) - MS Project bracket style */\n --gantt-parent-bar-color: #782fc4;\n --gantt-parent-bar-height: 20px;\n --gantt-parent-bar-radius: 8px;\n --gantt-parent-ear-depth: 6px;\n --gantt-parent-ear-width: 8px;\n --gantt-parent-row-bg: rgb(120 47 196 / 0.15);\n}\n\n/* Remove browser default focus outlines for all gantt elements */\n.gantt-container *:focus,\n.gantt-container *:focus-visible {\n outline: none;\n}\n\n/* Prevent text selection by cursor inside the gantt chart */\n.gantt-container * {\n user-select: none;\n}","/**\n * TimeScaleHeader Component Styles - Two-row header layout\n */\n\n.gantt-tsh-header {\n display: flex;\n flex-direction: column;\n background-color: var(--gantt-cell-background);\n /* border-bottom: var(--gantt-week-separator-width, 1px) solid var(--gantt-week-separator-color, #374151); */\n border-bottom: none;\n box-sizing: border-box;\n}\n\n/* Month row (top row) */\n.gantt-tsh-monthRow {\n display: flex;\n border-bottom: var(--gantt-day-line-width, 1px) solid var(--gantt-day-line-color, #f3f4f6);\n align-items: center;\n}\n\n.gantt-tsh-monthCell {\n box-sizing: border-box;\n padding: 0.1rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #1f2937;\n border-left: var(--gantt-month-separator-width, 2px) solid var(--gantt-month-separator-color, #a1a1a1);\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gantt-tsh-monthCell:first-child {\n border-left: none;\n}\n\n/* Day row (bottom row) */\n.gantt-tsh-dayRow {\n display: grid;\n box-sizing: border-box;\n}\n\n.gantt-tsh-dayCell {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n.gantt-tsh-monthBoundary {\n border-left: var(--gantt-month-separator-width, 2px) solid var(--gantt-month-separator-color, #a1a1a1);\n}\n\n.gantt-tsh-dayLabel {\n font-size: 0.75rem;\n font-weight: 500;\n color: #374151;\n}\n\n.gantt-tsh-weekendDay {\n background-color: var(--gantt-weekend-background, #fef3f2);\n}\n\n.gantt-tsh-weekendDay .gantt-tsh-dayLabel {\n color: #ef4444;\n}\n\n.gantt-tsh-today {\n background-color: #dc2626;\n border-radius: 4px 4px 4px 0;\n}\n\n.gantt-tsh-today .gantt-tsh-dayLabel {\n color: #ffffff;\n}","/**\n * TaskRow Component Styles\n */\n\n:root {\n --gantt-task-bar-border-radius: 6px;\n}\n\n.gantt-tr-row {\n position: relative;\n width: 100%;\n border-bottom: 1px solid var(--gantt-grid-line-color);\n box-sizing: border-box;\n}\n\n.gantt-tr-row:hover {\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tr-taskBar {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: var(--gantt-task-bar-border-radius);\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n transition: box-shadow 0.15s ease;\n cursor: grab;\n}\n\n/**\n * Hover state - provides smooth visual feedback\n * Transition disabled during drag (see .gantt-tr-taskBar.gantt-tr-dragging)\n */\n.gantt-tr-taskBar:hover {\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\n}\n\n/**\n * Dragging state - disables all transitions for performance\n *\n * CRITICAL: transition: none !important is required to override the\n * default box-shadow transition on .gantt-tr-taskBar. Without this, CSS transitions\n * during drag cause lag/ghosting and break the 60fps performance target.\n *\n * Per research anti-pattern: \"Using CSS transitions during drag causes lag/ghosting.\"\n */\n.gantt-tr-taskBar.gantt-tr-dragging {\n cursor: grabbing;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n opacity: 1;\n transition: none !important;\n}\n\n.gantt-tr-taskDuration {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-right: 4px;\n}\n\n.gantt-tr-rightLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabelRight {\n position: static;\n margin-right: 0;\n}\n\n.gantt-tr-externalTaskName {\n font-size: 0.9rem;\n font-weight: 500;\n color: #2563eb;\n white-space: nowrap;\n user-select: none;\n margin-left: 4px;\n}\n\n.gantt-tr-resizeHandle {\n position: absolute;\n top: 0;\n width: 20px;\n height: 100%;\n cursor: ew-resize;\n pointer-events: auto;\n z-index: 10;\n}\n\n.gantt-tr-resizeHandleLeft {\n left: 0;\n}\n\n.gantt-tr-resizeHandleRight {\n right: 0;\n}\n\n.gantt-tr-resizeZoneLeft {\n cursor: ew-resize;\n}\n\n.gantt-tr-resizeZoneRight {\n cursor: ew-resize;\n}\n\n.gantt-tr-taskContainer {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.gantt-tr-leftLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabel {\n font-size: 0.85rem;\n color: #6b7280;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n.gantt-tr-dateLabelLeft {\n position: absolute;\n right: 100%;\n margin-right: 6px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Extra margin when lock icon is present */\n.gantt-tr-leftLabels-locked .gantt-tr-dateLabelLeft {\n margin-right: 22px;\n}\n\n/* Progress bar overlay */\n.gantt-tr-progressBar {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n z-index: 1;\n pointer-events: none;\n border-radius: var(--gantt-task-bar-border-radius) 0 0 var(--gantt-task-bar-border-radius);\n transition: width 0.3s ease;\n}\n\n/* Ensure text stays above progress bar.\n NOTE: .gantt-tr-resizeHandle is intentionally excluded here because it already\n uses position: absolute with z-index: 10, which places it above the progress bar.\n Adding position: relative here would override position: absolute and break the\n absolute positioning that anchors handles to the bar edges. */\n.gantt-tr-taskDuration {\n position: relative;\n z-index: 2;\n}\n\n/* Disable transition during drag */\n.gantt-tr-taskBar.gantt-tr-dragging .gantt-tr-progressBar {\n transition: none !important;\n}\n\n/* Progress text inside task bar */\n.gantt-tr-progressText {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-left: 4px;\n position: relative;\n z-index: 2;\n}\n\n/* Progress text outside task bar (before task name) */\n.gantt-tr-externalProgress {\n font-size: 0.85rem;\n font-weight: 500;\n color: #6b7280;\n white-space: nowrap;\n margin-right: 4px;\n margin-left: 4px;\n}\n\n/* Locked task bar state — consumer CSS override point */\n.gantt-tr-taskBar.gantt-tr-locked {\n cursor: not-allowed;\n}\n\n/* Divider line for visual grouping of task sets */\n.gantt-tr-divider {\n position: absolute;\n left: 0;\n width: 100%;\n height: 0;\n border-top: 1px solid var(--gantt-grid-line-color, #d1d5db);\n pointer-events: none;\n z-index: 0;\n}\n\n.gantt-tr-divider-top {\n top: 0;\n}\n\n.gantt-tr-divider-bottom {\n bottom: 0;\n}\n\n/* ============================================================================\n Parent Task Bar Styles (Phase 19)\n ============================================================================ */\n\n/* Parent task bar - MS Project bracket style */\n.gantt-tr-parentBar {\n background-color: var(--gantt-parent-bar-color, #333333);\n height: var(--gantt-parent-bar-height, 14px) !important;\n border-radius: var(--gantt-parent-bar-radius, 8px) var(--gantt-parent-bar-radius, 8px) 0 0;\n position: relative;\n overflow: visible;\n /* Allow trapezoid ears to extend below the bar */\n /* Center the entire shape (bar + ears) vertically */\n /* Total height = 14px (bar) + 8px (ears) = 22px, midpoint at 11px from top */\n top: calc(50% - 20px);\n transform: none;\n}\n\n/* Trapezoid ears for bracket appearance */\n.gantt-tr-parentBar::before,\n.gantt-tr-parentBar::after {\n content: \"\";\n position: absolute;\n top: calc(var(--gantt-parent-bar-height, 14px) - 1px);\n height: var(--gantt-parent-ear-depth, 8px);\n width: var(--gantt-parent-ear-width, 10px);\n background-color: var(--gantt-parent-bar-color, #333333);\n}\n\n.gantt-tr-parentBar::before {\n left: 0;\n clip-path: polygon(0 0, 100% 0, 60% 100%, 0 100%);\n}\n\n.gantt-tr-parentBar::after {\n right: 0;\n clip-path: polygon(0 0, 100% 0, 100% 100%, 40% 100%);\n}","/**\n * TodayIndicator Component Styles\n */\n\n.gantt-ti-indicator {\n position: absolute;\n top: -1px;\n bottom: 0;\n z-index: 5;\n pointer-events: none;\n}",".gantt-gb-gridBackground {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n pointer-events: none;\n}\n\n.gantt-gb-weekendBlock {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-weekend-background, #fee2e2);\n}\n\n.gantt-gb-gridLine {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n\n.gantt-gb-monthSeparator {\n width: var(--gantt-month-separator-width, 2px);\n background-color: var(--gantt-month-separator-color, #374151);\n}\n\n.gantt-gb-weekSeparator {\n width: var(--gantt-week-separator-width, 1px);\n background-color: var(--gantt-week-separator-color, #d1d5db);\n}\n\n.gantt-gb-dayLine {\n width: var(--gantt-day-line-width, 1px);\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n",".gantt-dgl-guideLine {\n position: absolute;\n top: 0;\n width: 2px;\n background-color: var(--gantt-drag-guide-line-color, #3b82f6);\n z-index: 20;\n pointer-events: none;\n opacity: 0.6;\n}\n","/* SVG overlay for dependency lines */\n.gantt-dependencies-svg {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n /* Allow clicks to pass through to task bars */\n overflow: visible;\n}\n\n/* Dependency line path */\n.gantt-dependency-path {\n fill: none;\n stroke: var(--gantt-dependency-line-color, #666666);\n stroke-width: 1;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* Virtual dependency lines (for hidden tasks inside collapsed parents) */\n.gantt-dependency-virtual {\n stroke-dasharray: 4 2;\n opacity: 0.6;\n}\n\n/* Circular dependency highlighting */\n.gantt-dependency-cycle {\n stroke: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Selected dependency highlighting */\n.gantt-dependency-selected {\n stroke: #ef4444;\n stroke-width: 2;\n}\n\n/* Arrow markers */\n.gantt-dependency-arrow polygon {\n fill: var(--gantt-dependency-line-color, #666666);\n}\n\n.gantt-dependency-arrow-cycle polygon {\n fill: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Lag label styling */\n.gantt-dependency-lag-label {\n font-size: 10px;\n font-weight: 500;\n pointer-events: none;\n user-select: none;\n opacity: 0.85;\n}","/**\n * TaskList Component Styles\n * Sticky positioned in flex container - stays at left edge during horizontal scroll\n * Always rendered in DOM for stable positioning, visibility controlled via prop\n */\n\n.gantt-tl-overlay {\n position: sticky;\n left: 0;\n top: 0;\n z-index: 15;\n background-color: var(--gantt-cell-background, #ffffff);\n border-right: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n pointer-events: auto;\n}\n\n.gantt-tl-overlay.gantt-tl-overlay-shadowed {\n box-shadow: 10px 0 18px -14px rgba(15, 23, 42, 0.45);\n}\n\n/* Hidden state - element completely removed from layout */\n.gantt-tl-overlay.gantt-tl-hidden {\n display: none;\n}\n\n.gantt-tl-table {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 640px;\n}\n\n/* Header row - sticky during vertical scroll */\n.gantt-tl-header {\n position: sticky;\n top: 0;\n display: flex;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n z-index: 5;\n}\n\n.gantt-tl-headerCell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n}\n\n.gantt-tl-headerCell:last-child {\n border-right: none;\n}\n\n/* Body container */\n.gantt-tl-body {\n display: flex;\n flex-direction: column;\n}\n\n/* Data rows */\n.gantt-tl-row {\n display: flex;\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n}\n\n.gantt-tl-row:hover {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.04);\n}\n\n.gantt-tl-row-selected {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.08);\n}\n\n/* Hierarchy row styles */\n.gantt-tl-row-child {\n padding-left: 0;\n}\n\n/* Hierarchy connector — shown in child rows before task name */\n.gantt-tl-hierarchy-connector {\n position: absolute;\n left: 4px;\n top: 0;\n width: 16px;\n height: 100%;\n color: #d4bceb;\n pointer-events: none;\n}\n\n/* Vertical line: full height for non-last child, half height for last */\n.gantt-tl-hc-vline {\n position: absolute;\n left: 5px;\n top: 0;\n bottom: 0;\n width: 1.5px;\n background: currentColor;\n border-radius: 1px;\n}\n\n.gantt-tl-hierarchy-connector--last .gantt-tl-hc-vline {\n bottom: 50%;\n}\n\n/* Horizontal branch at vertical center */\n.gantt-tl-hc-hline {\n position: absolute;\n left: 5px;\n top: calc(50% - 0.75px);\n width: 6px;\n height: 1.5px;\n background: currentColor;\n border-radius: 1px;\n}\n\n/* Dot at end of horizontal branch */\n.gantt-tl-hc-dot {\n position: absolute;\n left: 9px;\n top: calc(50% - 2.5px);\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: currentColor;\n}\n\n.gantt-tl-row-parent {\n font-weight: 600;\n background-color: var(--gantt-parent-row-bg, rgb(120 47 196 / 0.15));\n}\n\n.gantt-tl-collapse-btn {\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2;\n width: 18px;\n height: 18px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--gantt-text-color, #374151);\n padding: 0;\n transition: background-color 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:hover {\n background-color: transparent;\n}\n\n.gantt-tl-collapse-btn svg {\n transition: transform 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:not(.gantt-tl-collapse-btn-collapsed) svg {\n transform: rotate(90deg);\n}\n\n/* Cells */\n.gantt-tl-cell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n font-size: 0.85rem;\n color: #374151;\n}\n\n.gantt-tl-cell:last-child {\n border-right: none;\n}\n\n.gantt-tl-cell-number {\n width: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n padding: 0 2px;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n}\n\n/* Drag handle (hidden by default, reveal on row hover) */\n.gantt-tl-drag-handle {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: #9ca3af;\n visibility: hidden;\n user-select: none;\n background: transparent;\n}\n\n.gantt-tl-row:hover .gantt-tl-drag-handle,\n.gantt-tl-row-dragging .gantt-tl-drag-handle {\n visibility: visible;\n}\n\n.gantt-tl-row:hover .gantt-tl-num-label {\n visibility: hidden;\n}\n\n.gantt-tl-num-label {\n font-size: 0.75rem;\n opacity: 0.45;\n}\n\n.gantt-tl-drag-handle:active {\n cursor: grabbing;\n}\n\n/* Dragging row (semi-transparent background, blue text) */\n.gantt-tl-row-dragging {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n.gantt-tl-row-dragging .gantt-tl-cell,\n.gantt-tl-row-dragging .gantt-tl-name-trigger,\n.gantt-tl-row-dragging .gantt-tl-num-label {\n color: #3b82f6 !important;\n}\n\n/* Drop target indicator (blue top border) - uses ::before to avoid layout shift */\n.gantt-tl-row-drag-over {\n position: relative;\n}\n\n.gantt-tl-row-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n z-index: 1;\n}\n\n/* Navigate icon removed - single click on task name now selects row */\n\n/* Restore left padding for the name column header */\n.gantt-tl-headerCell.gantt-tl-cell-name {\n padding-left: 4px;\n}\n\n/* Name cell — overflow visible so overlay input can extend past boundaries */\n.gantt-tl-cell-name {\n flex: 1;\n min-width: 160px;\n position: relative;\n overflow: visible;\n align-items: center;\n padding: 0 4px;\n /* add right padding for button space */\n}\n\n/* Date cell — relative for transparent picker overlay */\n.gantt-tl-cell-date {\n width: 68px;\n justify-content: center;\n flex-shrink: 0;\n position: relative;\n padding: 0;\n}\n\n/* Duration cell */\n.gantt-tl-cell-duration {\n width: 46px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n/* Progress cell */\n.gantt-tl-cell-progress {\n width: 56px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n.gantt-tl-number-editor {\n position: absolute;\n inset: 0;\n}\n\n.gantt-tl-number-input {\n width: 100%;\n height: 100%;\n padding: 0 18px 0 6px;\n border-width: 1px;\n border-color: #93c5fd;\n border-radius: 8px;\n text-align: left;\n font-size: 0.8rem;\n line-height: 1;\n box-shadow: 0 0 0 1px rgba(147, 197, 253, 0.35);\n}\n\n.gantt-tl-number-input::-webkit-outer-spin-button,\n.gantt-tl-number-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.gantt-tl-number-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.gantt-tl-number-steppers {\n position: absolute;\n top: 2px;\n right: 2px;\n bottom: 2px;\n width: 14px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.gantt-tl-number-stepper {\n flex: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 5px;\n background: rgba(248, 250, 252, 0.95);\n color: #64748b;\n padding: 0;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.gantt-tl-number-stepper:hover {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.gantt-tl-number-stepper:active {\n background: #bfdbfe;\n}\n\n/* Full-cell button trigger for name edit */\n.gantt-tl-name-trigger {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n position: absolute;\n inset: 0;\n padding: 0 4px;\n /* match parent cell padding so text stays visually aligned */\n font-size: 0.8rem;\n line-height: 1.2;\n font-family: inherit;\n font-weight: inherit;\n color: #374151;\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: left;\n user-select: none;\n white-space: normal;\n word-break: break-word;\n box-sizing: border-box;\n}\n\n.gantt-tl-name-trigger-parent {\n padding-left: 26px;\n}\n\n.gantt-tl-name-trigger-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-trigger:hover,\n.gantt-tl-name-trigger:active {\n background-color: transparent;\n}\n\n/* Name edit — Input component used as floating overlay */\n.gantt-tl-name-input {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n min-width: 520px;\n width: 100%;\n border-width: 2px;\n border-color: #3b82f6;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\n white-space: nowrap;\n}\n\n.gantt-tl-name-input-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-input:focus {\n box-shadow: 0 2px 10px rgba(59, 130, 246, 0.3);\n}\n\n/* Locked task name — cursor indicates no editing */\n.gantt-tl-name-locked {\n cursor: default !important;\n}\n\n/* Name cell action buttons container */\n.gantt-tl-name-actions {\n position: absolute;\n right: 4px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n/* Name cell action buttons — hover-reveal */\n.gantt-tl-name-action-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 4px;\n width: 20px;\n height: 20px;\n padding: 0;\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, background-color 0.15s ease;\n}\n\n/* Reveal buttons on row hover (any part of the row) */\n.gantt-tl-row:hover .gantt-tl-name-action-btn {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hierarchy action buttons (promote/demote) */\n.gantt-tl-action-buttons {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n pointer-events: none;\n}\n\n.gantt-tl-row:hover .gantt-tl-action-buttons {\n opacity: 1;\n pointer-events: auto;\n}\n\n.gantt-tl-action-btn {\n padding: 2px 8px;\n font-size: 11px;\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background: white;\n border-radius: 4px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.gantt-tl-action-btn:hover {\n background: var(--gantt-cell-background, #f9fafb);\n border-color: var(--gantt-primary-color, #3b82f6);\n}\n\n.gantt-tl-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Dependencies column — header and data cells */\n.gantt-tl-cell-deps {\n width: 90px;\n flex-shrink: 0;\n flex-wrap: wrap;\n gap: 2px;\n padding: 2px 4px;\n align-items: center;\n overflow: hidden;\n position: relative;\n}\n\n/* Insert button styling (green) */\n.gantt-tl-action-insert {\n background-color: #22c55e;\n color: white;\n}\n\n.gantt-tl-action-insert:hover {\n background-color: #16a34a;\n}\n\n/* Delete button styling (red) */\n.gantt-tl-action-delete {\n background-color: #ef4444;\n color: white;\n}\n\n.gantt-tl-action-delete:hover {\n background-color: #dc2626;\n}\n\n/* Delete button confirmation state */\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm {\n min-width: 60px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n}\n\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm:hover {\n background-color: #b91c1c;\n}\n\n/* Single hierarchy button with directional arrow */\n.gantt-tl-action-hierarchy {\n width: 20px;\n height: 20px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: #3b82f6;\n color: white;\n}\n\n.gantt-tl-action-hierarchy:hover {\n background-color: #2563eb;\n}\n\n/* Type switcher button in header */\n.gantt-tl-dep-type-trigger {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-type-trigger:disabled {\n cursor: default;\n opacity: 0.7;\n}\n\n.gantt-tl-dep-type-trigger:not(:disabled):hover {\n color: #3b82f6;\n}\n\n/* Dropdown option buttons inside Popover */\n.gantt-tl-dep-type-menu {\n display: flex;\n flex-direction: column;\n padding: 4px;\n min-width: 180px;\n}\n\n.gantt-tl-dep-type-option {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n padding: 4px 8px;\n font-size: 0.8rem;\n font-family: inherit;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: #374151;\n}\n\n.gantt-tl-dep-type-option:hover {\n background-color: rgba(59, 130, 246, 0.1);\n}\n\n.gantt-tl-dep-type-option.active {\n background-color: rgba(59, 130, 246, 0.2);\n font-weight: 600;\n color: #1d4ed8;\n}\n\n/* Dependency chip — clickable to select and trigger predecessor-side delete */\n.gantt-tl-dep-chip {\n display: inline-flex;\n align-items: center;\n gap: 1px;\n background-color: rgba(59, 130, 246, 0.12);\n /* border: 1px solid rgba(59, 130, 246, 0.3); */\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #1d4ed8;\n white-space: nowrap;\n line-height: 14px;\n cursor: pointer;\n}\n\n/* Selected chip visual highlight — inverted */\n.gantt-tl-dep-chip-selected {\n background-color: #1d4ed8;\n border-color: #1d4ed8;\n color: #fff;\n font-weight: 600;\n}\n\n/* Chip + trash button wrapper — keeps chip and delete button visually inline */\n.gantt-tl-dep-chip-wrapper {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n/* Inline trash button — hidden by default, shown only when chip is selected */\n.gantt-tl-dep-chip-trash {\n display: none;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n background: #ef4444;\n border: none;\n border-radius: 3px;\n padding: 0 4px;\n cursor: pointer;\n color: #fff;\n flex-shrink: 0;\n line-height: 0;\n}\n\n/* Show trash only when chip is selected */\n.gantt-tl-dep-chip-wrapper:has(.gantt-tl-dep-chip-selected) .gantt-tl-dep-chip-trash {\n display: inline-flex;\n}\n\n.gantt-tl-dep-chip-trash:hover {\n background-color: #dc2626;\n}\n\n/* Dep chip info popover — human-readable dependency description on click */\n.gantt-tl-dep-info-popover {\n font-size: 0.75rem;\n color: #374151;\n padding: 6px 10px !important;\n max-width: 260px;\n line-height: 1.4;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.gantt-tl-dep-info-prefix {\n color: #6b7280;\n}\n\n.gantt-tl-dep-info-name {\n font-weight: 500;\n color: #111827;\n white-space: normal;\n word-break: break-word;\n}\n\n/* Summary chip: \"N связей\" — shown when 2+ deps */\n.gantt-tl-dep-summary-chip {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.12);\n border: 0px solid rgba(107, 114, 128, 0.3);\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-summary-chip:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n border-color: rgba(59, 130, 246, 0.3);\n}\n\n/* \"+N ещё\" overflow button */\n.gantt-tl-dep-overflow-trigger {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.1);\n border: 1px solid rgba(107, 114, 128, 0.25);\n border-radius: 4px;\n padding: 1px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-overflow-trigger:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n}\n\n/* Overflow popover content — list of all deps */\n.gantt-tl-dep-overflow-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 8px;\n min-width: 140px;\n}\n\n.gantt-tl-dep-overflow-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n font-size: 0.8rem;\n color: #374151;\n}\n\n/* \"+\" add dependency button */\n.gantt-tl-dep-add {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 0px solid rgba(59, 130, 246, 0.4);\n background-color: rgba(59, 130, 246, 0.12);\n border-radius: 4px;\n width: 23px;\n height: 23px;\n font-size: 0.9rem;\n color: #3b82f6;\n cursor: pointer;\n padding: 0;\n font-family: inherit;\n flex-shrink: 0;\n}\n\n/* Hover-reveal variant for dep add button */\n.gantt-tl-dep-add-hover {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.gantt-tl-row:hover .gantt-tl-dep-add-hover {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hide add button when a chip is selected (to avoid clutter with delete button) */\n.gantt-tl-dep-add-hidden {\n display: none !important;\n}\n\n.gantt-tl-dep-add:hover {\n background-color: rgba(59, 130, 246, 0.1);\n border-color: #3b82f6;\n}\n\n/* Picker mode: «Связи» cell on all rows becomes a selection target */\n.gantt-tl-row-picking .gantt-tl-cell-deps {\n cursor: crosshair;\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tl-row-picking .gantt-tl-cell-deps:hover {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n/* Picker mode: current task's own row — clickable to cancel */\n.gantt-tl-row-picking-self .gantt-tl-cell-deps {\n cursor: pointer;\n}\n\n/* Placeholder text shown in source row's deps cell while picking a predecessor */\n.gantt-tl-dep-source-hint {\n font-size: 0.75rem;\n color: #6b7280;\n font-style: italic;\n pointer-events: none;\n white-space: normal;\n}\n\n/* Predecessor cell full-replacement: \"Зависит от [name]\" → hover → \"Удалить\" */\n.gantt-tl-dep-delete-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n background: #ef4444;\n border: none;\n border-radius: 4px;\n padding: 2px 4px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n}\n\n.gantt-tl-dep-delete-label-hover {\n display: none;\n color: #fff;\n font-weight: 600;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-default {\n display: none;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-hover {\n display: inline;\n}\n\n/* Cycle error banner below header */\n.gantt-tl-dep-error {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: #fef2f2;\n border: 1px solid #fca5a5;\n border-top: none;\n padding: 4px 8px;\n font-size: 0.75rem;\n color: #dc2626;\n z-index: 10;\n white-space: nowrap;\n}\n\n/* Add task button */\n.gantt-tl-add-btn {\n width: 100%;\n padding: 6px 12px;\n text-align: left;\n background: transparent;\n border: none;\n /* border-top: 1px dashed var(--gantt-grid-line-color, #e0e0e0); */\n cursor: pointer;\n font-size: 12px;\n color: var(--gantt-text-muted, #9ca3af);\n transition: background 0.15s ease, color 0.15s ease;\n font-family: inherit;\n}\n\n.gantt-tl-add-btn:hover {\n background: var(--gantt-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--gantt-text-color, #374151);\n}\n\n/* Blue top border when dragging over the add button */\n.gantt-tl-add-btn-drag-over {\n position: relative;\n background: rgba(59, 130, 246, 0.08);\n color: #3b82f6;\n}\n\n.gantt-tl-add-btn-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n}\n\n.gantt-tl-cell-new-name {\n padding: 2px 4px;\n}",".gantt-container {\n width: 100%;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background-color: var(--gantt-cell-background, #ffffff);\n border-radius: var(--gantt-container-border-radius, 10px);\n overflow: hidden;\n}\n\n.gantt-scrollContainer {\n overflow: auto;\n position: relative;\n}\n\n/* Wrapper for horizontal scroll content - keeps TaskList and chart together */\n.gantt-scrollContent {\n display: flex;\n min-width: min-content;\n}\n\n.gantt-stickyHeader {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n}\n\n.gantt-taskArea {\n position: relative;\n background-color: var(--gantt-cell-background, #ffffff);\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/ui.css","../src/styles.css","../src/components/TimeScaleHeader/TimeScaleHeader.css","../src/components/TaskRow/TaskRow.css","../src/components/TodayIndicator/TodayIndicator.css","../src/components/GridBackground/GridBackground.css","../src/components/DragGuideLines/DragGuideLines.css","../src/components/DependencyLines/DependencyLines.css","../src/components/TaskList/TaskList.css","../src/components/GanttChart/GanttChart.css"],"sourcesContent":["/* =========================================================\n * UI Components CSS — gantt-lib theming\n * All classes use gantt- prefix to avoid collisions\n * ========================================================= */\n\n/* CSS Variables for UI components */\n:root {\n --gantt-input-bg: #ffffff;\n --gantt-input-border: #d1d5db;\n --gantt-input-focus-ring: rgba(59, 130, 246, 0.5);\n --gantt-input-text: #1f2937;\n --gantt-input-placeholder: #9ca3af;\n --gantt-input-radius: 6px;\n\n --gantt-popover-bg: #ffffff;\n --gantt-popover-border: #e5e7eb;\n --gantt-popover-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n\n --gantt-calendar-day-hover: #f3f4f6;\n --gantt-calendar-day-selected: #3b82f6;\n --gantt-calendar-day-selected-text: #ffffff;\n --gantt-calendar-day-today-bg: #eff6ff;\n --gantt-calendar-day-today-color: #1d4ed8;\n --gantt-calendar-day-outside-color: #d1d5db;\n --gantt-calendar-day-disabled-color: #d1d5db;\n\n --gantt-calendar-bg: #ffffff;\n --gantt-calendar-text: #1f2937;\n --gantt-calendar-text-weekend: #ef4444;\n --gantt-calendar-text-muted: #9ca3af;\n --gantt-calendar-day-today-border: #3b82f6;\n --gantt-calendar-day-range: #dbeafe;\n --gantt-calendar-day-disabled-text: #d1d5db;\n}\n\n/* =========================================================\n * Input\n * ========================================================= */\n\n.gantt-input {\n display: flex;\n height: 32px;\n width: 100%;\n border-radius: var(--gantt-input-radius);\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n transition: border-color 150ms, box-shadow 150ms;\n box-sizing: border-box;\n}\n\n.gantt-input:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-input::placeholder {\n color: var(--gantt-input-placeholder);\n}\n\n.gantt-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Button\n * ========================================================= */\n\n.gantt-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n font-size: 0.875rem;\n font-family: inherit;\n font-weight: 500;\n padding: 0 12px;\n height: 32px;\n cursor: pointer;\n border: 1px solid var(--gantt-input-border);\n background-color: var(--gantt-input-bg);\n color: var(--gantt-input-text);\n transition: background-color 100ms, box-shadow 100ms;\n user-select: none;\n}\n\n.gantt-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Ghost variant */\n.gantt-btn-ghost {\n background-color: transparent;\n border-color: transparent;\n}\n\n.gantt-btn-ghost:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n/* Outline variant */\n.gantt-btn-outline {\n background-color: transparent;\n}\n\n/* Icon size */\n.gantt-btn-icon {\n width: 28px;\n height: 28px;\n padding: 0;\n}\n\n/* Small size */\n.gantt-btn-sm {\n height: 26px;\n padding: 0 8px;\n font-size: 0.8rem;\n}\n\n/* =========================================================\n * Popover\n * ========================================================= */\n\n.gantt-popover {\n background: var(--gantt-popover-bg);\n border: 1px solid var(--gantt-popover-border);\n border-radius: 8px;\n box-shadow: var(--gantt-popover-shadow);\n padding: 4px;\n z-index: 1000;\n outline: none;\n animation: gantt-popover-in 120ms ease-out;\n}\n\n@keyframes gantt-popover-in {\n from {\n opacity: 0;\n transform: scale(0.97) translateY(-4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* =========================================================\n * DatePicker trigger button\n * ========================================================= */\n\n.gantt-datepicker-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: 0 8px;\n font-size: 0.85rem;\n font-family: inherit;\n color: var(--gantt-input-text);\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: center;\n user-select: none;\n}\n\n.gantt-datepicker-trigger:hover {\n background-color: transparent;\n border-radius: 0;\n}\n\n.gantt-datepicker-trigger:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n border-radius: 2px;\n}\n\n.gantt-datepicker-trigger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* =========================================================\n * Calendar — custom scrollable (gantt-cal-* / gantt-day-btn)\n * ========================================================= */\n\n.gantt-cal-container {\n max-height: 400px;\n overflow-y: auto;\n user-select: none;\n padding: 8px;\n font-family: inherit;\n background: var(--gantt-calendar-bg);\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month {\n margin-bottom: 16px;\n}\n\n.gantt-cal-month-header {\n font-size: 0.875rem;\n font-weight: 600;\n padding: 4px 0 8px;\n color: var(--gantt-calendar-text);\n}\n\n.gantt-cal-month-days {\n display: grid;\n grid-template-columns: repeat(7, 32px);\n gap: 2px;\n}\n\n.gantt-cal-empty-day {\n width: 32px;\n height: 32px;\n}\n\n.gantt-day-btn {\n width: 32px;\n height: 32px;\n font-size: 0.875rem;\n font-family: inherit;\n border: 1px solid transparent;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n color: var(--gantt-calendar-text);\n transition: background-color 100ms;\n}\n\n.gantt-day-btn:hover {\n background-color: var(--gantt-calendar-day-hover);\n}\n\n.gantt-day-btn:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--gantt-input-focus-ring);\n}\n\n.gantt-day-btn.today {\n border-color: var(--gantt-calendar-day-today-border);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected {\n background-color: var(--gantt-calendar-day-selected);\n color: var(--gantt-calendar-day-selected-text);\n font-weight: 600;\n}\n\n.gantt-day-btn.selected:hover {\n background-color: var(--gantt-calendar-day-selected);\n opacity: 0.9;\n}\n\n.gantt-day-btn.weekend:not(.selected) {\n color: var(--gantt-calendar-text-weekend);\n}\n\n.gantt-day-btn.past:not(.selected) {\n color: var(--gantt-calendar-text-muted);\n}\n\n.gantt-day-btn.past.weekend:not(.selected) {\n color: #fca5a5;\n}\n\n.gantt-day-btn.disabled {\n color: var(--gantt-calendar-day-disabled-text);\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.gantt-day-btn.disabled:hover {\n background: transparent;\n}\n\n/* =========================================================\n * Calendar navigation buttons\n * ========================================================= */\n\n.gantt-cal-nav {\n display: flex;\n gap: 4px;\n padding: 8px;\n border-top: 1px solid var(--gantt-input-border);\n margin-top: 4px;\n}\n\n.gantt-cal-nav .gantt-btn {\n flex: 1;\n min-width: 0;\n font-size: 0.8rem;\n padding: 0 8px;\n}\n","/* Gantt Chart CSS Variables - User customizable theming */\n@import './components/ui/ui.css';\n\n:root {\n /* Grid Colors */\n --gantt-grid-line-color: #e0e0e0;\n --gantt-cell-background: #ffffff;\n --gantt-row-hover-background: #f8f9fa;\n\n /* Dimensions */\n --gantt-row-height: 30px;\n --gantt-header-height: 40px;\n --gantt-day-width: 30px;\n --gantt-container-border-radius: 10px;\n\n /* Task Bar Styling */\n --gantt-task-bar-default-color: #3b82f6;\n --gantt-task-bar-text-color: #ffffff;\n --gantt-task-bar-border-radius: 4px;\n --gantt-task-bar-height: 24px;\n\n /* Today Indicator */\n --gantt-today-indicator-color: rgba(255, 0, 0, 0.6);\n --gantt-today-indicator-width: 2px;\n\n /* Calendar Grid - Weekend */\n --gantt-weekend-background: #fff9f8;\n --gantt-weekend-border: #fca5a5;\n\n /* Calendar Grid - Separators */\n --gantt-month-separator-width: 2px;\n --gantt-month-separator-color: #a1a1a1;\n --gantt-week-separator-width: 1px;\n --gantt-week-separator-color: #f3f4f6;\n --gantt-day-line-width: 1px;\n --gantt-day-line-color: #f3f4f6;\n\n /* Task List - Vertical Separators (hidden by default) */\n --gantt-tl-vertical-separators: none;\n --gantt-tl-vertical-separators-width: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n /* To enable separators, set: --gantt-tl-vertical-separators: var(--gantt-tl-vertical-separators-width); */\n\n /* Progress Bar Colors */\n --gantt-progress-color: rgba(0, 0, 0, 0.4);\n --gantt-progress-completed: #ffb800;\n --gantt-progress-accepted: #17c964;\n\n /* Dependency line colors */\n --gantt-dependency-line-color: rgba(0, 0, 55, 0.8);\n --gantt-dependency-cycle-color: #ef4444;\n\n /* Expired task color */\n --gantt-expired-color: #ef4444;\n\n /* Parent Task Styling (Phase 19) - MS Project bracket style */\n --gantt-parent-bar-color: #782fc4;\n --gantt-parent-bar-height: 20px;\n --gantt-parent-bar-radius: 8px;\n --gantt-parent-ear-depth: 6px;\n --gantt-parent-ear-width: 8px;\n --gantt-parent-row-bg: #f2ebf9;\n}\n\n/* Remove browser default focus outlines for all gantt elements */\n.gantt-container *:focus,\n.gantt-container *:focus-visible {\n outline: none;\n}\n\n/* Prevent text selection by cursor inside the gantt chart */\n.gantt-container * {\n user-select: none;\n}","/**\n * TimeScaleHeader Component Styles - Two-row header layout\n */\n\n.gantt-tsh-header {\n display: flex;\n flex-direction: column;\n background-color: var(--gantt-cell-background);\n /* border-bottom: var(--gantt-week-separator-width, 1px) solid var(--gantt-week-separator-color, #374151); */\n border-bottom: none;\n box-sizing: border-box;\n}\n\n/* Month row (top row) */\n.gantt-tsh-monthRow {\n display: flex;\n border-bottom: var(--gantt-day-line-width, 1px) solid var(--gantt-day-line-color, #f3f4f6);\n align-items: center;\n}\n\n.gantt-tsh-monthCell {\n box-sizing: border-box;\n padding: 0.1rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #1f2937;\n border-left: var(--gantt-month-separator-width, 2px) solid var(--gantt-month-separator-color, #a1a1a1);\n text-align: left;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.gantt-tsh-monthCell:first-child {\n border-left: none;\n}\n\n/* Day row (bottom row) */\n.gantt-tsh-dayRow {\n display: grid;\n box-sizing: border-box;\n}\n\n.gantt-tsh-dayCell {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n.gantt-tsh-monthBoundary {\n border-left: var(--gantt-month-separator-width, 2px) solid var(--gantt-month-separator-color, #a1a1a1);\n}\n\n.gantt-tsh-dayLabel {\n font-size: 0.75rem;\n font-weight: 500;\n color: #374151;\n}\n\n.gantt-tsh-weekendDay {\n background-color: var(--gantt-weekend-background, #fef3f2);\n}\n\n.gantt-tsh-weekendDay .gantt-tsh-dayLabel {\n color: #ef4444;\n}\n\n.gantt-tsh-today {\n background-color: #dc2626;\n border-radius: 4px 4px 4px 0;\n}\n\n.gantt-tsh-today .gantt-tsh-dayLabel {\n color: #ffffff;\n}","/**\n * TaskRow Component Styles\n */\n\n:root {\n --gantt-task-bar-border-radius: 6px;\n}\n\n.gantt-tr-row {\n position: relative;\n width: 100%;\n border-bottom: 1px solid var(--gantt-grid-line-color);\n box-sizing: border-box;\n}\n\n.gantt-tr-row:hover {\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tr-taskBar {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: var(--gantt-task-bar-border-radius);\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n white-space: nowrap;\n overflow: hidden;\n transition: box-shadow 0.15s ease;\n cursor: grab;\n}\n\n/**\n * Hover state - provides smooth visual feedback\n * Transition disabled during drag (see .gantt-tr-taskBar.gantt-tr-dragging)\n */\n.gantt-tr-taskBar:hover {\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);\n}\n\n/**\n * Dragging state - disables all transitions for performance\n *\n * CRITICAL: transition: none !important is required to override the\n * default box-shadow transition on .gantt-tr-taskBar. Without this, CSS transitions\n * during drag cause lag/ghosting and break the 60fps performance target.\n *\n * Per research anti-pattern: \"Using CSS transitions during drag causes lag/ghosting.\"\n */\n.gantt-tr-taskBar.gantt-tr-dragging {\n cursor: grabbing;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n opacity: 1;\n transition: none !important;\n}\n\n.gantt-tr-taskDuration {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-right: 4px;\n}\n\n.gantt-tr-rightLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabelRight {\n position: static;\n margin-right: 0;\n}\n\n.gantt-tr-externalTaskName {\n font-size: 0.9rem;\n font-weight: 500;\n color: #2563eb;\n white-space: nowrap;\n user-select: none;\n margin-left: 4px;\n}\n\n.gantt-tr-resizeHandle {\n position: absolute;\n top: 0;\n width: 20px;\n height: 100%;\n cursor: ew-resize;\n pointer-events: auto;\n z-index: 10;\n}\n\n.gantt-tr-resizeHandleLeft {\n left: 0;\n}\n\n.gantt-tr-resizeHandleRight {\n right: 0;\n}\n\n.gantt-tr-resizeZoneLeft {\n cursor: ew-resize;\n}\n\n.gantt-tr-resizeZoneRight {\n cursor: ew-resize;\n}\n\n.gantt-tr-taskContainer {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.gantt-tr-leftLabels {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.gantt-tr-dateLabel {\n font-size: 0.85rem;\n color: #6b7280;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n.gantt-tr-dateLabelLeft {\n position: absolute;\n right: 100%;\n margin-right: 6px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* Extra margin when lock icon is present */\n.gantt-tr-leftLabels-locked .gantt-tr-dateLabelLeft {\n margin-right: 22px;\n}\n\n/* Progress bar overlay */\n.gantt-tr-progressBar {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n z-index: 1;\n pointer-events: none;\n border-radius: var(--gantt-task-bar-border-radius) 0 0 var(--gantt-task-bar-border-radius);\n transition: width 0.3s ease;\n}\n\n/* Ensure text stays above progress bar.\n NOTE: .gantt-tr-resizeHandle is intentionally excluded here because it already\n uses position: absolute with z-index: 10, which places it above the progress bar.\n Adding position: relative here would override position: absolute and break the\n absolute positioning that anchors handles to the bar edges. */\n.gantt-tr-taskDuration {\n position: relative;\n z-index: 2;\n}\n\n/* Disable transition during drag */\n.gantt-tr-taskBar.gantt-tr-dragging .gantt-tr-progressBar {\n transition: none !important;\n}\n\n/* Progress text inside task bar */\n.gantt-tr-progressText {\n color: var(--gantt-task-bar-text-color);\n font-size: 0.875rem;\n font-weight: 500;\n white-space: nowrap;\n margin-left: 4px;\n position: relative;\n z-index: 2;\n}\n\n/* Progress text outside task bar (before task name) */\n.gantt-tr-externalProgress {\n font-size: 0.85rem;\n font-weight: 500;\n color: #6b7280;\n white-space: nowrap;\n margin-right: 4px;\n margin-left: 4px;\n}\n\n/* Locked task bar state — consumer CSS override point */\n.gantt-tr-taskBar.gantt-tr-locked {\n cursor: not-allowed;\n}\n\n/* Divider line for visual grouping of task sets */\n.gantt-tr-divider {\n position: absolute;\n left: 0;\n width: 100%;\n height: 0;\n border-top: 1px solid var(--gantt-grid-line-color, #d1d5db);\n pointer-events: none;\n z-index: 0;\n}\n\n.gantt-tr-divider-top {\n top: 0;\n}\n\n.gantt-tr-divider-bottom {\n bottom: 0;\n}\n\n/* ============================================================================\n Parent Task Bar Styles (Phase 19)\n ============================================================================ */\n\n/* Parent task bar - MS Project bracket style */\n.gantt-tr-parentBar {\n background-color: var(--gantt-parent-bar-color, #333333);\n height: var(--gantt-parent-bar-height, 14px) !important;\n border-radius: var(--gantt-parent-bar-radius, 8px) var(--gantt-parent-bar-radius, 8px) 0 0;\n position: relative;\n overflow: visible;\n /* Allow trapezoid ears to extend below the bar */\n /* Center the entire shape (bar + ears) vertically */\n /* Total height = 14px (bar) + 8px (ears) = 22px, midpoint at 11px from top */\n top: calc(50% - 20px);\n transform: none;\n}\n\n/* Trapezoid ears for bracket appearance */\n.gantt-tr-parentBar::before,\n.gantt-tr-parentBar::after {\n content: \"\";\n position: absolute;\n top: calc(var(--gantt-parent-bar-height, 14px) - 1px);\n height: var(--gantt-parent-ear-depth, 8px);\n width: var(--gantt-parent-ear-width, 10px);\n background-color: var(--gantt-parent-bar-color, #333333);\n}\n\n.gantt-tr-parentBar::before {\n left: 0;\n clip-path: polygon(0 0, 100% 0, 60% 100%, 0 100%);\n}\n\n.gantt-tr-parentBar::after {\n right: 0;\n clip-path: polygon(0 0, 100% 0, 100% 100%, 40% 100%);\n}","/**\n * TodayIndicator Component Styles\n */\n\n.gantt-ti-indicator {\n position: absolute;\n top: -1px;\n bottom: 0;\n z-index: 5;\n pointer-events: none;\n}",".gantt-gb-gridBackground {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 0;\n pointer-events: none;\n}\n\n.gantt-gb-weekendBlock {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-weekend-background, #fee2e2);\n}\n\n.gantt-gb-gridLine {\n position: absolute;\n top: 0;\n height: 100%;\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n\n.gantt-gb-monthSeparator {\n width: var(--gantt-month-separator-width, 2px);\n background-color: var(--gantt-month-separator-color, #374151);\n}\n\n.gantt-gb-weekSeparator {\n width: var(--gantt-week-separator-width, 1px);\n background-color: var(--gantt-week-separator-color, #d1d5db);\n}\n\n.gantt-gb-dayLine {\n width: var(--gantt-day-line-width, 1px);\n background-color: var(--gantt-day-line-color, #f3f4f6);\n}\n",".gantt-dgl-guideLine {\n position: absolute;\n top: 0;\n width: 2px;\n background-color: var(--gantt-drag-guide-line-color, #3b82f6);\n z-index: 20;\n pointer-events: none;\n opacity: 0.6;\n}\n","/* SVG overlay for dependency lines */\n.gantt-dependencies-svg {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n /* Allow clicks to pass through to task bars */\n overflow: visible;\n}\n\n/* Dependency line path */\n.gantt-dependency-path {\n fill: none;\n stroke: var(--gantt-dependency-line-color, #666666);\n stroke-width: 1;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n/* Virtual dependency lines (for hidden tasks inside collapsed parents) */\n.gantt-dependency-virtual {\n stroke-dasharray: 4 2;\n opacity: 0.6;\n}\n\n/* Circular dependency highlighting */\n.gantt-dependency-cycle {\n stroke: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Selected dependency highlighting */\n.gantt-dependency-selected {\n stroke: #ef4444;\n stroke-width: 2;\n}\n\n/* Arrow markers */\n.gantt-dependency-arrow polygon {\n fill: var(--gantt-dependency-line-color, #666666);\n}\n\n.gantt-dependency-arrow-cycle polygon {\n fill: var(--gantt-dependency-cycle-color, #ef4444);\n}\n\n/* Lag label styling */\n.gantt-dependency-lag-label {\n font-size: 10px;\n font-weight: 500;\n pointer-events: none;\n user-select: none;\n opacity: 0.85;\n}","/**\n * TaskList Component Styles\n * Sticky positioned in flex container - stays at left edge during horizontal scroll\n * Always rendered in DOM for stable positioning, visibility controlled via prop\n */\n\n.gantt-tl-overlay {\n position: sticky;\n left: 0;\n top: 0;\n z-index: 15;\n background-color: var(--gantt-cell-background, #ffffff);\n border-right: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n pointer-events: auto;\n}\n\n.gantt-tl-overlay.gantt-tl-overlay-shadowed {\n box-shadow: 10px 0 18px -14px rgba(15, 23, 42, 0.45);\n}\n\n/* Hidden state - element completely removed from layout */\n.gantt-tl-overlay.gantt-tl-hidden {\n display: none;\n}\n\n.gantt-tl-table {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 640px;\n}\n\n/* Header row - sticky during vertical scroll */\n.gantt-tl-header {\n position: sticky;\n top: 0;\n display: flex;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n z-index: 5;\n}\n\n.gantt-tl-headerCell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n}\n\n.gantt-tl-headerCell:last-child {\n border-right: none;\n}\n\n/* Body container */\n.gantt-tl-body {\n display: flex;\n flex-direction: column;\n}\n\n/* Data rows */\n.gantt-tl-row {\n display: flex;\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n box-sizing: border-box;\n cursor: pointer;\n position: relative;\n}\n\n.gantt-tl-row:hover {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.04);\n}\n\n.gantt-tl-row-selected {\n box-shadow: inset 0 0 0 9999px rgba(17, 24, 39, 0.08);\n}\n\n/* Hierarchy row styles */\n.gantt-tl-row-child {\n padding-left: 0;\n}\n\n/* Hierarchy connector — shown in child rows before task name */\n.gantt-tl-hierarchy-connector {\n position: absolute;\n left: 4px;\n top: 0;\n width: 16px;\n height: 100%;\n color: #d4bceb;\n pointer-events: none;\n}\n\n/* Vertical line: full height for non-last child, half height for last */\n.gantt-tl-hc-vline {\n position: absolute;\n left: 5px;\n top: 0;\n bottom: 0;\n width: 1.5px;\n background: currentColor;\n border-radius: 1px;\n}\n\n.gantt-tl-hierarchy-connector--last .gantt-tl-hc-vline {\n bottom: 50%;\n}\n\n/* Horizontal branch at vertical center */\n.gantt-tl-hc-hline {\n position: absolute;\n left: 5px;\n top: calc(50% - 0.75px);\n width: 6px;\n height: 1.5px;\n background: currentColor;\n border-radius: 1px;\n}\n\n/* Dot at end of horizontal branch */\n.gantt-tl-hc-dot {\n position: absolute;\n left: 9px;\n top: calc(50% - 2.5px);\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: currentColor;\n}\n\n.gantt-tl-row-parent {\n font-weight: 600;\n background-color: var(--gantt-parent-row-bg, #f2ebf9);\n}\n\n.gantt-tl-collapse-btn {\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2;\n width: 18px;\n height: 18px;\n border: none;\n background: transparent;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--gantt-text-color, #374151);\n padding: 0;\n transition: background-color 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:hover {\n background-color: transparent;\n}\n\n.gantt-tl-collapse-btn svg {\n transition: transform 0.15s ease;\n}\n\n.gantt-tl-collapse-btn:not(.gantt-tl-collapse-btn-collapsed) svg {\n transform: rotate(90deg);\n}\n\n/* Cells */\n.gantt-tl-cell {\n display: flex;\n align-items: center;\n padding: 0 0.5rem;\n box-sizing: border-box;\n border-right: var(--gantt-tl-vertical-separators);\n font-size: 0.85rem;\n color: #374151;\n}\n\n.gantt-tl-cell:last-child {\n border-right: none;\n}\n\n.gantt-tl-cell-number {\n width: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n padding: 0 2px;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n}\n\n/* Drag handle (hidden by default, reveal on row hover) */\n.gantt-tl-drag-handle {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: #9ca3af;\n visibility: hidden;\n user-select: none;\n background: transparent;\n}\n\n.gantt-tl-row:hover .gantt-tl-drag-handle,\n.gantt-tl-row-dragging .gantt-tl-drag-handle {\n visibility: visible;\n}\n\n.gantt-tl-row:hover .gantt-tl-num-label {\n visibility: hidden;\n}\n\n.gantt-tl-num-label {\n font-size: 0.75rem;\n opacity: 0.45;\n}\n\n.gantt-tl-drag-handle:active {\n cursor: grabbing;\n}\n\n/* Dragging row (semi-transparent background, blue text) */\n.gantt-tl-row-dragging {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n.gantt-tl-row-dragging .gantt-tl-cell,\n.gantt-tl-row-dragging .gantt-tl-name-trigger,\n.gantt-tl-row-dragging .gantt-tl-num-label {\n color: #3b82f6 !important;\n}\n\n/* Drop target indicator (blue top border) - uses ::before to avoid layout shift */\n.gantt-tl-row-drag-over {\n position: relative;\n}\n\n.gantt-tl-row-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n z-index: 1;\n}\n\n/* Navigate icon removed - single click on task name now selects row */\n\n/* Restore left padding for the name column header */\n.gantt-tl-headerCell.gantt-tl-cell-name {\n padding-left: 4px;\n}\n\n/* Name cell — overflow visible so overlay input can extend past boundaries */\n.gantt-tl-cell-name {\n flex: 1;\n min-width: 160px;\n position: relative;\n overflow: visible;\n align-items: center;\n padding: 0 4px;\n /* add right padding for button space */\n}\n\n/* Date cell — relative for transparent picker overlay */\n.gantt-tl-cell-date {\n width: 68px;\n justify-content: center;\n flex-shrink: 0;\n position: relative;\n padding: 0;\n}\n\n/* Duration cell */\n.gantt-tl-cell-duration {\n width: 46px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n/* Progress cell */\n.gantt-tl-cell-progress {\n width: 56px;\n flex-shrink: 0;\n justify-content: center;\n padding: 0 4px;\n cursor: pointer;\n position: relative;\n overflow: visible;\n font-variant-numeric: tabular-nums;\n}\n\n.gantt-tl-number-editor {\n position: absolute;\n inset: 0;\n}\n\n.gantt-tl-number-input {\n width: 100%;\n height: 100%;\n padding: 0 18px 0 6px;\n border-width: 1px;\n border-color: #93c5fd;\n border-radius: 8px;\n text-align: left;\n font-size: 0.8rem;\n line-height: 1;\n box-shadow: 0 0 0 1px rgba(147, 197, 253, 0.35);\n}\n\n.gantt-tl-number-input::-webkit-outer-spin-button,\n.gantt-tl-number-input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.gantt-tl-number-input[type='number'] {\n -moz-appearance: textfield;\n}\n\n.gantt-tl-number-steppers {\n position: absolute;\n top: 2px;\n right: 2px;\n bottom: 2px;\n width: 14px;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.gantt-tl-number-stepper {\n flex: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 5px;\n background: rgba(248, 250, 252, 0.95);\n color: #64748b;\n padding: 0;\n cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.gantt-tl-number-stepper:hover {\n background: #dbeafe;\n color: #1d4ed8;\n}\n\n.gantt-tl-number-stepper:active {\n background: #bfdbfe;\n}\n\n/* Full-cell button trigger for name edit */\n.gantt-tl-name-trigger {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n position: absolute;\n inset: 0;\n padding: 0 4px;\n /* match parent cell padding so text stays visually aligned */\n font-size: 0.8rem;\n line-height: 1.2;\n font-family: inherit;\n font-weight: inherit;\n color: #374151;\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: left;\n user-select: none;\n white-space: normal;\n word-break: break-word;\n box-sizing: border-box;\n}\n\n.gantt-tl-name-trigger-parent {\n padding-left: 26px;\n}\n\n.gantt-tl-name-trigger-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-trigger:hover,\n.gantt-tl-name-trigger:active {\n background-color: transparent;\n}\n\n/* Name edit — Input component used as floating overlay */\n.gantt-tl-name-input {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n min-width: 520px;\n width: 100%;\n border-width: 2px;\n border-color: #3b82f6;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);\n white-space: nowrap;\n}\n\n.gantt-tl-name-input-child {\n padding-left: 24px;\n}\n\n.gantt-tl-name-input:focus {\n box-shadow: 0 2px 10px rgba(59, 130, 246, 0.3);\n}\n\n/* Locked task name — cursor indicates no editing */\n.gantt-tl-name-locked {\n cursor: default !important;\n}\n\n/* Name cell action buttons container */\n.gantt-tl-name-actions {\n position: absolute;\n right: 4px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n/* Name cell action buttons — hover-reveal */\n.gantt-tl-name-action-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n border-radius: 4px;\n width: 20px;\n height: 20px;\n padding: 0;\n cursor: pointer;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease, background-color 0.15s ease;\n}\n\n/* Reveal buttons on row hover (any part of the row) */\n.gantt-tl-row:hover .gantt-tl-name-action-btn {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hierarchy action buttons (promote/demote) */\n.gantt-tl-action-buttons {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n pointer-events: none;\n}\n\n.gantt-tl-row:hover .gantt-tl-action-buttons {\n opacity: 1;\n pointer-events: auto;\n}\n\n.gantt-tl-action-btn {\n padding: 2px 8px;\n font-size: 11px;\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background: white;\n border-radius: 4px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s ease, border-color 0.15s ease;\n}\n\n.gantt-tl-action-btn:hover {\n background: var(--gantt-cell-background, #f9fafb);\n border-color: var(--gantt-primary-color, #3b82f6);\n}\n\n.gantt-tl-action-btn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n/* Dependencies column — header and data cells */\n.gantt-tl-cell-deps {\n width: 90px;\n flex-shrink: 0;\n flex-wrap: wrap;\n gap: 2px;\n padding: 2px 4px;\n align-items: center;\n overflow: hidden;\n position: relative;\n}\n\n/* Insert button styling (green) */\n.gantt-tl-action-insert {\n background-color: #22c55e;\n color: white;\n}\n\n.gantt-tl-action-insert:hover {\n background-color: #16a34a;\n}\n\n/* Delete button styling (red) */\n.gantt-tl-action-delete {\n background-color: #ef4444;\n color: white;\n}\n\n.gantt-tl-action-delete:hover {\n background-color: #dc2626;\n}\n\n/* Delete button confirmation state */\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm {\n min-width: 60px;\n font-size: 0.7rem;\n font-weight: 600;\n padding: 2px 6px;\n}\n\n.gantt-tl-action-delete.gantt-tl-action-delete-confirm:hover {\n background-color: #b91c1c;\n}\n\n/* Single hierarchy button with directional arrow */\n.gantt-tl-action-hierarchy {\n width: 20px;\n height: 20px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: #3b82f6;\n color: white;\n}\n\n.gantt-tl-action-hierarchy:hover {\n background-color: #2563eb;\n}\n\n/* Type switcher button in header */\n.gantt-tl-dep-type-trigger {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 0.75rem;\n font-weight: 600;\n color: #6b7280;\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-type-trigger:disabled {\n cursor: default;\n opacity: 0.7;\n}\n\n.gantt-tl-dep-type-trigger:not(:disabled):hover {\n color: #3b82f6;\n}\n\n/* Dropdown option buttons inside Popover */\n.gantt-tl-dep-type-menu {\n display: flex;\n flex-direction: column;\n padding: 4px;\n min-width: 180px;\n}\n\n.gantt-tl-dep-type-option {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 8px;\n padding: 4px 8px;\n font-size: 0.8rem;\n font-family: inherit;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: #374151;\n}\n\n.gantt-tl-dep-type-option:hover {\n background-color: rgba(59, 130, 246, 0.1);\n}\n\n.gantt-tl-dep-type-option.active {\n background-color: rgba(59, 130, 246, 0.2);\n font-weight: 600;\n color: #1d4ed8;\n}\n\n/* Dependency chip — clickable to select and trigger predecessor-side delete */\n.gantt-tl-dep-chip {\n display: inline-flex;\n align-items: center;\n gap: 1px;\n background-color: rgba(59, 130, 246, 0.12);\n /* border: 1px solid rgba(59, 130, 246, 0.3); */\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #1d4ed8;\n white-space: nowrap;\n line-height: 14px;\n cursor: pointer;\n}\n\n/* Selected chip visual highlight — inverted */\n.gantt-tl-dep-chip-selected {\n background-color: #1d4ed8;\n border-color: #1d4ed8;\n color: #fff;\n font-weight: 600;\n}\n\n/* Chip + trash button wrapper — keeps chip and delete button visually inline */\n.gantt-tl-dep-chip-wrapper {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n}\n\n/* Inline trash button — hidden by default, shown only when chip is selected */\n.gantt-tl-dep-chip-trash {\n display: none;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n background: #ef4444;\n border: none;\n border-radius: 3px;\n padding: 0 4px;\n cursor: pointer;\n color: #fff;\n flex-shrink: 0;\n line-height: 0;\n}\n\n/* Show trash only when chip is selected */\n.gantt-tl-dep-chip-wrapper:has(.gantt-tl-dep-chip-selected) .gantt-tl-dep-chip-trash {\n display: inline-flex;\n}\n\n.gantt-tl-dep-chip-trash:hover {\n background-color: #dc2626;\n}\n\n/* Dep chip info popover — human-readable dependency description on click */\n.gantt-tl-dep-info-popover {\n font-size: 0.75rem;\n color: #374151;\n padding: 6px 10px !important;\n max-width: 260px;\n line-height: 1.4;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.gantt-tl-dep-info-prefix {\n color: #6b7280;\n}\n\n.gantt-tl-dep-info-name {\n font-weight: 500;\n color: #111827;\n white-space: normal;\n word-break: break-word;\n}\n\n/* Summary chip: \"N связей\" — shown when 2+ deps */\n.gantt-tl-dep-summary-chip {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.12);\n border: 0px solid rgba(107, 114, 128, 0.3);\n border-radius: 6px;\n padding: 4px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-summary-chip:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n border-color: rgba(59, 130, 246, 0.3);\n}\n\n/* \"+N ещё\" overflow button */\n.gantt-tl-dep-overflow-trigger {\n display: inline-flex;\n align-items: center;\n background-color: rgba(107, 114, 128, 0.1);\n border: 1px solid rgba(107, 114, 128, 0.25);\n border-radius: 4px;\n padding: 1px 4px;\n font-size: 0.7rem;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n font-family: inherit;\n}\n\n.gantt-tl-dep-overflow-trigger:hover {\n background-color: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n}\n\n/* Overflow popover content — list of all deps */\n.gantt-tl-dep-overflow-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 8px;\n min-width: 140px;\n}\n\n.gantt-tl-dep-overflow-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n font-size: 0.8rem;\n color: #374151;\n}\n\n/* \"+\" add dependency button */\n.gantt-tl-dep-add {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 0px solid rgba(59, 130, 246, 0.4);\n background-color: rgba(59, 130, 246, 0.12);\n border-radius: 4px;\n width: 23px;\n height: 23px;\n font-size: 0.9rem;\n color: #3b82f6;\n cursor: pointer;\n padding: 0;\n font-family: inherit;\n flex-shrink: 0;\n}\n\n/* Hover-reveal variant for dep add button */\n.gantt-tl-dep-add-hover {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.gantt-tl-row:hover .gantt-tl-dep-add-hover {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Hide add button when a chip is selected (to avoid clutter with delete button) */\n.gantt-tl-dep-add-hidden {\n display: none !important;\n}\n\n.gantt-tl-dep-add:hover {\n background-color: rgba(59, 130, 246, 0.1);\n border-color: #3b82f6;\n}\n\n/* Picker mode: «Связи» cell on all rows becomes a selection target */\n.gantt-tl-row-picking .gantt-tl-cell-deps {\n cursor: crosshair;\n background-color: rgba(59, 130, 246, 0.04);\n}\n\n.gantt-tl-row-picking .gantt-tl-cell-deps:hover {\n background-color: rgba(59, 130, 246, 0.15);\n}\n\n/* Picker mode: current task's own row — clickable to cancel */\n.gantt-tl-row-picking-self .gantt-tl-cell-deps {\n cursor: pointer;\n}\n\n/* Placeholder text shown in source row's deps cell while picking a predecessor */\n.gantt-tl-dep-source-hint {\n font-size: 0.75rem;\n color: #6b7280;\n font-style: italic;\n pointer-events: none;\n white-space: normal;\n}\n\n/* Predecessor cell full-replacement: \"Зависит от [name]\" → hover → \"Удалить\" */\n.gantt-tl-dep-delete-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n background: #ef4444;\n border: none;\n border-radius: 4px;\n padding: 2px 4px;\n font-size: 0.75rem;\n font-family: inherit;\n cursor: pointer;\n color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n}\n\n.gantt-tl-dep-delete-label-hover {\n display: none;\n color: #fff;\n font-weight: 600;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-default {\n display: none;\n}\n\n.gantt-tl-dep-delete-label:hover .gantt-tl-dep-delete-label-hover {\n display: inline;\n}\n\n/* Cycle error banner below header */\n.gantt-tl-dep-error {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: #fef2f2;\n border: 1px solid #fca5a5;\n border-top: none;\n padding: 4px 8px;\n font-size: 0.75rem;\n color: #dc2626;\n z-index: 10;\n white-space: nowrap;\n}\n\n/* Add task button */\n.gantt-tl-add-btn {\n width: 100%;\n padding: 6px 12px;\n text-align: left;\n background: transparent;\n border: none;\n /* border-top: 1px dashed var(--gantt-grid-line-color, #e0e0e0); */\n cursor: pointer;\n font-size: 12px;\n color: var(--gantt-text-muted, #9ca3af);\n transition: background 0.15s ease, color 0.15s ease;\n font-family: inherit;\n}\n\n.gantt-tl-add-btn:hover {\n background: var(--gantt-hover-bg, rgba(0, 0, 0, 0.04));\n color: var(--gantt-text-color, #374151);\n}\n\n/* Blue top border when dragging over the add button */\n.gantt-tl-add-btn-drag-over {\n position: relative;\n background: rgba(59, 130, 246, 0.08);\n color: #3b82f6;\n}\n\n.gantt-tl-add-btn-drag-over::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 2px;\n background-color: #3b82f6;\n}\n\n.gantt-tl-cell-new-name {\n padding: 2px 4px;\n}",".gantt-container {\n width: 100%;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n border: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n background-color: var(--gantt-cell-background, #ffffff);\n border-radius: var(--gantt-container-border-radius, 10px);\n overflow: hidden;\n}\n\n.gantt-scrollContainer {\n overflow: auto;\n position: relative;\n}\n\n/* Wrapper for horizontal scroll content - keeps TaskList and chart together */\n.gantt-scrollContent {\n display: flex;\n min-width: min-content;\n}\n\n.gantt-stickyHeader {\n position: sticky;\n top: 0;\n z-index: 10;\n background-color: var(--gantt-cell-background, #ffffff);\n border-bottom: 1px solid var(--gantt-grid-line-color, #e0e0e0);\n}\n\n.gantt-taskArea {\n position: relative;\n background-color: var(--gantt-cell-background, #ffffff);\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -1570,7 +1570,7 @@ var TaskRow = import_react3.default.memo(
|
|
|
1570
1570
|
[taskStartDate, taskEndDate, monthStart, dayWidth]
|
|
1571
1571
|
);
|
|
1572
1572
|
const barColor = isExpired ? "var(--gantt-expired-color)" : task.color || "var(--gantt-task-bar-default-color)";
|
|
1573
|
-
const
|
|
1573
|
+
const nameColor = isParent ? task.color || "var(--gantt-parent-bar-color, #333333)" : void 0;
|
|
1574
1574
|
const progressWidth = (0, import_react3.useMemo)(() => {
|
|
1575
1575
|
if (task.progress === void 0 || task.progress <= 0) return 0;
|
|
1576
1576
|
return Math.min(100, Math.max(0, Math.round(task.progress)));
|
|
@@ -1585,6 +1585,19 @@ var TaskRow = import_react3.default.memo(
|
|
|
1585
1585
|
const baseColor = task.color || "var(--gantt-task-bar-default-color)";
|
|
1586
1586
|
return `color-mix(in srgb, ${baseColor} 40%, black)`;
|
|
1587
1587
|
}, [isExpired, progressWidth, task.accepted, task.color]);
|
|
1588
|
+
const barStyle = (0, import_react3.useMemo)(() => {
|
|
1589
|
+
if (isParent) {
|
|
1590
|
+
if (progressWidth >= 100) {
|
|
1591
|
+
const c = "color-mix(in srgb, var(--gantt-task-bar-default-color) 40%, black)";
|
|
1592
|
+
return { backgroundColor: c, "--gantt-parent-bar-color": c };
|
|
1593
|
+
}
|
|
1594
|
+
return {};
|
|
1595
|
+
}
|
|
1596
|
+
if (progressWidth >= 100) {
|
|
1597
|
+
return { backgroundColor: progressColor };
|
|
1598
|
+
}
|
|
1599
|
+
return { backgroundColor: barColor };
|
|
1600
|
+
}, [isParent, progressWidth, barColor, progressColor]);
|
|
1588
1601
|
const handleDragEnd = (result) => {
|
|
1589
1602
|
const updatedTask = {
|
|
1590
1603
|
...task,
|
|
@@ -1653,20 +1666,23 @@ var TaskRow = import_react3.default.memo(
|
|
|
1653
1666
|
style: {
|
|
1654
1667
|
left: `${displayLeft}px`,
|
|
1655
1668
|
width: `${displayWidth}px`,
|
|
1656
|
-
...
|
|
1669
|
+
...barStyle,
|
|
1657
1670
|
height: isParent ? "var(--gantt-parent-bar-height, 14px)" : "var(--gantt-task-bar-height)",
|
|
1658
1671
|
cursor: dragHandleProps.style.cursor,
|
|
1659
1672
|
userSelect: dragHandleProps.style.userSelect
|
|
1660
1673
|
},
|
|
1661
1674
|
onMouseDown: dragHandleProps.onMouseDown,
|
|
1662
1675
|
children: [
|
|
1663
|
-
progressWidth > 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1676
|
+
progressWidth > 0 && progressWidth < 100 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1664
1677
|
"div",
|
|
1665
1678
|
{
|
|
1666
1679
|
className: "gantt-tr-progressBar",
|
|
1667
1680
|
style: {
|
|
1668
1681
|
width: `${progressWidth}%`,
|
|
1669
|
-
backgroundColor: progressColor
|
|
1682
|
+
backgroundColor: progressColor,
|
|
1683
|
+
...isParent && {
|
|
1684
|
+
borderRadius: "var(--gantt-parent-bar-radius, 8px) 0 0 0"
|
|
1685
|
+
}
|
|
1670
1686
|
}
|
|
1671
1687
|
}
|
|
1672
1688
|
),
|
|
@@ -1727,7 +1743,14 @@ var TaskRow = import_react3.default.memo(
|
|
|
1727
1743
|
progressWidth,
|
|
1728
1744
|
"%"
|
|
1729
1745
|
] }),
|
|
1730
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1746
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
1747
|
+
"span",
|
|
1748
|
+
{
|
|
1749
|
+
className: "gantt-tr-externalTaskName",
|
|
1750
|
+
style: nameColor ? { color: nameColor } : void 0,
|
|
1751
|
+
children: task.name
|
|
1752
|
+
}
|
|
1753
|
+
)
|
|
1731
1754
|
]
|
|
1732
1755
|
}
|
|
1733
1756
|
)
|
|
@@ -3521,18 +3544,7 @@ var TaskList = ({
|
|
|
3521
3544
|
});
|
|
3522
3545
|
}, []);
|
|
3523
3546
|
const orderedTasks = (0, import_react12.useMemo)(() => {
|
|
3524
|
-
|
|
3525
|
-
console.log("[INPUT TASKS]", {
|
|
3526
|
-
count: tasks.length,
|
|
3527
|
-
tasks: tasks.map((t, i) => ({ id: t.id, name: t.name, parentId: t.parentId, index: i }))
|
|
3528
|
-
});
|
|
3529
|
-
const result = normalizeHierarchyTasks(tasks);
|
|
3530
|
-
console.log("[OUTPUT orderedTasks]", {
|
|
3531
|
-
count: result.length,
|
|
3532
|
-
tasks: result.map((t, i) => ({ id: t.id, name: t.name, parentId: t.parentId, index: i }))
|
|
3533
|
-
});
|
|
3534
|
-
console.log("=== TASKLIST orderedTasks useMemo END ===\n");
|
|
3535
|
-
return result;
|
|
3547
|
+
return normalizeHierarchyTasks(tasks);
|
|
3536
3548
|
}, [tasks]);
|
|
3537
3549
|
const visibleTasks = (0, import_react12.useMemo)(() => {
|
|
3538
3550
|
const parentMap = new Map(orderedTasks.map((t) => [t.id, t.parentId]));
|
|
@@ -3680,11 +3692,6 @@ var TaskList = ({
|
|
|
3680
3692
|
const descendants = getAllDescendants(draggedTaskId, orderedTasks);
|
|
3681
3693
|
const descendantIds = new Set(descendants.map((d) => d.id));
|
|
3682
3694
|
if (descendantIds.has(dropTarget.id)) {
|
|
3683
|
-
console.log("[INVALID DROP] Parent cannot be dropped under its own descendant", {
|
|
3684
|
-
parentId: draggedTaskId,
|
|
3685
|
-
descendantId: dropTarget.id,
|
|
3686
|
-
descendantName: dropTarget.name
|
|
3687
|
-
});
|
|
3688
3695
|
return false;
|
|
3689
3696
|
}
|
|
3690
3697
|
return true;
|
|
@@ -3725,14 +3732,6 @@ var TaskList = ({
|
|
|
3725
3732
|
dragTaskIdRef.current = null;
|
|
3726
3733
|
return;
|
|
3727
3734
|
}
|
|
3728
|
-
console.log("=== BEFORE getVisibleReorderPosition ===");
|
|
3729
|
-
console.log("[INPUT]", {
|
|
3730
|
-
movedTaskId,
|
|
3731
|
-
originVisibleIndex,
|
|
3732
|
-
dropIndex,
|
|
3733
|
-
orderedTasksCount: orderedTasks.length,
|
|
3734
|
-
visibleTasksCount: visibleTasks.length
|
|
3735
|
-
});
|
|
3736
3735
|
const reorderPosition = getVisibleReorderPosition(
|
|
3737
3736
|
orderedTasks,
|
|
3738
3737
|
visibleTasks,
|
|
@@ -3749,7 +3748,6 @@ var TaskList = ({
|
|
|
3749
3748
|
}
|
|
3750
3749
|
const { originOrderedIndex, insertIndex } = reorderPosition;
|
|
3751
3750
|
if (insertIndex === originOrderedIndex) {
|
|
3752
|
-
console.log("[NO-OP] insertIndex === originOrderedIndex, task stays at same position");
|
|
3753
3751
|
setDraggingIndex(null);
|
|
3754
3752
|
setDragOverIndex(null);
|
|
3755
3753
|
dragOriginIndexRef.current = null;
|
|
@@ -3757,12 +3755,6 @@ var TaskList = ({
|
|
|
3757
3755
|
return;
|
|
3758
3756
|
}
|
|
3759
3757
|
const moved = orderedTasks[originOrderedIndex];
|
|
3760
|
-
console.log("=== AFTER getVisibleReorderPosition ===");
|
|
3761
|
-
console.log("[REORDER POSITION]", {
|
|
3762
|
-
originOrderedIndex,
|
|
3763
|
-
insertIndex,
|
|
3764
|
-
movedTask: { id: moved.id, name: moved.name, parentId: moved.parentId }
|
|
3765
|
-
});
|
|
3766
3758
|
const hasChildren = isTaskParent(moved.id, orderedTasks);
|
|
3767
3759
|
let subtree;
|
|
3768
3760
|
let subtreeCount;
|
|
@@ -3770,130 +3762,41 @@ var TaskList = ({
|
|
|
3770
3762
|
const descendants = getAllDescendants(moved.id, orderedTasks);
|
|
3771
3763
|
subtree = [moved, ...descendants];
|
|
3772
3764
|
subtreeCount = subtree.length;
|
|
3773
|
-
console.log("[PARENT TASK DROP]", {
|
|
3774
|
-
parentId: moved.id,
|
|
3775
|
-
parentName: moved.name,
|
|
3776
|
-
descendantCount: descendants.length,
|
|
3777
|
-
descendantIds: descendants.map((d) => d.id),
|
|
3778
|
-
subtreeSize: subtreeCount,
|
|
3779
|
-
originOrderedIndex
|
|
3780
|
-
});
|
|
3781
3765
|
} else {
|
|
3782
3766
|
subtree = [moved];
|
|
3783
3767
|
subtreeCount = 1;
|
|
3784
3768
|
}
|
|
3785
3769
|
const reordered = [...orderedTasks];
|
|
3786
|
-
console.log("[BEFORE FIRST SPLICE]", {
|
|
3787
|
-
reorderedLength: reordered.length,
|
|
3788
|
-
removingAt: originOrderedIndex,
|
|
3789
|
-
removingCount: subtreeCount
|
|
3790
|
-
});
|
|
3791
3770
|
reordered.splice(originOrderedIndex, subtreeCount);
|
|
3792
|
-
console.log("[AFTER FIRST SPLICE]", {
|
|
3793
|
-
reorderedLength: reordered.length,
|
|
3794
|
-
reorderedIds: reordered.map((t) => t.id)
|
|
3795
|
-
});
|
|
3796
3771
|
const adjustedInsertIndex = insertIndex;
|
|
3797
|
-
console.log("[INSERT INDEX CALCULATION]", {
|
|
3798
|
-
originalInsertIndex: insertIndex,
|
|
3799
|
-
subtreeCount,
|
|
3800
|
-
originOrderedIndex,
|
|
3801
|
-
adjustedInsertIndex,
|
|
3802
|
-
note: "insertIndex is already relative to reorderedWithoutMoved, so we use it directly"
|
|
3803
|
-
});
|
|
3804
|
-
const isChild = !!moved.parentId;
|
|
3805
|
-
const isParent = hasChildren;
|
|
3806
|
-
const taskType = isParent ? `PARENT (${subtreeCount} tasks)` : isChild ? "CHILD" : "ROOT";
|
|
3807
|
-
console.log("=== DRAG & DROP START ===");
|
|
3808
|
-
console.log("[MOVED TASK]", {
|
|
3809
|
-
id: moved.id,
|
|
3810
|
-
name: moved.name,
|
|
3811
|
-
type: taskType,
|
|
3812
|
-
parentId: moved.parentId,
|
|
3813
|
-
originIndex: originOrderedIndex,
|
|
3814
|
-
originVisibleIndex,
|
|
3815
|
-
dropIndex,
|
|
3816
|
-
insertIndex: adjustedInsertIndex,
|
|
3817
|
-
subtreeSize: subtreeCount,
|
|
3818
|
-
direction: originVisibleIndex < dropIndex ? "DOWN" : "UP"
|
|
3819
|
-
});
|
|
3820
|
-
console.log("[TASKS ARRAY LENGTH]", orderedTasks.length);
|
|
3821
3772
|
let inferredParentId;
|
|
3822
3773
|
if (moved.parentId) {
|
|
3823
3774
|
const parentIndex = reordered.findIndex((t) => t.id === moved.parentId);
|
|
3824
|
-
console.log("[CHILD TASK - CHECKING GROUP POSITION]", {
|
|
3825
|
-
currentParentId: moved.parentId,
|
|
3826
|
-
parentIndex,
|
|
3827
|
-
parentFound: parentIndex !== -1
|
|
3828
|
-
});
|
|
3829
3775
|
if (parentIndex === -1) {
|
|
3830
|
-
console.log("[PARENT NOT FOUND] - Setting parentId to undefined");
|
|
3831
3776
|
inferredParentId = void 0;
|
|
3832
3777
|
} else {
|
|
3833
3778
|
const numSiblings = reordered.filter((t) => t.parentId === moved.parentId).length;
|
|
3834
3779
|
const groupEnd = parentIndex + numSiblings;
|
|
3835
|
-
console.log("[GROUP RANGE CALCULATION]", {
|
|
3836
|
-
parentIndex,
|
|
3837
|
-
numSiblings,
|
|
3838
|
-
groupEnd,
|
|
3839
|
-
groupRange: `[${parentIndex}, ${groupEnd}]`,
|
|
3840
|
-
insertIndex: adjustedInsertIndex,
|
|
3841
|
-
condition1_atOrAboveParent: adjustedInsertIndex <= parentIndex,
|
|
3842
|
-
condition2_belowAllSiblings: adjustedInsertIndex > groupEnd
|
|
3843
|
-
});
|
|
3844
3780
|
if (adjustedInsertIndex <= parentIndex || adjustedInsertIndex > groupEnd) {
|
|
3845
|
-
console.log("[DECISION] EXIT GROUP - insertIndex is outside group range");
|
|
3846
|
-
console.log(" -> Reason:", adjustedInsertIndex <= parentIndex ? "At or above parent position" : "Below all siblings");
|
|
3847
|
-
console.log(" -> Setting inferredParentId = undefined");
|
|
3848
3781
|
inferredParentId = void 0;
|
|
3849
3782
|
} else {
|
|
3850
|
-
console.log("[DECISION] STAY IN GROUP - insertIndex is within group range");
|
|
3851
|
-
console.log(" -> Keeping original parentId:", moved.parentId);
|
|
3852
3783
|
inferredParentId = moved.parentId;
|
|
3853
3784
|
}
|
|
3854
3785
|
}
|
|
3855
3786
|
} else {
|
|
3856
|
-
console.log("[ROOT TASK] - Will check if it should join a group after splicing");
|
|
3857
3787
|
}
|
|
3858
3788
|
reordered.splice(adjustedInsertIndex, 0, ...subtree);
|
|
3859
|
-
console.log("[AFTER SPLICE]", {
|
|
3860
|
-
subtreeFinalPosition: adjustedInsertIndex,
|
|
3861
|
-
subtreeSize: subtreeCount,
|
|
3862
|
-
totalTasks: reordered.length,
|
|
3863
|
-
reorderedIds: reordered.map((t, i) => ({ index: i, id: t.id, name: t.name, parentId: t.parentId }))
|
|
3864
|
-
});
|
|
3865
3789
|
if (!moved.parentId && !hasChildren) {
|
|
3866
3790
|
const taskAbove = adjustedInsertIndex > 0 ? reordered[adjustedInsertIndex - 1] : null;
|
|
3867
3791
|
const taskBelow = adjustedInsertIndex < reordered.length - 1 ? reordered[adjustedInsertIndex + 1] : null;
|
|
3868
|
-
console.log("[ROOT TASK - CHECK NEIGHBORS]", {
|
|
3869
|
-
taskAboveId: taskAbove?.id,
|
|
3870
|
-
taskAboveParentId: taskAbove?.parentId,
|
|
3871
|
-
taskBelowId: taskBelow?.id,
|
|
3872
|
-
taskBelowParentId: taskBelow?.parentId
|
|
3873
|
-
});
|
|
3874
3792
|
if (taskAbove && taskBelow && taskBelow.parentId === taskAbove.id) {
|
|
3875
3793
|
inferredParentId = taskAbove.id;
|
|
3876
|
-
console.log(" -> Joining group: between parent and first child:", inferredParentId);
|
|
3877
3794
|
} else if (taskAbove && taskBelow && taskAbove.parentId && taskAbove.parentId === taskBelow.parentId) {
|
|
3878
3795
|
inferredParentId = taskAbove.parentId;
|
|
3879
|
-
console.log(" -> Joining group: between two siblings:", inferredParentId);
|
|
3880
3796
|
} else if (!taskAbove && taskBelow && taskBelow.parentId) {
|
|
3881
3797
|
inferredParentId = taskBelow.parentId;
|
|
3882
|
-
console.log(" -> Joining group: at top above child:", inferredParentId);
|
|
3883
|
-
} else {
|
|
3884
|
-
console.log("[ROOT TASK] - Staying as root (no group to join)");
|
|
3885
3798
|
}
|
|
3886
|
-
} else if (!moved.parentId && hasChildren) {
|
|
3887
|
-
console.log("[PARENT TASK] - Staying as root (parent tasks cannot be reparented)");
|
|
3888
3799
|
}
|
|
3889
|
-
console.log("[FINAL RESULT]", {
|
|
3890
|
-
inferredParentId,
|
|
3891
|
-
willExitGroup: moved.parentId && !inferredParentId,
|
|
3892
|
-
willJoinGroup: !moved.parentId && !!inferredParentId,
|
|
3893
|
-
willStayInGroup: moved.parentId && inferredParentId === moved.parentId,
|
|
3894
|
-
willStayRoot: !moved.parentId && !inferredParentId
|
|
3895
|
-
});
|
|
3896
|
-
console.log("=== DRAG & DROP END ===\n");
|
|
3897
3800
|
onReorder?.(reordered, moved.id, inferredParentId);
|
|
3898
3801
|
onTaskSelect?.(moved.id);
|
|
3899
3802
|
setDraggingIndex(null);
|
|
@@ -4259,73 +4162,16 @@ var GanttChart = (0, import_react13.forwardRef)(({
|
|
|
4259
4162
|
onInsertAfter?.(taskId, newTask);
|
|
4260
4163
|
}, [onInsertAfter]);
|
|
4261
4164
|
const handleReorder = (0, import_react13.useCallback)((reorderedTasks, movedTaskId, inferredParentId) => {
|
|
4262
|
-
console.log("=== GANTT CHART handleReorder START ===");
|
|
4263
|
-
console.log("[INPUTS]", {
|
|
4264
|
-
movedTaskId,
|
|
4265
|
-
inferredParentId,
|
|
4266
|
-
inferredParentIdType: typeof inferredParentId,
|
|
4267
|
-
reorderedTasksCount: reorderedTasks.length
|
|
4268
|
-
});
|
|
4269
|
-
const movedTaskInReordered = reorderedTasks.find((t) => t.id === movedTaskId);
|
|
4270
|
-
if (movedTaskInReordered) {
|
|
4271
|
-
console.log("[MOVED TASK IN REORDERED]", {
|
|
4272
|
-
id: movedTaskInReordered.id,
|
|
4273
|
-
name: movedTaskInReordered.name,
|
|
4274
|
-
currentParentId: movedTaskInReordered.parentId
|
|
4275
|
-
});
|
|
4276
|
-
} else {
|
|
4277
|
-
console.log("[MOVED TASK NOT FOUND IN REORDERED]");
|
|
4278
|
-
}
|
|
4279
4165
|
let updated = reorderedTasks;
|
|
4280
4166
|
if (movedTaskId) {
|
|
4281
|
-
console.log("[CONDITION CHECK]", {
|
|
4282
|
-
condition: "if (movedTaskId)",
|
|
4283
|
-
movedTaskId,
|
|
4284
|
-
isTrue: !!movedTaskId,
|
|
4285
|
-
willUpdateParentId: true
|
|
4286
|
-
});
|
|
4287
4167
|
updated = updated.map((t) => {
|
|
4288
4168
|
if (t.id === movedTaskId) {
|
|
4289
|
-
|
|
4290
|
-
console.log("[UPDATING TASK]", {
|
|
4291
|
-
taskId: t.id,
|
|
4292
|
-
taskName: t.name,
|
|
4293
|
-
oldParentId: t.parentId,
|
|
4294
|
-
newParentId,
|
|
4295
|
-
inferredParentId,
|
|
4296
|
-
finalValue: newParentId
|
|
4297
|
-
});
|
|
4298
|
-
return { ...t, parentId: newParentId };
|
|
4169
|
+
return { ...t, parentId: inferredParentId || void 0 };
|
|
4299
4170
|
}
|
|
4300
4171
|
return t;
|
|
4301
4172
|
});
|
|
4302
|
-
} else {
|
|
4303
|
-
console.log("[CONDITION CHECK]", {
|
|
4304
|
-
condition: "if (movedTaskId)",
|
|
4305
|
-
movedTaskId,
|
|
4306
|
-
isTrue: false,
|
|
4307
|
-
willUpdateParentId: false
|
|
4308
|
-
});
|
|
4309
|
-
}
|
|
4310
|
-
const updatedTask = updated.find((t) => t.id === movedTaskId);
|
|
4311
|
-
if (updatedTask) {
|
|
4312
|
-
console.log("[UPDATED TASK VERIFICATION]", {
|
|
4313
|
-
id: updatedTask.id,
|
|
4314
|
-
name: updatedTask.name,
|
|
4315
|
-
finalParentId: updatedTask.parentId
|
|
4316
|
-
});
|
|
4317
4173
|
}
|
|
4318
|
-
console.log("[ONCHANGE END]", {
|
|
4319
|
-
updatedCount: updated.length
|
|
4320
|
-
});
|
|
4321
|
-
console.log("=== GANTT CHART handleReorder END ===\n");
|
|
4322
4174
|
const normalized = normalizeHierarchyTasks(updated);
|
|
4323
|
-
console.log("=== AFTER NORMALIZE HIERARCHY ===");
|
|
4324
|
-
console.log("[NORMALIZED TASKS]", {
|
|
4325
|
-
count: normalized.length,
|
|
4326
|
-
tasks: normalized.map((t, i) => ({ id: t.id, name: t.name, parentId: t.parentId, index: i }))
|
|
4327
|
-
});
|
|
4328
|
-
console.log("=== GANTT CHART handleReorder COMPLETE ===\n");
|
|
4329
4175
|
onTasksChange?.(normalized);
|
|
4330
4176
|
onReorder?.(normalized, movedTaskId, inferredParentId);
|
|
4331
4177
|
}, [onTasksChange, onReorder]);
|