m2mui-calendar-timeline 2.1.0 → 3.0.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/CalendarTimeline.d.ts → CalendarTimeline.d.ts} +143 -145
- package/CalendarTimeline.js +278 -0
- package/CalendarTimeline.js.map +1 -0
- package/{dist/Cell.d.ts → Cell.d.ts} +29 -30
- package/Cell.js +42 -0
- package/Cell.js.map +1 -0
- package/{dist/DefaultComponents.d.ts → DefaultComponents.d.ts} +4 -5
- package/DefaultComponents.js +103 -0
- package/DefaultComponents.js.map +1 -0
- package/{dist/InnerElement.d.ts → InnerElement.d.ts} +48 -48
- package/InnerElement.js +259 -0
- package/InnerElement.js.map +1 -0
- package/{dist/ItemWrapper.d.ts → ItemWrapper.d.ts} +15 -15
- package/ItemWrapper.js +84 -0
- package/ItemWrapper.js.map +1 -0
- package/README.md +1 -2
- package/cjs/CalendarTimeline.js +287 -0
- package/cjs/CalendarTimeline.js.map +1 -0
- package/cjs/Cell.js +54 -0
- package/cjs/Cell.js.map +1 -0
- package/cjs/DefaultComponents.js +110 -0
- package/cjs/DefaultComponents.js.map +1 -0
- package/cjs/InnerElement.js +258 -0
- package/cjs/InnerElement.js.map +1 -0
- package/cjs/ItemWrapper.js +98 -0
- package/cjs/ItemWrapper.js.map +1 -0
- package/cjs/getRenderedCursor.js +34 -0
- package/cjs/getRenderedCursor.js.map +1 -0
- package/cjs/index.js +20 -0
- package/cjs/index.js.map +1 -0
- package/cjs/indexFor.js +19 -0
- package/cjs/indexFor.js.map +1 -0
- package/cjs/roundToZero.js +11 -0
- package/cjs/roundToZero.js.map +1 -0
- package/cjs/types.js +4 -0
- package/cjs/types.js.map +1 -0
- package/esm/CalendarTimeline.js +278 -0
- package/esm/CalendarTimeline.js.map +1 -0
- package/esm/Cell.js +42 -0
- package/esm/Cell.js.map +1 -0
- package/esm/DefaultComponents.js +103 -0
- package/esm/DefaultComponents.js.map +1 -0
- package/esm/InnerElement.js +259 -0
- package/esm/InnerElement.js.map +1 -0
- package/esm/ItemWrapper.js +84 -0
- package/esm/ItemWrapper.js.map +1 -0
- package/esm/getRenderedCursor.js +30 -0
- package/esm/getRenderedCursor.js.map +1 -0
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -0
- package/esm/indexFor.js +12 -0
- package/esm/indexFor.js.map +1 -0
- package/esm/roundToZero.js +4 -0
- package/esm/roundToZero.js.map +1 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/{dist/getRenderedCursor.d.ts → getRenderedCursor.d.ts} +4 -4
- package/getRenderedCursor.js +30 -0
- package/getRenderedCursor.js.map +1 -0
- package/{dist/index.d.ts → index.d.ts} +2 -2
- package/index.js +3 -0
- package/index.js.map +1 -0
- package/indexFor.d.ts +1 -0
- package/indexFor.js +12 -0
- package/indexFor.js.map +1 -0
- package/package.json +64 -90
- package/{dist/roundToZero.d.ts → roundToZero.d.ts} +1 -1
- package/roundToZero.js +4 -0
- package/roundToZero.js.map +1 -0
- package/types/CalendarTimeline.d.ts +143 -0
- package/types/Cell.d.ts +29 -0
- package/types/DefaultComponents.d.ts +4 -0
- package/types/InnerElement.d.ts +48 -0
- package/types/ItemWrapper.d.ts +15 -0
- package/types/getRenderedCursor.d.ts +4 -0
- package/types/index.d.ts +2 -0
- package/types/indexFor.d.ts +1 -0
- package/types/roundToZero.d.ts +1 -0
- package/types/types.d.ts +101 -0
- package/{dist/types.d.ts → types.d.ts} +101 -102
- package/types.js +2 -0
- package/types.js.map +1 -0
- package/CHANGELOG.md +0 -151
- package/dist/index.cjs.js +0 -574
- package/dist/index.esm.js +0 -565
- package/dist/indexFor.d.ts +0 -1
|
@@ -1,145 +1,143 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* @param activeMonthCount
|
|
25
|
-
* @param
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
*
|
|
77
|
-
* @param
|
|
78
|
-
* @param
|
|
79
|
-
* @param
|
|
80
|
-
* @param
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
*
|
|
87
|
-
* @param
|
|
88
|
-
* @param
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
*
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
export declare const CalendarTimeline: React.FC<CalendarTimelineProps>;
|
|
1
|
+
import { CTClickCellCallback, CTDragItemCallback, CTDraggingProps, CTGroup, CTItem, CTItemProps, CTRenderDate, CTRenderGroup, CTRenderItem, CTResizeItemCallback, CTScrollCallback } from "./types";
|
|
2
|
+
import { CellProps } from "./Cell";
|
|
3
|
+
import React from "react";
|
|
4
|
+
export declare type CTCellProps = CellProps;
|
|
5
|
+
export declare type CTRenderCell = (props: CTCellProps) => JSX.Element;
|
|
6
|
+
export interface CalendarTimelineProps {
|
|
7
|
+
/**
|
|
8
|
+
* Cellをどのように描画するかを指定します。
|
|
9
|
+
* CellProps.dataからgroupsや日付の情報が取れるので自前でContextなどを用意する必要はありません。
|
|
10
|
+
* 注意:CellProps.styleを必ずコンポーネントに渡してください。
|
|
11
|
+
*/
|
|
12
|
+
renderCell?: CTRenderCell;
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated
|
|
15
|
+
* Use CalendarTimelineProps.renderCell instead.
|
|
16
|
+
*
|
|
17
|
+
* Cellがクリックされたときに呼ばれます。クリックされたCellを特定できる情報を返します。
|
|
18
|
+
*/
|
|
19
|
+
onClickCell?: CTClickCellCallback;
|
|
20
|
+
/**
|
|
21
|
+
* 表示できる日付の範囲を指定します。
|
|
22
|
+
* @param activeMonthCount 有効な月数を指定します。指定がない場合、24になります。ここで指定された値は調整済みのdateを中心に両側に均等に割り振られます。つまり24の場合、去年と来年の同日まで閲覧できるようになります。
|
|
23
|
+
* @param start 有効範囲の最小値となる日付を指定します。activeMonthCountがある場合、設定できません。
|
|
24
|
+
* @param end 有効範囲の最大値となる日付を指定します。startと同様に日付の調整は行われません。activeMonthCountがある場合、設定できません。
|
|
25
|
+
* @param date Dateまたは日付を表すstringを指定してください。
|
|
26
|
+
* 【activeMonthCountが設定されている場合】:指定がない場合、new Date()相当の値が入ります。dateの指定した日付が最初から画面付近に入るように自動で1日または15日調整されます。
|
|
27
|
+
* 【activeMonthCountが設定されていない場合】:指定がない場合、startと同じ値が入ります。パターン1とは異なり、日付の調整が行われません。
|
|
28
|
+
*/
|
|
29
|
+
visibleDates?: {
|
|
30
|
+
/**
|
|
31
|
+
* 基礎となる日付です。
|
|
32
|
+
* @default "new Date()"
|
|
33
|
+
*/
|
|
34
|
+
date?: Date | string;
|
|
35
|
+
/**
|
|
36
|
+
* 表示できる月数。現在の想定では中心となる日付から左右に均等に割り振られます。
|
|
37
|
+
* @default 24
|
|
38
|
+
*/
|
|
39
|
+
activeMonthCount?: number;
|
|
40
|
+
start?: never;
|
|
41
|
+
end?: never;
|
|
42
|
+
} | {
|
|
43
|
+
/**
|
|
44
|
+
* 開始日
|
|
45
|
+
* @format "YYYY-MM-DD"
|
|
46
|
+
*/
|
|
47
|
+
start: Date | string;
|
|
48
|
+
/**
|
|
49
|
+
* 終了日
|
|
50
|
+
* @format "YYYY-MM-DD"
|
|
51
|
+
*/
|
|
52
|
+
end: Date | string;
|
|
53
|
+
/**
|
|
54
|
+
* 基礎となる日付です。
|
|
55
|
+
*/
|
|
56
|
+
date?: Date | string;
|
|
57
|
+
activeMonthCount?: never;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* 左上に表示される文字列です。
|
|
61
|
+
*/
|
|
62
|
+
title?: string | (() => JSX.Element);
|
|
63
|
+
/**
|
|
64
|
+
* 縦方向の項目名に使用され、左側に表示されます。
|
|
65
|
+
* @param title 任意の文字列を渡します
|
|
66
|
+
* @param id 任意の文字列または数値。ここで指定したidはitems及びgroupコンポーネントのkeyとして利用されるため、ユニークである必要があります。
|
|
67
|
+
*/
|
|
68
|
+
groups: CTGroup[];
|
|
69
|
+
/**
|
|
70
|
+
* groupsで渡された値をどのように描画するかを指定します。groupsで指定したものに加えて、styleが渡されます。
|
|
71
|
+
*/
|
|
72
|
+
renderGroup?: CTRenderGroup;
|
|
73
|
+
/**
|
|
74
|
+
* 予約などのイベントを表示するためコンポーネントに使用される値を配列で渡します。
|
|
75
|
+
* @param title 任意の文字列を渡します。
|
|
76
|
+
* @param start 開始日 Dateで時刻を考慮する必要があります。
|
|
77
|
+
* @param end 終了日 Dateで時刻を考慮する必要があります。
|
|
78
|
+
* @param group groupsで指定されたidを指定します。該当するgroupの行に配置されます。
|
|
79
|
+
* @param draggingProps dragAxisでドラッグ方向、disabledでドラッグ可能にするかどうかを指摘できます。
|
|
80
|
+
* @param itemProps 任意のHTMLPropsをItemに渡すことができます。
|
|
81
|
+
*/
|
|
82
|
+
items: CTItem[];
|
|
83
|
+
/**
|
|
84
|
+
* itemsで渡された値をどのように描画するかを指定します。
|
|
85
|
+
* @param rowIndex 行番号。groups[rowIndex]で該当するgroupを取得できます。
|
|
86
|
+
* @param columnIndex 列番号。用途はほぼないと思います。
|
|
87
|
+
* @param itemIndex アイテム番号。items[itemIndex]で該当するitemを取得できます。
|
|
88
|
+
* @param title itemsで渡されたtitleです。
|
|
89
|
+
*/
|
|
90
|
+
renderItem?: CTRenderItem;
|
|
91
|
+
/**
|
|
92
|
+
* itemのドラッグ操作が完了されたときに呼ばれます。
|
|
93
|
+
*/
|
|
94
|
+
onDragItem?: CTDragItemCallback;
|
|
95
|
+
/**
|
|
96
|
+
* 列番号として使用される日付などの情報をどのように描画するかを指定します。
|
|
97
|
+
* @param date Date。移動先の日付です。時間情報は持っていません。
|
|
98
|
+
* @param style CSSProperties。必ず渡してください。
|
|
99
|
+
*/
|
|
100
|
+
renderDate?: CTRenderDate;
|
|
101
|
+
/**
|
|
102
|
+
* 横方向にスクロールした際、先頭の日付を返します。
|
|
103
|
+
* 月や年より下の情報がいらない場合は適切に比較処理を行い、無駄な処理が行われないように注意してください。
|
|
104
|
+
*/
|
|
105
|
+
onScroll?: CTScrollCallback;
|
|
106
|
+
/**
|
|
107
|
+
* itemのリサイズ操作が完了されたときに呼ばれます。
|
|
108
|
+
*/
|
|
109
|
+
onResizeItem?: CTResizeItemCallback;
|
|
110
|
+
/**
|
|
111
|
+
* 余分に描画される列数を指定します。指定された列数をまたぐItemが存在する場合、位置によっては描画されない場合があります。
|
|
112
|
+
* @default 10
|
|
113
|
+
*/
|
|
114
|
+
overscanColumnCount?: number;
|
|
115
|
+
/**
|
|
116
|
+
* 余分に描画される行数を指定します。指定された行数をまたぐItemが存在する場合、位置によっては描画されない場合があります。
|
|
117
|
+
* @default 10
|
|
118
|
+
*/
|
|
119
|
+
overscanRowCount?: number;
|
|
120
|
+
/**
|
|
121
|
+
* 全てのアイテムのドラッグ方法を一括で指定できます。items propで個別にdraggingPropsで指定を行った場合、重複するものは上書きされます。
|
|
122
|
+
*/
|
|
123
|
+
draggingProps?: CTDraggingProps;
|
|
124
|
+
/**
|
|
125
|
+
* 表示される行数を指定します。CalendarTimelineの高さはcellHeight * visibleRowCount + dateHeightで決定されます。
|
|
126
|
+
* @default 20
|
|
127
|
+
*/
|
|
128
|
+
visibleRowCount?: number;
|
|
129
|
+
/**
|
|
130
|
+
* 表示される列数を指定します。CalendarTimelineの幅はcellWidth * visibleColumnCount + groupWidthで決定されます。
|
|
131
|
+
* @default 20
|
|
132
|
+
*/
|
|
133
|
+
visibleColumnCount?: number;
|
|
134
|
+
/**
|
|
135
|
+
* 全てのアイテムに渡す任意のPropsを一括で指定できます。items propで個別にitemPropsで指定を行った場合、重複するものは上書きされます。
|
|
136
|
+
*/
|
|
137
|
+
itemProps?: CTItemProps;
|
|
138
|
+
groupWidth?: number;
|
|
139
|
+
cellWidth?: number;
|
|
140
|
+
cellHeight?: number;
|
|
141
|
+
dateHeight?: number;
|
|
142
|
+
}
|
|
143
|
+
export declare const CalendarTimeline: React.FC<CalendarTimelineProps>;
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
3
|
+
import { CalendarTimelineContext, InnerElement } from "./InnerElement";
|
|
4
|
+
import { Cell as DefaultCell, defaultCellStyles } from "./Cell";
|
|
5
|
+
import { DefaultDate, DefaultGroup, DefaultItem } from "./DefaultComponents";
|
|
6
|
+
import { FixedSizeGrid as Grid } from "react-window";
|
|
7
|
+
import { ItemWrapperContext } from "./ItemWrapper";
|
|
8
|
+
import { css } from "@emotion/react";
|
|
9
|
+
import { roundToZero } from "./roundToZero";
|
|
10
|
+
import React, { useCallback, useMemo, useState } from "react";
|
|
11
|
+
import dayjs from "dayjs";
|
|
12
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
13
|
+
|
|
14
|
+
var addDate = (prev, add) => {
|
|
15
|
+
return dayjs(prev).clone().add(add, "d").set("hour", dayjs(prev).hour()).toDate();
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
var dayjsRemovedTime = date => dayjs(dayjs(date).format("YYYYMMDD"));
|
|
19
|
+
|
|
20
|
+
export var CalendarTimeline = _ref => {
|
|
21
|
+
var {
|
|
22
|
+
groups,
|
|
23
|
+
items,
|
|
24
|
+
title,
|
|
25
|
+
onDragItem,
|
|
26
|
+
renderDate = DefaultDate,
|
|
27
|
+
renderItem = DefaultItem,
|
|
28
|
+
renderGroup = DefaultGroup,
|
|
29
|
+
renderCell = DefaultCell,
|
|
30
|
+
overscanColumnCount: defaultOverscanColumnCount = 10,
|
|
31
|
+
overscanRowCount: defaultOverscanRowCount = 10,
|
|
32
|
+
onScroll,
|
|
33
|
+
onResizeItem,
|
|
34
|
+
cellWidth = 64,
|
|
35
|
+
cellHeight = 27,
|
|
36
|
+
groupWidth = 230,
|
|
37
|
+
dateHeight = 64,
|
|
38
|
+
draggingProps,
|
|
39
|
+
itemProps,
|
|
40
|
+
visibleColumnCount = 20,
|
|
41
|
+
visibleRowCount = 20,
|
|
42
|
+
onClickCell,
|
|
43
|
+
visibleDates
|
|
44
|
+
} = _ref;
|
|
45
|
+
var rowCount = useMemo(() => groups.length, [groups]);
|
|
46
|
+
var columns = useMemo(() => {
|
|
47
|
+
if (visibleDates != null && visibleDates.start) {
|
|
48
|
+
var length = dayjs(visibleDates.end).diff(visibleDates.start, "day") + 1;
|
|
49
|
+
var startDate = dayjs(visibleDates.start);
|
|
50
|
+
return Array.from({
|
|
51
|
+
length
|
|
52
|
+
}).map((_, i) => {
|
|
53
|
+
var date = startDate.clone().add(i, "day");
|
|
54
|
+
var day = date.date();
|
|
55
|
+
var weekday = date.day();
|
|
56
|
+
var month = date.month();
|
|
57
|
+
var year = date.year();
|
|
58
|
+
var dateString = date.format("YYYY-MM-DD");
|
|
59
|
+
return {
|
|
60
|
+
date: date.toDate(),
|
|
61
|
+
weekday,
|
|
62
|
+
day,
|
|
63
|
+
month,
|
|
64
|
+
year,
|
|
65
|
+
dateString
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
} else {
|
|
69
|
+
var activeMonthCount = (visibleDates == null ? void 0 : visibleDates.activeMonthCount) || 24;
|
|
70
|
+
var date = (visibleDates == null ? void 0 : visibleDates.date) || new Date();
|
|
71
|
+
var baseDate = dayjs(dayjs(date).format("YYYYMMDD"));
|
|
72
|
+
var baseDay = baseDate.date() > 15 ? 14 : 1;
|
|
73
|
+
|
|
74
|
+
var _startDate = baseDate.add(Math.ceil(-activeMonthCount / 2), "month").set("date", baseDay);
|
|
75
|
+
|
|
76
|
+
return Array.from({
|
|
77
|
+
length: activeMonthCount
|
|
78
|
+
}).map((_, i) => {
|
|
79
|
+
var dayOfStartMonth = _startDate.clone().add(i, "month");
|
|
80
|
+
|
|
81
|
+
var daysInMonth = dayOfStartMonth.daysInMonth();
|
|
82
|
+
return Array.from({
|
|
83
|
+
length: daysInMonth
|
|
84
|
+
}).map((_, j) => {
|
|
85
|
+
var date = dayOfStartMonth.clone().add(j, "day");
|
|
86
|
+
var day = date.date();
|
|
87
|
+
var weekday = date.day();
|
|
88
|
+
var month = date.month();
|
|
89
|
+
var year = date.year();
|
|
90
|
+
var dateString = date.format("YYYY-MM-DD");
|
|
91
|
+
return {
|
|
92
|
+
date: date.toDate(),
|
|
93
|
+
weekday,
|
|
94
|
+
day,
|
|
95
|
+
month,
|
|
96
|
+
year,
|
|
97
|
+
dateString
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
}).flat();
|
|
101
|
+
}
|
|
102
|
+
}, [visibleDates]);
|
|
103
|
+
var columnCount = useMemo(() => columns.length, [columns]);
|
|
104
|
+
var initialScrollLeft = useMemo(() => {
|
|
105
|
+
if ((visibleDates == null ? void 0 : visibleDates.start) === undefined) {
|
|
106
|
+
return ((visibleDates == null ? void 0 : visibleDates.activeMonthCount) || 24) % 2 === 0 ? columnCount / 2 * cellWidth : (columnCount / 2 - 15) * cellWidth;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return visibleDates != null && visibleDates.date ? dayjs(visibleDates.date).diff(visibleDates == null ? void 0 : visibleDates.start, "day") * cellWidth : 0;
|
|
110
|
+
}, [cellWidth, columnCount, visibleDates]);
|
|
111
|
+
var [editingCell, setEditingCell] = useState({
|
|
112
|
+
x: -1,
|
|
113
|
+
y: -1,
|
|
114
|
+
lastX: -1,
|
|
115
|
+
lastY: -1,
|
|
116
|
+
columnIndex: -1,
|
|
117
|
+
rowIndex: -1
|
|
118
|
+
});
|
|
119
|
+
var [dragging, setDragging] = useState(false);
|
|
120
|
+
var handleDragStart = useCallback((event, data) => {
|
|
121
|
+
var columnIndex = parseInt(data.node.dataset.columnIndex, 10);
|
|
122
|
+
var rowIndex = parseInt(data.node.dataset.rowIndex, 10);
|
|
123
|
+
data.node.style.filter = "opacity(100%)";
|
|
124
|
+
data.node.style.zIndex = "1";
|
|
125
|
+
setEditingCell(_extends({
|
|
126
|
+
columnIndex,
|
|
127
|
+
rowIndex
|
|
128
|
+
}, data));
|
|
129
|
+
setDragging(true);
|
|
130
|
+
}, []);
|
|
131
|
+
var handleDragStop = useCallback((event, data) => {
|
|
132
|
+
data.node.style.filter = "";
|
|
133
|
+
data.node.style.zIndex = "0";
|
|
134
|
+
|
|
135
|
+
if (onDragItem) {
|
|
136
|
+
var _item$draggingProps;
|
|
137
|
+
|
|
138
|
+
var itemIndex = parseInt(data.node.dataset.itemIndex, 10);
|
|
139
|
+
var item = items[itemIndex];
|
|
140
|
+
var dragAxis = (draggingProps == null ? void 0 : draggingProps.dragAxis) || ((_item$draggingProps = item.draggingProps) == null ? void 0 : _item$draggingProps.dragAxis);
|
|
141
|
+
|
|
142
|
+
if (dragAxis === undefined) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
var prev = _extends({}, editingCell);
|
|
147
|
+
|
|
148
|
+
var x = dragAxis === "y" ? 0 : roundToZero((prev.lastX - data.lastX) / cellWidth);
|
|
149
|
+
var y = dragAxis === "x" ? 0 : roundToZero((prev.y - data.y) / cellHeight);
|
|
150
|
+
|
|
151
|
+
if (x !== 0 || y !== 0) {
|
|
152
|
+
var _columns, _groups;
|
|
153
|
+
|
|
154
|
+
var date = (_columns = columns[prev.columnIndex - x]) == null ? void 0 : _columns.date;
|
|
155
|
+
var group = (_groups = groups[prev.rowIndex - y]) == null ? void 0 : _groups.id;
|
|
156
|
+
var diff = dayjs(date).diff(dayjsRemovedTime(item.start), "date");
|
|
157
|
+
|
|
158
|
+
if (date !== undefined && group !== undefined) {
|
|
159
|
+
var targetItem = _extends({}, item, {
|
|
160
|
+
group,
|
|
161
|
+
start: addDate(item.start, diff),
|
|
162
|
+
end: addDate(item.end, diff)
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
var copy = items.slice();
|
|
166
|
+
copy[itemIndex] = targetItem;
|
|
167
|
+
onDragItem(copy, _extends({}, targetItem, {
|
|
168
|
+
itemIndex
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
setDragging(false);
|
|
174
|
+
}
|
|
175
|
+
}, [cellHeight, cellWidth, columns, draggingProps, editingCell, groups, items, onDragItem]);
|
|
176
|
+
var handleResizeStop = useCallback((event, direction, ref, delta) => {
|
|
177
|
+
if (onResizeItem) {
|
|
178
|
+
var itemIndex = parseInt(ref.dataset.itemIndex, 10);
|
|
179
|
+
var copy = items.slice();
|
|
180
|
+
var item = copy[itemIndex];
|
|
181
|
+
|
|
182
|
+
if (direction === "left") {
|
|
183
|
+
var start = dayjs(item.start).add(roundToZero(-delta.width / cellWidth), "day").toDate();
|
|
184
|
+
copy[itemIndex] = _extends({}, item, {
|
|
185
|
+
start
|
|
186
|
+
});
|
|
187
|
+
onResizeItem(copy, {
|
|
188
|
+
itemIndex,
|
|
189
|
+
group: item.group,
|
|
190
|
+
start,
|
|
191
|
+
end: item.end
|
|
192
|
+
});
|
|
193
|
+
} else if (direction === "right") {
|
|
194
|
+
var end = dayjs(item.end).add(roundToZero(delta.width / cellWidth), "day").toDate();
|
|
195
|
+
copy[itemIndex] = _extends({}, item, {
|
|
196
|
+
end
|
|
197
|
+
});
|
|
198
|
+
onResizeItem(copy, {
|
|
199
|
+
itemIndex,
|
|
200
|
+
group: item.group,
|
|
201
|
+
start: item.start,
|
|
202
|
+
end
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}, [cellWidth, items, onResizeItem]);
|
|
207
|
+
var handleScroll = useCallback(props => {
|
|
208
|
+
if (onScroll) {
|
|
209
|
+
onScroll(columns[roundToZero(props.scrollLeft / cellWidth)].date);
|
|
210
|
+
}
|
|
211
|
+
}, [cellWidth, columns, onScroll]);
|
|
212
|
+
var itemData = useMemo(() => {
|
|
213
|
+
return {
|
|
214
|
+
makeHandleClick: onClickCell ? _ref2 => {
|
|
215
|
+
var {
|
|
216
|
+
rowIndex,
|
|
217
|
+
columnIndex
|
|
218
|
+
} = _ref2;
|
|
219
|
+
return event => {
|
|
220
|
+
var group = groups[rowIndex];
|
|
221
|
+
var column = columns[columnIndex];
|
|
222
|
+
onClickCell({
|
|
223
|
+
column,
|
|
224
|
+
group: _extends({}, group, {
|
|
225
|
+
index: rowIndex
|
|
226
|
+
})
|
|
227
|
+
}, event);
|
|
228
|
+
};
|
|
229
|
+
} : undefined,
|
|
230
|
+
groups,
|
|
231
|
+
columns,
|
|
232
|
+
defaultStyles: defaultCellStyles
|
|
233
|
+
};
|
|
234
|
+
}, [columns, groups, onClickCell]);
|
|
235
|
+
return ___EmotionJSX(CalendarTimelineContext.Provider, {
|
|
236
|
+
value: {
|
|
237
|
+
columns,
|
|
238
|
+
items,
|
|
239
|
+
groups,
|
|
240
|
+
renderDate,
|
|
241
|
+
title,
|
|
242
|
+
editingCell,
|
|
243
|
+
renderGroup,
|
|
244
|
+
cellHeight,
|
|
245
|
+
cellWidth,
|
|
246
|
+
groupWidth,
|
|
247
|
+
dateHeight,
|
|
248
|
+
draggingProps,
|
|
249
|
+
itemProps
|
|
250
|
+
}
|
|
251
|
+
}, ___EmotionJSX(ItemWrapperContext.Provider, {
|
|
252
|
+
value: {
|
|
253
|
+
cellHeight,
|
|
254
|
+
cellWidth,
|
|
255
|
+
handleDragStart,
|
|
256
|
+
handleDragStop,
|
|
257
|
+
handleResizeStop: onResizeItem ? handleResizeStop : undefined,
|
|
258
|
+
renderItem
|
|
259
|
+
}
|
|
260
|
+
}, ___EmotionJSX("div", {
|
|
261
|
+
css: /*#__PURE__*/css("position:relative;display:flex;flex-direction:row;& .CalendarTimeline__Item{filter:opacity(", dragging ? "50%" : "100%", ");}" + (process.env.NODE_ENV === "production" ? "" : ";label:CalendarTimeline;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9DYWxlbmRhclRpbWVsaW5lLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErY2tCIiwiZmlsZSI6Ii4uLy4uL3NyYy9DYWxlbmRhclRpbWVsaW5lLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENUQ2xpY2tDZWxsQ2FsbGJhY2ssXG4gIENURHJhZ0l0ZW1DYWxsYmFjayxcbiAgQ1REcmFnZ2luZ1Byb3BzLFxuICBDVEdyb3VwLFxuICBDVEl0ZW0sXG4gIENUSXRlbVByb3BzLFxuICBDVFJlbmRlckRhdGUsXG4gIENUUmVuZGVyR3JvdXAsXG4gIENUUmVuZGVySXRlbSxcbiAgQ1RSZXNpemVJdGVtQ2FsbGJhY2ssXG4gIENUU2Nyb2xsQ2FsbGJhY2ssXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBDYWxlbmRhclRpbWVsaW5lQ29udGV4dCwgSW5uZXJFbGVtZW50IH0gZnJvbSBcIi4vSW5uZXJFbGVtZW50XCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMsIENlbGwgYXMgRGVmYXVsdENlbGwsIGRlZmF1bHRDZWxsU3R5bGVzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuaW1wb3J0IHsgRGVmYXVsdERhdGUsIERlZmF1bHRHcm91cCwgRGVmYXVsdEl0ZW0gfSBmcm9tIFwiLi9EZWZhdWx0Q29tcG9uZW50c1wiO1xuaW1wb3J0IHsgRHJhZ2dhYmxlRGF0YSwgUm5kRHJhZ0NhbGxiYWNrLCBSbmRSZXNpemVDYWxsYmFjayB9IGZyb20gXCJyZWFjdC1ybmRcIjtcbmltcG9ydCB7IEZpeGVkU2l6ZUdyaWQgYXMgR3JpZCwgR3JpZE9uU2Nyb2xsUHJvcHMgfSBmcm9tIFwicmVhY3Qtd2luZG93XCI7XG5pbXBvcnQgeyBJdGVtV3JhcHBlckNvbnRleHQgfSBmcm9tIFwiLi9JdGVtV3JhcHBlclwiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyByb3VuZFRvWmVybyB9IGZyb20gXCIuL3JvdW5kVG9aZXJvXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5cbmNvbnN0IGFkZERhdGUgPSAocHJldjogRGF0ZSwgYWRkOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIGRheWpzKHByZXYpXG4gICAgLmNsb25lKClcbiAgICAuYWRkKGFkZCwgXCJkXCIpXG4gICAgLnNldChcImhvdXJcIiwgZGF5anMocHJldikuaG91cigpKVxuICAgIC50b0RhdGUoKTtcbn07XG5cbmNvbnN0IGRheWpzUmVtb3ZlZFRpbWUgPSAoZGF0ZTogZGF5anMuQ29uZmlnVHlwZSkgPT5cbiAgZGF5anMoZGF5anMoZGF0ZSkuZm9ybWF0KFwiWVlZWU1NRERcIikpO1xuXG5leHBvcnQgdHlwZSBDVENlbGxQcm9wcyA9IENlbGxQcm9wcztcbmV4cG9ydCB0eXBlIENUUmVuZGVyQ2VsbCA9IChwcm9wczogQ1RDZWxsUHJvcHMpID0+IEpTWC5FbGVtZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyVGltZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBDZWxs44KS44Gp44Gu44KI44GG44Gr5o+P55S744GZ44KL44GL44KS5oyH5a6a44GX44G+44GZ44CCXG4gICAqIENlbGxQcm9wcy5kYXRh44GL44KJZ3JvdXBz44KE5pel5LuY44Gu5oOF5aCx44GM5Y+W44KM44KL44Gu44Gn6Ieq5YmN44GnQ29udGV4dOOBquOBqeOCkueUqOaEj+OBmeOCi+W/heimgeOBr+OBguOCiuOBvuOBm+OCk+OAglxuICAgKiDms6jmhI/vvJpDZWxsUHJvcHMuc3R5bGXjgpLlv4XjgZrjgrPjg7Pjg53jg7zjg43jg7Pjg4jjgavmuKHjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiAgICovXG4gIHJlbmRlckNlbGw/OiBDVFJlbmRlckNlbGw7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBVc2UgQ2FsZW5kYXJUaW1lbGluZVByb3BzLnJlbmRlckNlbGwgaW5zdGVhZC5cbiAgICpcbiAgICogQ2VsbOOBjOOCr+ODquODg+OCr+OBleOCjOOBn+OBqOOBjeOBq+WRvOOBsOOCjOOBvuOBmeOAguOCr+ODquODg+OCr+OBleOCjOOBn0NlbGzjgpLnibnlrprjgafjgY3jgovmg4XloLHjgpLov5TjgZfjgb7jgZnjgIJcbiAgICovXG4gIG9uQ2xpY2tDZWxsPzogQ1RDbGlja0NlbGxDYWxsYmFjaztcbiAgLyoqXG4gICAqIOihqOekuuOBp+OBjeOCi+aXpeS7mOOBruevhOWbsuOCkuaMh+WumuOBl+OBvuOBmeOAglxuICAgKiBAcGFyYW0gYWN0aXZlTW9udGhDb3VudCDmnInlirnjgarmnIjmlbDjgpLmjIflrprjgZfjgb7jgZnjgILmjIflrprjgYzjgarjgYTloLTlkIjjgIEyNOOBq+OBquOCiuOBvuOBmeOAguOBk+OBk+OBp+aMh+WumuOBleOCjOOBn+WApOOBr+iqv+aVtOa4iOOBv+OBrmRhdGXjgpLkuK3lv4PjgavkuKHlgbTjgavlnYfnrYnjgavlibLjgormjK/jgonjgozjgb7jgZnjgILjgaTjgb7jgooyNOOBruWgtOWQiOOAgeWOu+W5tOOBqOadpeW5tOOBruWQjOaXpeOBvuOBp+mWsuimp+OBp+OBjeOCi+OCiOOBhuOBq+OBquOCiuOBvuOBmeOAglxuICAgKiBAcGFyYW0gc3RhcnQg5pyJ5Yq556+E5Zuy44Gu5pyA5bCP5YCk44Go44Gq44KL5pel5LuY44KS5oyH5a6a44GX44G+44GZ44CCYWN0aXZlTW9udGhDb3VudOOBjOOBguOCi+WgtOWQiOOAgeioreWumuOBp+OBjeOBvuOBm+OCk+OAglxuICAgKiBAcGFyYW0gZW5kIOacieWKueevhOWbsuOBruacgOWkp+WApOOBqOOBquOCi+aXpeS7mOOCkuaMh+WumuOBl+OBvuOBmeOAgnN0YXJ044Go5ZCM5qeY44Gr5pel5LuY44Gu6Kq/5pW044Gv6KGM44KP44KM44G+44Gb44KT44CCYWN0aXZlTW9udGhDb3VudOOBjOOBguOCi+WgtOWQiOOAgeioreWumuOBp+OBjeOBvuOBm+OCk+OAglxuICAgKiBAcGFyYW0gZGF0ZSBEYXRl44G+44Gf44Gv5pel5LuY44KS6KGo44GZc3RyaW5n44KS5oyH5a6a44GX44Gm44GP44Gg44GV44GE44CCXG4gICAqIOOAkGFjdGl2ZU1vbnRoQ291bnTjgYzoqK3lrprjgZXjgozjgabjgYTjgovloLTlkIhcYuOAke+8muaMh+WumuOBjOOBquOBhOWgtOWQiOOAgW5ldyBEYXRlKCnnm7jlvZPjga7lgKTjgYzlhaXjgorjgb7jgZnjgIJkYXRl44Gu5oyH5a6a44GX44Gf5pel5LuY44GM5pyA5Yid44GL44KJ55S76Z2i5LuY6L+R44Gr5YWl44KL44KI44GG44Gr6Ieq5YuV44GnMeaXpeOBvuOBn+OBrzE15pel6Kq/5pW044GV44KM44G+44GZ44CCXG4gICAqIOOAkGFjdGl2ZU1vbnRoQ291bnTjgYzoqK3lrprjgZXjgozjgabjgYTjgarjgYTloLTlkIjjgJHvvJrmjIflrprjgYzjgarjgYTloLTlkIjjgIFzdGFydOOBqOWQjOOBmOWApOOBjOWFpeOCiuOBvuOBmeOAguODkeOCv+ODvOODszHjgajjga/nlbDjgarjgorjgIHml6Xku5jjga7oqr/mlbTjgYzooYzjgo/jgozjgb7jgZvjgpPjgIJcbiAgICovXG4gIHZpc2libGVEYXRlcz86XG4gICAgfCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDln7rnpI7jgajjgarjgovml6Xku5jjgafjgZnjgIJcbiAgICAgICAgICogQGRlZmF1bHQgXCJuZXcgRGF0ZSgpXCJcbiAgICAgICAgICovXG4gICAgICAgIGRhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICog6KGo56S644Gn44GN44KL5pyI5pWw44CC54++5Zyo44Gu5oOz5a6a44Gn44Gv5Lit5b+D44Go44Gq44KL5pel5LuY44GL44KJ5bem5Y+z44Gr5Z2H562J44Gr5Ymy44KK5oyv44KJ44KM44G+44GZ44CCXG4gICAgICAgICAqIEBkZWZhdWx0IDI0XG4gICAgICAgICAqL1xuICAgICAgICBhY3RpdmVNb250aENvdW50PzogbnVtYmVyO1xuICAgICAgICBzdGFydD86IG5ldmVyO1xuICAgICAgICBlbmQ/OiBuZXZlcjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOmWi+Wni+aXpVxuICAgICAgICAgKiBAZm9ybWF0IFwiWVlZWS1NTS1ERFwiXG4gICAgICAgICAqL1xuICAgICAgICBzdGFydDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOe1guS6huaXpVxuICAgICAgICAgKiBAZm9ybWF0IFwiWVlZWS1NTS1ERFwiXG4gICAgICAgICAqL1xuICAgICAgICBlbmQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDln7rnpI7jgajjgarjgovml6Xku5jjgafjgZnjgIJcbiAgICAgICAgICovXG4gICAgICAgIGRhdGU/OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICBhY3RpdmVNb250aENvdW50PzogbmV2ZXI7XG4gICAgICB9O1xuICAvKipcbiAgICog5bem5LiK44Gr6KGo56S644GV44KM44KL5paH5a2X5YiX44Gn44GZ44CCXG4gICAqL1xuICB0aXRsZT86IHN0cmluZyB8ICgoKSA9PiBKU1guRWxlbWVudCk7XG4gIC8qKlxuICAgKiDnuKbmlrnlkJHjga7poIXnm67lkI3jgavkvb/nlKjjgZXjgozjgIHlt6blgbTjgavooajnpLrjgZXjgozjgb7jgZnjgIJcbiAgICogQHBhcmFtIHRpdGxlIOS7u+aEj+OBruaWh+Wtl+WIl+OCkua4oeOBl+OBvuOBmVxuICAgKiBAcGFyYW0gaWQg5Lu75oSP44Gu5paH5a2X5YiX44G+44Gf44Gv5pWw5YCk44CC44GT44GT44Gn5oyH5a6a44GX44GfaWTjga9pdGVtc+WPiuOBs2dyb3Vw44Kz44Oz44Od44O844ON44Oz44OI44Gua2V544Go44GX44Gm5Yip55So44GV44KM44KL44Gf44KB44CB44Om44OL44O844Kv44Gn44GC44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCXG4gICAqL1xuICBncm91cHM6IENUR3JvdXBbXTtcbiAgLyoqXG4gICAqIGdyb3Vwc+OBp+a4oeOBleOCjOOBn+WApOOCkuOBqeOBruOCiOOBhuOBq+aPj+eUu+OBmeOCi+OBi+OCkuaMh+WumuOBl+OBvuOBmeOAgmdyb3Vwc+OBp+aMh+WumuOBl+OBn+OCguOBruOBq+WKoOOBiOOBpuOAgXN0eWxl44GM5rih44GV44KM44G+44GZ44CCXG4gICAqL1xuICByZW5kZXJHcm91cD86IENUUmVuZGVyR3JvdXA7XG4gIC8qKlxuICAgKiDkuojntITjgarjganjga7jgqTjg5njg7Pjg4jjgpLooajnpLrjgZnjgovjgZ/jgoHjgrPjg7Pjg53jg7zjg43jg7Pjg4jjgavkvb/nlKjjgZXjgozjgovlgKTjgpLphY3liJfjgafmuKHjgZfjgb7jgZnjgIJcbiAgICogQHBhcmFtIHRpdGxlIOS7u+aEj+OBruaWh+Wtl+WIl+OCkua4oeOBl+OBvuOBmeOAglxuICAgKiBAcGFyYW0gc3RhcnQg6ZaL5aeL5pelIERhdGXjgafmmYLliLvjgpLogIPmha7jgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIJcbiAgICogQHBhcmFtIGVuZCDntYLkuobml6UgRGF0ZeOBp+aZguWIu+OCkuiAg+aFruOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAglxuICAgKiBAcGFyYW0gZ3JvdXAgZ3JvdXBz44Gn5oyH5a6a44GV44KM44GfaWTjgpLmjIflrprjgZfjgb7jgZnjgILoqbLlvZPjgZnjgotncm91cOOBruihjOOBq+mFjee9ruOBleOCjOOBvuOBmeOAglxuICAgKiBAcGFyYW0gZHJhZ2dpbmdQcm9wcyBkcmFnQXhpc+OBp+ODieODqeODg+OCsOaWueWQkeOAgWRpc2FibGVk44Gn44OJ44Op44OD44Kw5Y+v6IO944Gr44GZ44KL44GL44Gp44GG44GL44KS5oyH5pGY44Gn44GN44G+44GZ44CCXG4gICAqIEBwYXJhbSBpdGVtUHJvcHMg5Lu75oSP44GuSFRNTFByb3Bz44KSSXRlbeOBq+a4oeOBmeOBk+OBqOOBjOOBp+OBjeOBvuOBmeOAglxuICAgKi9cbiAgaXRlbXM6IENUSXRlbVtdO1xuICAvKipcbiAgICogaXRlbXPjgafmuKHjgZXjgozjgZ/lgKTjgpLjganjga7jgojjgYbjgavmj4/nlLvjgZnjgovjgYvjgpLmjIflrprjgZfjgb7jgZnjgIJcbiAgICogQHBhcmFtIHJvd0luZGV4IOihjOeVquWPt+OAgmdyb3Vwc1tyb3dJbmRleF3jgafoqbLlvZPjgZnjgotncm91cOOCkuWPluW+l+OBp+OBjeOBvuOBmeOAglxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXgg5YiX55Wq5Y+344CC55So6YCU44Gv44G744G844Gq44GE44Go5oCd44GE44G+44GZ44CCXG4gICAqIEBwYXJhbSBpdGVtSW5kZXgg44Ki44Kk44OG44Og55Wq5Y+344CCaXRlbXNbaXRlbUluZGV4XeOBp+ipsuW9k+OBmeOCi2l0ZW3jgpLlj5blvpfjgafjgY3jgb7jgZnjgIJcbiAgICogQHBhcmFtIHRpdGxlIGl0ZW1z44Gn5rih44GV44KM44GfdGl0bGXjgafjgZnjgIJcbiAgICovXG4gIHJlbmRlckl0ZW0/OiBDVFJlbmRlckl0ZW07XG4gIC8qKlxuICAgKiBpdGVt44Gu44OJ44Op44OD44Kw5pON5L2c44GM5a6M5LqG44GV44KM44Gf44Go44GN44Gr5ZG844Gw44KM44G+44GZ44CCXG4gICAqL1xuICBvbkRyYWdJdGVtPzogQ1REcmFnSXRlbUNhbGxiYWNrO1xuICAvKipcbiAgICog5YiX55Wq5Y+344Go44GX44Gm5L2/55So44GV44KM44KL5pel5LuY44Gq44Gp44Gu5oOF5aCx44KS44Gp44Gu44KI44GG44Gr5o+P55S744GZ44KL44GL44KS5oyH5a6a44GX44G+44GZ44CCXG4gICAqIEBwYXJhbSBkYXRlIERhdGXjgILnp7vli5XlhYjjga7ml6Xku5jjgafjgZnjgILmmYLplpPmg4XloLHjga/mjIHjgaPjgabjgYTjgb7jgZvjgpPjgIJcbiAgICogQHBhcmFtIHN0eWxlIENTU1Byb3BlcnRpZXPjgILlv4XjgZrmuKHjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiAgICovXG4gIHJlbmRlckRhdGU/OiBDVFJlbmRlckRhdGU7XG5cbiAgLyoqXG4gICAqIOaoquaWueWQkeOBq+OCueOCr+ODreODvOODq+OBl+OBn+mam+OAgeWFiOmgreOBruaXpeS7mOOCkui/lOOBl+OBvuOBmeOAglxuICAgKiDmnIjjgoTlubTjgojjgorkuIvjga7mg4XloLHjgYzjgYTjgonjgarjgYTloLTlkIjjga/pganliIfjgavmr5TovIPlh6bnkIbjgpLooYzjgYTjgIHnhKHpp4Tjgarlh6bnkIbjgYzooYzjgo/jgozjgarjgYTjgojjgYbjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIJcbiAgICovXG4gIG9uU2Nyb2xsPzogQ1RTY3JvbGxDYWxsYmFjaztcbiAgLyoqXG4gICAqIGl0ZW3jga7jg6rjgrXjgqTjgrrmk43kvZzjgYzlrozkuobjgZXjgozjgZ/jgajjgY3jgavlkbzjgbDjgozjgb7jgZnjgIJcbiAgICovXG4gIG9uUmVzaXplSXRlbT86IENUUmVzaXplSXRlbUNhbGxiYWNrO1xuICAvKipcbiAgICog5L2Z5YiG44Gr5o+P55S744GV44KM44KL5YiX5pWw44KS5oyH5a6a44GX44G+44GZ44CC5oyH5a6a44GV44KM44Gf5YiX5pWw44KS44G+44Gf44GQSXRlbeOBjOWtmOWcqOOBmeOCi+WgtOWQiOOAgeS9jee9ruOBq+OCiOOBo+OBpuOBr+aPj+eUu+OBleOCjOOBquOBhOWgtOWQiOOBjOOBguOCiuOBvuOBmeOAglxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgb3ZlcnNjYW5Db2x1bW5Db3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIOS9meWIhuOBq+aPj+eUu+OBleOCjOOCi+ihjOaVsOOCkuaMh+WumuOBl+OBvuOBmeOAguaMh+WumuOBleOCjOOBn+ihjOaVsOOCkuOBvuOBn+OBkEl0ZW3jgYzlrZjlnKjjgZnjgovloLTlkIjjgIHkvY3nva7jgavjgojjgaPjgabjga/mj4/nlLvjgZXjgozjgarjgYTloLTlkIjjgYzjgYLjgorjgb7jgZnjgIJcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIG92ZXJzY2FuUm93Q291bnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiDlhajjgabjga7jgqLjgqTjg4bjg6Djga7jg4njg6njg4PjgrDmlrnms5XjgpLkuIDmi6zjgafmjIflrprjgafjgY3jgb7jgZnjgIJpdGVtcyBwcm9w44Gn5YCL5Yil44GrZHJhZ2dpbmdQcm9wc+OBp+aMh+WumuOCkuihjOOBo+OBn+WgtOWQiOOAgemHjeikh+OBmeOCi+OCguOBruOBr+S4iuabuOOBjeOBleOCjOOBvuOBmeOAglxuICAgKi9cbiAgZHJhZ2dpbmdQcm9wcz86IENURHJhZ2dpbmdQcm9wcztcbiAgLyoqXG4gICAqIOihqOekuuOBleOCjOOCi+ihjOaVsOOCkuaMh+WumuOBl+OBvuOBmeOAgkNhbGVuZGFyVGltZWxpbmXjga7pq5jjgZXjga9jZWxsSGVpZ2h0ICogdmlzaWJsZVJvd0NvdW50ICsgZGF0ZUhlaWdodOOBp+axuuWumuOBleOCjOOBvuOBmeOAglxuICAgKiBAZGVmYXVsdCAyMFxuICAgKi9cbiAgdmlzaWJsZVJvd0NvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICog6KGo56S644GV44KM44KL5YiX5pWw44KS5oyH5a6a44GX44G+44GZ44CCQ2FsZW5kYXJUaW1lbGluZeOBruW5heOBr2NlbGxXaWR0aCAqIHZpc2libGVDb2x1bW5Db3VudCArIGdyb3VwV2lkdGjjgafmsbrlrprjgZXjgozjgb7jgZnjgIJcbiAgICogQGRlZmF1bHQgMjBcbiAgICovXG4gIHZpc2libGVDb2x1bW5Db3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIOWFqOOBpuOBruOCouOCpOODhuODoOOBq+a4oeOBmeS7u+aEj+OBrlByb3Bz44KS5LiA5ous44Gn5oyH5a6a44Gn44GN44G+44GZ44CCaXRlbXMgcHJvcOOBp+WAi+WIpeOBq2l0ZW1Qcm9wc+OBp+aMh+WumuOCkuihjOOBo+OBn+WgtOWQiOOAgemHjeikh+OBmeOCi+OCguOBruOBr+S4iuabuOOBjeOBleOCjOOBvuOBmeOAglxuICAgKi9cbiAgaXRlbVByb3BzPzogQ1RJdGVtUHJvcHM7XG4gIGdyb3VwV2lkdGg/OiBudW1iZXI7XG4gIGNlbGxXaWR0aD86IG51bWJlcjtcbiAgY2VsbEhlaWdodD86IG51bWJlcjtcbiAgZGF0ZUhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyVGltZWxpbmU6IFJlYWN0LkZDPENhbGVuZGFyVGltZWxpbmVQcm9wcz4gPSAoe1xuICBncm91cHMsXG4gIGl0ZW1zLFxuICB0aXRsZSxcbiAgb25EcmFnSXRlbSxcbiAgcmVuZGVyRGF0ZSA9IERlZmF1bHREYXRlLFxuICByZW5kZXJJdGVtID0gRGVmYXVsdEl0ZW0sXG4gIHJlbmRlckdyb3VwID0gRGVmYXVsdEdyb3VwLFxuICByZW5kZXJDZWxsID0gRGVmYXVsdENlbGwsXG4gIG92ZXJzY2FuQ29sdW1uQ291bnQ6IGRlZmF1bHRPdmVyc2NhbkNvbHVtbkNvdW50ID0gMTAsXG4gIG92ZXJzY2FuUm93Q291bnQ6IGRlZmF1bHRPdmVyc2NhblJvd0NvdW50ID0gMTAsXG4gIG9uU2Nyb2xsLFxuICBvblJlc2l6ZUl0ZW0sXG4gIGNlbGxXaWR0aCA9IDY0LFxuICBjZWxsSGVpZ2h0ID0gMjcsXG4gIGdyb3VwV2lkdGggPSAyMzAsXG4gIGRhdGVIZWlnaHQgPSA2NCxcbiAgZHJhZ2dpbmdQcm9wcyxcbiAgaXRlbVByb3BzLFxuICB2aXNpYmxlQ29sdW1uQ291bnQgPSAyMCxcbiAgdmlzaWJsZVJvd0NvdW50ID0gMjAsXG4gIG9uQ2xpY2tDZWxsLFxuICB2aXNpYmxlRGF0ZXMsXG59KSA9PiB7XG4gIGNvbnN0IHJvd0NvdW50ID0gdXNlTWVtbygoKSA9PiBncm91cHMubGVuZ3RoLCBbZ3JvdXBzXSk7XG5cbiAgY29uc3QgY29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICh2aXNpYmxlRGF0ZXM/LnN0YXJ0KSB7XG4gICAgICBjb25zdCBsZW5ndGggPVxuICAgICAgICBkYXlqcyh2aXNpYmxlRGF0ZXMuZW5kKS5kaWZmKHZpc2libGVEYXRlcy5zdGFydCwgXCJkYXlcIikgKyAxO1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gZGF5anModmlzaWJsZURhdGVzLnN0YXJ0KTtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0pLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRlID0gc3RhcnREYXRlLmNsb25lKCkuYWRkKGksIFwiZGF5XCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmRhdGUoKTtcbiAgICAgICAgY29uc3Qgd2Vla2RheSA9IGRhdGUuZGF5KCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5tb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcbiAgICAgICAgICB3ZWVrZGF5LFxuICAgICAgICAgIGRheSxcbiAgICAgICAgICBtb250aCxcbiAgICAgICAgICB5ZWFyLFxuICAgICAgICAgIGRhdGVTdHJpbmcsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWN0aXZlTW9udGhDb3VudCA9IHZpc2libGVEYXRlcz8uYWN0aXZlTW9udGhDb3VudCB8fCAyNDtcbiAgICAgIGNvbnN0IGRhdGUgPSB2aXNpYmxlRGF0ZXM/LmRhdGUgfHwgbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IGJhc2VEYXRlID0gZGF5anMoZGF5anMoZGF0ZSkuZm9ybWF0KFwiWVlZWU1NRERcIikpO1xuICAgICAgY29uc3QgYmFzZURheSA9IGJhc2VEYXRlLmRhdGUoKSA+IDE1ID8gMTQgOiAxO1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gYmFzZURhdGVcbiAgICAgICAgLmFkZChNYXRoLmNlaWwoLWFjdGl2ZU1vbnRoQ291bnQgLyAyKSwgXCJtb250aFwiKVxuICAgICAgICAuc2V0KFwiZGF0ZVwiLCBiYXNlRGF5KTtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBhY3RpdmVNb250aENvdW50IH0pXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXlPZlN0YXJ0TW9udGggPSBzdGFydERhdGUuY2xvbmUoKS5hZGQoaSwgXCJtb250aFwiKTtcbiAgICAgICAgICBjb25zdCBkYXlzSW5Nb250aCA9IGRheU9mU3RhcnRNb250aC5kYXlzSW5Nb250aCgpO1xuICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBkYXlzSW5Nb250aCB9KS5tYXAoKF8sIGopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBkYXlPZlN0YXJ0TW9udGguY2xvbmUoKS5hZGQoaiwgXCJkYXlcIik7XG4gICAgICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmRhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHdlZWtkYXkgPSBkYXRlLmRheSgpO1xuICAgICAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLm1vbnRoKCk7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgd2Vla2RheSxcbiAgICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgICBtb250aCxcbiAgICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgICAgZGF0ZVN0cmluZyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5mbGF0KCk7XG4gICAgfVxuICB9LCBbdmlzaWJsZURhdGVzXSk7XG5cbiAgY29uc3QgY29sdW1uQ291bnQgPSB1c2VNZW1vKCgpID0+IGNvbHVtbnMubGVuZ3RoLCBbY29sdW1uc10pO1xuXG4gIGNvbnN0IGluaXRpYWxTY3JvbGxMZWZ0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHZpc2libGVEYXRlcz8uc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICh2aXNpYmxlRGF0ZXM/LmFjdGl2ZU1vbnRoQ291bnQgfHwgMjQpICUgMiA9PT0gMFxuICAgICAgICA/IChjb2x1bW5Db3VudCAvIDIpICogY2VsbFdpZHRoXG4gICAgICAgIDogKGNvbHVtbkNvdW50IC8gMiAtIDE1KSAqIGNlbGxXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHZpc2libGVEYXRlcz8uZGF0ZVxuICAgICAgPyBkYXlqcyh2aXNpYmxlRGF0ZXMuZGF0ZSkuZGlmZih2aXNpYmxlRGF0ZXM/LnN0YXJ0LCBcImRheVwiKSAqIGNlbGxXaWR0aFxuICAgICAgOiAwO1xuICB9LCBbY2VsbFdpZHRoLCBjb2x1bW5Db3VudCwgdmlzaWJsZURhdGVzXSk7XG5cbiAgY29uc3QgW2VkaXRpbmdDZWxsLCBzZXRFZGl0aW5nQ2VsbF0gPSB1c2VTdGF0ZTxcbiAgICBQYXJ0aWFsPERyYWdnYWJsZURhdGE+ICYge1xuICAgICAgY29sdW1uSW5kZXg6IG51bWJlcjtcbiAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgICB4OiBudW1iZXI7XG4gICAgICB5OiBudW1iZXI7XG4gICAgICBsYXN0WDogbnVtYmVyO1xuICAgICAgbGFzdFk6IG51bWJlcjtcbiAgICB9XG4gID4oe1xuICAgIHg6IC0xLFxuICAgIHk6IC0xLFxuICAgIGxhc3RYOiAtMSxcbiAgICBsYXN0WTogLTEsXG4gICAgY29sdW1uSW5kZXg6IC0xLFxuICAgIHJvd0luZGV4OiAtMSxcbiAgfSk7XG4gIGNvbnN0IFtkcmFnZ2luZywgc2V0RHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQ6IFJuZERyYWdDYWxsYmFjayA9IHVzZUNhbGxiYWNrKChldmVudCwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gcGFyc2VJbnQoZGF0YS5ub2RlLmRhdGFzZXQuY29sdW1uSW5kZXggYXMgc3RyaW5nLCAxMCk7XG4gICAgY29uc3Qgcm93SW5kZXggPSBwYXJzZUludChkYXRhLm5vZGUuZGF0YXNldC5yb3dJbmRleCBhcyBzdHJpbmcsIDEwKTtcbiAgICBkYXRhLm5vZGUuc3R5bGUuZmlsdGVyID0gXCJvcGFjaXR5KDEwMCUpXCI7XG4gICAgZGF0YS5ub2RlLnN0eWxlLnpJbmRleCA9IFwiMVwiO1xuICAgIHNldEVkaXRpbmdDZWxsKHtcbiAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgcm93SW5kZXgsXG4gICAgICAuLi5kYXRhLFxuICAgIH0pO1xuICAgIHNldERyYWdnaW5nKHRydWUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGhhbmRsZURyYWdTdG9wOiBSbmREcmFnQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQsIGRhdGEpID0+IHtcbiAgICAgIGRhdGEubm9kZS5zdHlsZS5maWx0ZXIgPSBcIlwiO1xuICAgICAgZGF0YS5ub2RlLnN0eWxlLnpJbmRleCA9IFwiMFwiO1xuICAgICAgaWYgKG9uRHJhZ0l0ZW0pIHtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gcGFyc2VJbnQoZGF0YS5ub2RlLmRhdGFzZXQuaXRlbUluZGV4IGFzIHN0cmluZywgMTApO1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaXRlbUluZGV4XTtcblxuICAgICAgICBjb25zdCBkcmFnQXhpcyA9XG4gICAgICAgICAgZHJhZ2dpbmdQcm9wcz8uZHJhZ0F4aXMgfHwgaXRlbS5kcmFnZ2luZ1Byb3BzPy5kcmFnQXhpcztcbiAgICAgICAgaWYgKGRyYWdBeGlzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldiA9IHsgLi4uZWRpdGluZ0NlbGwgfTtcbiAgICAgICAgY29uc3QgeCA9XG4gICAgICAgICAgZHJhZ0F4aXMgPT09IFwieVwiXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcm91bmRUb1plcm8oKHByZXYubGFzdFggLSBkYXRhLmxhc3RYKSAvIGNlbGxXaWR0aCk7XG4gICAgICAgIGNvbnN0IHkgPVxuICAgICAgICAgIGRyYWdBeGlzID09PSBcInhcIiA/IDAgOiByb3VuZFRvWmVybygocHJldi55IC0gZGF0YS55KSAvIGNlbGxIZWlnaHQpO1xuICAgICAgICBpZiAoeCAhPT0gMCB8fCB5ICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZGF0ZSA9IGNvbHVtbnNbcHJldi5jb2x1bW5JbmRleCAtIHhdPy5kYXRlO1xuICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzW3ByZXYucm93SW5kZXggLSB5XT8uaWQ7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IGRheWpzKGRhdGUpLmRpZmYoZGF5anNSZW1vdmVkVGltZShpdGVtLnN0YXJ0KSwgXCJkYXRlXCIpO1xuXG4gICAgICAgICAgaWYgKGRhdGUgIT09IHVuZGVmaW5lZCAmJiBncm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRJdGVtID0ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgc3RhcnQ6IGFkZERhdGUoaXRlbS5zdGFydCwgZGlmZiksXG4gICAgICAgICAgICAgIGVuZDogYWRkRGF0ZShpdGVtLmVuZCwgZGlmZiksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY29weSA9IGl0ZW1zLnNsaWNlKCk7XG4gICAgICAgICAgICBjb3B5W2l0ZW1JbmRleF0gPSB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgb25EcmFnSXRlbShjb3B5LCB7IC4uLnRhcmdldEl0ZW0sIGl0ZW1JbmRleCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0RHJhZ2dpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgY2VsbEhlaWdodCxcbiAgICAgIGNlbGxXaWR0aCxcbiAgICAgIGNvbHVtbnMsXG4gICAgICBkcmFnZ2luZ1Byb3BzLFxuICAgICAgZWRpdGluZ0NlbGwsXG4gICAgICBncm91cHMsXG4gICAgICBpdGVtcyxcbiAgICAgIG9uRHJhZ0l0ZW0sXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVSZXNpemVTdG9wOiBSbmRSZXNpemVDYWxsYmFjayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCwgZGlyZWN0aW9uLCByZWYsIGRlbHRhKSA9PiB7XG4gICAgICBpZiAob25SZXNpemVJdGVtKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHBhcnNlSW50KHJlZi5kYXRhc2V0Lml0ZW1JbmRleCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgY29uc3QgY29weSA9IGl0ZW1zLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjb3B5W2l0ZW1JbmRleF07XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBkYXlqcyhpdGVtLnN0YXJ0KVxuICAgICAgICAgICAgLmFkZChyb3VuZFRvWmVybygtZGVsdGEud2lkdGggLyBjZWxsV2lkdGgpLCBcImRheVwiKVxuICAgICAgICAgICAgLnRvRGF0ZSgpO1xuICAgICAgICAgIGNvcHlbaXRlbUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIG9uUmVzaXplSXRlbShjb3B5LCB7XG4gICAgICAgICAgICBpdGVtSW5kZXgsXG4gICAgICAgICAgICBncm91cDogaXRlbS5ncm91cCxcbiAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpdGVtLmVuZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwicmlnaHRcIikge1xuICAgICAgICAgIGNvbnN0IGVuZCA9IGRheWpzKGl0ZW0uZW5kKVxuICAgICAgICAgICAgLmFkZChyb3VuZFRvWmVybyhkZWx0YS53aWR0aCAvIGNlbGxXaWR0aCksIFwiZGF5XCIpXG4gICAgICAgICAgICAudG9EYXRlKCk7XG4gICAgICAgICAgY29weVtpdGVtSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGVuZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIG9uUmVzaXplSXRlbShjb3B5LCB7XG4gICAgICAgICAgICBpdGVtSW5kZXgsXG4gICAgICAgICAgICBncm91cDogaXRlbS5ncm91cCxcbiAgICAgICAgICAgIHN0YXJ0OiBpdGVtLnN0YXJ0LFxuICAgICAgICAgICAgZW5kLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbY2VsbFdpZHRoLCBpdGVtcywgb25SZXNpemVJdGVtXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgIChwcm9wczogR3JpZE9uU2Nyb2xsUHJvcHMpID0+IHtcbiAgICAgIGlmIChvblNjcm9sbCkge1xuICAgICAgICBvblNjcm9sbChjb2x1bW5zW3JvdW5kVG9aZXJvKHByb3BzLnNjcm9sbExlZnQgLyBjZWxsV2lkdGgpXS5kYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjZWxsV2lkdGgsIGNvbHVtbnMsIG9uU2Nyb2xsXVxuICApO1xuXG4gIGNvbnN0IGl0ZW1EYXRhOiBDVENlbGxQcm9wc1tcImRhdGFcIl0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFrZUhhbmRsZUNsaWNrOiBvbkNsaWNrQ2VsbFxuICAgICAgICA/ICh7XG4gICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICAgIH06IHtcbiAgICAgICAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgICAgICAgICBjb2x1bW5JbmRleDogbnVtYmVyO1xuICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzW3Jvd0luZGV4XTtcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICAgICAgICAgIG9uQ2xpY2tDZWxsKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGdyb3VwOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGdyb3VwcyxcbiAgICAgIGNvbHVtbnMsXG4gICAgICBkZWZhdWx0U3R5bGVzOiBkZWZhdWx0Q2VsbFN0eWxlcyxcbiAgICB9O1xuICB9LCBbY29sdW1ucywgZ3JvdXBzLCBvbkNsaWNrQ2VsbF0pO1xuXG4gIHJldHVybiAoXG4gICAgPENhbGVuZGFyVGltZWxpbmVDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBpdGVtcyxcbiAgICAgICAgZ3JvdXBzLFxuICAgICAgICByZW5kZXJEYXRlLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgZWRpdGluZ0NlbGwsXG4gICAgICAgIHJlbmRlckdyb3VwLFxuICAgICAgICBjZWxsSGVpZ2h0LFxuICAgICAgICBjZWxsV2lkdGgsXG4gICAgICAgIGdyb3VwV2lkdGgsXG4gICAgICAgIGRhdGVIZWlnaHQsXG4gICAgICAgIGRyYWdnaW5nUHJvcHMsXG4gICAgICAgIGl0ZW1Qcm9wcyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPEl0ZW1XcmFwcGVyQ29udGV4dC5Qcm92aWRlclxuICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgIGNlbGxIZWlnaHQsXG4gICAgICAgICAgY2VsbFdpZHRoLFxuICAgICAgICAgIGhhbmRsZURyYWdTdGFydCxcbiAgICAgICAgICBoYW5kbGVEcmFnU3RvcCxcbiAgICAgICAgICBoYW5kbGVSZXNpemVTdG9wOiBvblJlc2l6ZUl0ZW0gPyBoYW5kbGVSZXNpemVTdG9wIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlbmRlckl0ZW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgJiAuQ2FsZW5kYXJUaW1lbGluZV9fSXRlbSB7XG4gICAgICAgICAgICAgIGZpbHRlcjogb3BhY2l0eSgke2RyYWdnaW5nID8gXCI1MCVcIiA6IFwiMTAwJVwifSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiQ2FsZW5kYXJUaW1lbGluZV9fTWFpblwiXG4gICAgICAgICAgICBjb2x1bW5Db3VudD17Y29sdW1uQ291bnR9XG4gICAgICAgICAgICBjb2x1bW5XaWR0aD17Y2VsbFdpZHRofVxuICAgICAgICAgICAgaGVpZ2h0PXtjZWxsSGVpZ2h0ICogdmlzaWJsZVJvd0NvdW50ICsgZGF0ZUhlaWdodH1cbiAgICAgICAgICAgIHJvd0NvdW50PXtyb3dDb3VudH1cbiAgICAgICAgICAgIHJvd0hlaWdodD17Y2VsbEhlaWdodH1cbiAgICAgICAgICAgIHdpZHRoPXtjZWxsV2lkdGggKiB2aXNpYmxlQ29sdW1uQ291bnQgKyBncm91cFdpZHRofVxuICAgICAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudD17ZGVmYXVsdE92ZXJzY2FuQ29sdW1uQ291bnR9XG4gICAgICAgICAgICBvdmVyc2NhblJvd0NvdW50PXtkZWZhdWx0T3ZlcnNjYW5Sb3dDb3VudH1cbiAgICAgICAgICAgIGluaXRpYWxTY3JvbGxMZWZ0PXtpbml0aWFsU2Nyb2xsTGVmdH1cbiAgICAgICAgICAgIGlubmVyRWxlbWVudFR5cGU9e0lubmVyRWxlbWVudH1cbiAgICAgICAgICAgIGl0ZW1EYXRhPXtpdGVtRGF0YX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVyQ2VsbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9JdGVtV3JhcHBlckNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DYWxlbmRhclRpbWVsaW5lQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0= */")
|
|
262
|
+
}, ___EmotionJSX(Grid, {
|
|
263
|
+
onScroll: handleScroll,
|
|
264
|
+
className: "CalendarTimeline__Main",
|
|
265
|
+
columnCount: columnCount,
|
|
266
|
+
columnWidth: cellWidth,
|
|
267
|
+
height: cellHeight * visibleRowCount + dateHeight,
|
|
268
|
+
rowCount: rowCount,
|
|
269
|
+
rowHeight: cellHeight,
|
|
270
|
+
width: cellWidth * visibleColumnCount + groupWidth,
|
|
271
|
+
overscanColumnCount: defaultOverscanColumnCount,
|
|
272
|
+
overscanRowCount: defaultOverscanRowCount,
|
|
273
|
+
initialScrollLeft: initialScrollLeft,
|
|
274
|
+
innerElementType: InnerElement,
|
|
275
|
+
itemData: itemData
|
|
276
|
+
}, renderCell))));
|
|
277
|
+
};
|
|
278
|
+
//# sourceMappingURL=CalendarTimeline.js.map
|