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.
Files changed (86) hide show
  1. package/{dist/CalendarTimeline.d.ts → CalendarTimeline.d.ts} +142 -145
  2. package/CalendarTimeline.js +276 -0
  3. package/CalendarTimeline.js.map +1 -0
  4. package/{dist/Cell.d.ts → Cell.d.ts} +29 -30
  5. package/Cell.js +43 -0
  6. package/Cell.js.map +1 -0
  7. package/{dist/DefaultComponents.d.ts → DefaultComponents.d.ts} +4 -5
  8. package/DefaultComponents.js +94 -0
  9. package/DefaultComponents.js.map +1 -0
  10. package/{dist/InnerElement.d.ts → InnerElement.d.ts} +48 -48
  11. package/InnerElement.js +233 -0
  12. package/InnerElement.js.map +1 -0
  13. package/{dist/ItemWrapper.d.ts → ItemWrapper.d.ts} +15 -15
  14. package/ItemWrapper.js +81 -0
  15. package/ItemWrapper.js.map +1 -0
  16. package/README.md +1 -2
  17. package/cjs/CalendarTimeline.js +284 -0
  18. package/cjs/CalendarTimeline.js.map +1 -0
  19. package/cjs/Cell.js +48 -0
  20. package/cjs/Cell.js.map +1 -0
  21. package/cjs/DefaultComponents.js +97 -0
  22. package/cjs/DefaultComponents.js.map +1 -0
  23. package/cjs/InnerElement.js +235 -0
  24. package/cjs/InnerElement.js.map +1 -0
  25. package/cjs/ItemWrapper.js +88 -0
  26. package/cjs/ItemWrapper.js.map +1 -0
  27. package/cjs/getRenderedCursor.js +28 -0
  28. package/cjs/getRenderedCursor.js.map +1 -0
  29. package/cjs/index.js +16 -0
  30. package/cjs/index.js.map +1 -0
  31. package/cjs/indexFor.js +15 -0
  32. package/cjs/indexFor.js.map +1 -0
  33. package/cjs/roundToZero.js +9 -0
  34. package/cjs/roundToZero.js.map +1 -0
  35. package/cjs/types.js +4 -0
  36. package/cjs/types.js.map +1 -0
  37. package/esm/CalendarTimeline.js +276 -0
  38. package/esm/CalendarTimeline.js.map +1 -0
  39. package/esm/Cell.js +43 -0
  40. package/esm/Cell.js.map +1 -0
  41. package/esm/DefaultComponents.js +94 -0
  42. package/esm/DefaultComponents.js.map +1 -0
  43. package/esm/InnerElement.js +233 -0
  44. package/esm/InnerElement.js.map +1 -0
  45. package/esm/ItemWrapper.js +81 -0
  46. package/esm/ItemWrapper.js.map +1 -0
  47. package/esm/getRenderedCursor.js +25 -0
  48. package/esm/getRenderedCursor.js.map +1 -0
  49. package/esm/index.js +3 -0
  50. package/esm/index.js.map +1 -0
  51. package/esm/indexFor.js +10 -0
  52. package/esm/indexFor.js.map +1 -0
  53. package/esm/roundToZero.js +4 -0
  54. package/esm/roundToZero.js.map +1 -0
  55. package/esm/types.js +2 -0
  56. package/esm/types.js.map +1 -0
  57. package/{dist/getRenderedCursor.d.ts → getRenderedCursor.d.ts} +4 -4
  58. package/getRenderedCursor.js +25 -0
  59. package/getRenderedCursor.js.map +1 -0
  60. package/{dist/index.d.ts → index.d.ts} +2 -2
  61. package/index.js +3 -0
  62. package/index.js.map +1 -0
  63. package/indexFor.d.ts +1 -0
  64. package/indexFor.js +10 -0
  65. package/indexFor.js.map +1 -0
  66. package/package.json +55 -95
  67. package/{dist/roundToZero.d.ts → roundToZero.d.ts} +1 -1
  68. package/roundToZero.js +4 -0
  69. package/roundToZero.js.map +1 -0
  70. package/types/CalendarTimeline.d.ts +142 -0
  71. package/types/Cell.d.ts +29 -0
  72. package/types/DefaultComponents.d.ts +4 -0
  73. package/types/InnerElement.d.ts +48 -0
  74. package/types/ItemWrapper.d.ts +15 -0
  75. package/types/getRenderedCursor.d.ts +4 -0
  76. package/types/index.d.ts +2 -0
  77. package/types/indexFor.d.ts +1 -0
  78. package/types/roundToZero.d.ts +1 -0
  79. package/types/types.d.ts +101 -0
  80. package/{dist/types.d.ts → types.d.ts} +101 -102
  81. package/types.js +2 -0
  82. package/types.js.map +1 -0
  83. package/CHANGELOG.md +0 -159
  84. package/dist/index.cjs.js +0 -575
  85. package/dist/index.esm.js +0 -566
  86. package/dist/indexFor.d.ts +0 -1
@@ -1,145 +1,142 @@
1
- /** @jsx jsx */
2
- import { CTClickCellCallback, CTDragItemCallback, CTDraggingProps, CTGroup, CTItem, CTItemProps, CTRenderDate, CTRenderGroup, CTRenderItem, CTResizeItemCallback, CTScrollCallback } from "./types";
3
- import { CellProps } from "./Cell";
4
- import React from "react";
5
- export interface CTCellProps extends CellProps {
6
- }
7
- export declare type CTRenderCell = (props: CTCellProps) => JSX.Element;
8
- export interface CalendarTimelineProps {
9
- /**
10
- * Cellをどのように描画するかを指定します。
11
- * CellProps.dataからgroupsや日付の情報が取れるので自前でContextなどを用意する必要はありません。
12
- * 注意:CellProps.styleを必ずコンポーネントに渡してください。
13
- */
14
- renderCell?: CTRenderCell;
15
- /**
16
- * @deprecated
17
- * Use CalendarTimelineProps.renderCell instead.
18
- *
19
- * Cellがクリックされたときに呼ばれます。クリックされたCellを特定できる情報を返します。
20
- */
21
- onClickCell?: CTClickCellCallback;
22
- /**
23
- * 表示できる日付の範囲を指定します。
24
- * @param activeMonthCount 有効な月数を指定します。指定がない場合、24になります。ここで指定された値は調整済みのdateを中心に両側に均等に割り振られます。つまり24の場合、去年と来年の同日まで閲覧できるようになります。
25
- * @param start 有効範囲の最小値となる日付を指定します。activeMonthCountがある場合、設定できません。
26
- * @param end 有効範囲の最大値となる日付を指定します。startと同様に日付の調整は行われません。activeMonthCountがある場合、設定できません。
27
- * @param date Dateまたは日付を表すstringを指定してください。
28
- * 【activeMonthCountが設定されている場合】:指定がない場合、new Date()相当の値が入ります。dateの指定した日付が最初から画面付近に入るように自動で1日または15日調整されます。
29
- * 【activeMonthCountが設定されていない場合】:指定がない場合、startと同じ値が入ります。パターン1とは異なり、日付の調整が行われません。
30
- */
31
- visibleDates?: {
32
- /**
33
- * 基礎となる日付です。
34
- * @default "new Date()"
35
- */
36
- date?: Date | string;
37
- /**
38
- * 表示できる月数。現在の想定では中心となる日付から左右に均等に割り振られます。
39
- * @default 24
40
- */
41
- activeMonthCount?: number;
42
- start?: never;
43
- end?: never;
44
- } | {
45
- /**
46
- * 開始日
47
- * @format "YYYY-MM-DD"
48
- */
49
- start: Date | string;
50
- /**
51
- * 終了日
52
- * @format "YYYY-MM-DD"
53
- */
54
- end: Date | string;
55
- /**
56
- * 基礎となる日付です。
57
- */
58
- date?: Date | string;
59
- activeMonthCount?: never;
60
- };
61
- /**
62
- * 左上に表示される文字列です。
63
- */
64
- title?: string | (() => JSX.Element);
65
- /**
66
- * 縦方向の項目名に使用され、左側に表示されます。
67
- * @param title 任意の文字列を渡します
68
- * @param id 任意の文字列または数値。ここで指定したidはitems及びgroupコンポーネントのkeyとして利用されるため、ユニークである必要があります。
69
- */
70
- groups: CTGroup[];
71
- /**
72
- * groupsで渡された値をどのように描画するかを指定します。groupsで指定したものに加えて、styleが渡されます。
73
- */
74
- renderGroup?: CTRenderGroup;
75
- /**
76
- * 予約などのイベントを表示するためコンポーネントに使用される値を配列で渡します。
77
- * @param title 任意の文字列を渡します。
78
- * @param start 開始日 Dateで時刻を考慮する必要があります。
79
- * @param end 終了日 Dateで時刻を考慮する必要があります。
80
- * @param group groupsで指定されたidを指定します。該当するgroupの行に配置されます。
81
- * @param draggingProps dragAxisでドラッグ方向、disabledでドラッグ可能にするかどうかを指摘できます。
82
- * @param itemProps 任意のHTMLPropsをItemに渡すことができます。
83
- */
84
- items: CTItem[];
85
- /**
86
- * itemsで渡された値をどのように描画するかを指定します。
87
- * @param rowIndex 行番号。groups[rowIndex]で該当するgroupを取得できます。
88
- * @param columnIndex 列番号。用途はほぼないと思います。
89
- * @param itemIndex アイテム番号。items[itemIndex]で該当するitemを取得できます。
90
- * @param title itemsで渡されたtitleです。
91
- */
92
- renderItem?: CTRenderItem;
93
- /**
94
- * itemのドラッグ操作が完了されたときに呼ばれます。
95
- */
96
- onDragItem?: CTDragItemCallback;
97
- /**
98
- * 列番号として使用される日付などの情報をどのように描画するかを指定します。
99
- * @param date Date。移動先の日付です。時間情報は持っていません。
100
- * @param style CSSProperties。必ず渡してください。
101
- */
102
- renderDate?: CTRenderDate;
103
- /**
104
- * 横方向にスクロールした際、先頭の日付を返します。
105
- * 月や年より下の情報がいらない場合は適切に比較処理を行い、無駄な処理が行われないように注意してください。
106
- */
107
- onScroll?: CTScrollCallback;
108
- /**
109
- * itemのリサイズ操作が完了されたときに呼ばれます。
110
- */
111
- onResizeItem?: CTResizeItemCallback;
112
- /**
113
- * 余分に描画される列数を指定します。指定された列数をまたぐItemが存在する場合、位置によっては描画されない場合があります。
114
- * @default 10
115
- */
116
- overscanColumnCount?: number;
117
- /**
118
- * 余分に描画される行数を指定します。指定された行数をまたぐItemが存在する場合、位置によっては描画されない場合があります。
119
- * @default 10
120
- */
121
- overscanRowCount?: number;
122
- /**
123
- * 全てのアイテムのドラッグ方法を一括で指定できます。items propで個別にdraggingPropsで指定を行った場合、重複するものは上書きされます。
124
- */
125
- draggingProps?: CTDraggingProps;
126
- /**
127
- * 表示される行数を指定します。CalendarTimelineの高さはcellHeight * visibleRowCount + dateHeightで決定されます。
128
- * @default 20
129
- */
130
- visibleRowCount?: number;
131
- /**
132
- * 表示される列数を指定します。CalendarTimelineの幅はcellWidth * visibleColumnCount + groupWidthで決定されます。
133
- * @default 20
134
- */
135
- visibleColumnCount?: number;
136
- /**
137
- * 全てのアイテムに渡す任意のPropsを一括で指定できます。items propで個別にitemPropsで指定を行った場合、重複するものは上書きされます。
138
- */
139
- itemProps?: CTItemProps;
140
- groupWidth?: number;
141
- cellWidth?: number;
142
- cellHeight?: number;
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