@evercam/ui 0.0.55-beta.19 → 0.0.55-beta.20

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.
@@ -7,8 +7,7 @@ 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 EToggleSwitch from './components/EToggleSwitch.vue';
11
- import EZoomable from './components/EZoomable.vue';
10
+ import EReadMore from './components/EReadMore.vue';
12
11
  import { VueConstructor } from "vue";
13
12
  export declare const components: {
14
13
  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>>, {
@@ -120,72 +119,7 @@ export declare const components: {
120
119
  xs: string | number | boolean;
121
120
  xl: string | number | boolean;
122
121
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
123
- EVideoPlayer: import("vue").DefineComponent<{
124
- targetTimestamp: {
125
- type: (StringConstructor | DateConstructor)[];
126
- default: undefined;
127
- };
128
- sources: {
129
- type: import("vue").PropType<string | import('./components/EVideoPlayer.vue').VideoSource[]>;
130
- required: true;
131
- };
132
- videoListeners: {
133
- type: import("vue").PropType<Partial<HTMLVideoElement>>;
134
- default: () => {};
135
- };
136
- videoOptions: {
137
- type: import("vue").PropType<Partial<HTMLVideoElement>>;
138
- default: () => {};
139
- };
140
- isHls: {
141
- type: BooleanConstructor;
142
- default: boolean;
143
- };
144
- streamingToken: {
145
- type: StringConstructor;
146
- default: string;
147
- };
148
- pauseOnClick: {
149
- type: BooleanConstructor;
150
- default: boolean;
151
- };
152
- isHlsLoading: {
153
- type: BooleanConstructor;
154
- default: boolean;
155
- };
156
- isPlaying: {
157
- type: BooleanConstructor;
158
- default: boolean;
159
- };
160
- selectedResolution: {
161
- type: import("vue").PropType<import('./components/EVideoPlayer.vue').EdgeVideoResolution | undefined>;
162
- default: undefined;
163
- };
164
- isZoomable: {
165
- type: BooleanConstructor;
166
- default: boolean;
167
- };
168
- zoomableIgnorePointerEvents: {
169
- type: BooleanConstructor;
170
- default: boolean;
171
- };
172
- timezone: {
173
- type: StringConstructor;
174
- default: string;
175
- };
176
- playPauseAnimation: {
177
- type: BooleanConstructor;
178
- default: boolean;
179
- };
180
- disablePlayPauseAnimation: {
181
- type: BooleanConstructor;
182
- default: boolean;
183
- };
184
- isWebRtc: {
185
- type: BooleanConstructor;
186
- default: boolean;
187
- };
188
- }, {}, {
122
+ EVideoPlayer: 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>>, {
189
123
  playing: boolean;
190
124
  percentagePlayed: number;
191
125
  videoLength: string;
@@ -200,23 +134,10 @@ export declare const components: {
200
134
  isLoading: boolean;
201
135
  isError: boolean;
202
136
  player: import("hls.js").default;
203
- playbackRetries: number;
204
- preloadedSeconds: number;
205
- preloadedInterval: {
206
- start: string;
207
- end: string;
208
- };
209
- }, {
210
- sourceItems(): import('./components/EVideoPlayer.vue').VideoSource[];
211
- hasStartedOrFinished(): boolean;
212
- withControls(): "" | "hide";
213
137
  }, {
214
138
  initHls(): void;
215
- onContainerClick(): void;
216
139
  handle404Error(): void;
217
- handleHlsError(_: import("hls.js").Events.ERROR, data: import("hls.js").ErrorData): void;
218
140
  bindEvents(): void;
219
- onProgress(): void;
220
141
  unbindEvents(): void;
221
142
  bindVideoEvent(which: string): void;
222
143
  initializePlayer(): void;
@@ -228,9 +149,9 @@ export declare const components: {
228
149
  handleScrubbingOnMouseEnd(e: MouseEvent): void;
229
150
  handleEnded(): void;
230
151
  handleLoading(): void;
231
- play(): Promise<void>;
152
+ play(): void;
232
153
  pause(): void;
233
- togglePlay(): Promise<void>;
154
+ togglePlay(): void;
234
155
  setPlaying(state: boolean): void;
235
156
  seekToPercentage(percentage: number): void;
236
157
  convertTimeToDuration(seconds: number): string;
@@ -243,88 +164,18 @@ export declare const components: {
243
164
  skip(duration?: number): void;
244
165
  toggleScrubbing(e: MouseEvent): Promise<void>;
245
166
  handleKeyDown(e: KeyboardEvent): void;
246
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
247
- targetTimestamp: {
248
- type: (StringConstructor | DateConstructor)[];
249
- default: undefined;
250
- };
251
- sources: {
252
- type: import("vue").PropType<string | import('./components/EVideoPlayer.vue').VideoSource[]>;
253
- required: true;
254
- };
255
- videoListeners: {
256
- type: import("vue").PropType<Partial<HTMLVideoElement>>;
257
- default: () => {};
258
- };
259
- videoOptions: {
260
- type: import("vue").PropType<Partial<HTMLVideoElement>>;
261
- default: () => {};
262
- };
263
- isHls: {
264
- type: BooleanConstructor;
265
- default: boolean;
266
- };
267
- streamingToken: {
268
- type: StringConstructor;
269
- default: string;
270
- };
271
- pauseOnClick: {
272
- type: BooleanConstructor;
273
- default: boolean;
274
- };
275
- isHlsLoading: {
276
- type: BooleanConstructor;
277
- default: boolean;
278
- };
279
- isPlaying: {
280
- type: BooleanConstructor;
281
- default: boolean;
282
- };
283
- selectedResolution: {
284
- type: import("vue").PropType<import('./components/EVideoPlayer.vue').EdgeVideoResolution | undefined>;
285
- default: undefined;
286
- };
287
- isZoomable: {
288
- type: BooleanConstructor;
289
- default: boolean;
290
- };
291
- zoomableIgnorePointerEvents: {
292
- type: BooleanConstructor;
293
- default: boolean;
294
- };
295
- timezone: {
296
- type: StringConstructor;
297
- default: string;
298
- };
299
- playPauseAnimation: {
300
- type: BooleanConstructor;
301
- default: boolean;
302
- };
303
- disablePlayPauseAnimation: {
304
- type: BooleanConstructor;
305
- default: boolean;
306
- };
307
- isWebRtc: {
308
- type: BooleanConstructor;
309
- default: boolean;
310
- };
311
- }>>, {
312
- timezone: string;
313
- isPlaying: boolean;
314
- targetTimestamp: string | Date;
315
- videoListeners: Partial<HTMLVideoElement>;
316
- videoOptions: Partial<HTMLVideoElement>;
167
+ }, {
168
+ sourceItems: import('./components/EVideoPlayer.vue').VideoSource[];
169
+ hasStartedOrFinished: boolean;
170
+ withControls: "" | "hide";
171
+ }, {
172
+ sources: string | import('./components/EVideoPlayer.vue').VideoSource[];
173
+ videoListeners: {};
174
+ videoOptions: {};
317
175
  isHls: boolean;
318
176
  streamingToken: string;
319
- pauseOnClick: boolean;
320
- isHlsLoading: boolean;
321
- selectedResolution: import('./components/EVideoPlayer.vue').EdgeVideoResolution | undefined;
322
- isZoomable: boolean;
323
- zoomableIgnorePointerEvents: boolean;
324
- playPauseAnimation: boolean;
325
- disablePlayPauseAnimation: boolean;
326
- isWebRtc: boolean;
327
- }>;
177
+ isLiveView: boolean;
178
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
328
179
  ETimeline: 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>>, {
329
180
  tooltip: HTMLElement;
330
181
  cursor: HTMLElement;
@@ -384,6 +235,8 @@ export declare const components: {
384
235
  selectedMilestoneId: any;
385
236
  isInitialized: boolean;
386
237
  lastValidTransform: import("d3-zoom").ZoomTransform;
238
+ lastPanTransform: import("d3-zoom").ZoomTransform;
239
+ isZoomingInterval: boolean;
387
240
  }, {
388
241
  updateTimeline(): void;
389
242
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
@@ -398,7 +251,8 @@ export declare const components: {
398
251
  updateYScaleDomain(): void;
399
252
  initZoomBehavior(): void;
400
253
  zoomToFitMarkers(): void;
401
- translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
254
+ zoomToTargetInterval(start?: string | number | undefined, end?: string | number | undefined): void;
255
+ translateIntervalIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
402
256
  initSelectedTimestampCursor(): void;
403
257
  updateMarkers(): void;
404
258
  updateAndRedrawTimeline(): void;
@@ -461,8 +315,7 @@ export declare const components: {
461
315
  initCurtains(): void;
462
316
  createCurtains(): void;
463
317
  updateCurtains(): void;
464
- initForbiddenIntervals(): void;
465
- updateForbiddenIntervals(): void;
318
+ updateForbiddenIntervals(reset?: boolean): void;
466
319
  drawEventsGroups(): void;
467
320
  drawLineGraphEventsGroups(): void;
468
321
  drawLineGraph({ events, gElement, color, type, }: {
@@ -477,14 +330,13 @@ export declare const components: {
477
330
  color: string;
478
331
  type: string;
479
332
  }): void;
480
- drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, dots, dotsSize, }: {
333
+ drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
481
334
  type: string;
482
335
  eventsGroup: import('./types').TimelineEventsGroup;
483
- index?: number | undefined;
484
336
  milestone?: boolean | undefined;
485
- height?: number | undefined;
486
337
  dots?: boolean | undefined;
487
338
  dotsSize?: number | undefined;
339
+ bottom?: boolean | undefined;
488
340
  }): void;
489
341
  drawBarEventsGroups(): void;
490
342
  drawMilestonesPlaceholder(): void;
@@ -494,6 +346,8 @@ export declare const components: {
494
346
  border: string;
495
347
  };
496
348
  getMilestoneGroupYPosition(groupName: string): number;
349
+ getBarGroupYPosition(groupName: string, bottom?: boolean | undefined): number;
350
+ getBarGroupHeight(eventsGroup: import('./types').TimelineEventsGroup): number;
497
351
  updateMilestonesPositions(): void;
498
352
  drawBarChartEventsGroups(): void;
499
353
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -508,7 +362,7 @@ export declare const components: {
508
362
  color: string;
509
363
  height?: number | undefined;
510
364
  }): void;
511
- drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, }: {
365
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
512
366
  events: import('./types').TimelineEvent[];
513
367
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
514
368
  yPosition: number;
@@ -516,6 +370,8 @@ export declare const components: {
516
370
  type: string;
517
371
  dots?: boolean | undefined;
518
372
  dotsSize?: number | undefined;
373
+ height?: number | undefined;
374
+ barBorderRadius?: number | undefined;
519
375
  }): void;
520
376
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
521
377
  events: import('./types').TimelineEvent[];
@@ -569,6 +425,7 @@ export declare const components: {
569
425
  getSortedEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
570
426
  }, {
571
427
  combinedBarsHeight: number;
428
+ combinedBottomBarsHeight: number;
572
429
  combinedMilestonesHeight: number;
573
430
  milestonesYOffset: number;
574
431
  chartsYOffset: number;
@@ -615,12 +472,11 @@ export declare const components: {
615
472
  barYPadding: number;
616
473
  barXPadding: number;
617
474
  chartMinHeight: number;
475
+ chartMinLabelHeight: number;
618
476
  minZoom: number;
619
477
  maxZoom: number;
620
478
  minDate: string;
621
479
  maxDate: string;
622
- minVisibleDate: string;
623
- maxVisibleDate: string;
624
480
  cursorTimestamp: string | undefined;
625
481
  selectedClass: string | undefined;
626
482
  panOnDateClick: boolean;
@@ -630,10 +486,14 @@ export declare const components: {
630
486
  markers: import('./types').TimelineMarker[];
631
487
  stickyMarkers: boolean;
632
488
  fitMarkersOnChange: boolean;
633
- fitMarkersTransitionDuration: number;
489
+ zoomToIntervalTransitionDuration: number;
634
490
  zoomToBoundariesTransitionDuration: number;
635
491
  milestoneBulletSize: number;
636
492
  milestonesFirst: boolean;
493
+ forbiddenIntervals: import('./types').TimelineInterval[];
494
+ forbiddenIntervalColor: string;
495
+ focusedInterval: import('./types').TimelineInterval | undefined;
496
+ locked: boolean;
637
497
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
638
498
  EVideoEmbed: import("vue").DefineComponent<{
639
499
  videoUrl: {
@@ -678,118 +538,36 @@ export declare const components: {
678
538
  iframeListeners: Partial<HTMLIFrameElement>;
679
539
  iframeOptions: Record<string, any>;
680
540
  }>;
681
- EToggleSwitch: import("vue").DefineComponent<{
682
- options: {
683
- type: import("vue").PropType<import('./components/EToggleSwitch.vue').EToggleSwitchOptions[]>;
684
- required: true;
685
- };
686
- color: {
687
- type: import("vue").PropType<"primary" | "brand" | "gray">;
688
- default: string;
689
- };
690
- size: {
691
- type: import("vue").PropType<"lg" | "md" | "sm">;
692
- default: string;
693
- };
694
- defaultValue: {
695
- type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
696
- default: null;
697
- };
698
- }, {}, {
699
- value: any;
700
- }, {}, {
701
- handleClick(value: any): void;
702
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
703
- options: {
704
- type: import("vue").PropType<import('./components/EToggleSwitch.vue').EToggleSwitchOptions[]>;
705
- required: true;
706
- };
707
- color: {
708
- type: import("vue").PropType<"primary" | "brand" | "gray">;
709
- default: string;
710
- };
711
- size: {
712
- type: import("vue").PropType<"lg" | "md" | "sm">;
713
- default: string;
714
- };
715
- defaultValue: {
716
- type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
717
- default: null;
718
- };
719
- }>>, {
720
- color: "primary" | "brand" | "gray";
721
- size: "lg" | "md" | "sm";
722
- defaultValue: string | number | boolean;
723
- }>;
724
- EZoomable: import("vue").DefineComponent<{
725
- ignorePointerEvents: {
726
- type: BooleanConstructor;
727
- default: boolean;
728
- };
729
- withOverlay: {
730
- type: BooleanConstructor;
731
- default: boolean;
732
- };
733
- }, {}, {
734
- scale: number;
735
- minScale: number;
736
- maxScale: number;
737
- top: number;
738
- left: number;
739
- isPanning: boolean;
740
- panStart: {
741
- x: number;
742
- y: number;
743
- };
744
- isPinching: boolean;
745
- previousPinchDistance: number;
746
- pinchDistance: number;
747
- pointers: {};
748
- transform: string;
541
+ 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>;
542
+ 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>;
543
+ 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>>, {
544
+ showAllContent: boolean;
749
545
  }, {
750
- contentStyle(): {
751
- transform: string;
752
- };
753
- isZoomed(): boolean;
546
+ displayContent(): any;
547
+ displayArrayContent(): any;
548
+ displayTextContent(): any;
549
+ toggleContentExpansion(): void;
754
550
  }, {
755
- updateZoomScale(): void;
756
- handleZoom(e: any): void;
757
- handleMouseDown(e: any): void;
758
- handleMouseUp(): void;
759
- handleMouseLeave(): void;
760
- handleMouseMove(e: any): void;
761
- applyBoundsCorrection(): void;
762
- updateTransform(): void;
763
- getPointersDistance(a: any, b: any): number;
764
- getPointersMidPoint(a: any, b: any): {
765
- x: any;
766
- y: any;
767
- };
768
- updatePointerEvent(e: any): void;
769
- clearPointerEvent(e: any): void;
770
- updatePinchDistance(): void;
771
- handlePointerDown(e: any): void;
772
- handlePointerMove(e: any): void;
773
- handlePointerUp(e: any): void;
774
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
775
- ignorePointerEvents: {
776
- type: BooleanConstructor;
777
- default: boolean;
778
- };
779
- withOverlay: {
780
- type: BooleanConstructor;
781
- default: boolean;
782
- };
783
- }>>, {
784
- ignorePointerEvents: boolean;
785
- withOverlay: boolean;
786
- }>;
551
+ hiddenContentLength: number;
552
+ isArrayContent: boolean;
553
+ isHiddenTextContent: boolean;
554
+ isHiddenArrayContent: boolean;
555
+ isContentExpanded: boolean;
556
+ computedMoreText: string;
557
+ }, {
558
+ content: string | unknown[] | (() => null);
559
+ maxLength: number;
560
+ showAll: boolean;
561
+ expandText: string;
562
+ collapseText: string;
563
+ moreTextWithPlaceholder: string;
564
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
787
565
  };
788
566
  declare const _default: {
789
567
  install(Vue: VueConstructor): void;
790
568
  };
791
569
  export default _default;
792
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EToggleSwitch, EZoomable, };
570
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EReadMore, };
793
571
  export * from './constants';
794
572
  export * from './types';
795
573
  export * from './utils';
@@ -25,13 +25,6 @@ export declare enum BaseColor {
25
25
  brand = "brand",
26
26
  default = "default"
27
27
  }
28
- export declare enum ImageQuality {
29
- _360 = "360",
30
- _480 = "480",
31
- _720 = "720",
32
- _1080 = "1080",
33
- auto = "auto"
34
- }
35
28
  export type TBadgeSize = (typeof BadgeSizes)[number];
36
29
  export type TAvatarSize = (typeof AvatarSizes)[number];
37
30
  export type TIconSize = (typeof IconSizes)[number];
@@ -105,6 +98,8 @@ export type TimelineEventsGroup = {
105
98
  milestonesDotSize?: number;
106
99
  height?: number;
107
100
  dotsSize?: number;
101
+ bottom?: boolean;
102
+ barBorderRadius?: number;
108
103
  };
109
104
  export type TimelineEventsByType = {
110
105
  [eventsType: string]: TimelineEventsGroup;
@@ -127,5 +122,18 @@ export type TimelineMarker = {
127
122
  maxDate?: string;
128
123
  [key: string]: any;
129
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;
137
+ };
130
138
  declare const _default: {};
131
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}.e-transform-0[data-v-3fb6736d]{transform-origin:0 0}.image-player-overlay{position:absolute;left:50%;top:50%;width:52px;height:52px;z-index:19;margin-left:-26px;margin-top:-26px;background:rgba(0,0,0,.5);border-radius:26px;-webkit-animation:overlay-fadeout .5s linear 1 normal forwards;animation:overlay-fadeout .5s linear 1 normal forwards;pointer-events:none}.image-player-overlay__wrapper{height:40px;width:40px}.image-player-overlay__wrapper>path{fill:#fff}@-webkit-keyframes overlay-fadeout{0%{opacity:1}to{opacity:0;-webkit-transform:scale(2);transform:scale(2)}}@keyframes overlay-fadeout{0%{opacity:1}to{opacity:0;-webkit-transform:scale(2);transform:scale(2)}}.spinner-container[data-v-1c971559]{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-1c971559]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-1c971559]{max-width:initial;width:100%;max-height:100vh}video[data-v-1c971559]{width:100%;height:inherit}.video-controls-container[data-v-1c971559]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-1c971559]{display:none}.video-controls-container[data-v-1c971559]: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-1c971559],.video-container:focus-within .video-controls-container[data-v-1c971559],.video-container.paused .video-controls-container[data-v-1c971559]{opacity:1}.video-controls-container .controls[data-v-1c971559]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-1c971559]{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-1c971559]:hover{opacity:1}.duration-container[data-v-1c971559]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-1c971559]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-1c971559]{width:50px}.timeline-container[data-v-1c971559]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-1c971559]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-1c971559]: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-1c971559]: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-1c971559]{--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-1c971559]{display:block}.video-container.scrubbing .timeline[data-v-1c971559]:before,.timeline-container:hover .timeline[data-v-1c971559]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-1c971559],.timeline-container:hover .thumb-indicator[data-v-1c971559]{--scale: 1}.video-container.scrubbing .timeline[data-v-1c971559],.timeline-container:hover .timeline[data-v-1c971559]{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%}
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}