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

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,6 +7,8 @@ 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
12
  import { VueConstructor } from "vue";
11
13
  export declare const components: {
12
14
  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>>, {
@@ -118,7 +120,72 @@ export declare const components: {
118
120
  xs: string | number | boolean;
119
121
  xl: string | number | boolean;
120
122
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
121
- 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>>, {
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
189
  playing: boolean;
123
190
  percentagePlayed: number;
124
191
  videoLength: string;
@@ -133,10 +200,23 @@ export declare const components: {
133
200
  isLoading: boolean;
134
201
  isError: boolean;
135
202
  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";
136
213
  }, {
137
214
  initHls(): void;
215
+ onContainerClick(): void;
138
216
  handle404Error(): void;
217
+ handleHlsError(_: import("hls.js").Events.ERROR, data: import("hls.js").ErrorData): void;
139
218
  bindEvents(): void;
219
+ onProgress(): void;
140
220
  unbindEvents(): void;
141
221
  bindVideoEvent(which: string): void;
142
222
  initializePlayer(): void;
@@ -148,9 +228,9 @@ export declare const components: {
148
228
  handleScrubbingOnMouseEnd(e: MouseEvent): void;
149
229
  handleEnded(): void;
150
230
  handleLoading(): void;
151
- play(): void;
231
+ play(): Promise<void>;
152
232
  pause(): void;
153
- togglePlay(): void;
233
+ togglePlay(): Promise<void>;
154
234
  setPlaying(state: boolean): void;
155
235
  seekToPercentage(percentage: number): void;
156
236
  convertTimeToDuration(seconds: number): string;
@@ -163,18 +243,88 @@ export declare const components: {
163
243
  skip(duration?: number): void;
164
244
  toggleScrubbing(e: MouseEvent): Promise<void>;
165
245
  handleKeyDown(e: KeyboardEvent): void;
166
- }, {
167
- sourceItems: import('./components/EVideoPlayer.vue').VideoSource[];
168
- hasStartedOrFinished: boolean;
169
- withControls: "" | "hide";
170
- }, {
171
- sources: string | import('./components/EVideoPlayer.vue').VideoSource[];
172
- videoListeners: {};
173
- videoOptions: {};
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>;
174
317
  isHls: boolean;
175
318
  streamingToken: string;
176
- isLiveView: boolean;
177
- }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
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
+ }>;
178
328
  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>>, {
179
329
  tooltip: HTMLElement;
180
330
  cursor: HTMLElement;
@@ -234,8 +384,6 @@ export declare const components: {
234
384
  selectedMilestoneId: any;
235
385
  isInitialized: boolean;
236
386
  lastValidTransform: import("d3-zoom").ZoomTransform;
237
- lastPanTransform: import("d3-zoom").ZoomTransform;
238
- isZoomingInterval: boolean;
239
387
  }, {
240
388
  updateTimeline(): void;
241
389
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
@@ -250,8 +398,7 @@ export declare const components: {
250
398
  updateYScaleDomain(): void;
251
399
  initZoomBehavior(): void;
252
400
  zoomToFitMarkers(): void;
253
- zoomToTargetInterval(start?: string | number | undefined, end?: string | number | undefined): void;
254
- translateIntervalIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
401
+ translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
255
402
  initSelectedTimestampCursor(): void;
256
403
  updateMarkers(): void;
257
404
  updateAndRedrawTimeline(): void;
@@ -314,7 +461,8 @@ export declare const components: {
314
461
  initCurtains(): void;
315
462
  createCurtains(): void;
316
463
  updateCurtains(): void;
317
- updateForbiddenIntervals(reset?: boolean): void;
464
+ initForbiddenIntervals(): void;
465
+ updateForbiddenIntervals(): void;
318
466
  drawEventsGroups(): void;
319
467
  drawLineGraphEventsGroups(): void;
320
468
  drawLineGraph({ events, gElement, color, type, }: {
@@ -329,13 +477,14 @@ export declare const components: {
329
477
  color: string;
330
478
  type: string;
331
479
  }): void;
332
- drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
480
+ drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, dots, dotsSize, }: {
333
481
  type: string;
334
482
  eventsGroup: import('./types').TimelineEventsGroup;
483
+ index?: number | undefined;
335
484
  milestone?: boolean | undefined;
485
+ height?: number | undefined;
336
486
  dots?: boolean | undefined;
337
487
  dotsSize?: number | undefined;
338
- bottom?: boolean | undefined;
339
488
  }): void;
340
489
  drawBarEventsGroups(): void;
341
490
  drawMilestonesPlaceholder(): void;
@@ -345,8 +494,6 @@ export declare const components: {
345
494
  border: string;
346
495
  };
347
496
  getMilestoneGroupYPosition(groupName: string): number;
348
- getBarGroupYPosition(groupName: string, bottom?: boolean | undefined): number;
349
- getBarGroupHeight(eventsGroup: import('./types').TimelineEventsGroup): number;
350
497
  updateMilestonesPositions(): void;
351
498
  drawBarChartEventsGroups(): void;
352
499
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -361,7 +508,7 @@ export declare const components: {
361
508
  color: string;
362
509
  height?: number | undefined;
363
510
  }): void;
364
- drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
511
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, }: {
365
512
  events: import('./types').TimelineEvent[];
366
513
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
367
514
  yPosition: number;
@@ -369,8 +516,6 @@ export declare const components: {
369
516
  type: string;
370
517
  dots?: boolean | undefined;
371
518
  dotsSize?: number | undefined;
372
- height?: number | undefined;
373
- barBorderRadius?: number | undefined;
374
519
  }): void;
375
520
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
376
521
  events: import('./types').TimelineEvent[];
@@ -424,7 +569,6 @@ export declare const components: {
424
569
  getSortedEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
425
570
  }, {
426
571
  combinedBarsHeight: number;
427
- combinedBottomBarsHeight: number;
428
572
  combinedMilestonesHeight: number;
429
573
  milestonesYOffset: number;
430
574
  chartsYOffset: number;
@@ -471,11 +615,12 @@ export declare const components: {
471
615
  barYPadding: number;
472
616
  barXPadding: number;
473
617
  chartMinHeight: number;
474
- chartMinLabelHeight: number;
475
618
  minZoom: number;
476
619
  maxZoom: number;
477
620
  minDate: string;
478
621
  maxDate: string;
622
+ minVisibleDate: string;
623
+ maxVisibleDate: string;
479
624
  cursorTimestamp: string | undefined;
480
625
  selectedClass: string | undefined;
481
626
  panOnDateClick: boolean;
@@ -485,14 +630,10 @@ export declare const components: {
485
630
  markers: import('./types').TimelineMarker[];
486
631
  stickyMarkers: boolean;
487
632
  fitMarkersOnChange: boolean;
488
- zoomToIntervalTransitionDuration: number;
633
+ fitMarkersTransitionDuration: number;
489
634
  zoomToBoundariesTransitionDuration: number;
490
635
  milestoneBulletSize: number;
491
636
  milestonesFirst: boolean;
492
- forbiddenIntervals: import('./types').TimelineInterval[];
493
- forbiddenIntervalColor: string;
494
- focusedInterval: import('./types').TimelineInterval | undefined;
495
- locked: boolean;
496
637
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
497
638
  EVideoEmbed: import("vue").DefineComponent<{
498
639
  videoUrl: {
@@ -537,14 +678,118 @@ export declare const components: {
537
678
  iframeListeners: Partial<HTMLIFrameElement>;
538
679
  iframeOptions: Record<string, any>;
539
680
  }>;
540
- 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>;
541
- 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>;
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;
749
+ }, {
750
+ contentStyle(): {
751
+ transform: string;
752
+ };
753
+ isZoomed(): boolean;
754
+ }, {
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
+ }>;
542
787
  };
543
788
  declare const _default: {
544
789
  install(Vue: VueConstructor): void;
545
790
  };
546
791
  export default _default;
547
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, };
792
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EToggleSwitch, EZoomable, };
548
793
  export * from './constants';
549
794
  export * from './types';
550
795
  export * from './utils';
@@ -25,6 +25,13 @@ 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
+ }
28
35
  export type TBadgeSize = (typeof BadgeSizes)[number];
29
36
  export type TAvatarSize = (typeof AvatarSizes)[number];
30
37
  export type TIconSize = (typeof IconSizes)[number];
@@ -98,8 +105,6 @@ export type TimelineEventsGroup = {
98
105
  milestonesDotSize?: number;
99
106
  height?: number;
100
107
  dotsSize?: number;
101
- bottom?: boolean;
102
- barBorderRadius?: number;
103
108
  };
104
109
  export type TimelineEventsByType = {
105
110
  [eventsType: string]: TimelineEventsGroup;
@@ -122,18 +127,5 @@ export type TimelineMarker = {
122
127
  maxDate?: string;
123
128
  [key: string]: any;
124
129
  };
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
- };
138
130
  declare const _default: {};
139
131
  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{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}
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%}