schedulant 2.0.7-fixed.4.2 → 2.0.7-fixed.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,8 @@ import { SchedulantApi } from '../../types/schedulant.ts';
2
2
  import { ResourceApi, ResourceAreaColumn } from '../../types/resource.ts';
3
3
  import { ResizerMouseDownFunc, ResizerMouseUp } from '../../hooks/use-resource-area-resizer.ts';
4
4
  import { DropPosition } from '../../hooks/use-move-resource.tsx';
5
- type BodyCellProps = {
5
+ import { UniqueIdentifier } from '@dnd-kit/core';
6
+ export declare const BodyCell: (props: {
6
7
  schedulantApi: SchedulantApi;
7
8
  resourceApi: ResourceApi;
8
9
  collapseIds: Array<string>;
@@ -13,9 +14,7 @@ type BodyCellProps = {
13
14
  cellResizerMouseUp: ResizerMouseUp;
14
15
  cellResizerMouseDownFunc: ResizerMouseDownFunc;
15
16
  isDraggable?: boolean;
16
- isActive?: boolean;
17
- isOver?: boolean;
17
+ activeId?: UniqueIdentifier | null;
18
+ overId?: UniqueIdentifier | null;
18
19
  dropPosition?: DropPosition | null;
19
- };
20
- export declare const BodyCell: (props: BodyCellProps) => import("react/jsx-runtime").JSX.Element;
21
- export {};
20
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,12 @@
1
1
  import { SchedulantView } from '../../types/schedulant-view.tsx';
2
2
  import { ResizerMouseDownFunc, ResizerMouseUp } from '../../hooks/use-resource-area-resizer.ts';
3
+ import { ResourceApi } from '../../types/resource.ts';
4
+ import { Virtualizer } from '@tanstack/react-virtual';
3
5
  export declare const DatagridBody: (props: {
4
6
  schedulantView: SchedulantView;
7
+ virtualizer: Virtualizer<HTMLDivElement, Element>;
8
+ visibleResources: ResourceApi[];
9
+ collapseIds: string[];
5
10
  cellResizerMouseUp: ResizerMouseUp;
6
11
  cellResizerMouseDownFunc: ResizerMouseDownFunc;
7
12
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,9 @@
1
1
  import { CheckpointApi } from '../../types/checkpoint.ts';
2
2
  import { SchedulantApi } from '../../types/schedulant.ts';
3
3
  import { Position } from '../../types/base.ts';
4
- export declare const TimelineCheckpointHarness: import('react').MemoExoticComponent<(props: {
4
+ export declare const TimelineCheckpointHarness: (props: {
5
5
  schedulantApi: SchedulantApi;
6
6
  checkpointApi: CheckpointApi;
7
7
  timelineWidth: number;
8
8
  position: Position;
9
- }) => import("react/jsx-runtime").JSX.Element>;
9
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,8 @@
1
1
  import { SchedulantView } from '../../types/schedulant-view.tsx';
2
+ import { ResourceApi } from '../../types/resource.ts';
3
+ import { Virtualizer } from '@tanstack/react-virtual';
2
4
  export declare const TimelineDrawingBoard: (props: {
3
5
  schedulantView: SchedulantView;
6
+ virtualizer: Virtualizer<HTMLDivElement, Element>;
7
+ visibleResources: ResourceApi[];
4
8
  }) => import("react/jsx-runtime").JSX.Element;
@@ -2,10 +2,10 @@ import { EventApi } from '../../types/event.ts';
2
2
  import { ResourceApi } from '../../types/resource.ts';
3
3
  import { SchedulantApi } from '../../types/schedulant.ts';
4
4
  import { Position } from '../../types/base.ts';
5
- export declare const TimelineEventHarness: import('react').MemoExoticComponent<(props: {
5
+ export declare const TimelineEventHarness: (props: {
6
6
  schedulantApi: SchedulantApi;
7
7
  resourceApi: ResourceApi;
8
8
  eventApi: EventApi;
9
9
  timelineWidth: number;
10
10
  position: Position;
11
- }) => import("react/jsx-runtime").JSX.Element>;
11
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,9 @@
1
1
  import { Position } from '../../types/base';
2
2
  import { MilestoneApi } from '../../types/milestone.ts';
3
3
  import { SchedulantApi } from '../../types/schedulant.ts';
4
- export declare const TimelineMilestoneHarness: import('react').MemoExoticComponent<(props: {
4
+ export declare const TimelineMilestoneHarness: (props: {
5
5
  schedulantApi: SchedulantApi;
6
6
  milestoneApi: MilestoneApi;
7
7
  timelineWidth: number;
8
8
  position: Position;
9
- }) => import("react/jsx-runtime").JSX.Element>;
9
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,8 @@
1
1
  import { Dispatch } from 'react';
2
2
  import { Action, SchedulantState } from './schedulant-state.tsx';
3
- export declare const SchedulantStateContext: import('react').Context<SchedulantState | undefined>;
4
- export declare const SchedulantDispatchContext: import('react').Context<Dispatch<Action> | undefined>;
3
+ type SchedulantContextType = {
4
+ state: SchedulantState;
5
+ dispatch: Dispatch<Action>;
6
+ };
7
+ export declare const SchedulantContext: import('react').Context<SchedulantContextType | undefined>;
8
+ export {};
@@ -1,5 +1,3 @@
1
- export declare const useSchedulantState: () => import('../context/schedulant-state').SchedulantState;
2
- export declare const useSchedulantDispatch: () => import('react').Dispatch<import('../context/schedulant-state').Action>;
3
1
  export declare const useSchedulantContext: () => {
4
2
  state: import('../context/schedulant-state').SchedulantState;
5
3
  dispatch: import('react').Dispatch<import('../context/schedulant-state').Action>;
@@ -1,2 +1,9 @@
1
1
  import { RefObject } from 'react';
2
- export declare const useSyncScroll: (mainContainer: RefObject<HTMLDivElement | null>, otherContainers: Array<RefObject<HTMLDivElement | null>>, type: string) => void;
2
+ /**
3
+ * Unified scroll sync for the schedulant layout.
4
+ *
5
+ * - bodyRight is the single vertical scroll source (bodyLeft has overflow-y: hidden).
6
+ * - Wheel events are intercepted for zero-lag sync on all pairs.
7
+ * - Scroll event handlers serve as fallback for scrollbar drag / touch / programmatic scroll.
8
+ */
9
+ export declare const useScrollSync: (bodyLeft: RefObject<HTMLDivElement | null>, bodyRight: RefObject<HTMLDivElement | null>, headerLeft: RefObject<HTMLDivElement | null>, headerRight: RefObject<HTMLDivElement | null>) => void;
@@ -0,0 +1,12 @@
1
+ import { RefObject } from 'react';
2
+ import { Virtualizer } from '@tanstack/react-virtual';
3
+ import { ResourceApi } from '../types/resource.ts';
4
+ export type VirtualizedRowsResult = {
5
+ virtualizer: Virtualizer<HTMLDivElement, Element>;
6
+ visibleResources: ResourceApi[];
7
+ };
8
+ /**
9
+ * Compute the flat list of visible resources respecting collapse state.
10
+ */
11
+ export declare function computeVisibleResources(topLevelResources: ResourceApi[], collapseIds: string[]): ResourceApi[];
12
+ export declare const useVirtualizedRows: (scrollerRef: RefObject<HTMLDivElement | null>, topLevelResources: ResourceApi[], collapseIds: string[], lineHeight: number, timelineStart: import('dayjs').Dayjs, timelineEnd: import('dayjs').Dayjs) => VirtualizedRowsResult;
@@ -1 +1 @@
1
- ::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#f5f5f5}::-webkit-scrollbar-thumb{background:#848484;border-radius:5px;border:2px solid #fff;box-shadow:inset 0 0 5px #0003}::-webkit-scrollbar-thumb:hover{background-color:#91003c}::-webkit-scrollbar-button{display:none}::-webkit-scrollbar-corner{background-color:#f5f5f5}.schedulant,.schedulant *{box-sizing:border-box}.schedulant{direction:ltr;text-align:left;display:flex;flex-direction:column;font-size:1em;position:relative}.schedulant table{border-collapse:collapse;border-spacing:0;font-size:1em;table-layout:fixed;width:100%}.schedulant table td,.schedulant table th{padding:0;border:1px solid #CED4DA}.schedulant table th{text-align:center}.schedulant .schedulant-view-harness{flex-grow:1;position:relative}.schedulant .schedulant-view-harness .schedulant-view{inset:0;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-scroller-harness{height:100%;direction:ltr;overflow:hidden;position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-timeline-divider{cursor:col-resize;width:3px;background-color:#e9ecef}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame{height:100%;display:flex;justify-content:flex-start;align-items:center;position:relative;cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame .schedulant-datagrid-cell-cushion{overflow:hidden;padding-left:8px;white-space:nowrap}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-dragging{opacity:.4;background-color:#f0f0f0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-before{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-before:before{content:"";position:absolute;top:-1px;left:0;right:0;height:3px;background-color:var(--schedulant-drag-hint-color, #4285f4);z-index:10}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-after{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-after:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:3px;background-color:var(--schedulant-drag-hint-color, #4285f4);z-index:10}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-child{background-color:var(--schedulant-drag-child-bg, rgba(66, 133, 244, .08))}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-row-selected,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-selected{background-color:var(--schedulant-selection-color, rgba(66, 133, 244, .15))}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head>td{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left{height:100%;overflow:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right{overflow:hidden scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right .schedulant-timeline-head table tr:last-child td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right .schedulant-timeline-head table tr:last-child th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left::-webkit-scrollbar{width:0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left{inset:0;overflow:scroll;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left .schedulant-datagrid-body .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-right{inset:0;position:absolute;overflow:scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body{min-height:100%;position:relative;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots{position:absolute;top:0;bottom:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots .schedulant-timeline-slot-frame{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots>table{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-lane{position:absolute;inset:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events{position:relative;width:0;z-index:3}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event{border-radius:5px;display:flex;justify-content:space-between}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event .schedulant-event-main{padding-left:5px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.schedulant .schedulant-icon{display:inline-block;height:12px;width:12px;margin-right:1px}.schedulant .schedulant-holiday{background-color:#e9ecef}.schedulant-drag-overlay{padding:6px 12px;background-color:#ffffffeb;border:1px solid #CED4DA;border-radius:4px;box-shadow:0 4px 12px #00000026;font-size:1em;white-space:nowrap;pointer-events:none}
1
+ ::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#f5f5f5}::-webkit-scrollbar-thumb{background:#848484;border-radius:5px;border:2px solid #fff;box-shadow:inset 0 0 5px #0003}::-webkit-scrollbar-thumb:hover{background-color:#91003c}::-webkit-scrollbar-button{display:none}::-webkit-scrollbar-corner{background-color:#f5f5f5}.schedulant,.schedulant *{box-sizing:border-box}.schedulant{direction:ltr;text-align:left;display:flex;flex-direction:column;font-size:1em;position:relative}.schedulant table{border-collapse:collapse;border-spacing:0;font-size:1em;table-layout:fixed;width:100%}.schedulant table td,.schedulant table th{padding:0;border:1px solid #CED4DA}.schedulant table th{text-align:center}.schedulant .schedulant-view-harness{flex-grow:1;position:relative}.schedulant .schedulant-view-harness .schedulant-view{inset:0;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-scroller-harness{height:100%;direction:ltr;overflow:hidden;position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-timeline-divider{cursor:col-resize;width:3px;background-color:#e9ecef}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame{height:100%;display:flex;justify-content:flex-start;align-items:center;position:relative;cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame .schedulant-datagrid-cell-cushion{overflow:hidden;padding-left:8px;white-space:nowrap}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-dragging{opacity:.4;background-color:#f0f0f0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-before{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-before:before{content:"";position:absolute;top:-1px;left:0;right:0;height:3px;background-color:var(--schedulant-drag-hint-color, #4285f4);z-index:10}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-after{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-after:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:3px;background-color:var(--schedulant-drag-hint-color, #4285f4);z-index:10}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-child{background-color:var(--schedulant-drag-child-bg, rgba(66, 133, 244, .08))}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-row-selected,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-selected{background-color:var(--schedulant-selection-color, rgba(66, 133, 244, .15))}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head>td{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left{height:100%;overflow:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right{overflow:hidden scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right .schedulant-timeline-head table tr:last-child td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right .schedulant-timeline-head table tr:last-child th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left::-webkit-scrollbar{width:0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left{inset:0;overflow-x:scroll;overflow-y:hidden;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left .schedulant-datagrid-body .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-right{inset:0;position:absolute;overflow:scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body{min-height:100%;position:relative;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots{position:absolute;top:0;bottom:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots .schedulant-timeline-slot-frame{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots>table{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-lane{position:absolute;inset:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events{position:relative;width:0;z-index:3}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event{border-radius:5px;display:flex;justify-content:space-between}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event .schedulant-event-main{padding-left:5px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.schedulant .schedulant-icon{display:inline-block;height:12px;width:12px;margin-right:1px}.schedulant .schedulant-holiday{background-color:#e9ecef}.schedulant-drag-overlay{padding:6px 12px;background-color:#ffffffeb;border:1px solid #CED4DA;border-radius:4px;box-shadow:0 4px 12px #00000026;font-size:1em;white-space:nowrap;pointer-events:none}