react-timelane 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/components/Timelane.d.ts +15 -0
  2. package/dist/components/TimelaneAside.d.ts +13 -0
  3. package/dist/components/TimelaneBackground.d.ts +5 -0
  4. package/dist/components/TimelaneBody.d.ts +6 -0
  5. package/dist/components/TimelaneBodyInner.d.ts +16 -0
  6. package/dist/components/TimelaneHeader/DaysHeader.d.ts +15 -0
  7. package/dist/components/TimelaneHeader/MonthsHeader.d.ts +15 -0
  8. package/dist/components/TimelaneHeader/TimelaneHeader.d.ts +24 -0
  9. package/dist/components/TimelaneHeader/WeeksHeader.d.ts +15 -0
  10. package/dist/components/TimelaneHeader/index.d.ts +5 -0
  11. package/dist/components/TimelaneHeader/renderingUtils.d.ts +4 -0
  12. package/dist/components/TimelaneSelectionLayer.d.ts +6 -0
  13. package/dist/components/TimelaneSettingsContext.d.ts +7 -0
  14. package/dist/components/TimelaneSettingsProvider.d.ts +7 -0
  15. package/dist/components/TimelaneWrapper.d.ts +20 -0
  16. package/dist/components/core/CoreItem/CoreItemComponent.d.ts +14 -0
  17. package/dist/components/core/CoreItem/DragResizeComponent.d.ts +20 -0
  18. package/dist/components/core/CoreSwimlane/AvailableSpaceIndicator.d.ts +21 -0
  19. package/dist/components/core/CoreSwimlane/CoreSwimlane.d.ts +16 -0
  20. package/dist/components/core/CoreSwimlane/DropPreview.d.ts +9 -0
  21. package/dist/components/core/CoreSwimlane/DropTarget.d.ts +11 -0
  22. package/dist/components/core/CoreSwimlane/OverlapIndicator.d.ts +6 -0
  23. package/dist/components/core/CoreSwimlane/utils.d.ts +13 -0
  24. package/dist/components/core/utils.d.ts +15 -0
  25. package/dist/components/layout/TimelaneLayout.d.ts +23 -0
  26. package/dist/hooks/useScroll.d.ts +10 -0
  27. package/dist/hooks/useTimelaneContext.d.ts +1 -0
  28. package/dist/index.d.ts +13 -0
  29. package/dist/react-timelane.css +1 -0
  30. package/dist/react-timelane.js +4701 -0
  31. package/dist/types/AvailableSpace.d.ts +6 -0
  32. package/dist/types/CoreItem.d.ts +12 -0
  33. package/dist/types/DateBounds.d.ts +4 -0
  34. package/dist/types/Dimensions.d.ts +4 -0
  35. package/dist/types/GrabInfo.d.ts +5 -0
  36. package/dist/types/Grid.d.ts +6 -0
  37. package/dist/types/OffsetBounds.d.ts +4 -0
  38. package/dist/types/Pixels.d.ts +4 -0
  39. package/{src/types/Position.ts → dist/types/Position.d.ts} +2 -2
  40. package/dist/types/Rectangle.d.ts +6 -0
  41. package/dist/types/SwimlaneT.d.ts +5 -0
  42. package/dist/types/TimeRange.d.ts +4 -0
  43. package/dist/types/TimelaneSettings.d.ts +11 -0
  44. package/dist/types/index.d.ts +15 -0
  45. package/package.json +1 -1
  46. package/vite.config.ts +2 -2
  47. package/.github/workflows/static.yml +0 -55
  48. package/docs/README.md +0 -54
  49. package/docs/eslint.config.js +0 -28
  50. package/docs/index.html +0 -12
  51. package/docs/package-lock.json +0 -5101
  52. package/docs/package.json +0 -35
  53. package/docs/src/App.css +0 -5
  54. package/docs/src/App.tsx +0 -59
  55. package/docs/src/assets/react.svg +0 -1
  56. package/docs/src/components/AllocationComponent.tsx +0 -82
  57. package/docs/src/components/Timeline.tsx +0 -183
  58. package/docs/src/constants.ts +0 -42
  59. package/docs/src/hooks/useLocalStorage.ts +0 -21
  60. package/docs/src/main.tsx +0 -9
  61. package/docs/src/models/Allocation.ts +0 -11
  62. package/docs/src/models/AllocationId.ts +0 -1
  63. package/docs/src/models/Resource.ts +0 -8
  64. package/docs/src/models/ResourceId.ts +0 -1
  65. package/docs/src/vite-env.d.ts +0 -1
  66. package/docs/tsconfig.json +0 -27
  67. package/docs/vite.config.ts +0 -8
  68. package/src/components/Timeline.scss +0 -297
  69. package/src/components/TimelineAside.tsx +0 -81
  70. package/src/components/TimelineBackground.tsx +0 -53
  71. package/src/components/TimelineBody.tsx +0 -54
  72. package/src/components/TimelineHeader/DaysHeader.tsx +0 -44
  73. package/src/components/TimelineHeader/MonthsHeader.tsx +0 -62
  74. package/src/components/TimelineHeader/TimelineHeader.tsx +0 -64
  75. package/src/components/TimelineHeader/WeeksHeader.tsx +0 -63
  76. package/src/components/TimelineHeader/index.ts +0 -9
  77. package/src/components/TimelineHeader/renderingUtils.tsx +0 -57
  78. package/src/components/TimelineSelectionLayer.tsx +0 -179
  79. package/src/components/TimelineSettingsContext.tsx +0 -27
  80. package/src/components/TimelineSettingsProvider.tsx +0 -24
  81. package/src/components/TimelineWrapper.tsx +0 -51
  82. package/src/components/core/CoreItem/CoreItemComponent.tsx +0 -69
  83. package/src/components/core/CoreItem/DragResizeComponent.tsx +0 -180
  84. package/src/components/core/CoreSwimlane/AvailableSpaceIndicator.tsx +0 -156
  85. package/src/components/core/CoreSwimlane/CoreSwimlane.tsx +0 -245
  86. package/src/components/core/CoreSwimlane/DropPreview.tsx +0 -30
  87. package/src/components/core/CoreSwimlane/DropTarget.tsx +0 -83
  88. package/src/components/core/CoreSwimlane/OverlapIndicator.tsx +0 -22
  89. package/src/components/core/CoreSwimlane/utils.ts +0 -375
  90. package/src/components/core/utils.ts +0 -154
  91. package/src/components/layout/TimelineLayout.tsx +0 -93
  92. package/src/components/layout/layout.scss +0 -107
  93. package/src/global.d.ts +0 -9
  94. package/src/hooks/useScroll.tsx +0 -71
  95. package/src/hooks/useTimelineContext.tsx +0 -6
  96. package/src/index.ts +0 -15
  97. package/src/types/AvailableSpace.ts +0 -6
  98. package/src/types/CoreItem.ts +0 -23
  99. package/src/types/DateBounds.ts +0 -4
  100. package/src/types/Dimensions.ts +0 -4
  101. package/src/types/GrabInfo.ts +0 -6
  102. package/src/types/Grid.ts +0 -6
  103. package/src/types/OffsetBounds.ts +0 -4
  104. package/src/types/Pixels.ts +0 -4
  105. package/src/types/Rectangle.ts +0 -6
  106. package/src/types/SwimlaneT.ts +0 -6
  107. package/src/types/TimeRange.ts +0 -4
  108. package/src/types/TimelineSettings.ts +0 -11
  109. package/src/types/index.ts +0 -15
  110. package/tsconfig.json +0 -32
  111. /package/{src/types/ItemId.ts → dist/types/ItemId.d.ts} +0 -0
  112. /package/{src/types/SwimlaneId.ts → dist/types/SwimlaneId.d.ts} +0 -0
@@ -0,0 +1,15 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { CoreSwimlane, TimelaneBody, TimelaneLayout } from '..';
3
+ import { TimelaneHeader } from './TimelaneHeader/TimelaneHeader';
4
+ import { TimelaneBackground } from './TimelaneBackground';
5
+ import { TimelaneAside } from './TimelaneAside';
6
+ export declare function Timelane({ children }: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
7
+ export declare namespace Timelane {
8
+ var Container: typeof Timelane;
9
+ var Header: typeof TimelaneHeader;
10
+ var Body: typeof TimelaneBody;
11
+ var Background: typeof TimelaneBackground;
12
+ var Aside: typeof TimelaneAside;
13
+ var Lane: typeof CoreSwimlane;
14
+ var Layout: typeof TimelaneLayout;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ import { SwimlaneT } from '../types';
3
+ interface TimelaneAsideProps {
4
+ lanes: SwimlaneT[];
5
+ focusedLane?: SwimlaneT | null;
6
+ setFocusedLane?: (lane: SwimlaneT | null) => void;
7
+ onLaneHeaderClick?: (lane: SwimlaneT, e: MouseEvent) => void;
8
+ onLaneHeaderDoubleClick?: (lane: SwimlaneT, e: MouseEvent) => void;
9
+ onLaneHeaderContextMenu?: (lane: SwimlaneT, e: MouseEvent) => void;
10
+ renderLaneHeader?: (lane: SwimlaneT) => ReactElement;
11
+ }
12
+ export declare function TimelaneAside({ lanes, focusedLane, setFocusedLane, onLaneHeaderClick, onLaneHeaderDoubleClick, onLaneHeaderContextMenu, renderLaneHeader, }: TimelaneAsideProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,5 @@
1
+ interface TimelaneBackgroundProps {
2
+ focusedDay?: Date | null;
3
+ }
4
+ export declare function TimelaneBackground({ focusedDay }: TimelaneBackgroundProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,6 @@
1
+ import { PropsWithChildren } from 'react';
2
+ interface TimelaneBodyProps {
3
+ onSelect?: (selection: number[]) => void;
4
+ }
5
+ export declare function TimelaneBody({ onSelect, children, }: PropsWithChildren<TimelaneBodyProps>): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,16 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ import { AvailableSpace, CoreItem, SwimlaneT } from '../types';
3
+ interface TimelaneBodyInnerProps<T> {
4
+ lanes: SwimlaneT[];
5
+ items: CoreItem<T>[];
6
+ renderItem?: (item: CoreItem<T>, isDragged: boolean) => ReactElement;
7
+ onItemUpdate?: (item: CoreItem<T>) => void;
8
+ onLaneClick?: (lane: SwimlaneT, when: Date, availableSpace: AvailableSpace | null, e: MouseEvent) => void;
9
+ onLaneDoubleClick?: (lane: SwimlaneT, when: Date, availableSpace: AvailableSpace | null, e: MouseEvent) => void;
10
+ onLaneContextMenu?: (lane: SwimlaneT, when: Date, e: MouseEvent) => void;
11
+ }
12
+ /**
13
+ * @deprecated The component should not be used
14
+ */
15
+ export declare function TimelaneBodyInner<T>({ lanes, items, renderItem, onItemUpdate, onLaneClick, onLaneDoubleClick, onLaneContextMenu, }: TimelaneBodyInnerProps<T>): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,15 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ import { Pixels, TimeRange } from '../../types';
3
+ interface DaysHeaderProps {
4
+ range: TimeRange;
5
+ pixels: Pixels;
6
+ focusedDay?: Date | null;
7
+ setFocusedDay?: (day: Date | null) => void;
8
+ render?: (day: Date) => ReactElement;
9
+ onDayClick?: (_: {
10
+ day: Date;
11
+ e: MouseEvent;
12
+ }) => void;
13
+ }
14
+ export declare function DaysHeader({ range, pixels, focusedDay, setFocusedDay, render, onDayClick, }: DaysHeaderProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,15 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ import { Pixels, TimeRange } from '../../types';
3
+ interface MonthsHeaderProps {
4
+ range: TimeRange;
5
+ pixels: Pixels;
6
+ setFocusedDay?: (day: Date | null) => void;
7
+ render?: (firstDay: Date, lastDay: Date) => ReactElement;
8
+ onMonthClick?: (params: {
9
+ firstDay: Date;
10
+ lastDay: Date;
11
+ e: MouseEvent;
12
+ }) => void;
13
+ }
14
+ export declare function MonthsHeader({ range, pixels, setFocusedDay, render, onMonthClick, }: MonthsHeaderProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,24 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ interface TimelaneHeaderProps {
3
+ focusedDay?: Date | null;
4
+ setFocusedDay?: (day: Date | null) => void;
5
+ renderMonthHeader?: (firstDay: Date, lastDay: Date) => ReactElement;
6
+ renderWeekHeader?: (firstDay: Date, lastDay: Date) => ReactElement;
7
+ renderDayHeader?: (day: Date) => ReactElement;
8
+ onMonthClick?: (_: {
9
+ firstDay: Date;
10
+ lastDay: Date;
11
+ e: MouseEvent;
12
+ }) => void;
13
+ onWeekClick?: (_: {
14
+ firstDay: Date;
15
+ lastDay: Date;
16
+ e: MouseEvent;
17
+ }) => void;
18
+ onDayClick?: (_: {
19
+ day: Date;
20
+ e: MouseEvent;
21
+ }) => void;
22
+ }
23
+ export declare function TimelaneHeader({ focusedDay, setFocusedDay, renderMonthHeader, renderWeekHeader, renderDayHeader, onMonthClick, onDayClick, onWeekClick, }: TimelaneHeaderProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
@@ -0,0 +1,15 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ import { Pixels, TimeRange } from '../../types';
3
+ interface WeeksHeaderProps {
4
+ range: TimeRange;
5
+ pixels: Pixels;
6
+ setFocusedDay?: (day: Date | null) => void;
7
+ render?: (firstDay: Date, lastDay: Date) => ReactElement;
8
+ onWeekClick?: (params: {
9
+ firstDay: Date;
10
+ lastDay: Date;
11
+ e: MouseEvent;
12
+ }) => void;
13
+ }
14
+ export declare function WeeksHeader({ range, pixels, setFocusedDay, render, onWeekClick, }: WeeksHeaderProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,5 @@
1
+ export { DaysHeader } from './DaysHeader';
2
+ export { WeeksHeader } from './WeeksHeader';
3
+ export { MonthsHeader } from './MonthsHeader';
4
+ export { TimelaneHeader } from './TimelaneHeader';
5
+ export { renderDayHeader, renderMonthHeader, renderWeekHeader, } from './renderingUtils';
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ export declare function renderMonthHeader(firstDay: Date, lastDay: Date): ReactElement;
3
+ export declare function renderWeekHeader(firstDay: Date, lastDay: Date): ReactElement;
4
+ export declare function renderDayHeader(day: Date): ReactElement;
@@ -0,0 +1,6 @@
1
+ import { PropsWithChildren } from 'react';
2
+ interface TimelaneSelectionLayerProps {
3
+ onSelect: (selection: number[]) => void;
4
+ }
5
+ export declare function TimelaneSelectionLayer({ children, onSelect, }: PropsWithChildren<TimelaneSelectionLayerProps>): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ import { TimelaneSettings } from '../types/TimelaneSettings';
3
+ export interface TimelaneContextOuter {
4
+ settings: TimelaneSettings;
5
+ setSettings: Dispatch<SetStateAction<TimelaneSettings>>;
6
+ }
7
+ export declare const TimelaneSettingsContext: import('react').Context<TimelaneContextOuter>;
@@ -0,0 +1,7 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { TimelaneSettings } from '../types/TimelaneSettings';
3
+ interface TimelaneSettingsProviderProps {
4
+ settings: TimelaneSettings;
5
+ }
6
+ export declare const TimelaneSettingsProvider: ({ settings: _settings, children, }: PropsWithChildren<TimelaneSettingsProviderProps>) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,20 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { SwimlaneT } from '../types';
3
+ interface TimelaneWrapperProps {
4
+ focusedDay?: Date | null;
5
+ focusedSwimlane?: SwimlaneT | null;
6
+ start?: Date;
7
+ end?: Date;
8
+ pixelsPerDay?: number;
9
+ pixelsPerResource?: number;
10
+ showMonths?: boolean;
11
+ showWeeks?: boolean;
12
+ showDays?: boolean;
13
+ allowOverlaps?: boolean;
14
+ focusedDate?: Date | null;
15
+ }
16
+ /**
17
+ * @deprecated The component should not be used
18
+ */
19
+ export default function TimelaneWrapper({ children, start, end, pixelsPerDay, pixelsPerResource, showMonths, showWeeks, showDays, allowOverlaps, focusedDate, }: PropsWithChildren<TimelaneWrapperProps>): import("react/jsx-runtime").JSX.Element;
20
+ export {};
@@ -0,0 +1,14 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { CoreItem, Position, SwimlaneT, TimelaneSettings } from '../../../types';
3
+ interface CoreItemComponentProps<T> {
4
+ item: CoreItem<T>;
5
+ swimlane: SwimlaneT;
6
+ settings: TimelaneSettings;
7
+ onDragStart: (grabPosition: Position, relativeGrabPosition: Position) => void;
8
+ onDrop: () => void;
9
+ onDrag: () => void;
10
+ onUpdate: (updatedItem: CoreItem<T>) => void;
11
+ onResizeStart: () => void;
12
+ }
13
+ export default function CoreItemComponent<T>({ swimlane, item, settings, children, onDragStart, onDrag, onDrop, onUpdate, onResizeStart, }: PropsWithChildren<CoreItemComponentProps<T>>): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,20 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { Position, Rectangle, Dimensions, CoreItem } from '../../../types';
3
+ interface DragResizeComponentProps<T> {
4
+ item: CoreItem<T>;
5
+ rectangle: Rectangle;
6
+ boundingRectangle: Dimensions;
7
+ onDragStart: (grabPosition: Position, relativeGrabPosition: Position) => void;
8
+ onDrag: () => void;
9
+ onDrop: () => void;
10
+ onUpdate: (rectangle: Rectangle) => void;
11
+ onResizeStart: () => void;
12
+ }
13
+ /**
14
+ * takes care of pixel-level drag-and-drop and resizing.
15
+ * will emit every event through event handlers.
16
+ * @param param0 t
17
+ * @returns
18
+ */
19
+ export default function DragResizeComponent<T>({ item, rectangle, boundingRectangle, children, onDrag, onDragStart, onDrop, onUpdate, onResizeStart, }: PropsWithChildren<DragResizeComponentProps<T>>): import("react/jsx-runtime").JSX.Element;
20
+ export {};
@@ -0,0 +1,21 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { CoreItem, Pixels, SwimlaneT, TimeRange } from '../../../types';
3
+ interface AvailableSpaceIndicatorProps<T> {
4
+ pixels: Pixels;
5
+ range: TimeRange;
6
+ swimlane: SwimlaneT;
7
+ debug: boolean;
8
+ items: CoreItem<T>[];
9
+ }
10
+ /**
11
+ * A component that displays the available space at the mouse cursor position.
12
+ * The available space is a rectangle that does not overlap with it's surrounding items.
13
+ * It is determined by some heuristics.
14
+ *
15
+ * Only used for debugging purposes.
16
+ *
17
+ * @param param0
18
+ * @returns
19
+ */
20
+ export default function AvailableSpaceIndicator<T>({ pixels, range, swimlane, items, debug, children, }: PropsWithChildren<AvailableSpaceIndicatorProps<T>>): import("react/jsx-runtime").JSX.Element;
21
+ export {};
@@ -0,0 +1,16 @@
1
+ import { MouseEvent, ReactElement } from 'react';
2
+ import { AvailableSpace, CoreItem, SwimlaneT } from '../../../types';
3
+ interface CoreSwimlaneProps<T> {
4
+ swimlane: SwimlaneT;
5
+ items: CoreItem<T>[];
6
+ focused?: boolean;
7
+ onItemUpdate?: (item: CoreItem<T>) => void;
8
+ onMouseUp?: (e: MouseEvent) => void;
9
+ onClick?: (when: Date, availableSpace: AvailableSpace | null, e: MouseEvent) => void;
10
+ onDoubleClick?: (when: Date, availableSpace: AvailableSpace | null, e: MouseEvent) => void;
11
+ onContextMenu?: (when: Date, e: MouseEvent) => void;
12
+ renderItem?: (item: CoreItem<T>, isDragged: boolean) => ReactElement;
13
+ onResizeStart?: (data: T) => void;
14
+ }
15
+ export declare function CoreSwimlane<T>({ swimlane, items, focused, onItemUpdate, onMouseUp, onClick, onDoubleClick, onContextMenu, renderItem, onResizeStart, }: CoreSwimlaneProps<T>): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,9 @@
1
+ import { PropsWithChildren } from 'react';
2
+ interface DropPreviewProps {
3
+ x: number;
4
+ y: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ export default function DropPreview({ x, y, width, height, children, }: PropsWithChildren<DropPreviewProps>): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,11 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { GrabInfo, Position } from '../../../types';
3
+ interface DropTargetProps {
4
+ onDragStart?: (mousePos: Position, grabInfo: GrabInfo, data: any) => void;
5
+ onDrag?: (mousePos: Position, grabInfo: GrabInfo, data: any) => void;
6
+ onDrop?: (mousePos: Position, grabInfo: GrabInfo, data: any) => void;
7
+ onDragEnter?: (mousePos: Position, grabInfo: GrabInfo, data: any) => void;
8
+ onDragLeave?: (grabInfo: GrabInfo, data: any) => void;
9
+ }
10
+ export default function DropTarget({ children, onDragStart, onDrag, onDrop, onDragEnter, onDragLeave, }: PropsWithChildren<DropTargetProps>): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Rectangle } from '../../../types';
2
+ interface OverlapIndicatorProps {
3
+ overlap: Rectangle;
4
+ }
5
+ export default function OverlapIndicator({ overlap }: OverlapIndicatorProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,13 @@
1
+ import { AvailableSpace, CoreItem, Dimensions, GrabInfo, Grid, Pixels, Position, Rectangle, SwimlaneT, TimeRange } from '../../../types';
2
+ export declare function getDropPreviewRectangle<S, T>(swimlane: SwimlaneT, items: CoreItem<T>[], item: CoreItem<S>, mousePosition: Position | null, grabInfo: GrabInfo, pixels: Pixels, grid: Grid, range: TimeRange, allowOverlaps: boolean): Rectangle | null;
3
+ /**
4
+ * Returns true if two rectangles (l1, r1) and (l2, r2) overlap
5
+ * @param el1
6
+ * @param el2
7
+ * @returns
8
+ */
9
+ export declare function doOverlap(el1: Rectangle, el2: Rectangle): boolean;
10
+ export declare function getOverlap(rect1: Rectangle, rect2: Rectangle): Rectangle | null;
11
+ export declare function itemsDoOverlap<T>(a: CoreItem<T>, b: CoreItem<T>): boolean;
12
+ export declare function isWithinTargetDimensions(item: Rectangle, targetDimensions: Dimensions): boolean;
13
+ export declare function getAvailableSpace<T>(clickedDate: Date, clickedOffset: number, swimlane: SwimlaneT, items: CoreItem<T>[], range: TimeRange): AvailableSpace | null;
@@ -0,0 +1,15 @@
1
+ import { DragLocationHistory, ElementDragPayload } from '@atlaskit/pragmatic-drag-and-drop/dist/types/internal-types';
2
+ import { CoreItem, Dimensions, Pixels, Position, Rectangle, SwimlaneT, TimeRange } from '../../types';
3
+ export declare function getDropTargetDimensions(swimlane: SwimlaneT, pixels: Pixels, range: TimeRange): Dimensions;
4
+ export declare function getDropTargetHeight(swimlane: SwimlaneT, pixels: Pixels): number;
5
+ export declare function getDropTargetWidth(swimlane: SwimlaneT, pixels: Pixels, range: TimeRange): number;
6
+ export declare function getItemRectangle<T>(item: CoreItem<T>, swimlane: SwimlaneT, range: TimeRange, pixels: Pixels): Rectangle;
7
+ export declare function getItemDimensions<T>(item: CoreItem<T>, swimlane: SwimlaneT, pixels: Pixels): Dimensions;
8
+ export declare function dateToPixel(date: Date, start: Date, pixels: Pixels): number;
9
+ export declare function offsetToPixel(offset: number, capacity: number, pixels: Pixels): number;
10
+ export declare function getItemPosition<T>(item: CoreItem<T>, swimlane: SwimlaneT, start: Date, pixels: Pixels): Position;
11
+ export declare function getGrabPosition(source: ElementDragPayload, location: DragLocationHistory): {
12
+ absolute: Position;
13
+ relative: Position;
14
+ };
15
+ export declare function getUpdatedItem<T>(oldItem: CoreItem<T>, swimlane: SwimlaneT, dropPreviewRect: Rectangle, pixels: Pixels, range: TimeRange): CoreItem<T>;
@@ -0,0 +1,23 @@
1
+ import { PropsWithChildren } from 'react';
2
+ export declare function TimelaneLayout({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace TimelaneLayout {
4
+ var Header: typeof TimelaneLayoutHeader;
5
+ var Body: typeof TimelaneLayoutBody;
6
+ var Background: typeof TimelaneLayoutBackground;
7
+ var Footer: typeof TimelaneLayoutFooter;
8
+ var Aside: typeof TimelaneLayoutAside;
9
+ var Corner: typeof TimelaneLayoutCorner;
10
+ }
11
+ declare function TimelaneLayoutHeader({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
12
+ declare function TimelaneLayoutBackground({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
13
+ declare function TimelaneLayoutBody({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
14
+ declare function TimelaneLayoutFooter({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
15
+ interface TimelaneLayoutAsideProps {
16
+ side?: "left" | "right";
17
+ }
18
+ declare function TimelaneLayoutAside({ side, children, }: PropsWithChildren<TimelaneLayoutAsideProps>): import("react/jsx-runtime").JSX.Element;
19
+ interface TimelaneLayoutCornerProps {
20
+ corner?: "top left" | "top right" | "bottom left" | "bottom right";
21
+ }
22
+ declare function TimelaneLayoutCorner({ corner, children, }: PropsWithChildren<TimelaneLayoutCornerProps>): import("react/jsx-runtime").JSX.Element;
23
+ export {};
@@ -0,0 +1,10 @@
1
+ import { ItemId, SwimlaneId } from '../types';
2
+ export declare const useScroll: () => {
3
+ scrollTo: (destination: {
4
+ horz?: Date;
5
+ vert?: SwimlaneId;
6
+ } | ItemId) => void;
7
+ scrollToDate: (date: Date) => void;
8
+ scrollToItem: (itemId: ItemId) => void;
9
+ scrollToLane: (laneId: SwimlaneId) => void;
10
+ };
@@ -0,0 +1 @@
1
+ export declare const useTimelaneContext: () => import('../components/TimelaneSettingsContext').TimelaneContextOuter;
@@ -0,0 +1,13 @@
1
+ export { TimelaneLayout } from './components/layout/TimelaneLayout';
2
+ export { TimelaneAside } from './components/TimelaneAside';
3
+ export { TimelaneBackground } from './components/TimelaneBackground';
4
+ export { CoreSwimlane } from './components/core/CoreSwimlane/CoreSwimlane';
5
+ export { TimelaneBody } from './components/TimelaneBody';
6
+ export { Timelane } from './components/Timelane';
7
+ export { TimelaneSettingsProvider } from './components/TimelaneSettingsProvider';
8
+ export * from './components/TimelaneHeader';
9
+ export * from './types';
10
+ export * from './components/core/utils';
11
+ export * from './components/core/CoreSwimlane/utils';
12
+ export { useScroll } from './hooks/useScroll';
13
+ export { useTimelaneContext } from './hooks/useTimelaneContext';
@@ -0,0 +1 @@
1
+ .timelane-layout{position:relative;width:100%;height:100%;overflow:auto}.timelane-layout .timelane-layout-inner{position:relative;width:fit-content;height:fit-content;display:grid;grid-template-areas:"corner-tl header corner-tr" "aside-l body aside-r" "corner-bl footer corner-br"}.timelane-layout .timelane-layout-inner .timelane-layout-header,.timelane-layout .timelane-layout-inner .timelane-layout-footer,.timelane-layout .timelane-layout-inner .timelane-layout-aside,.timelane-layout .timelane-layout-inner .timelane-layout-corner{background:#fff}.timelane-layout .timelane-layout-inner .timelane-layout-header{grid-area:header;position:sticky;position:-webkit-sticky;top:0;z-index:101;overflow:hidden}.timelane-layout .timelane-layout-inner .timelane-layout-body{grid-area:body;z-index:100}.timelane-layout .timelane-layout-inner .timelane-layout-background{grid-area:body;z-index:-1}.timelane-layout .timelane-layout-inner .timelane-layout-footer{grid-area:footer;position:sticky;position:-webkit-sticky;bottom:0;z-index:101;border-top:1px solid lightgray}.timelane-layout .timelane-layout-inner .timelane-layout-aside{grid-area:aside-l;position:sticky;position:-webkit-sticky;left:0;z-index:101}.timelane-layout .timelane-layout-inner .timelane-layout-aside.timelane-layout-aside-right{grid-area:aside-r;right:0;left:initial;border-left:1px solid lightgray}.timelane-layout .timelane-layout-inner .timelane-layout-corner{position:sticky;position:-webkit-sticky;z-index:102}.timelane-layout .timelane-layout-inner .timelane-layout-corner.timelane-layout-corner-top-left{grid-area:corner-tl;top:0;left:0;border-bottom:1px solid lightgray;border-right:1px solid lightgray}.timelane-layout .timelane-layout-inner .timelane-layout-corner.timelane-layout-corner-top-right{grid-area:corner-tr;top:0;right:0;border-bottom:1px solid lightgray;border-left:1px solid lightgray}.timelane-layout .timelane-layout-inner .timelane-layout-corner.timelane-layout-corner-bottom-left{grid-area:corner-bl;bottom:0;left:0;border-top:1px solid lightgray;border-right:1px solid lightgray}.timelane-layout .timelane-layout-inner .timelane-layout-corner.timelane-layout-corner-bottom-right{grid-area:corner-br;bottom:0;right:0;border-top:1px solid lightgray;border-left:1px solid lightgray}*{box-sizing:border-box}.timelane{--timelane-aside-width: 150px;--timelane-border-color-light: #f0f0f0;--timelane-border-color-normal: lightgray;--timelane-border-color-dark: gray;--timelane-highlight-color: #f8f8f8;--timelane-focused-color: rgba(0, 0, 255, .1);--timelane-hover-color: rgba(0, 0, 0, .05);overflow:auto;position:relative;width:100%;height:100%;border-left:1px solid var(--timelane-border-color-normal)}.timelane .timelane-header{top:0;z-index:101;background:#fff}.timelane .timelane-header .timelane-header-months{display:flex;flex-flow:row nowrap}.timelane .timelane-header .timelane-header-months .timelane-header-month-label{border-right:1px solid var(--timelane-border-color-normal);border-bottom:1px solid var(--timelane-border-color-normal);overflow:hidden;font-size:1em;height:30px;line-height:30px;text-align:center;cursor:pointer}.timelane .timelane-header .timelane-header-months .timelane-header-month-label:hover{background:var(--timelane-hover-color)}.timelane .timelane-header .timelane-header-weeks{display:flex;flex-flow:row nowrap}.timelane .timelane-header .timelane-header-weeks .timelane-header-week-label{border-right:1px solid var(--timelane-border-color-normal);border-bottom:1px solid var(--timelane-border-color-normal);overflow:hidden;font-size:1em;height:30px;line-height:30px;text-align:center;cursor:pointer}.timelane .timelane-header .timelane-header-weeks .timelane-header-week-label:hover{background:var(--timelane-hover-color)}.timelane .timelane-header .timelane-header-days{display:flex;flex-flow:row nowrap}.timelane .timelane-header .timelane-header-days .timelane-header-day-label{border-right:1px solid var(--timelane-border-color-normal);border-bottom:1px solid var(--timelane-border-color-normal);overflow:hidden;font-size:.8em;height:20px;line-height:20px;text-align:center;cursor:pointer}.timelane .timelane-header .timelane-header-days .timelane-header-day-label:hover{background:var(--timelane-hover-color)}.timelane .timelane-header .timelane-header-days .timelane-header-day-label.timelane-header-day-label-focused{background:var(--timelane-focused-color)}.timelane .timelane-header-corner{z-index:102;background:#fff;border-right:1px solid var(--timelane-border-color-normal);border-bottom:1px solid var(--timelane-border-color-normal)}.timelane .timelane-body{z-index:99;position:relative;width:fit-content}.timelane .timelane-body .timelane-swimlane{border-color:var(--timelane-border-color-normal)!important;border-top:1px solid gray;border-bottom:1px solid gray;margin-top:-1px;overflow:hidden}.timelane .timelane-body .timelane-swimlane .timelane-drop-target{position:relative;width:100%;height:100%}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item{position:absolute;cursor:pointer;border-radius:3px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item.timelane-item-marked .timelane-allocation{border:2px dashed rgba(0,0,0,.5)}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-item-drag-handle{height:100%}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-item-resize-handle{background:#bed7dc;border-radius:5px;top:4px!important;bottom:4px!important;height:auto!important;width:6px!important;z-index:2;background:transparent!important;transition:.2s}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-item-resize-handle:hover{background:#0000001a!important}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-item-resize-handle.timelane-item-resize-handle-left{left:0!important;margin-left:1px}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-item-resize-handle.timelane-item-resize-handle-right{right:0!important}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-allocation{background:#92a8d1;border-radius:2px;border:2px solid transparent;height:calc(100% - 1px);overflow:hidden;cursor:pointer;padding:0 4px;margin-left:1px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;container-type:size;container-name:timelane-allocation}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-allocation .timelane-allocation-title{font-weight:700;transform-origin:top left;line-height:30px;white-space:nowrap}@container timelane-allocation (max-height: 30px){.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-allocation .timelane-allocation-title{margin:0}}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item .timelane-allocation.timelane-allocation-selected{border:2px dashed rgba(0,0,0,.5)}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-item.dragging{opacity:0}.timelane .timelane-body .timelane-swimlane .timelane-drop-target .timelane-drop-preview{background:#00f;position:absolute;border-radius:2px;color:#fff}.timelane .timelane-body .timelane-swimlane.timelane-row-focused{background:var(--timelane-focused-color)}.timelane .timelane-aside{border-right:1px solid var(--timelane-border-color-normal);width:var(--timelane-aside-width);background:#fff}.timelane .timelane-aside .timelane-aside-swimlane-header{border:1px solid var(--timelane-border-color-normal);border-right:none;border-left:none;margin-top:-1px;padding:10px;overflow:hidden;position:relative;cursor:pointer}.timelane .timelane-aside .timelane-aside-swimlane-header.timelane-aside-swimlane-header-focused{background:var(--timelane-focused-color)}.timelane .timelane-aside .timelane-aside-swimlane-header:hover .timelane-aside-resource-menu{opacity:1}.timelane .timelane-aside .timelane-aside-swimlane-header .timelane-aside-resource-menu{position:absolute;top:5px;right:5px;opacity:0;transition:.15s}.timelane .timelane-aside .timelane-aside-swimlane-header .timelane-aside-resource-menu.timelane-aside-resource-menu-open{opacity:1}.timelane .timelane-background{position:relative;width:100%;height:100%}.timelane .timelane-background .timelane-background-inner{display:flex;flex-flow:row nowrap;height:100%}.timelane .timelane-background .timelane-background-inner .timelane-background-day-label{border-right:1px solid var(--timelane-border-color-light);overflow:hidden;font-size:.8em;height:100%;z-index:-100}.timelane .timelane-background .timelane-background-inner .timelane-background-day-label.timelane-background-day-label-sunday{border-right:1px solid var(--timelane-border-color-normal)}.timelane .timelane-background .timelane-background-inner .timelane-background-day-label.timelane-background-day-label-focused{background:var(--timelane-focused-color)}.timelane .timelane-background .timelane-background-inner .timelane-background-focused-day-position{position:absolute;height:100%;background:var(--timelane-focused-color);z-index:-101}.timelane-header-tooltip,.timelane-header-day-tooltip{font-size:2em}