m2mui-calendar-timeline 2.1.1 → 2.2.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} +142 -145
- package/CalendarTimeline.js +276 -0
- package/CalendarTimeline.js.map +1 -0
- package/{dist/Cell.d.ts → Cell.d.ts} +29 -30
- package/Cell.js +43 -0
- package/Cell.js.map +1 -0
- package/{dist/DefaultComponents.d.ts → DefaultComponents.d.ts} +4 -5
- package/DefaultComponents.js +94 -0
- package/DefaultComponents.js.map +1 -0
- package/{dist/InnerElement.d.ts → InnerElement.d.ts} +48 -48
- package/InnerElement.js +233 -0
- package/InnerElement.js.map +1 -0
- package/{dist/ItemWrapper.d.ts → ItemWrapper.d.ts} +15 -15
- package/ItemWrapper.js +81 -0
- package/ItemWrapper.js.map +1 -0
- package/README.md +1 -2
- package/cjs/CalendarTimeline.js +284 -0
- package/cjs/CalendarTimeline.js.map +1 -0
- package/cjs/Cell.js +48 -0
- package/cjs/Cell.js.map +1 -0
- package/cjs/DefaultComponents.js +97 -0
- package/cjs/DefaultComponents.js.map +1 -0
- package/cjs/InnerElement.js +235 -0
- package/cjs/InnerElement.js.map +1 -0
- package/cjs/ItemWrapper.js +88 -0
- package/cjs/ItemWrapper.js.map +1 -0
- package/cjs/getRenderedCursor.js +28 -0
- package/cjs/getRenderedCursor.js.map +1 -0
- package/cjs/index.js +16 -0
- package/cjs/index.js.map +1 -0
- package/cjs/indexFor.js +15 -0
- package/cjs/indexFor.js.map +1 -0
- package/cjs/roundToZero.js +9 -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 +276 -0
- package/esm/CalendarTimeline.js.map +1 -0
- package/esm/Cell.js +43 -0
- package/esm/Cell.js.map +1 -0
- package/esm/DefaultComponents.js +94 -0
- package/esm/DefaultComponents.js.map +1 -0
- package/esm/InnerElement.js +233 -0
- package/esm/InnerElement.js.map +1 -0
- package/esm/ItemWrapper.js +81 -0
- package/esm/ItemWrapper.js.map +1 -0
- package/esm/getRenderedCursor.js +25 -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 +10 -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 +25 -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 +10 -0
- package/indexFor.js.map +1 -0
- package/package.json +55 -95
- 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 +142 -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 -159
- package/dist/index.cjs.js +0 -575
- package/dist/index.esm.js +0 -566
- package/dist/indexFor.d.ts +0 -1
|
@@ -1,145 +1,142 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export interface
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* @param
|
|
25
|
-
*
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
* items
|
|
87
|
-
* @param
|
|
88
|
-
|
|
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
|
-
dateHeight?: number;
|
|
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
|
+
export type CTCellProps = CellProps;
|
|
4
|
+
export type CTRenderCell = (props: CTCellProps) => JSX.Element;
|
|
5
|
+
export interface CalendarTimelineProps {
|
|
6
|
+
/**
|
|
7
|
+
* Cellをどのように描画するかを指定します。
|
|
8
|
+
* CellProps.dataからgroupsや日付の情報が取れるので自前でContextなどを用意する必要はありません。
|
|
9
|
+
* 注意:CellProps.styleを必ずコンポーネントに渡してください。
|
|
10
|
+
*/
|
|
11
|
+
renderCell?: CTRenderCell;
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated
|
|
14
|
+
* Use CalendarTimelineProps.renderCell instead.
|
|
15
|
+
*
|
|
16
|
+
* Cellがクリックされたときに呼ばれます。クリックされたCellを特定できる情報を返します。
|
|
17
|
+
*/
|
|
18
|
+
onClickCell?: CTClickCellCallback;
|
|
19
|
+
/**
|
|
20
|
+
* 表示できる日付の範囲を指定します。
|
|
21
|
+
* @param activeMonthCount 有効な月数を指定します。指定がない場合、24になります。ここで指定された値は調整済みのdateを中心に両側に均等に割り振られます。つまり24の場合、去年と来年の同日まで閲覧できるようになります。
|
|
22
|
+
* @param start 有効範囲の最小値となる日付を指定します。activeMonthCountがある場合、設定できません。
|
|
23
|
+
* @param end 有効範囲の最大値となる日付を指定します。startと同様に日付の調整は行われません。activeMonthCountがある場合、設定できません。
|
|
24
|
+
* @param date Dateまたは日付を表すstringを指定してください。
|
|
25
|
+
* 【activeMonthCountが設定されている場合】:指定がない場合、new Date()相当の値が入ります。dateの指定した日付が最初から画面付近に入るように自動で1日または15日調整されます。
|
|
26
|
+
* 【activeMonthCountが設定されていない場合】:指定がない場合、startと同じ値が入ります。パターン1とは異なり、日付の調整が行われません。
|
|
27
|
+
*/
|
|
28
|
+
visibleDates?: {
|
|
29
|
+
/**
|
|
30
|
+
* 基礎となる日付です。
|
|
31
|
+
* @default "new Date()"
|
|
32
|
+
*/
|
|
33
|
+
date?: Date | string;
|
|
34
|
+
/**
|
|
35
|
+
* 表示できる月数。現在の想定では中心となる日付から左右に均等に割り振られます。
|
|
36
|
+
* @default 24
|
|
37
|
+
*/
|
|
38
|
+
activeMonthCount?: number;
|
|
39
|
+
start?: never;
|
|
40
|
+
end?: never;
|
|
41
|
+
} | {
|
|
42
|
+
/**
|
|
43
|
+
* 開始日
|
|
44
|
+
* @format "YYYY-MM-DD"
|
|
45
|
+
*/
|
|
46
|
+
start: Date | string;
|
|
47
|
+
/**
|
|
48
|
+
* 終了日
|
|
49
|
+
* @format "YYYY-MM-DD"
|
|
50
|
+
*/
|
|
51
|
+
end: Date | string;
|
|
52
|
+
/**
|
|
53
|
+
* 基礎となる日付です。
|
|
54
|
+
*/
|
|
55
|
+
date?: Date | string;
|
|
56
|
+
activeMonthCount?: never;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* 左上に表示される文字列です。
|
|
60
|
+
*/
|
|
61
|
+
title?: string | (() => JSX.Element);
|
|
62
|
+
/**
|
|
63
|
+
* 縦方向の項目名に使用され、左側に表示されます。
|
|
64
|
+
* @param title 任意の文字列を渡します
|
|
65
|
+
* @param id 任意の文字列または数値。ここで指定したidはitems及びgroupコンポーネントのkeyとして利用されるため、ユニークである必要があります。
|
|
66
|
+
*/
|
|
67
|
+
groups?: CTGroup[];
|
|
68
|
+
/**
|
|
69
|
+
* groupsで渡された値をどのように描画するかを指定します。groupsで指定したものに加えて、styleが渡されます。
|
|
70
|
+
*/
|
|
71
|
+
renderGroup?: CTRenderGroup;
|
|
72
|
+
/**
|
|
73
|
+
* 予約などのイベントを表示するためコンポーネントに使用される値を配列で渡します。
|
|
74
|
+
* @param title 任意の文字列を渡します。
|
|
75
|
+
* @param start 開始日 Dateで時刻を考慮する必要があります。
|
|
76
|
+
* @param end 終了日 Dateで時刻を考慮する必要があります。
|
|
77
|
+
* @param group groupsで指定されたidを指定します。該当するgroupの行に配置されます。
|
|
78
|
+
* @param draggingProps dragAxisでドラッグ方向、disabledでドラッグ可能にするかどうかを指摘できます。
|
|
79
|
+
* @param itemProps 任意のHTMLPropsをItemに渡すことができます。
|
|
80
|
+
*/
|
|
81
|
+
items: CTItem[];
|
|
82
|
+
/**
|
|
83
|
+
* itemsで渡された値をどのように描画するかを指定します。
|
|
84
|
+
* @param rowIndex 行番号。groups[rowIndex]で該当するgroupを取得できます。
|
|
85
|
+
* @param columnIndex 列番号。用途はほぼないと思います。
|
|
86
|
+
* @param itemIndex アイテム番号。items[itemIndex]で該当するitemを取得できます。
|
|
87
|
+
* @param title itemsで渡されたtitleです。
|
|
88
|
+
*/
|
|
89
|
+
renderItem?: CTRenderItem;
|
|
90
|
+
/**
|
|
91
|
+
* itemのドラッグ操作が完了されたときに呼ばれます。
|
|
92
|
+
*/
|
|
93
|
+
onDragItem?: CTDragItemCallback;
|
|
94
|
+
/**
|
|
95
|
+
* 列番号として使用される日付などの情報をどのように描画するかを指定します。
|
|
96
|
+
* @param date Date。移動先の日付です。時間情報は持っていません。
|
|
97
|
+
* @param style CSSProperties。必ず渡してください。
|
|
98
|
+
*/
|
|
99
|
+
renderDate?: CTRenderDate;
|
|
100
|
+
/**
|
|
101
|
+
* 横方向にスクロールした際、先頭の日付を返します。
|
|
102
|
+
* 月や年より下の情報がいらない場合は適切に比較処理を行い、無駄な処理が行われないように注意してください。
|
|
103
|
+
*/
|
|
104
|
+
onScroll?: CTScrollCallback;
|
|
105
|
+
/**
|
|
106
|
+
* itemのリサイズ操作が完了されたときに呼ばれます。
|
|
107
|
+
*/
|
|
108
|
+
onResizeItem?: CTResizeItemCallback;
|
|
109
|
+
/**
|
|
110
|
+
* 余分に描画される列数を指定します。指定された列数をまたぐItemが存在する場合、位置によっては描画されない場合があります。
|
|
111
|
+
* @default 10
|
|
112
|
+
*/
|
|
113
|
+
overscanColumnCount?: number;
|
|
114
|
+
/**
|
|
115
|
+
* 余分に描画される行数を指定します。指定された行数をまたぐItemが存在する場合、位置によっては描画されない場合があります。
|
|
116
|
+
* @default 10
|
|
117
|
+
*/
|
|
118
|
+
overscanRowCount?: number;
|
|
119
|
+
/**
|
|
120
|
+
* 全てのアイテムのドラッグ方法を一括で指定できます。items propで個別にdraggingPropsで指定を行った場合、重複するものは上書きされます。
|
|
121
|
+
*/
|
|
122
|
+
draggingProps?: CTDraggingProps;
|
|
123
|
+
/**
|
|
124
|
+
* 表示される行数を指定します。CalendarTimelineの高さはcellHeight * visibleRowCount + dateHeightで決定されます。
|
|
125
|
+
* @default 20
|
|
126
|
+
*/
|
|
127
|
+
visibleRowCount?: number;
|
|
128
|
+
/**
|
|
129
|
+
* 表示される列数を指定します。CalendarTimelineの幅はcellWidth * visibleColumnCount + groupWidthで決定されます。
|
|
130
|
+
* @default 20
|
|
131
|
+
*/
|
|
132
|
+
visibleColumnCount?: number;
|
|
133
|
+
/**
|
|
134
|
+
* 全てのアイテムに渡す任意のPropsを一括で指定できます。items propで個別にitemPropsで指定を行った場合、重複するものは上書きされます。
|
|
135
|
+
*/
|
|
136
|
+
itemProps?: CTItemProps;
|
|
137
|
+
groupWidth?: number;
|
|
138
|
+
cellWidth?: number;
|
|
139
|
+
cellHeight?: number;
|
|
140
|
+
dateHeight?: number;
|
|
141
|
+
}
|
|
142
|
+
export declare const CalendarTimeline: ({ groups: _groups, items, title, onDragItem, renderDate, renderItem, renderGroup, renderCell, overscanColumnCount: defaultOverscanColumnCount, overscanRowCount: defaultOverscanRowCount, onScroll, onResizeItem, cellWidth, cellHeight, groupWidth, dateHeight, draggingProps, itemProps, visibleColumnCount, visibleRowCount, onClickCell, visibleDates, }: CalendarTimelineProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,276 @@
|
|
|
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
|
+
import { CalendarTimelineContext, InnerElement } from "./InnerElement";
|
|
3
|
+
import { Cell as DefaultCell, defaultCellStyles } from "./Cell";
|
|
4
|
+
import { DefaultDate, DefaultGroup, DefaultItem } from "./DefaultComponents";
|
|
5
|
+
import { FixedSizeGrid } from "react-window";
|
|
6
|
+
import { ItemWrapperContext } from "./ItemWrapper";
|
|
7
|
+
import { css } from "@emotion/react";
|
|
8
|
+
import { roundToZero } from "./roundToZero";
|
|
9
|
+
import React, { useCallback, useMemo, useState } from "react";
|
|
10
|
+
import dayjs from "dayjs";
|
|
11
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
12
|
+
var Grid = FixedSizeGrid;
|
|
13
|
+
var addDate = (prev, add) => {
|
|
14
|
+
return dayjs(prev).clone().add(add, "d").set("hour", dayjs(prev).hour()).toDate();
|
|
15
|
+
};
|
|
16
|
+
var dayjsRemovedTime = date => dayjs(dayjs(date).format("YYYYMMDD"));
|
|
17
|
+
export var CalendarTimeline = _ref => {
|
|
18
|
+
var {
|
|
19
|
+
groups: _groups,
|
|
20
|
+
items,
|
|
21
|
+
title,
|
|
22
|
+
onDragItem,
|
|
23
|
+
renderDate = DefaultDate,
|
|
24
|
+
renderItem = DefaultItem,
|
|
25
|
+
renderGroup = DefaultGroup,
|
|
26
|
+
renderCell = DefaultCell,
|
|
27
|
+
overscanColumnCount: defaultOverscanColumnCount = 10,
|
|
28
|
+
overscanRowCount: defaultOverscanRowCount = 10,
|
|
29
|
+
onScroll,
|
|
30
|
+
onResizeItem,
|
|
31
|
+
cellWidth = 64,
|
|
32
|
+
cellHeight = 27,
|
|
33
|
+
groupWidth = 230,
|
|
34
|
+
dateHeight = 64,
|
|
35
|
+
draggingProps,
|
|
36
|
+
itemProps,
|
|
37
|
+
visibleColumnCount = 20,
|
|
38
|
+
visibleRowCount = 20,
|
|
39
|
+
onClickCell,
|
|
40
|
+
visibleDates
|
|
41
|
+
} = _ref;
|
|
42
|
+
var groups = useMemo(() => {
|
|
43
|
+
if (_groups && _groups.length > 0) {
|
|
44
|
+
return _groups;
|
|
45
|
+
} else {
|
|
46
|
+
return Array.from({
|
|
47
|
+
length: visibleRowCount
|
|
48
|
+
}).map((_, i) => {
|
|
49
|
+
return {
|
|
50
|
+
id: "__DUMMY_GROUP_" + i + "__",
|
|
51
|
+
title: ""
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}, [_groups, visibleRowCount]);
|
|
56
|
+
var rowCount = useMemo(() => groups.length, [groups]);
|
|
57
|
+
var columns = useMemo(() => {
|
|
58
|
+
if ((visibleDates == null ? void 0 : visibleDates.start) !== undefined) {
|
|
59
|
+
var length = dayjs(visibleDates.end).diff(visibleDates.start, "day") + 1;
|
|
60
|
+
var startDate = dayjs(visibleDates.start);
|
|
61
|
+
return Array.from({
|
|
62
|
+
length
|
|
63
|
+
}).map((_, i) => {
|
|
64
|
+
var date = startDate.clone().add(i, "day");
|
|
65
|
+
var day = date.date();
|
|
66
|
+
var weekday = date.day();
|
|
67
|
+
var month = date.month();
|
|
68
|
+
var year = date.year();
|
|
69
|
+
var dateString = date.format("YYYY-MM-DD");
|
|
70
|
+
return {
|
|
71
|
+
date: date.toDate(),
|
|
72
|
+
weekday,
|
|
73
|
+
day,
|
|
74
|
+
month,
|
|
75
|
+
year,
|
|
76
|
+
dateString
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
} else {
|
|
80
|
+
var _visibleDates$activeM, _visibleDates$date;
|
|
81
|
+
var activeMonthCount = (_visibleDates$activeM = visibleDates == null ? void 0 : visibleDates.activeMonthCount) != null ? _visibleDates$activeM : 24;
|
|
82
|
+
var date = (_visibleDates$date = visibleDates == null ? void 0 : visibleDates.date) != null ? _visibleDates$date : new Date();
|
|
83
|
+
var baseDate = dayjs(dayjs(date).format("YYYYMMDD"));
|
|
84
|
+
var baseDay = baseDate.date() > 15 ? 14 : 1;
|
|
85
|
+
var _startDate = baseDate.add(Math.ceil(-activeMonthCount / 2), "month").set("date", baseDay);
|
|
86
|
+
return Array.from({
|
|
87
|
+
length: activeMonthCount
|
|
88
|
+
}).map((_, i) => {
|
|
89
|
+
var dayOfStartMonth = _startDate.clone().add(i, "month");
|
|
90
|
+
var daysInMonth = dayOfStartMonth.daysInMonth();
|
|
91
|
+
return Array.from({
|
|
92
|
+
length: daysInMonth
|
|
93
|
+
}).map((_, j) => {
|
|
94
|
+
var date = dayOfStartMonth.clone().add(j, "day");
|
|
95
|
+
var day = date.date();
|
|
96
|
+
var weekday = date.day();
|
|
97
|
+
var month = date.month();
|
|
98
|
+
var year = date.year();
|
|
99
|
+
var dateString = date.format("YYYY-MM-DD");
|
|
100
|
+
return {
|
|
101
|
+
date: date.toDate(),
|
|
102
|
+
weekday,
|
|
103
|
+
day,
|
|
104
|
+
month,
|
|
105
|
+
year,
|
|
106
|
+
dateString
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}).flat();
|
|
110
|
+
}
|
|
111
|
+
}, [visibleDates]);
|
|
112
|
+
var columnCount = useMemo(() => columns.length, [columns]);
|
|
113
|
+
var initialScrollLeft = useMemo(() => {
|
|
114
|
+
if ((visibleDates == null ? void 0 : visibleDates.start) === undefined) {
|
|
115
|
+
var _visibleDates$activeM2;
|
|
116
|
+
return ((_visibleDates$activeM2 = visibleDates == null ? void 0 : visibleDates.activeMonthCount) != null ? _visibleDates$activeM2 : 24) % 2 === 0 ? columnCount / 2 * cellWidth : (columnCount / 2 - 15) * cellWidth;
|
|
117
|
+
}
|
|
118
|
+
return (visibleDates == null ? void 0 : visibleDates.date) !== undefined ? dayjs(visibleDates.date).diff(visibleDates == null ? void 0 : visibleDates.start, "day") * cellWidth : 0;
|
|
119
|
+
}, [cellWidth, columnCount, visibleDates]);
|
|
120
|
+
var [editingCell, setEditingCell] = useState({
|
|
121
|
+
x: -1,
|
|
122
|
+
y: -1,
|
|
123
|
+
lastX: -1,
|
|
124
|
+
lastY: -1,
|
|
125
|
+
columnIndex: -1,
|
|
126
|
+
rowIndex: -1
|
|
127
|
+
});
|
|
128
|
+
var [dragging, setDragging] = useState(false);
|
|
129
|
+
var handleDragStart = useCallback((event, data) => {
|
|
130
|
+
var columnIndex = parseInt(data.node.dataset.columnIndex, 10);
|
|
131
|
+
var rowIndex = parseInt(data.node.dataset.rowIndex, 10);
|
|
132
|
+
data.node.style.filter = "opacity(100%)";
|
|
133
|
+
data.node.style.zIndex = "1";
|
|
134
|
+
setEditingCell(_extends({
|
|
135
|
+
columnIndex,
|
|
136
|
+
rowIndex
|
|
137
|
+
}, data));
|
|
138
|
+
setDragging(true);
|
|
139
|
+
}, []);
|
|
140
|
+
var handleDragStop = useCallback((event, data) => {
|
|
141
|
+
data.node.style.filter = "";
|
|
142
|
+
data.node.style.zIndex = "0";
|
|
143
|
+
if (onDragItem) {
|
|
144
|
+
var _item$draggingProps;
|
|
145
|
+
var itemIndex = parseInt(data.node.dataset.itemIndex, 10);
|
|
146
|
+
var item = items[itemIndex];
|
|
147
|
+
var dragAxis = (draggingProps == null ? void 0 : draggingProps.dragAxis) || ((_item$draggingProps = item.draggingProps) == null ? void 0 : _item$draggingProps.dragAxis);
|
|
148
|
+
if (dragAxis === undefined) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
var prev = _extends({}, editingCell);
|
|
152
|
+
var x = dragAxis === "y" ? 0 : roundToZero((prev.lastX - data.lastX) / cellWidth);
|
|
153
|
+
var y = dragAxis === "x" ? 0 : roundToZero((prev.y - data.y) / cellHeight);
|
|
154
|
+
if (x !== 0 || y !== 0) {
|
|
155
|
+
var _columns, _groups2;
|
|
156
|
+
var date = (_columns = columns[prev.columnIndex - x]) == null ? void 0 : _columns.date;
|
|
157
|
+
var group = (_groups2 = groups[prev.rowIndex - y]) == null ? void 0 : _groups2.id;
|
|
158
|
+
var diff = dayjs(date).diff(dayjsRemovedTime(item.start), "date");
|
|
159
|
+
if (date !== undefined && group !== undefined) {
|
|
160
|
+
var targetItem = _extends({}, item, {
|
|
161
|
+
group,
|
|
162
|
+
start: addDate(item.start, diff),
|
|
163
|
+
end: addDate(item.end, diff)
|
|
164
|
+
});
|
|
165
|
+
var copy = items.slice();
|
|
166
|
+
copy[itemIndex] = targetItem;
|
|
167
|
+
onDragItem(copy, _extends({}, targetItem, {
|
|
168
|
+
itemIndex
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
setDragging(false);
|
|
173
|
+
}
|
|
174
|
+
}, [cellHeight, cellWidth, columns, draggingProps, editingCell, groups, items, onDragItem]);
|
|
175
|
+
var handleResizeStop = useCallback((event, direction, ref, delta) => {
|
|
176
|
+
if (onResizeItem) {
|
|
177
|
+
var itemIndex = parseInt(ref.dataset.itemIndex, 10);
|
|
178
|
+
var copy = items.slice();
|
|
179
|
+
var item = copy[itemIndex];
|
|
180
|
+
if (direction === "left") {
|
|
181
|
+
var start = dayjs(item.start).add(roundToZero(-delta.width / cellWidth), "day").toDate();
|
|
182
|
+
copy[itemIndex] = _extends({}, item, {
|
|
183
|
+
start
|
|
184
|
+
});
|
|
185
|
+
onResizeItem(copy, {
|
|
186
|
+
itemIndex,
|
|
187
|
+
group: item.group,
|
|
188
|
+
start,
|
|
189
|
+
end: item.end
|
|
190
|
+
});
|
|
191
|
+
} else if (direction === "right") {
|
|
192
|
+
var end = dayjs(item.end).add(roundToZero(delta.width / cellWidth), "day").toDate();
|
|
193
|
+
copy[itemIndex] = _extends({}, item, {
|
|
194
|
+
end
|
|
195
|
+
});
|
|
196
|
+
onResizeItem(copy, {
|
|
197
|
+
itemIndex,
|
|
198
|
+
group: item.group,
|
|
199
|
+
start: item.start,
|
|
200
|
+
end
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}, [cellWidth, items, onResizeItem]);
|
|
205
|
+
var handleScroll = useCallback(props => {
|
|
206
|
+
if (onScroll) {
|
|
207
|
+
onScroll(columns[roundToZero(props.scrollLeft / cellWidth)].date);
|
|
208
|
+
}
|
|
209
|
+
}, [cellWidth, columns, onScroll]);
|
|
210
|
+
var itemData = useMemo(() => {
|
|
211
|
+
return {
|
|
212
|
+
makeHandleClick: onClickCell ? _ref2 => {
|
|
213
|
+
var {
|
|
214
|
+
rowIndex,
|
|
215
|
+
columnIndex
|
|
216
|
+
} = _ref2;
|
|
217
|
+
return event => {
|
|
218
|
+
var group = groups[rowIndex];
|
|
219
|
+
var column = columns[columnIndex];
|
|
220
|
+
onClickCell({
|
|
221
|
+
column,
|
|
222
|
+
group: _extends({}, group, {
|
|
223
|
+
index: rowIndex
|
|
224
|
+
})
|
|
225
|
+
}, event);
|
|
226
|
+
};
|
|
227
|
+
} : undefined,
|
|
228
|
+
groups,
|
|
229
|
+
columns,
|
|
230
|
+
defaultStyles: defaultCellStyles
|
|
231
|
+
};
|
|
232
|
+
}, [columns, groups, onClickCell]);
|
|
233
|
+
return ___EmotionJSX(CalendarTimelineContext.Provider, {
|
|
234
|
+
value: {
|
|
235
|
+
columns,
|
|
236
|
+
items,
|
|
237
|
+
groups,
|
|
238
|
+
renderDate,
|
|
239
|
+
title,
|
|
240
|
+
editingCell,
|
|
241
|
+
renderGroup,
|
|
242
|
+
cellHeight,
|
|
243
|
+
cellWidth,
|
|
244
|
+
groupWidth,
|
|
245
|
+
dateHeight,
|
|
246
|
+
draggingProps,
|
|
247
|
+
itemProps
|
|
248
|
+
}
|
|
249
|
+
}, ___EmotionJSX(ItemWrapperContext.Provider, {
|
|
250
|
+
value: {
|
|
251
|
+
cellHeight,
|
|
252
|
+
cellWidth,
|
|
253
|
+
handleDragStart,
|
|
254
|
+
handleDragStop,
|
|
255
|
+
handleResizeStop: onResizeItem ? handleResizeStop : undefined,
|
|
256
|
+
renderItem
|
|
257
|
+
}
|
|
258
|
+
}, ___EmotionJSX("div", {
|
|
259
|
+
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9DYWxlbmRhclRpbWVsaW5lLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzZWtCIiwiZmlsZSI6Ii4uLy4uL3NyYy9DYWxlbmRhclRpbWVsaW5lLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENUQ2xpY2tDZWxsQ2FsbGJhY2ssXG4gIENURHJhZ0l0ZW1DYWxsYmFjayxcbiAgQ1REcmFnZ2luZ1Byb3BzLFxuICBDVEdyb3VwLFxuICBDVEl0ZW0sXG4gIENUSXRlbVByb3BzLFxuICBDVFJlbmRlckRhdGUsXG4gIENUUmVuZGVyR3JvdXAsXG4gIENUUmVuZGVySXRlbSxcbiAgQ1RSZXNpemVJdGVtQ2FsbGJhY2ssXG4gIENUU2Nyb2xsQ2FsbGJhY2ssXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBDYWxlbmRhclRpbWVsaW5lQ29udGV4dCwgSW5uZXJFbGVtZW50IH0gZnJvbSBcIi4vSW5uZXJFbGVtZW50XCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMsIENlbGwgYXMgRGVmYXVsdENlbGwsIGRlZmF1bHRDZWxsU3R5bGVzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuaW1wb3J0IHsgRGVmYXVsdERhdGUsIERlZmF1bHRHcm91cCwgRGVmYXVsdEl0ZW0gfSBmcm9tIFwiLi9EZWZhdWx0Q29tcG9uZW50c1wiO1xuaW1wb3J0IHsgRHJhZ2dhYmxlRGF0YSwgUm5kRHJhZ0NhbGxiYWNrLCBSbmRSZXNpemVDYWxsYmFjayB9IGZyb20gXCJyZWFjdC1ybmRcIjtcbmltcG9ydCB7XG4gIEZpeGVkU2l6ZUdyaWQsXG4gIEZpeGVkU2l6ZUdyaWRQcm9wcyxcbiAgR3JpZE9uU2Nyb2xsUHJvcHMsXG59IGZyb20gXCJyZWFjdC13aW5kb3dcIjtcbmltcG9ydCB7IEl0ZW1XcmFwcGVyQ29udGV4dCB9IGZyb20gXCIuL0l0ZW1XcmFwcGVyXCI7XG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7IHJvdW5kVG9aZXJvIH0gZnJvbSBcIi4vcm91bmRUb1plcm9cIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcblxuY29uc3QgR3JpZCA9IEZpeGVkU2l6ZUdyaWQgYXMgdW5rbm93biBhcyAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByb3BzOiBGaXhlZFNpemVHcmlkUHJvcHM8YW55PiAmIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNoaWxkcmVuPzogYW55O1xuICB9XG4pID0+IEpTWC5FbGVtZW50O1xuY29uc3QgYWRkRGF0ZSA9IChwcmV2OiBEYXRlLCBhZGQ6IG51bWJlcikgPT4ge1xuICByZXR1cm4gZGF5anMocHJldilcbiAgICAuY2xvbmUoKVxuICAgIC5hZGQoYWRkLCBcImRcIilcbiAgICAuc2V0KFwiaG91clwiLCBkYXlqcyhwcmV2KS5ob3VyKCkpXG4gICAgLnRvRGF0ZSgpO1xufTtcblxuY29uc3QgZGF5anNSZW1vdmVkVGltZSA9IChkYXRlOiBkYXlqcy5Db25maWdUeXBlKSA9PlxuICBkYXlqcyhkYXlqcyhkYXRlKS5mb3JtYXQoXCJZWVlZTU1ERFwiKSk7XG5cbmV4cG9ydCB0eXBlIENUQ2VsbFByb3BzID0gQ2VsbFByb3BzO1xuZXhwb3J0IHR5cGUgQ1RSZW5kZXJDZWxsID0gKHByb3BzOiBDVENlbGxQcm9wcykgPT4gSlNYLkVsZW1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJUaW1lbGluZVByb3BzIHtcbiAgLyoqXG4gICAqIENlbGzjgpLjganjga7jgojjgYbjgavmj4/nlLvjgZnjgovjgYvjgpLmjIflrprjgZfjgb7jgZnjgIJcbiAgICogQ2VsbFByb3BzLmRhdGHjgYvjgolncm91cHPjgoTml6Xku5jjga7mg4XloLHjgYzlj5bjgozjgovjga7jgafoh6rliY3jgadDb250ZXh044Gq44Gp44KS55So5oSP44GZ44KL5b+F6KaB44Gv44GC44KK44G+44Gb44KT44CCXG4gICAqIOazqOaEj++8mkNlbGxQcm9wcy5zdHlsZeOCkuW/heOBmuOCs+ODs+ODneODvOODjeODs+ODiOOBq+a4oeOBl+OBpuOBj+OBoOOBleOBhOOAglxuICAgKi9cbiAgcmVuZGVyQ2VsbD86IENUUmVuZGVyQ2VsbDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIFVzZSBDYWxlbmRhclRpbWVsaW5lUHJvcHMucmVuZGVyQ2VsbCBpbnN0ZWFkLlxuICAgKlxuICAgKiBDZWxs44GM44Kv44Oq44OD44Kv44GV44KM44Gf44Go44GN44Gr5ZG844Gw44KM44G+44GZ44CC44Kv44Oq44OD44Kv44GV44KM44GfQ2VsbOOCkueJueWumuOBp+OBjeOCi+aDheWgseOCkui/lOOBl+OBvuOBmeOAglxuICAgKi9cbiAgb25DbGlja0NlbGw/OiBDVENsaWNrQ2VsbENhbGxiYWNrO1xuICAvKipcbiAgICog6KGo56S644Gn44GN44KL5pel5LuY44Gu56+E5Zuy44KS5oyH5a6a44GX44G+44GZ44CCXG4gICAqIEBwYXJhbSBhY3RpdmVNb250aENvdW50IOacieWKueOBquaciOaVsOOCkuaMh+WumuOBl+OBvuOBmeOAguaMh+WumuOBjOOBquOBhOWgtOWQiOOAgTI044Gr44Gq44KK44G+44GZ44CC44GT44GT44Gn5oyH5a6a44GV44KM44Gf5YCk44Gv6Kq/5pW05riI44G/44GuZGF0ZeOCkuS4reW/g+OBq+S4oeWBtOOBq+Wdh+etieOBq+WJsuOCiuaMr+OCieOCjOOBvuOBmeOAguOBpOOBvuOCijI044Gu5aC05ZCI44CB5Y675bm044Go5p2l5bm044Gu5ZCM5pel44G+44Gn6Zay6Kan44Gn44GN44KL44KI44GG44Gr44Gq44KK44G+44GZ44CCXG4gICAqIEBwYXJhbSBzdGFydCDmnInlirnnr4Tlm7Ljga7mnIDlsI/lgKTjgajjgarjgovml6Xku5jjgpLmjIflrprjgZfjgb7jgZnjgIJhY3RpdmVNb250aENvdW5044GM44GC44KL5aC05ZCI44CB6Kit5a6a44Gn44GN44G+44Gb44KT44CCXG4gICAqIEBwYXJhbSBlbmQg5pyJ5Yq556+E5Zuy44Gu5pyA5aSn5YCk44Go44Gq44KL5pel5LuY44KS5oyH5a6a44GX44G+44GZ44CCc3RhcnTjgajlkIzmp5jjgavml6Xku5jjga7oqr/mlbTjga/ooYzjgo/jgozjgb7jgZvjgpPjgIJhY3RpdmVNb250aENvdW5044GM44GC44KL5aC05ZCI44CB6Kit5a6a44Gn44GN44G+44Gb44KT44CCXG4gICAqIEBwYXJhbSBkYXRlIERhdGXjgb7jgZ/jga/ml6Xku5jjgpLooajjgZlzdHJpbmfjgpLmjIflrprjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiAgICog44CQYWN0aXZlTW9udGhDb3VudOOBjOioreWumuOBleOCjOOBpuOBhOOCi+WgtOWQiFxi44CR77ya5oyH5a6a44GM44Gq44GE5aC05ZCI44CBbmV3IERhdGUoKeebuOW9k+OBruWApOOBjOWFpeOCiuOBvuOBmeOAgmRhdGXjga7mjIflrprjgZfjgZ/ml6Xku5jjgYzmnIDliJ3jgYvjgonnlLvpnaLku5jov5HjgavlhaXjgovjgojjgYbjgavoh6rli5Xjgacx5pel44G+44Gf44GvMTXml6Xoqr/mlbTjgZXjgozjgb7jgZnjgIJcbiAgICog44CQYWN0aXZlTW9udGhDb3VudOOBjOioreWumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOAke+8muaMh+WumuOBjOOBquOBhOWgtOWQiOOAgXN0YXJ044Go5ZCM44GY5YCk44GM5YWl44KK44G+44GZ44CC44OR44K/44O844OzMeOBqOOBr+eVsOOBquOCiuOAgeaXpeS7mOOBruiqv+aVtOOBjOihjOOCj+OCjOOBvuOBm+OCk+OAglxuICAgKi9cbiAgdmlzaWJsZURhdGVzPzpcbiAgICB8IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWfuuekjuOBqOOBquOCi+aXpeS7mOOBp+OBmeOAglxuICAgICAgICAgKiBAZGVmYXVsdCBcIm5ldyBEYXRlKClcIlxuICAgICAgICAgKi9cbiAgICAgICAgZGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDooajnpLrjgafjgY3jgovmnIjmlbDjgILnj77lnKjjga7mg7Plrprjgafjga/kuK3lv4Pjgajjgarjgovml6Xku5jjgYvjgonlt6blj7PjgavlnYfnrYnjgavlibLjgormjK/jgonjgozjgb7jgZnjgIJcbiAgICAgICAgICogQGRlZmF1bHQgMjRcbiAgICAgICAgICovXG4gICAgICAgIGFjdGl2ZU1vbnRoQ291bnQ/OiBudW1iZXI7XG4gICAgICAgIHN0YXJ0PzogbmV2ZXI7XG4gICAgICAgIGVuZD86IG5ldmVyO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICAvKipcbiAgICAgICAgICog6ZaL5aeL5pelXG4gICAgICAgICAqIEBmb3JtYXQgXCJZWVlZLU1NLUREXCJcbiAgICAgICAgICovXG4gICAgICAgIHN0YXJ0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICog57WC5LqG5pelXG4gICAgICAgICAqIEBmb3JtYXQgXCJZWVlZLU1NLUREXCJcbiAgICAgICAgICovXG4gICAgICAgIGVuZDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWfuuekjuOBqOOBquOCi+aXpeS7mOOBp+OBmeOAglxuICAgICAgICAgKi9cbiAgICAgICAgZGF0ZT86IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIGFjdGl2ZU1vbnRoQ291bnQ/OiBuZXZlcjtcbiAgICAgIH07XG4gIC8qKlxuICAgKiDlt6bkuIrjgavooajnpLrjgZXjgozjgovmloflrZfliJfjgafjgZnjgIJcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nIHwgKCgpID0+IEpTWC5FbGVtZW50KTtcbiAgLyoqXG4gICAqIOe4puaWueWQkeOBrumgheebruWQjeOBq+S9v+eUqOOBleOCjOOAgeW3puWBtOOBq+ihqOekuuOBleOCjOOBvuOBmeOAglxuICAgKiBAcGFyYW0gdGl0bGUg5Lu75oSP44Gu5paH5a2X5YiX44KS5rih44GX44G+44GZXG4gICAqIEBwYXJhbSBpZCDku7vmhI/jga7mloflrZfliJfjgb7jgZ/jga/mlbDlgKTjgILjgZPjgZPjgafmjIflrprjgZfjgZ9pZOOBr2l0ZW1z5Y+K44GzZ3JvdXDjgrPjg7Pjg53jg7zjg43jg7Pjg4jjga5rZXnjgajjgZfjgabliKnnlKjjgZXjgozjgovjgZ/jgoHjgIHjg6bjg4vjg7zjgq/jgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIJcbiAgICovXG4gIGdyb3Vwcz86IENUR3JvdXBbXTtcbiAgLyoqXG4gICAqIGdyb3Vwc+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/OiBudW1iZXI7XG4gIGNlbGxXaWR0aD86IG51bWJlcjtcbiAgY2VsbEhlaWdodD86IG51bWJlcjtcbiAgZGF0ZUhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyVGltZWxpbmUgPSAoe1xuICBncm91cHM6IF9ncm91cHMsXG4gIGl0ZW1zLFxuICB0aXRsZSxcbiAgb25EcmFnSXRlbSxcbiAgcmVuZGVyRGF0ZSA9IERlZmF1bHREYXRlLFxuICByZW5kZXJJdGVtID0gRGVmYXVsdEl0ZW0sXG4gIHJlbmRlckdyb3VwID0gRGVmYXVsdEdyb3VwLFxuICByZW5kZXJDZWxsID0gRGVmYXVsdENlbGwgYXMgQ1RSZW5kZXJDZWxsLFxuICBvdmVyc2NhbkNvbHVtbkNvdW50OiBkZWZhdWx0T3ZlcnNjYW5Db2x1bW5Db3VudCA9IDEwLFxuICBvdmVyc2NhblJvd0NvdW50OiBkZWZhdWx0T3ZlcnNjYW5Sb3dDb3VudCA9IDEwLFxuICBvblNjcm9sbCxcbiAgb25SZXNpemVJdGVtLFxuICBjZWxsV2lkdGggPSA2NCxcbiAgY2VsbEhlaWdodCA9IDI3LFxuICBncm91cFdpZHRoID0gMjMwLFxuICBkYXRlSGVpZ2h0ID0gNjQsXG4gIGRyYWdnaW5nUHJvcHMsXG4gIGl0ZW1Qcm9wcyxcbiAgdmlzaWJsZUNvbHVtbkNvdW50ID0gMjAsXG4gIHZpc2libGVSb3dDb3VudCA9IDIwLFxuICBvbkNsaWNrQ2VsbCxcbiAgdmlzaWJsZURhdGVzLFxufTogQ2FsZW5kYXJUaW1lbGluZVByb3BzKSA9PiB7XG4gIGNvbnN0IGdyb3VwcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChfZ3JvdXBzICYmIF9ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIF9ncm91cHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB2aXNpYmxlUm93Q291bnQgfSkubWFwKChfLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IGBfX0RVTU1ZX0dST1VQXyR7aX1fX2AsXG4gICAgICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtfZ3JvdXBzLCB2aXNpYmxlUm93Q291bnRdKTtcbiAgY29uc3Qgcm93Q291bnQgPSB1c2VNZW1vKCgpID0+IGdyb3Vwcy5sZW5ndGgsIFtncm91cHNdKTtcblxuICBjb25zdCBjb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHZpc2libGVEYXRlcz8uc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbGVuZ3RoID1cbiAgICAgICAgZGF5anModmlzaWJsZURhdGVzLmVuZCkuZGlmZih2aXNpYmxlRGF0ZXMuc3RhcnQsIFwiZGF5XCIpICsgMTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGRheWpzKHZpc2libGVEYXRlcy5zdGFydCk7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aCB9KS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHN0YXJ0RGF0ZS5jbG9uZSgpLmFkZChpLCBcImRheVwiKTtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5kYXRlKCk7XG4gICAgICAgIGNvbnN0IHdlZWtkYXkgPSBkYXRlLmRheSgpO1xuICAgICAgICBjb25zdCBtb250aCA9IGRhdGUubW9udGgoKTtcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGUueWVhcigpO1xuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXG4gICAgICAgICAgd2Vla2RheSxcbiAgICAgICAgICBkYXksXG4gICAgICAgICAgbW9udGgsXG4gICAgICAgICAgeWVhcixcbiAgICAgICAgICBkYXRlU3RyaW5nLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFjdGl2ZU1vbnRoQ291bnQgPSB2aXNpYmxlRGF0ZXM/LmFjdGl2ZU1vbnRoQ291bnQgPz8gMjQ7XG4gICAgICBjb25zdCBkYXRlID0gdmlzaWJsZURhdGVzPy5kYXRlID8/IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBiYXNlRGF0ZSA9IGRheWpzKGRheWpzKGRhdGUpLmZvcm1hdChcIllZWVlNTUREXCIpKTtcbiAgICAgIGNvbnN0IGJhc2VEYXkgPSBiYXNlRGF0ZS5kYXRlKCkgPiAxNSA/IDE0IDogMTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGJhc2VEYXRlXG4gICAgICAgIC5hZGQoTWF0aC5jZWlsKC1hY3RpdmVNb250aENvdW50IC8gMiksIFwibW9udGhcIilcbiAgICAgICAgLnNldChcImRhdGVcIiwgYmFzZURheSk7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogYWN0aXZlTW9udGhDb3VudCB9KVxuICAgICAgICAubWFwKChfLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF5T2ZTdGFydE1vbnRoID0gc3RhcnREYXRlLmNsb25lKCkuYWRkKGksIFwibW9udGhcIik7XG4gICAgICAgICAgY29uc3QgZGF5c0luTW9udGggPSBkYXlPZlN0YXJ0TW9udGguZGF5c0luTW9udGgoKTtcbiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogZGF5c0luTW9udGggfSkubWFwKChfLCBqKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gZGF5T2ZTdGFydE1vbnRoLmNsb25lKCkuYWRkKGosIFwiZGF5XCIpO1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5kYXRlKCk7XG4gICAgICAgICAgICBjb25zdCB3ZWVrZGF5ID0gZGF0ZS5kYXkoKTtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5tb250aCgpO1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IGRhdGUueWVhcigpO1xuICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXG4gICAgICAgICAgICAgIHdlZWtkYXksXG4gICAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICAgIHllYXIsXG4gICAgICAgICAgICAgIGRhdGVTdHJpbmcsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuZmxhdCgpO1xuICAgIH1cbiAgfSwgW3Zpc2libGVEYXRlc10pO1xuXG4gIGNvbnN0IGNvbHVtbkNvdW50ID0gdXNlTWVtbygoKSA9PiBjb2x1bW5zLmxlbmd0aCwgW2NvbHVtbnNdKTtcblxuICBjb25zdCBpbml0aWFsU2Nyb2xsTGVmdCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICh2aXNpYmxlRGF0ZXM/LnN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAodmlzaWJsZURhdGVzPy5hY3RpdmVNb250aENvdW50ID8/IDI0KSAlIDIgPT09IDBcbiAgICAgICAgPyAoY29sdW1uQ291bnQgLyAyKSAqIGNlbGxXaWR0aFxuICAgICAgICA6IChjb2x1bW5Db3VudCAvIDIgLSAxNSkgKiBjZWxsV2lkdGg7XG4gICAgfVxuICAgIHJldHVybiB2aXNpYmxlRGF0ZXM/LmRhdGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyBkYXlqcyh2aXNpYmxlRGF0ZXMuZGF0ZSkuZGlmZih2aXNpYmxlRGF0ZXM/LnN0YXJ0LCBcImRheVwiKSAqIGNlbGxXaWR0aFxuICAgICAgOiAwO1xuICB9LCBbY2VsbFdpZHRoLCBjb2x1bW5Db3VudCwgdmlzaWJsZURhdGVzXSk7XG5cbiAgY29uc3QgW2VkaXRpbmdDZWxsLCBzZXRFZGl0aW5nQ2VsbF0gPSB1c2VTdGF0ZTxcbiAgICBQYXJ0aWFsPERyYWdnYWJsZURhdGE+ICYge1xuICAgICAgY29sdW1uSW5kZXg6IG51bWJlcjtcbiAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgICB4OiBudW1iZXI7XG4gICAgICB5OiBudW1iZXI7XG4gICAgICBsYXN0WDogbnVtYmVyO1xuICAgICAgbGFzdFk6IG51bWJlcjtcbiAgICB9XG4gID4oe1xuICAgIHg6IC0xLFxuICAgIHk6IC0xLFxuICAgIGxhc3RYOiAtMSxcbiAgICBsYXN0WTogLTEsXG4gICAgY29sdW1uSW5kZXg6IC0xLFxuICAgIHJvd0luZGV4OiAtMSxcbiAgfSk7XG4gIGNvbnN0IFtkcmFnZ2luZywgc2V0RHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQ6IFJuZERyYWdDYWxsYmFjayA9IHVzZUNhbGxiYWNrKChldmVudCwgZGF0YSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gcGFyc2VJbnQoZGF0YS5ub2RlLmRhdGFzZXQuY29sdW1uSW5kZXggYXMgc3RyaW5nLCAxMCk7XG4gICAgY29uc3Qgcm93SW5kZXggPSBwYXJzZUludChkYXRhLm5vZGUuZGF0YXNldC5yb3dJbmRleCBhcyBzdHJpbmcsIDEwKTtcbiAgICBkYXRhLm5vZGUuc3R5bGUuZmlsdGVyID0gXCJvcGFjaXR5KDEwMCUpXCI7XG4gICAgZGF0YS5ub2RlLnN0eWxlLnpJbmRleCA9IFwiMVwiO1xuICAgIHNldEVkaXRpbmdDZWxsKHtcbiAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgcm93SW5kZXgsXG4gICAgICAuLi5kYXRhLFxuICAgIH0pO1xuICAgIHNldERyYWdnaW5nKHRydWUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGhhbmRsZURyYWdTdG9wOiBSbmREcmFnQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQsIGRhdGEpID0+IHtcbiAgICAgIGRhdGEubm9kZS5zdHlsZS5maWx0ZXIgPSBcIlwiO1xuICAgICAgZGF0YS5ub2RlLnN0eWxlLnpJbmRleCA9IFwiMFwiO1xuICAgICAgaWYgKG9uRHJhZ0l0ZW0pIHtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gcGFyc2VJbnQoZGF0YS5ub2RlLmRhdGFzZXQuaXRlbUluZGV4IGFzIHN0cmluZywgMTApO1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaXRlbUluZGV4XTtcblxuICAgICAgICBjb25zdCBkcmFnQXhpcyA9XG4gICAgICAgICAgZHJhZ2dpbmdQcm9wcz8uZHJhZ0F4aXMgfHwgaXRlbS5kcmFnZ2luZ1Byb3BzPy5kcmFnQXhpcztcbiAgICAgICAgaWYgKGRyYWdBeGlzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldiA9IHsgLi4uZWRpdGluZ0NlbGwgfTtcbiAgICAgICAgY29uc3QgeCA9XG4gICAgICAgICAgZHJhZ0F4aXMgPT09IFwieVwiXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcm91bmRUb1plcm8oKHByZXYubGFzdFggLSBkYXRhLmxhc3RYKSAvIGNlbGxXaWR0aCk7XG4gICAgICAgIGNvbnN0IHkgPVxuICAgICAgICAgIGRyYWdBeGlzID09PSBcInhcIiA/IDAgOiByb3VuZFRvWmVybygocHJldi55IC0gZGF0YS55KSAvIGNlbGxIZWlnaHQpO1xuICAgICAgICBpZiAoeCAhPT0gMCB8fCB5ICE9PSAwKSB7XG4gICAgICAgICAgY29uc3QgZGF0ZSA9IGNvbHVtbnNbcHJldi5jb2x1bW5JbmRleCAtIHhdPy5kYXRlO1xuICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzW3ByZXYucm93SW5kZXggLSB5XT8uaWQ7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IGRheWpzKGRhdGUpLmRpZmYoZGF5anNSZW1vdmVkVGltZShpdGVtLnN0YXJ0KSwgXCJkYXRlXCIpO1xuXG4gICAgICAgICAgaWYgKGRhdGUgIT09IHVuZGVmaW5lZCAmJiBncm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRJdGVtID0ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBncm91cCxcbiAgICAgICAgICAgICAgc3RhcnQ6IGFkZERhdGUoaXRlbS5zdGFydCwgZGlmZiksXG4gICAgICAgICAgICAgIGVuZDogYWRkRGF0ZShpdGVtLmVuZCwgZGlmZiksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY29weSA9IGl0ZW1zLnNsaWNlKCk7XG4gICAgICAgICAgICBjb3B5W2l0ZW1JbmRleF0gPSB0YXJnZXRJdGVtO1xuICAgICAgICAgICAgb25EcmFnSXRlbShjb3B5LCB7IC4uLnRhcmdldEl0ZW0sIGl0ZW1JbmRleCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0RHJhZ2dpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgY2VsbEhlaWdodCxcbiAgICAgIGNlbGxXaWR0aCxcbiAgICAgIGNvbHVtbnMsXG4gICAgICBkcmFnZ2luZ1Byb3BzLFxuICAgICAgZWRpdGluZ0NlbGwsXG4gICAgICBncm91cHMsXG4gICAgICBpdGVtcyxcbiAgICAgIG9uRHJhZ0l0ZW0sXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVSZXNpemVTdG9wOiBSbmRSZXNpemVDYWxsYmFjayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCwgZGlyZWN0aW9uLCByZWYsIGRlbHRhKSA9PiB7XG4gICAgICBpZiAob25SZXNpemVJdGVtKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHBhcnNlSW50KHJlZi5kYXRhc2V0Lml0ZW1JbmRleCBhcyBzdHJpbmcsIDEwKTtcbiAgICAgICAgY29uc3QgY29weSA9IGl0ZW1zLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjb3B5W2l0ZW1JbmRleF07XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBkYXlqcyhpdGVtLnN0YXJ0KVxuICAgICAgICAgICAgLmFkZChyb3VuZFRvWmVybygtZGVsdGEud2lkdGggLyBjZWxsV2lkdGgpLCBcImRheVwiKVxuICAgICAgICAgICAgLnRvRGF0ZSgpO1xuICAgICAgICAgIGNvcHlbaXRlbUluZGV4XSA9IHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIG9uUmVzaXplSXRlbShjb3B5LCB7XG4gICAgICAgICAgICBpdGVtSW5kZXgsXG4gICAgICAgICAgICBncm91cDogaXRlbS5ncm91cCxcbiAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBpdGVtLmVuZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwicmlnaHRcIikge1xuICAgICAgICAgIGNvbnN0IGVuZCA9IGRheWpzKGl0ZW0uZW5kKVxuICAgICAgICAgICAgLmFkZChyb3VuZFRvWmVybyhkZWx0YS53aWR0aCAvIGNlbGxXaWR0aCksIFwiZGF5XCIpXG4gICAgICAgICAgICAudG9EYXRlKCk7XG4gICAgICAgICAgY29weVtpdGVtSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGVuZCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIG9uUmVzaXplSXRlbShjb3B5LCB7XG4gICAgICAgICAgICBpdGVtSW5kZXgsXG4gICAgICAgICAgICBncm91cDogaXRlbS5ncm91cCxcbiAgICAgICAgICAgIHN0YXJ0OiBpdGVtLnN0YXJ0LFxuICAgICAgICAgICAgZW5kLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbY2VsbFdpZHRoLCBpdGVtcywgb25SZXNpemVJdGVtXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgIChwcm9wczogR3JpZE9uU2Nyb2xsUHJvcHMpID0+IHtcbiAgICAgIGlmIChvblNjcm9sbCkge1xuICAgICAgICBvblNjcm9sbChjb2x1bW5zW3JvdW5kVG9aZXJvKHByb3BzLnNjcm9sbExlZnQgLyBjZWxsV2lkdGgpXS5kYXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjZWxsV2lkdGgsIGNvbHVtbnMsIG9uU2Nyb2xsXVxuICApO1xuXG4gIGNvbnN0IGl0ZW1EYXRhOiBDVENlbGxQcm9wc1tcImRhdGFcIl0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFrZUhhbmRsZUNsaWNrOiBvbkNsaWNrQ2VsbFxuICAgICAgICA/ICh7XG4gICAgICAgICAgICByb3dJbmRleCxcbiAgICAgICAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgICAgIH06IHtcbiAgICAgICAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgICAgICAgICBjb2x1bW5JbmRleDogbnVtYmVyO1xuICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBzW3Jvd0luZGV4XTtcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICAgICAgICAgIG9uQ2xpY2tDZWxsKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGdyb3VwOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGdyb3VwcyxcbiAgICAgIGNvbHVtbnMsXG4gICAgICBkZWZhdWx0U3R5bGVzOiBkZWZhdWx0Q2VsbFN0eWxlcyxcbiAgICB9O1xuICB9LCBbY29sdW1ucywgZ3JvdXBzLCBvbkNsaWNrQ2VsbF0pO1xuXG4gIHJldHVybiAoXG4gICAgPENhbGVuZGFyVGltZWxpbmVDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBpdGVtcyxcbiAgICAgICAgZ3JvdXBzLFxuICAgICAgICByZW5kZXJEYXRlLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgZWRpdGluZ0NlbGwsXG4gICAgICAgIHJlbmRlckdyb3VwLFxuICAgICAgICBjZWxsSGVpZ2h0LFxuICAgICAgICBjZWxsV2lkdGgsXG4gICAgICAgIGdyb3VwV2lkdGgsXG4gICAgICAgIGRhdGVIZWlnaHQsXG4gICAgICAgIGRyYWdnaW5nUHJvcHMsXG4gICAgICAgIGl0ZW1Qcm9wcyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPEl0ZW1XcmFwcGVyQ29udGV4dC5Qcm92aWRlclxuICAgICAgICB2YWx1ZT17e1xuICAgICAgICAgIGNlbGxIZWlnaHQsXG4gICAgICAgICAgY2VsbFdpZHRoLFxuICAgICAgICAgIGhhbmRsZURyYWdTdGFydCxcbiAgICAgICAgICBoYW5kbGVEcmFnU3RvcCxcbiAgICAgICAgICBoYW5kbGVSZXNpemVTdG9wOiBvblJlc2l6ZUl0ZW0gPyBoYW5kbGVSZXNpemVTdG9wIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlbmRlckl0ZW0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgJiAuQ2FsZW5kYXJUaW1lbGluZV9fSXRlbSB7XG4gICAgICAgICAgICAgIGZpbHRlcjogb3BhY2l0eSgke2RyYWdnaW5nID8gXCI1MCVcIiA6IFwiMTAwJVwifSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiQ2FsZW5kYXJUaW1lbGluZV9fTWFpblwiXG4gICAgICAgICAgICBjb2x1bW5Db3VudD17Y29sdW1uQ291bnR9XG4gICAgICAgICAgICBjb2x1bW5XaWR0aD17Y2VsbFdpZHRofVxuICAgICAgICAgICAgaGVpZ2h0PXtjZWxsSGVpZ2h0ICogdmlzaWJsZVJvd0NvdW50ICsgZGF0ZUhlaWdodH1cbiAgICAgICAgICAgIHJvd0NvdW50PXtyb3dDb3VudH1cbiAgICAgICAgICAgIHJvd0hlaWdodD17Y2VsbEhlaWdodH1cbiAgICAgICAgICAgIHdpZHRoPXtjZWxsV2lkdGggKiB2aXNpYmxlQ29sdW1uQ291bnQgKyBncm91cFdpZHRofVxuICAgICAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudD17ZGVmYXVsdE92ZXJzY2FuQ29sdW1uQ291bnR9XG4gICAgICAgICAgICBvdmVyc2NhblJvd0NvdW50PXtkZWZhdWx0T3ZlcnNjYW5Sb3dDb3VudH1cbiAgICAgICAgICAgIGluaXRpYWxTY3JvbGxMZWZ0PXtpbml0aWFsU2Nyb2xsTGVmdH1cbiAgICAgICAgICAgIGlubmVyRWxlbWVudFR5cGU9e0lubmVyRWxlbWVudH1cbiAgICAgICAgICAgIGl0ZW1EYXRhPXtpdGVtRGF0YX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVyQ2VsbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9JdGVtV3JhcHBlckNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DYWxlbmRhclRpbWVsaW5lQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0= */")
|
|
260
|
+
}, ___EmotionJSX(Grid, {
|
|
261
|
+
onScroll: handleScroll,
|
|
262
|
+
className: "CalendarTimeline__Main",
|
|
263
|
+
columnCount: columnCount,
|
|
264
|
+
columnWidth: cellWidth,
|
|
265
|
+
height: cellHeight * visibleRowCount + dateHeight,
|
|
266
|
+
rowCount: rowCount,
|
|
267
|
+
rowHeight: cellHeight,
|
|
268
|
+
width: cellWidth * visibleColumnCount + groupWidth,
|
|
269
|
+
overscanColumnCount: defaultOverscanColumnCount,
|
|
270
|
+
overscanRowCount: defaultOverscanRowCount,
|
|
271
|
+
initialScrollLeft: initialScrollLeft,
|
|
272
|
+
innerElementType: InnerElement,
|
|
273
|
+
itemData: itemData
|
|
274
|
+
}, renderCell))));
|
|
275
|
+
};
|
|
276
|
+
//# sourceMappingURL=CalendarTimeline.js.map
|