@evercam/ui 0.0.54-beta.1 → 0.0.55-beta-37

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.
@@ -0,0 +1,7 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, unknown, unknown, {
3
+ separatorStyle: Record<string, any>;
4
+ }, {
5
+ xOffset: string | number;
6
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
7
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
3
+ export default _default;
@@ -0,0 +1,24 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
3
+ showAllContent: boolean;
4
+ }, {
5
+ displayContent(): any;
6
+ displayArrayContent(): any;
7
+ displayTextContent(): any;
8
+ toggleContentExpansion(): void;
9
+ }, {
10
+ hiddenContentLength: number;
11
+ isArrayContent: boolean;
12
+ isHiddenTextContent: boolean;
13
+ isHiddenArrayContent: boolean;
14
+ isContentExpanded: boolean;
15
+ computedMoreText: string;
16
+ }, {
17
+ content: string | unknown[] | (() => null);
18
+ maxLength: number;
19
+ showAll: boolean;
20
+ expandText: string;
21
+ collapseText: string;
22
+ moreTextWithPlaceholder: string;
23
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
24
+ export default _default;
@@ -1,7 +1,7 @@
1
1
  import * as d3 from "d3";
2
2
  import { D3ZoomEvent } from "d3";
3
3
  import Vue from "vue";
4
- import { TimelineAxesConfig, TimelineAxis, TimelineCountEvent, TimelineEvent, TimelineEventsByType, TimelineEventsGroup, TimelineIntervalChangeTrigger, TimelineMarker, TimelinePrecision, TimelineTicksConfig, Timestamp } from '../types';
4
+ import { TimelineAxesConfig, TimelineAxis, TimelineCountEvent, TimelineEvent, TimelineEventsByType, TimelineEventsGroup, TimelineInterval, TimelineIntervalChangeTrigger, TimelineMarker, TimelinePrecision, TimelineTicksConfig, Timestamp } from '../types';
5
5
  declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
6
6
  tooltip: HTMLElement;
7
7
  cursor: HTMLElement;
@@ -60,19 +60,25 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
60
60
  initialMarkerDragMouseOffset: number;
61
61
  selectedMilestoneId: any;
62
62
  isInitialized: boolean;
63
+ lastValidTransform: d3.ZoomTransform;
64
+ lastPanTransform: d3.ZoomTransform;
65
+ isZoomingInterval: boolean;
63
66
  }, {
67
+ updateTimeline(): void;
64
68
  initTimeline(startDate?: string, endDate?: string): void;
65
69
  initRefs(): void;
66
- initSvg(): void;
70
+ initOrUpdateSvg(): void;
67
71
  initDefs(): void;
68
72
  initUtcOffset(): void;
69
73
  initTimeScale(start?: string, end?: string): void;
70
74
  initXAxes(): void;
75
+ updateXAxes(): void;
71
76
  initYScale(): void;
72
77
  updateYScaleDomain(): void;
73
78
  initZoomBehavior(): void;
74
79
  zoomToFitMarkers(): void;
75
- translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
80
+ zoomToTargetInterval(start?: string | number, end?: string | number): void;
81
+ translateIntervalIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
76
82
  initSelectedTimestampCursor(): void;
77
83
  updateMarkers(): void;
78
84
  updateAndRedrawTimeline(): void;
@@ -90,7 +96,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
90
96
  handleResize({ contentRect }: ResizeObserverEntry): void;
91
97
  handleDarkModeChange(): void;
92
98
  handleMouseDown(): void;
93
- handleDocumentMouseUp(): void;
99
+ handleDocumentMouseUp(_e: MouseEvent): void;
94
100
  handleMouseLeave(): void;
95
101
  handleMouseMove(event: MouseEvent): void;
96
102
  handleClick(event: MouseEvent): void;
@@ -101,6 +107,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
101
107
  handleBarMouseOut(): void;
102
108
  handleLabelMouseOver(groupType: string): void;
103
109
  handleLabelMouseLeave(groupType: string): void;
110
+ isZoomAllowed(event: D3ZoomEvent<SVGSVGElement, any>): boolean;
104
111
  handleZoom(event: D3ZoomEvent<SVGSVGElement, any>): void;
105
112
  panToTimestamp(targetTimestamp: string | Date): void;
106
113
  emitCurtainChange(): void;
@@ -123,7 +130,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
123
130
  getEventRectWidth(d: TimelineEvent): number;
124
131
  getEventText(e: TimelineEvent): string;
125
132
  getElementLeftPosition(element: HTMLElement): number;
126
- isTimestampAllowedForMarker(timestamp: any, marker: TimelineMarker): boolean;
133
+ isTimestampAllowedForMarker(timestamp: Date | number, marker: TimelineMarker): boolean;
127
134
  handleMarkerDrag({ marker, markerElement, dragEvent, }: {
128
135
  marker: TimelineMarker;
129
136
  markerElement: d3.Selection<any, TimelineMarker, any, any>;
@@ -132,8 +139,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
132
139
  removeMarkersDragBehavior(): void;
133
140
  initMarkersDragBehavior(): void;
134
141
  initCurtains(): void;
135
- initForbiddenIntervals(): void;
136
- updateForbiddenIntervals(): void;
142
+ createCurtains(): void;
143
+ updateCurtains(): void;
144
+ updateForbiddenIntervals(reset?: boolean): void;
137
145
  drawEventsGroups(): void;
138
146
  drawLineGraphEventsGroups(): void;
139
147
  drawLineGraph({ events, gElement, color, type, }: {
@@ -148,12 +156,13 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
148
156
  color: string;
149
157
  type: string;
150
158
  }): void;
151
- drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
159
+ drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
152
160
  type: string;
153
161
  eventsGroup: TimelineEventsGroup;
154
- index?: number | undefined;
155
162
  milestone?: boolean | undefined;
156
- height?: number | undefined;
163
+ dots?: boolean | undefined;
164
+ dotsSize?: number | undefined;
165
+ bottom?: boolean | undefined;
157
166
  }): void;
158
167
  drawBarEventsGroups(): void;
159
168
  drawMilestonesPlaceholder(): void;
@@ -163,6 +172,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
163
172
  border: string;
164
173
  };
165
174
  getMilestoneGroupYPosition(groupName: string): number;
175
+ getBarGroupYPosition(groupName: string, bottom?: boolean): number;
176
+ getBarGroupHeight(eventsGroup: TimelineEventsGroup): number;
166
177
  updateMilestonesPositions(): void;
167
178
  drawBarChartEventsGroups(): void;
168
179
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -177,12 +188,16 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
177
188
  color: string;
178
189
  height?: number | undefined;
179
190
  }): void;
180
- drawBars({ events, gElement, yPosition, color, type, }: {
191
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
181
192
  events: TimelineEvent[];
182
193
  gElement: d3.Selection<SVGGElement, any, any, any>;
183
194
  yPosition: number;
184
195
  color: string;
185
196
  type: string;
197
+ dots?: boolean | undefined;
198
+ dotsSize?: number | undefined;
199
+ height?: number | undefined;
200
+ barBorderRadius?: number | undefined;
186
201
  }): void;
187
202
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
188
203
  events: TimelineEvent[];
@@ -232,8 +247,16 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
232
247
  count: number;
233
248
  })[];
234
249
  fillEvents(events: TimelineEvent[]): TimelineEvent[];
235
- onMilestoneClick(milestone: TimelineEvent, milestoneType: string): void;
250
+ onMilestoneClick(milestone: TimelineEvent, milestoneType: any): void;
251
+ getSortedEvents(events: TimelineEvent[]): TimelineEvent[];
236
252
  }, {
253
+ combinedBarsHeight: number;
254
+ combinedBottomBarsHeight: number;
255
+ combinedMilestonesHeight: number;
256
+ milestonesYOffset: number;
257
+ chartsYOffset: number;
258
+ barsYOffset: number;
259
+ hasMilestones: boolean;
237
260
  barChartHeight: number;
238
261
  classes: Record<string, string | Record<string, boolean>>;
239
262
  lineGraphGroups: TimelineEventsByType;
@@ -275,6 +298,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
275
298
  barYPadding: number;
276
299
  barXPadding: number;
277
300
  chartMinHeight: number;
301
+ chartMinLabelHeight: number;
278
302
  minZoom: number;
279
303
  maxZoom: number;
280
304
  minDate: string;
@@ -288,8 +312,14 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
288
312
  markers: TimelineMarker[];
289
313
  stickyMarkers: boolean;
290
314
  fitMarkersOnChange: boolean;
291
- fitMarkersTransitionDuration: number;
315
+ zoomToIntervalTransitionDuration: number;
292
316
  zoomToBoundariesTransitionDuration: number;
293
317
  milestoneBulletSize: number;
318
+ milestonesFirst: boolean;
319
+ forbiddenIntervals: TimelineInterval[];
320
+ forbiddenIntervalColor: string;
321
+ focusedInterval: TimelineInterval | undefined;
322
+ locked: boolean;
323
+ timezone: string | undefined;
294
324
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
295
325
  export default _default;
@@ -2,32 +2,54 @@ import Vue from "vue";
2
2
  import { TimelineMilestoneEvent } from '../types';
3
3
  export declare const milestoneClasses: {
4
4
  milestone: string;
5
+ milestoneBullet: string;
6
+ milestoneDot: string;
5
7
  milestoneContent: string;
6
8
  milestoneLine: string;
7
9
  milestonesContainer: string;
8
10
  milestoneHovered: string;
9
11
  milestoneSelected: string;
10
12
  milestoneLabel: string;
13
+ milestoneDotContainer: string;
14
+ milestoneDotLine: string;
15
+ milestoneDotDot: string;
16
+ milestoneDotHovered: string;
11
17
  };
12
18
  declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
13
19
  milestoneClasses: {
14
20
  milestone: string;
21
+ milestoneBullet: string;
22
+ milestoneDot: string;
15
23
  milestoneContent: string;
16
24
  milestoneLine: string;
17
25
  milestonesContainer: string;
18
26
  milestoneHovered: string;
19
27
  milestoneSelected: string;
20
28
  milestoneLabel: string;
29
+ milestoneDotContainer: string;
30
+ milestoneDotLine: string;
31
+ milestoneDotDot: string;
32
+ milestoneDotHovered: string;
21
33
  };
22
34
  timeouts: number[];
35
+ isInitialRender: boolean;
36
+ isMouseOver: boolean;
23
37
  }, {
24
- onMilestoneMouseOver(e: MouseEvent, _milestone: TimelineMilestoneEvent): void;
25
- onMilestoneMouseLeave(e: MouseEvent, _milestone: TimelineMilestoneEvent): void;
38
+ onMilestoneMouseOver(e?: MouseEvent): void;
39
+ onMilestoneMouseMove(): void;
40
+ onMilestoneMouseLeave(e?: MouseEvent): void;
26
41
  onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent): void;
27
42
  }, {
43
+ transitionStyles: Record<string, any>;
44
+ sizeStyles: Record<string, any>;
45
+ positionStyles: Record<string, any>;
28
46
  styles: Record<string, any>;
29
47
  contentStyles: Record<string, any>;
48
+ computedTransitionDuration: number;
30
49
  labelStyles: Record<string, any>;
50
+ dotContainerStyles: Record<string, any>;
51
+ lineStyles: Record<string, any>;
52
+ dotStyles: Record<string, any>;
31
53
  }, {
32
54
  milestone: TimelineMilestoneEvent;
33
55
  size: number;
@@ -35,5 +57,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
35
57
  backgroundColor: string;
36
58
  borderWidth: number;
37
59
  transitionDuration: number;
60
+ dot: boolean;
61
+ dotSize: number;
62
+ lineWidth: number;
63
+ lineHeight: number;
38
64
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
39
65
  export default _default;
@@ -0,0 +1,8 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, unknown, unknown, {
3
+ containerStyle: Record<string, any>;
4
+ }, {
5
+ width: string | number;
6
+ fixedWidth: boolean;
7
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
8
+ export default _default;
@@ -7,6 +7,11 @@ import ECol from './components/ECol.vue';
7
7
  import EVideoPlayer from './components/EVideoPlayer.vue';
8
8
  import ETimeline from './components/ETimeline.vue';
9
9
  import EVideoEmbed from './components/EVideoEmbed.vue';
10
+ import EHeatmapBar from './components/EHeatmapBar.vue';
11
+ import EHoursHeatmap from './components/EHoursHeatmap.vue';
12
+ import EReadMore from './components/EReadMore.vue';
13
+ import ETruncatedDiv from './components/ETruncatedDiv.vue';
14
+ import ECompareSeparator from './components/ECompareSeparator.vue';
10
15
  import { VueConstructor } from "vue";
11
16
  export declare const components: {
12
17
  EAvatar: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, {
@@ -233,19 +238,25 @@ export declare const components: {
233
238
  initialMarkerDragMouseOffset: number;
234
239
  selectedMilestoneId: any;
235
240
  isInitialized: boolean;
241
+ lastValidTransform: import("d3-zoom").ZoomTransform;
242
+ lastPanTransform: import("d3-zoom").ZoomTransform;
243
+ isZoomingInterval: boolean;
236
244
  }, {
245
+ updateTimeline(): void;
237
246
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
238
247
  initRefs(): void;
239
- initSvg(): void;
248
+ initOrUpdateSvg(): void;
240
249
  initDefs(): void;
241
250
  initUtcOffset(): void;
242
251
  initTimeScale(start?: string | undefined, end?: string | undefined): void;
243
252
  initXAxes(): void;
253
+ updateXAxes(): void;
244
254
  initYScale(): void;
245
255
  updateYScaleDomain(): void;
246
256
  initZoomBehavior(): void;
247
257
  zoomToFitMarkers(): void;
248
- translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
258
+ zoomToTargetInterval(start?: string | number | undefined, end?: string | number | undefined): void;
259
+ translateIntervalIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
249
260
  initSelectedTimestampCursor(): void;
250
261
  updateMarkers(): void;
251
262
  updateAndRedrawTimeline(): void;
@@ -263,7 +274,7 @@ export declare const components: {
263
274
  handleResize({ contentRect }: ResizeObserverEntry): void;
264
275
  handleDarkModeChange(): void;
265
276
  handleMouseDown(): void;
266
- handleDocumentMouseUp(): void;
277
+ handleDocumentMouseUp(_e: MouseEvent): void;
267
278
  handleMouseLeave(): void;
268
279
  handleMouseMove(event: MouseEvent): void;
269
280
  handleClick(event: MouseEvent): void;
@@ -274,6 +285,7 @@ export declare const components: {
274
285
  handleBarMouseOut(): void;
275
286
  handleLabelMouseOver(groupType: string): void;
276
287
  handleLabelMouseLeave(groupType: string): void;
288
+ isZoomAllowed(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): boolean;
277
289
  handleZoom(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): void;
278
290
  panToTimestamp(targetTimestamp: string | Date): void;
279
291
  emitCurtainChange(): void;
@@ -296,7 +308,7 @@ export declare const components: {
296
308
  getEventRectWidth(d: import('./types').TimelineEvent): number;
297
309
  getEventText(e: import('./types').TimelineEvent): string;
298
310
  getElementLeftPosition(element: HTMLElement): number;
299
- isTimestampAllowedForMarker(timestamp: any, marker: import('./types').TimelineMarker): boolean;
311
+ isTimestampAllowedForMarker(timestamp: number | Date, marker: import('./types').TimelineMarker): boolean;
300
312
  handleMarkerDrag({ marker, markerElement, dragEvent, }: {
301
313
  marker: import('./types').TimelineMarker;
302
314
  markerElement: import("d3-selection").Selection<any, import('./types').TimelineMarker, any, any>;
@@ -305,8 +317,9 @@ export declare const components: {
305
317
  removeMarkersDragBehavior(): void;
306
318
  initMarkersDragBehavior(): void;
307
319
  initCurtains(): void;
308
- initForbiddenIntervals(): void;
309
- updateForbiddenIntervals(): void;
320
+ createCurtains(): void;
321
+ updateCurtains(): void;
322
+ updateForbiddenIntervals(reset?: boolean): void;
310
323
  drawEventsGroups(): void;
311
324
  drawLineGraphEventsGroups(): void;
312
325
  drawLineGraph({ events, gElement, color, type, }: {
@@ -321,12 +334,13 @@ export declare const components: {
321
334
  color: string;
322
335
  type: string;
323
336
  }): void;
324
- drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
337
+ drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
325
338
  type: string;
326
339
  eventsGroup: import('./types').TimelineEventsGroup;
327
- index?: number | undefined;
328
340
  milestone?: boolean | undefined;
329
- height?: number | undefined;
341
+ dots?: boolean | undefined;
342
+ dotsSize?: number | undefined;
343
+ bottom?: boolean | undefined;
330
344
  }): void;
331
345
  drawBarEventsGroups(): void;
332
346
  drawMilestonesPlaceholder(): void;
@@ -336,6 +350,8 @@ export declare const components: {
336
350
  border: string;
337
351
  };
338
352
  getMilestoneGroupYPosition(groupName: string): number;
353
+ getBarGroupYPosition(groupName: string, bottom?: boolean | undefined): number;
354
+ getBarGroupHeight(eventsGroup: import('./types').TimelineEventsGroup): number;
339
355
  updateMilestonesPositions(): void;
340
356
  drawBarChartEventsGroups(): void;
341
357
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -350,12 +366,16 @@ export declare const components: {
350
366
  color: string;
351
367
  height?: number | undefined;
352
368
  }): void;
353
- drawBars({ events, gElement, yPosition, color, type, }: {
369
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
354
370
  events: import('./types').TimelineEvent[];
355
371
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
356
372
  yPosition: number;
357
373
  color: string;
358
374
  type: string;
375
+ dots?: boolean | undefined;
376
+ dotsSize?: number | undefined;
377
+ height?: number | undefined;
378
+ barBorderRadius?: number | undefined;
359
379
  }): void;
360
380
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
361
381
  events: import('./types').TimelineEvent[];
@@ -405,8 +425,16 @@ export declare const components: {
405
425
  count: number;
406
426
  })[];
407
427
  fillEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
408
- onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: string): void;
428
+ onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: any): void;
429
+ getSortedEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
409
430
  }, {
431
+ combinedBarsHeight: number;
432
+ combinedBottomBarsHeight: number;
433
+ combinedMilestonesHeight: number;
434
+ milestonesYOffset: number;
435
+ chartsYOffset: number;
436
+ barsYOffset: number;
437
+ hasMilestones: boolean;
410
438
  barChartHeight: number;
411
439
  classes: Record<string, string | Record<string, boolean>>;
412
440
  lineGraphGroups: import('./types').TimelineEventsByType;
@@ -448,6 +476,7 @@ export declare const components: {
448
476
  barYPadding: number;
449
477
  barXPadding: number;
450
478
  chartMinHeight: number;
479
+ chartMinLabelHeight: number;
451
480
  minZoom: number;
452
481
  maxZoom: number;
453
482
  minDate: string;
@@ -461,9 +490,15 @@ export declare const components: {
461
490
  markers: import('./types').TimelineMarker[];
462
491
  stickyMarkers: boolean;
463
492
  fitMarkersOnChange: boolean;
464
- fitMarkersTransitionDuration: number;
493
+ zoomToIntervalTransitionDuration: number;
465
494
  zoomToBoundariesTransitionDuration: number;
466
495
  milestoneBulletSize: number;
496
+ milestonesFirst: boolean;
497
+ forbiddenIntervals: import('./types').TimelineInterval[];
498
+ forbiddenIntervalColor: string;
499
+ focusedInterval: import('./types').TimelineInterval | undefined;
500
+ locked: boolean;
501
+ timezone: string | undefined;
467
502
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
468
503
  EVideoEmbed: import("vue").DefineComponent<{
469
504
  videoUrl: {
@@ -508,13 +543,49 @@ export declare const components: {
508
543
  iframeListeners: Partial<HTMLIFrameElement>;
509
544
  iframeOptions: Record<string, any>;
510
545
  }>;
546
+ EHeatmapBar: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, {}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
547
+ EHoursHeatmap: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, {}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
548
+ EReadMore: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, {
549
+ showAllContent: boolean;
550
+ }, {
551
+ displayContent(): any;
552
+ displayArrayContent(): any;
553
+ displayTextContent(): any;
554
+ toggleContentExpansion(): void;
555
+ }, {
556
+ hiddenContentLength: number;
557
+ isArrayContent: boolean;
558
+ isHiddenTextContent: boolean;
559
+ isHiddenArrayContent: boolean;
560
+ isContentExpanded: boolean;
561
+ computedMoreText: string;
562
+ }, {
563
+ content: string | unknown[] | (() => null);
564
+ maxLength: number;
565
+ showAll: boolean;
566
+ expandText: string;
567
+ collapseText: string;
568
+ moreTextWithPlaceholder: string;
569
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
570
+ ETruncatedDiv: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, unknown, unknown, {
571
+ containerStyle: Record<string, any>;
572
+ }, {
573
+ width: string | number;
574
+ fixedWidth: boolean;
575
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
576
+ ECompareSeparator: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, unknown, unknown, {
577
+ separatorStyle: Record<string, any>;
578
+ }, {
579
+ xOffset: string | number;
580
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
511
581
  };
512
582
  declare const _default: {
513
583
  install(Vue: VueConstructor): void;
514
584
  };
515
585
  export default _default;
516
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, };
586
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EHeatmapBar, EHoursHeatmap, EReadMore, ETruncatedDiv, ECompareSeparator, };
517
587
  export * from './constants';
518
588
  export * from './types';
519
589
  export * from './utils';
520
590
  export * from './directives';
591
+ export * from './mixins';
@@ -0,0 +1,13 @@
1
+ import Vue from "vue";
2
+ export interface IEventListener {
3
+ event: string;
4
+ cb: () => void;
5
+ element: EventTarget | null;
6
+ }
7
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
8
+ eventListeners: IEventListener[];
9
+ }, {
10
+ $addEventListener(event: string, cb: () => void, element?: Window & typeof globalThis): void;
11
+ $removeEventListeners(): void;
12
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
13
+ export default _default;
@@ -0,0 +1,25 @@
1
+ /// <reference types="node" />
2
+ import Vue from "vue";
3
+ export interface InactivityListenerMixinProps {
4
+ duration: number;
5
+ reminders?: number[];
6
+ callback: () => void;
7
+ }
8
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, unknown, {
9
+ resetInactivityListenerTimer(callback?: () => void, duration?: number, reminders?: number[]): void;
10
+ setInactivityListenerTimer(callback?: () => void, duration?: number, reminders?: number[]): void;
11
+ setInactivityListenerReminderTimers(callback?: () => void, reminders?: number[], index?: number): void;
12
+ $registerInactivityListener({ callback, duration, reminders, }: InactivityListenerMixinProps): void;
13
+ $removeInactivityListeners(): void;
14
+ }, unknown, Record<never, any>, {}, import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
15
+ eventListeners: import('../mixins/event-listeners').IEventListener[];
16
+ }, {
17
+ $addEventListener(event: string, cb: () => void, element?: Window & typeof globalThis): void;
18
+ $removeEventListeners(): void;
19
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin> | import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
20
+ timeouts: number[];
21
+ }, {
22
+ $setTimeout(cb: () => void, timeout?: number): NodeJS.Timeout;
23
+ $clearTimeouts(): void;
24
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>, import("vue").ComponentOptionsMixin>;
25
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import inactivityListener from '../mixins/inactivity-listener';
2
+ import eventListeners from '../mixins/event-listeners';
3
+ import timeouts from '../mixins/timeouts';
4
+ export { inactivityListener, eventListeners, timeouts };
@@ -0,0 +1,8 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
3
+ timeouts: number[];
4
+ }, {
5
+ $setTimeout(cb: () => void, timeout?: number): NodeJS.Timeout;
6
+ $clearTimeouts(): void;
7
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
8
+ export default _default;
@@ -79,19 +79,27 @@ export type TimelineMilestoneEvent = {
79
79
  export type TimelineEvent = TimelineBarEvent | TimelineRangeEvent | TimelineCountEvent | TimelineMilestoneEvent;
80
80
  export declare enum TimelineChartType {
81
81
  bars = "bars",
82
+ dots = "dots",
82
83
  lineGraph = "lineGraph",
83
84
  barChart = "barGraph",
84
85
  milestones = "milestones"
85
86
  }
86
87
  export type TimelineEventsGroup = {
88
+ events: Array<TimelineEvent>;
87
89
  label: string;
88
90
  color: string;
89
91
  bgColor?: string;
90
92
  isLoading?: Boolean;
91
93
  isHidden?: Boolean;
92
94
  chartType?: TimelineChartType;
93
- events: Array<TimelineEvent>;
95
+ dots?: boolean;
96
+ milestonesTransitionDuration?: number;
97
+ milestonesLineHeight?: number;
98
+ milestonesDotSize?: number;
94
99
  height?: number;
100
+ dotsSize?: number;
101
+ bottom?: boolean;
102
+ barBorderRadius?: number;
95
103
  };
96
104
  export type TimelineEventsByType = {
97
105
  [eventsType: string]: TimelineEventsGroup;
@@ -106,12 +114,26 @@ export type TimelineMarker = {
106
114
  timestamp: string | Date;
107
115
  label: string;
108
116
  color: string;
117
+ id: string | number;
109
118
  textColor?: string;
110
119
  className?: string;
111
- id: string | number;
112
120
  isDraggable?: boolean;
113
121
  minDate?: string;
114
122
  maxDate?: string;
123
+ [key: string]: any;
124
+ };
125
+ export type TimelineInterval = {
126
+ startDate: Date | string | number;
127
+ endDate: Date | string | number;
128
+ };
129
+ export type HeatmapBarItem = {
130
+ name: string;
131
+ count: string;
132
+ value: string | number;
133
+ };
134
+ export type HoursHeatmapChartItem = {
135
+ count: number;
136
+ timestamp: Timestamp;
115
137
  };
116
138
  declare const _default: {};
117
139
  export default _default;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .e-spinner[data-v-29711f67]{vertical-align:center}.e-spinner__primary[data-v-29711f67],.e-spinner__secondary[data-v-29711f67]{stroke-width:0;animation:fade-29711f67;animation-iteration-count:infinite}@keyframes fade-29711f67{0%{fill-opacity:0}50%{fill-opacity:1}to{fill-opacity:0}}.e-row.e-row--no-gutters{margin:0}.e-row.e-row--no-gutters>.e-col{padding:0}.e-col{padding:.75rem}.spinner-container[data-v-9071f674]{position:absolute;background:linear-gradient(to top,rgba(0,0,0,.65),transparent);inset:0;display:flex;justify-content:center;align-items:center;vertical-align:middle}.video-container[data-v-9071f674]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-9071f674]{max-width:initial;width:100%;max-height:100vh}video[data-v-9071f674]{width:100%;height:inherit}.video-controls-container[data-v-9071f674]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-9071f674]{display:none}.video-controls-container[data-v-9071f674]:before{content:"";position:absolute;bottom:0;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);width:100%;aspect-ratio:6 / 1;z-index:-1;pointer-events:none}.video-container:hover .video-controls-container[data-v-9071f674],.video-container:focus-within .video-controls-container[data-v-9071f674],.video-container.paused .video-controls-container[data-v-9071f674]{opacity:1}.video-controls-container .controls[data-v-9071f674]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-9071f674]{background:none;border:none;color:inherit;padding:0;height:32px;width:32px;font-size:1.35rem;cursor:pointer;opacity:.85;transition:opacity .15s ease-in-out}.video-controls-container .controls button[data-v-9071f674]:hover{opacity:1}.duration-container[data-v-9071f674]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-9071f674]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-9071f674]{width:50px}.timeline-container[data-v-9071f674]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-9071f674]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-9071f674]:before{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--preview-position) * 100%);background-color:#969696;display:none}.timeline[data-v-9071f674]:after{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--progress-position) * 100%);background-color:red}.timeline .thumb-indicator[data-v-9071f674]{--scale: 0;position:absolute;transform:translate(-50%) scale(var(--scale));height:200%;top:-50%;left:calc(var(--progress-position) * 100%);background-color:red;border-radius:50%;transition:transform .15s ease-in-out;aspect-ratio:1 / 1}.video-container.scrubbing .thumbnail-img[data-v-9071f674]{display:block}.video-container.scrubbing .timeline[data-v-9071f674]:before,.timeline-container:hover .timeline[data-v-9071f674]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-9071f674],.timeline-container:hover .thumb-indicator[data-v-9071f674]{--scale: 1}.video-container.scrubbing .timeline[data-v-9071f674],.timeline-container:hover .timeline[data-v-9071f674]{height:100%}.e-tl-milestone{position:absolute;border-radius:10em;box-sizing:border-box}.e-tl-milestone-content{opacity:0;width:0;height:0;white-space:nowrap;pointer-events:none}.e-tl-milestone--hovered{cursor:pointer;min-height:26px;padding:0 8px;border-radius:.5em}.e-tl-milestone--hovered .e-tl-milestone-content{opacity:1;font-size:small;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.e-tl-milestone-label{position:absolute;top:0;left:0;opacity:1;pointer-events:none;height:100%;width:100%}.e-tl-milestone--hovered .e-tl-milestone-label{opacity:0}.e-timeline svg{display:block}.e-timeline .x-axis-overview .domain,.e-timeline .x-axis-detailed .domain,.e-timeline .x-axis-overviewBackground .domain,.e-timeline .x-axis-detailedBackground .domain{display:none}.e-timeline .x-axis-detailedBackground .domain,.e-timeline .x-axis-detailedBackground text{display:none}.e-timeline .x-axis-overview>g.tick>line{opacity:.1;stroke-width:3;stroke-linecap:round}.e-timeline .x-axis-detailed>g.tick>line{opacity:.1;stroke-linecap:round}.e-timeline .x-axis-detailedBackground>g.tick>line{opacity:.075;stroke-linecap:round}.e-timeline--dark .tick line{stroke:#fff}.e-timeline--dark .tick text{fill:#fff}@keyframes moveGradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}@keyframes pulse-rect{0%{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}50%{filter:saturate(.5) drop-shadow(0 0 0 #0000)}to{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}}@keyframes pulse-circle{0%{r:4px}50%{r:1px}to{r:4px}}.loading-indicator{animation:moveGradient 1.5s ease-in infinite}.line-graph-dot--active{animation:pulse-circle 1s ease-in-out infinite}.event-rect--hovered{animation:pulse-rect 1s ease-in-out infinite}@keyframes dash{0%{filter:saturate(1) drop-shadow(0 0 0 #0000)}50%{stroke-width:2px;filter:saturate(2.5) drop-shadow(0 0 0 #0006)}to{filter:saturate(1) drop-shadow(0 0 0 #0000)}}.line-graph-group--highlighted path{animation:dash 1s ease-in-out infinite}.e-timeline--dragging{cursor:ew-resize}.curtain{cursor:ew-resize;fill:#3332;stroke-width:1px;stroke:#3338;transition:stroke-width .2s}.e-timeline--dragging .curtain{stroke-width:3px}.e-timeline--dark .curtain{fill:#fff3;stroke:#fff7}.event-bar-hover-zone{cursor:pointer}.external-labels-container{position:absolute;top:-1.5em;left:0}.external-label{margin-right:.35em;border-width:.5px;border-radius:.2em}.external-label__content{cursor:pointer;font-size:.8em;font-weight:500;padding:0 .6em;line-height:1.4em}.marker-label{transition:transform .2s;transform:translateY(-32px);position:absolute;width:max-content}.marker-label-text{position:absolute;width:max-content;font-size:.8em;font-weight:500;padding:0 .75em;border-radius:.4em .4em .4em 0;box-shadow:0 0 5px -1px #000000f5}.marker-label-text:after{content:"";background:inherit;width:5px;height:5px;bottom:-5px;position:absolute;left:2px;clip-path:path("M 0,5 L 0,0 L 5,0 A 5,5 0 0 0 0,5")}.marker-label-text:before{content:"";background:inherit;height:20px;top:18px;position:absolute;width:2px;left:0}.marker{top:0;filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px;transition:top .2s,height .2s}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1)}.marker:hover .marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker:hover .marker-label-text{box-shadow:2px 2px 11px -4px #000}.marker--hidden:hover .marker-label{transform:translateY(-54px)}.marker--draggable,.marker--draggable:hover{user-select:none;cursor:grab}.marker--dragged:hover{cursor:grabbing}.forbidden-interval{opacity:.2}.e-timeline-milestones{height:0}.video-embed[data-v-0ecf4a71]{position:relative;width:100%!important;padding-bottom:56.25%}.video-embed iframe[data-v-0ecf4a71]{position:absolute;top:0;left:0;width:100%;height:100%}
1
+ .e-spinner[data-v-29711f67]{vertical-align:center}.e-spinner__primary[data-v-29711f67],.e-spinner__secondary[data-v-29711f67]{stroke-width:0;animation:fade-29711f67;animation-iteration-count:infinite}@keyframes fade-29711f67{0%{fill-opacity:0}50%{fill-opacity:1}to{fill-opacity:0}}.e-row.e-row--no-gutters{margin:0}.e-row.e-row--no-gutters>.e-col{padding:0}.e-col{padding:.75rem}.spinner-container[data-v-9071f674]{position:absolute;background:linear-gradient(to top,rgba(0,0,0,.65),transparent);inset:0;display:flex;justify-content:center;align-items:center;vertical-align:middle}.video-container[data-v-9071f674]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-9071f674]{max-width:initial;width:100%;max-height:100vh}video[data-v-9071f674]{width:100%;height:inherit}.video-controls-container[data-v-9071f674]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-9071f674]{display:none}.video-controls-container[data-v-9071f674]:before{content:"";position:absolute;bottom:0;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);width:100%;aspect-ratio:6 / 1;z-index:-1;pointer-events:none}.video-container:hover .video-controls-container[data-v-9071f674],.video-container:focus-within .video-controls-container[data-v-9071f674],.video-container.paused .video-controls-container[data-v-9071f674]{opacity:1}.video-controls-container .controls[data-v-9071f674]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-9071f674]{background:none;border:none;color:inherit;padding:0;height:32px;width:32px;font-size:1.35rem;cursor:pointer;opacity:.85;transition:opacity .15s ease-in-out}.video-controls-container .controls button[data-v-9071f674]:hover{opacity:1}.duration-container[data-v-9071f674]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-9071f674]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-9071f674]{width:50px}.timeline-container[data-v-9071f674]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-9071f674]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-9071f674]:before{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--preview-position) * 100%);background-color:#969696;display:none}.timeline[data-v-9071f674]:after{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--progress-position) * 100%);background-color:red}.timeline .thumb-indicator[data-v-9071f674]{--scale: 0;position:absolute;transform:translate(-50%) scale(var(--scale));height:200%;top:-50%;left:calc(var(--progress-position) * 100%);background-color:red;border-radius:50%;transition:transform .15s ease-in-out;aspect-ratio:1 / 1}.video-container.scrubbing .thumbnail-img[data-v-9071f674]{display:block}.video-container.scrubbing .timeline[data-v-9071f674]:before,.timeline-container:hover .timeline[data-v-9071f674]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-9071f674],.timeline-container:hover .thumb-indicator[data-v-9071f674]{--scale: 1}.video-container.scrubbing .timeline[data-v-9071f674],.timeline-container:hover .timeline[data-v-9071f674]{height:100%}.e-tl-milestone{position:absolute;border-radius:10em;box-sizing:border-box}.e-tl-milestone-content{cursor:pointer}.e-tl-milestone--bullet{transform:translate(-50%,-50%)}.e-tl-milestone--bullet .e-tl-milestone-content{opacity:0;width:0;height:0;white-space:nowrap;pointer-events:none;cursor:pointer}.e-tl-milestone--bullet.e-tl-milestone--hovered{cursor:pointer;min-height:26px;padding:0 8px;border-radius:.5em}.e-tl-milestone--bullet.e-tl-milestone--hovered .e-tl-milestone-content{opacity:1;font-size:small;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.e-tl-milestone--bullet .e-tl-milestone-label{position:absolute;top:0;left:0;opacity:1;pointer-events:none;height:100%;width:100%}.e-tl-milestone--bullet.e-tl-milestone--hovered .e-tl-milestone-label{opacity:0}.e-tl-milestone--dot{transform:translateY(-50%)}.e-tl-milestone-dot--hovered .e-tl-milestone-dot-container{padding:0 3em;transform:translate(-50%);opacity:1}.e-tl-milestone-dot-line{position:absolute}.e-tl-milestone-dot-dot{position:absolute;border-radius:50%}.e-tl-milestone-dot-container{opacity:0;position:absolute;padding:0 .3em;transform:translate(-50%,-100%);cursor:pointer}.e-timeline svg{display:block}.e-timeline .x-axis-overview .domain,.e-timeline .x-axis-detailed .domain,.e-timeline .x-axis-overviewBackground .domain,.e-timeline .x-axis-detailedBackground .domain{display:none}.e-timeline .x-axis-detailedBackground .domain,.e-timeline .x-axis-detailedBackground text{display:none}.e-timeline .x-axis-overview>g.tick>line{opacity:.1;stroke-width:3;stroke-linecap:round}.e-timeline .x-axis-detailed>g.tick>line{opacity:.1;stroke-linecap:round}.e-timeline .x-axis-detailedBackground>g.tick>line{opacity:.075;stroke-linecap:round}.e-timeline--dark .tick line{stroke:#fff}.e-timeline--dark .tick text{fill:#fff}@keyframes moveGradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}@keyframes pulse-rect{0%{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}50%{filter:saturate(.5) drop-shadow(0 0 0 #0000)}to{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}}@keyframes pulse-circle{0%{r:4px}50%{r:1px}to{r:4px}}.loading-indicator{animation:moveGradient 1.5s ease-in infinite}.line-graph-dot--active{animation:pulse-circle 1s ease-in-out infinite}.event-rect--hovered{animation:pulse-rect 1s ease-in-out infinite}@keyframes dash{0%{filter:saturate(1) drop-shadow(0 0 0 #0000)}50%{stroke-width:2px;filter:saturate(2.5) drop-shadow(0 0 0 #0006)}to{filter:saturate(1) drop-shadow(0 0 0 #0000)}}.line-graph-group--highlighted path{animation:dash 1s ease-in-out infinite}.e-timeline--dragging{cursor:ew-resize}.curtain{cursor:ew-resize;fill:#3332;stroke-width:1px;stroke:#3338;transition:stroke-width .2s}.e-timeline--dragging .curtain{stroke-width:3px}.e-timeline--dark .curtain{fill:#fff3;stroke:#fff7}.event-bar-hover-zone{cursor:pointer}.external-labels-container{position:absolute;top:-1.5em;left:0}.external-label{margin-right:.35em;border-width:.5px;border-radius:.2em}.external-label__content{cursor:pointer;font-size:.8em;font-weight:500;padding:0 .6em;line-height:1.4em}.marker-label{transition:transform .2s;transform:translateY(-32px);position:absolute;width:max-content}.marker-label-text{position:absolute;width:max-content;font-size:.8em;font-weight:500;padding:0 .75em;border-radius:.4em .4em .4em 0;box-shadow:0 0 5px -1px #000000f5}.marker-label-text:after{content:"";background:inherit;width:5px;height:5px;bottom:-5px;position:absolute;left:2px;clip-path:path("M 0,5 L 0,0 L 5,0 A 5,5 0 0 0 0,5")}.marker-label-text:before{content:"";background:inherit;height:20px;top:18px;position:absolute;width:2px;left:0}.marker{top:0;filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px;transition:top .2s,height .2s}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1)}.marker:hover .marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker:hover .marker-label-text{box-shadow:2px 2px 11px -4px #000}.marker--hidden:hover .marker-label{transform:translateY(-54px)}.marker--draggable,.marker--draggable:hover{user-select:none;cursor:grab}.marker--dragged:hover{cursor:grabbing}.forbidden-interval{opacity:.2}.e-timeline-milestones{height:0}.video-embed[data-v-0ecf4a71]{position:relative;width:100%!important;padding-bottom:56.25%}.video-embed iframe[data-v-0ecf4a71]{position:absolute;top:0;left:0;width:100%;height:100%}.e-heatmap-bar__label{white-space:nowrap;width:6rem;min-width:6rem}.e-heatmap-bar__item{height:16px;margin:2px;position:relative;cursor:pointer;border-radius:2px;min-width:0}.e-heatmap-bar__item:hover{box-shadow:0 0 0 1.5px #5c6d97}.e-heatmap-bar__item--selected{box-shadow:0 0 0 2px #151e3a}.e-heatmap-bar__item__count{font-size:12px;color:#fff;font-weight:500}.e-heatmap-bar__item__count--light{color:#0a214bbd}.e-heatmap-bar__item__name{position:absolute;top:-25px}.e-heatmap-bar:not(.e-heatmap-bar--dense) .e-heatmap-bar__item{min-width:35px}.e-compare-separator__icon{position:absolute;width:40px;height:40px;top:50%;transform:translate(-50%,-50%);z-index:4;border-radius:50%;cursor:ew-resize;background:#1976d2;border:2px solid white;-webkit-box-shadow:0 0 8px 1px rgba(0,0,0,.3);-moz-box-shadow:0 0 8px 1px rgba(0,0,0,.3);box-shadow:0 0 8px 1px #0000004d}.e-compare-separator__line{position:absolute;top:0;width:3px;height:100%;background:white;transform:translate(-50%)}