@evercam/ui 0.0.55-beta.10 → 0.0.55-beta.11

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,111 @@ 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
+ isLiveView: {
149
+ type: BooleanConstructor;
150
+ default: boolean;
151
+ };
152
+ pauseOnClick: {
153
+ type: BooleanConstructor;
154
+ default: boolean;
155
+ };
156
+ isHlsLoading: {
157
+ type: BooleanConstructor;
158
+ default: boolean;
159
+ };
160
+ isPlaying: {
161
+ type: BooleanConstructor;
162
+ default: boolean;
163
+ };
164
+ preloadedInterval: {
165
+ type: import("vue").PropType<{
166
+ start: string;
167
+ end: string;
168
+ }>;
169
+ default: () => {};
170
+ };
171
+ selectedResolution: {
172
+ type: import("vue").PropType<import('./components/EVideoPlayer.vue').EdgeVideoResolution | undefined>;
173
+ default: undefined;
174
+ };
175
+ isLive: {
176
+ type: BooleanConstructor;
177
+ default: boolean;
178
+ };
179
+ isZoomable: {
180
+ type: BooleanConstructor;
181
+ default: boolean;
182
+ };
183
+ zoomableIgnorePointerEvents: {
184
+ type: BooleanConstructor;
185
+ default: boolean;
186
+ };
187
+ blurBackground: {
188
+ type: BooleanConstructor;
189
+ default: boolean;
190
+ };
191
+ isRecordings: {
192
+ type: BooleanConstructor;
193
+ default: boolean;
194
+ };
195
+ progressBarEvents: {
196
+ type: ArrayConstructor;
197
+ default: () => never[];
198
+ };
199
+ progressBarFrames: {
200
+ type: ArrayConstructor;
201
+ default: () => never[];
202
+ };
203
+ progressBarFrameIndex: {
204
+ type: NumberConstructor;
205
+ default: number;
206
+ };
207
+ progressBarPreloadedFrames: {
208
+ type: ArrayConstructor;
209
+ default: () => never[];
210
+ };
211
+ thumbnailsUrls: {
212
+ type: import("vue").PropType<string[]>;
213
+ default: () => never[];
214
+ };
215
+ timezone: {
216
+ type: StringConstructor;
217
+ default: string;
218
+ };
219
+ playPauseAnimation: {
220
+ type: BooleanConstructor;
221
+ default: boolean;
222
+ };
223
+ disablePlayPauseAnimation: {
224
+ type: BooleanConstructor;
225
+ default: boolean;
226
+ };
227
+ }, {}, {
122
228
  playing: boolean;
123
229
  percentagePlayed: number;
124
230
  videoLength: string;
@@ -133,9 +239,16 @@ export declare const components: {
133
239
  isLoading: boolean;
134
240
  isError: boolean;
135
241
  player: import("hls.js").default;
242
+ playbackRetries: number;
243
+ }, {
244
+ sourceItems(): import('./components/EVideoPlayer.vue').VideoSource[];
245
+ hasStartedOrFinished(): boolean;
246
+ withControls(): "" | "hide";
136
247
  }, {
137
248
  initHls(): void;
249
+ onContainerClick(): void;
138
250
  handle404Error(): void;
251
+ handleHlsError(_: import("hls.js").Events.ERROR, data: import("hls.js").ErrorData): void;
139
252
  bindEvents(): void;
140
253
  unbindEvents(): void;
141
254
  bindVideoEvent(which: string): void;
@@ -148,9 +261,9 @@ export declare const components: {
148
261
  handleScrubbingOnMouseEnd(e: MouseEvent): void;
149
262
  handleEnded(): void;
150
263
  handleLoading(): void;
151
- play(): void;
264
+ play(): Promise<void>;
152
265
  pause(): void;
153
- togglePlay(): void;
266
+ togglePlay(): Promise<void>;
154
267
  setPlaying(state: boolean): void;
155
268
  seekToPercentage(percentage: number): void;
156
269
  convertTimeToDuration(seconds: number): string;
@@ -163,18 +276,139 @@ export declare const components: {
163
276
  skip(duration?: number): void;
164
277
  toggleScrubbing(e: MouseEvent): Promise<void>;
165
278
  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: {};
279
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
280
+ targetTimestamp: {
281
+ type: (StringConstructor | DateConstructor)[];
282
+ default: undefined;
283
+ };
284
+ sources: {
285
+ type: import("vue").PropType<string | import('./components/EVideoPlayer.vue').VideoSource[]>;
286
+ required: true;
287
+ };
288
+ videoListeners: {
289
+ type: import("vue").PropType<Partial<HTMLVideoElement>>;
290
+ default: () => {};
291
+ };
292
+ videoOptions: {
293
+ type: import("vue").PropType<Partial<HTMLVideoElement>>;
294
+ default: () => {};
295
+ };
296
+ isHls: {
297
+ type: BooleanConstructor;
298
+ default: boolean;
299
+ };
300
+ streamingToken: {
301
+ type: StringConstructor;
302
+ default: string;
303
+ };
304
+ isLiveView: {
305
+ type: BooleanConstructor;
306
+ default: boolean;
307
+ };
308
+ pauseOnClick: {
309
+ type: BooleanConstructor;
310
+ default: boolean;
311
+ };
312
+ isHlsLoading: {
313
+ type: BooleanConstructor;
314
+ default: boolean;
315
+ };
316
+ isPlaying: {
317
+ type: BooleanConstructor;
318
+ default: boolean;
319
+ };
320
+ preloadedInterval: {
321
+ type: import("vue").PropType<{
322
+ start: string;
323
+ end: string;
324
+ }>;
325
+ default: () => {};
326
+ };
327
+ selectedResolution: {
328
+ type: import("vue").PropType<import('./components/EVideoPlayer.vue').EdgeVideoResolution | undefined>;
329
+ default: undefined;
330
+ };
331
+ isLive: {
332
+ type: BooleanConstructor;
333
+ default: boolean;
334
+ };
335
+ isZoomable: {
336
+ type: BooleanConstructor;
337
+ default: boolean;
338
+ };
339
+ zoomableIgnorePointerEvents: {
340
+ type: BooleanConstructor;
341
+ default: boolean;
342
+ };
343
+ blurBackground: {
344
+ type: BooleanConstructor;
345
+ default: boolean;
346
+ };
347
+ isRecordings: {
348
+ type: BooleanConstructor;
349
+ default: boolean;
350
+ };
351
+ progressBarEvents: {
352
+ type: ArrayConstructor;
353
+ default: () => never[];
354
+ };
355
+ progressBarFrames: {
356
+ type: ArrayConstructor;
357
+ default: () => never[];
358
+ };
359
+ progressBarFrameIndex: {
360
+ type: NumberConstructor;
361
+ default: number;
362
+ };
363
+ progressBarPreloadedFrames: {
364
+ type: ArrayConstructor;
365
+ default: () => never[];
366
+ };
367
+ thumbnailsUrls: {
368
+ type: import("vue").PropType<string[]>;
369
+ default: () => never[];
370
+ };
371
+ timezone: {
372
+ type: StringConstructor;
373
+ default: string;
374
+ };
375
+ playPauseAnimation: {
376
+ type: BooleanConstructor;
377
+ default: boolean;
378
+ };
379
+ disablePlayPauseAnimation: {
380
+ type: BooleanConstructor;
381
+ default: boolean;
382
+ };
383
+ }>>, {
384
+ timezone: string;
385
+ isPlaying: boolean;
386
+ isLive: boolean;
387
+ targetTimestamp: string | Date;
388
+ thumbnailsUrls: string[];
389
+ selectedResolution: import('./components/EVideoPlayer.vue').EdgeVideoResolution | undefined;
390
+ isHlsLoading: boolean;
391
+ videoListeners: Partial<HTMLVideoElement>;
392
+ videoOptions: Partial<HTMLVideoElement>;
174
393
  isHls: boolean;
175
394
  streamingToken: string;
176
395
  isLiveView: boolean;
177
- }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
396
+ pauseOnClick: boolean;
397
+ preloadedInterval: {
398
+ start: string;
399
+ end: string;
400
+ };
401
+ isZoomable: boolean;
402
+ zoomableIgnorePointerEvents: boolean;
403
+ blurBackground: boolean;
404
+ isRecordings: boolean;
405
+ progressBarEvents: unknown[];
406
+ progressBarFrames: unknown[];
407
+ progressBarFrameIndex: number;
408
+ progressBarPreloadedFrames: unknown[];
409
+ playPauseAnimation: boolean;
410
+ disablePlayPauseAnimation: boolean;
411
+ }>;
178
412
  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
413
  tooltip: HTMLElement;
180
414
  cursor: HTMLElement;
@@ -311,7 +545,8 @@ export declare const components: {
311
545
  initCurtains(): void;
312
546
  createCurtains(): void;
313
547
  updateCurtains(): void;
314
- updateForbiddenIntervals(reset?: boolean): void;
548
+ initForbiddenIntervals(): void;
549
+ updateForbiddenIntervals(): void;
315
550
  drawEventsGroups(): void;
316
551
  drawLineGraphEventsGroups(): void;
317
552
  drawLineGraph({ events, gElement, color, type, }: {
@@ -326,13 +561,14 @@ export declare const components: {
326
561
  color: string;
327
562
  type: string;
328
563
  }): void;
329
- drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
564
+ drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, dots, dotsSize, }: {
330
565
  type: string;
331
566
  eventsGroup: import('./types').TimelineEventsGroup;
567
+ index?: number | undefined;
332
568
  milestone?: boolean | undefined;
569
+ height?: number | undefined;
333
570
  dots?: boolean | undefined;
334
571
  dotsSize?: number | undefined;
335
- bottom?: boolean | undefined;
336
572
  }): void;
337
573
  drawBarEventsGroups(): void;
338
574
  drawMilestonesPlaceholder(): void;
@@ -342,8 +578,6 @@ export declare const components: {
342
578
  border: string;
343
579
  };
344
580
  getMilestoneGroupYPosition(groupName: string): number;
345
- getBarGroupYPosition(groupName: string, bottom?: boolean | undefined): number;
346
- getBarGroupHeight(eventsGroup: import('./types').TimelineEventsGroup): number;
347
581
  updateMilestonesPositions(): void;
348
582
  drawBarChartEventsGroups(): void;
349
583
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -358,7 +592,7 @@ export declare const components: {
358
592
  color: string;
359
593
  height?: number | undefined;
360
594
  }): void;
361
- drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
595
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, }: {
362
596
  events: import('./types').TimelineEvent[];
363
597
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
364
598
  yPosition: number;
@@ -366,8 +600,6 @@ export declare const components: {
366
600
  type: string;
367
601
  dots?: boolean | undefined;
368
602
  dotsSize?: number | undefined;
369
- height?: number | undefined;
370
- barBorderRadius?: number | undefined;
371
603
  }): void;
372
604
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
373
605
  events: import('./types').TimelineEvent[];
@@ -421,7 +653,6 @@ export declare const components: {
421
653
  getSortedEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
422
654
  }, {
423
655
  combinedBarsHeight: number;
424
- combinedBottomBarsHeight: number;
425
656
  combinedMilestonesHeight: number;
426
657
  milestonesYOffset: number;
427
658
  chartsYOffset: number;
@@ -468,11 +699,12 @@ export declare const components: {
468
699
  barYPadding: number;
469
700
  barXPadding: number;
470
701
  chartMinHeight: number;
471
- chartMinLabelHeight: number;
472
702
  minZoom: number;
473
703
  maxZoom: number;
474
704
  minDate: string;
475
705
  maxDate: string;
706
+ minVisibleDate: string;
707
+ maxVisibleDate: string;
476
708
  cursorTimestamp: string | undefined;
477
709
  selectedClass: string | undefined;
478
710
  panOnDateClick: boolean;
@@ -486,8 +718,6 @@ export declare const components: {
486
718
  zoomToBoundariesTransitionDuration: number;
487
719
  milestoneBulletSize: number;
488
720
  milestonesFirst: boolean;
489
- forbiddenIntervals: import('./types').TimelineForbiddenInterval[];
490
- forbiddenIntervalColor: string;
491
721
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
492
722
  EVideoEmbed: import("vue").DefineComponent<{
493
723
  videoUrl: {
@@ -532,12 +762,118 @@ export declare const components: {
532
762
  iframeListeners: Partial<HTMLIFrameElement>;
533
763
  iframeOptions: Record<string, any>;
534
764
  }>;
765
+ EToggleSwitch: import("vue").DefineComponent<{
766
+ options: {
767
+ type: import("vue").PropType<import('./components/EToggleSwitch.vue').EToggleSwitchOptions[]>;
768
+ required: true;
769
+ };
770
+ color: {
771
+ type: import("vue").PropType<"primary" | "brand" | "gray">;
772
+ default: string;
773
+ };
774
+ size: {
775
+ type: import("vue").PropType<"lg" | "md" | "sm">;
776
+ default: string;
777
+ };
778
+ defaultValue: {
779
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
780
+ default: null;
781
+ };
782
+ }, {}, {
783
+ value: any;
784
+ }, {}, {
785
+ handleClick(value: any): void;
786
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
787
+ options: {
788
+ type: import("vue").PropType<import('./components/EToggleSwitch.vue').EToggleSwitchOptions[]>;
789
+ required: true;
790
+ };
791
+ color: {
792
+ type: import("vue").PropType<"primary" | "brand" | "gray">;
793
+ default: string;
794
+ };
795
+ size: {
796
+ type: import("vue").PropType<"lg" | "md" | "sm">;
797
+ default: string;
798
+ };
799
+ defaultValue: {
800
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
801
+ default: null;
802
+ };
803
+ }>>, {
804
+ color: "primary" | "brand" | "gray";
805
+ size: "lg" | "md" | "sm";
806
+ defaultValue: string | number | boolean;
807
+ }>;
808
+ EZoomable: import("vue").DefineComponent<{
809
+ ignorePointerEvents: {
810
+ type: BooleanConstructor;
811
+ default: boolean;
812
+ };
813
+ withOverlay: {
814
+ type: BooleanConstructor;
815
+ default: boolean;
816
+ };
817
+ }, {}, {
818
+ scale: number;
819
+ minScale: number;
820
+ maxScale: number;
821
+ top: number;
822
+ left: number;
823
+ isPanning: boolean;
824
+ panStart: {
825
+ x: number;
826
+ y: number;
827
+ };
828
+ isPinching: boolean;
829
+ previousPinchDistance: number;
830
+ pinchDistance: number;
831
+ pointers: {};
832
+ transform: string;
833
+ }, {
834
+ contentStyle(): {
835
+ transform: string;
836
+ };
837
+ isZoomed(): boolean;
838
+ }, {
839
+ updateZoomScale(): void;
840
+ handleZoom(e: any): void;
841
+ handleMouseDown(e: any): void;
842
+ handleMouseUp(): void;
843
+ handleMouseLeave(): void;
844
+ handleMouseMove(e: any): void;
845
+ applyBoundsCorrection(): void;
846
+ updateTransform(): void;
847
+ getPointersDistance(a: any, b: any): number;
848
+ getPointersMidPoint(a: any, b: any): {
849
+ x: any;
850
+ y: any;
851
+ };
852
+ updatePointerEvent(e: any): void;
853
+ clearPointerEvent(e: any): void;
854
+ updatePinchDistance(): void;
855
+ handlePointerDown(e: any): void;
856
+ handlePointerMove(e: any): void;
857
+ handlePointerUp(e: any): void;
858
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
859
+ ignorePointerEvents: {
860
+ type: BooleanConstructor;
861
+ default: boolean;
862
+ };
863
+ withOverlay: {
864
+ type: BooleanConstructor;
865
+ default: boolean;
866
+ };
867
+ }>>, {
868
+ ignorePointerEvents: boolean;
869
+ withOverlay: boolean;
870
+ }>;
535
871
  };
536
872
  declare const _default: {
537
873
  install(Vue: VueConstructor): void;
538
874
  };
539
875
  export default _default;
540
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, };
876
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EToggleSwitch, EZoomable, };
541
877
  export * from './constants';
542
878
  export * from './types';
543
879
  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,9 +127,5 @@ export type TimelineMarker = {
122
127
  maxDate?: string;
123
128
  [key: string]: any;
124
129
  };
125
- export type TimelineForbiddenInterval = {
126
- startDate: Date | string | number;
127
- endDate: Date | string | number;
128
- };
129
130
  declare const _default: {};
130
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%}
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}.text-shadow{text-shadow:0 0 4px rgb(0 0 0 / 75%)}.text-drop-shadow{filter:drop-shadow(0 0 5px #0009)}.hover-filter-drop{filter:drop-shadow(0 0 4px rgba(255,255,255,.67))}select{background-image:none!important}.player-progress-tooltip-shadow[data-v-92f9461c]{text-shadow:0 0 4px rgba(0,0,0,.75)}.img-shadow{box-shadow:#0000 0 0,#0000 0 0,#0000004a 0 20px 25px -5px,#00000069 0 8px 10px -6px}.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-b64a8d0d]{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-b64a8d0d]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-b64a8d0d]{max-width:initial;width:100%;max-height:100vh}video[data-v-b64a8d0d]{width:100%;height:inherit}.video-controls-container[data-v-b64a8d0d]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-b64a8d0d]{display:none}.video-controls-container[data-v-b64a8d0d]: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-b64a8d0d],.video-container:focus-within .video-controls-container[data-v-b64a8d0d],.video-container.paused .video-controls-container[data-v-b64a8d0d]{opacity:1}.video-controls-container .controls[data-v-b64a8d0d]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-b64a8d0d]{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-b64a8d0d]:hover{opacity:1}.duration-container[data-v-b64a8d0d]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-b64a8d0d]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-b64a8d0d]{width:50px}.timeline-container[data-v-b64a8d0d]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-b64a8d0d]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-b64a8d0d]: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-b64a8d0d]: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-b64a8d0d]{--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-b64a8d0d]{display:block}.video-container.scrubbing .timeline[data-v-b64a8d0d]:before,.timeline-container:hover .timeline[data-v-b64a8d0d]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-b64a8d0d],.timeline-container:hover .thumb-indicator[data-v-b64a8d0d]{--scale: 1}.video-container.scrubbing .timeline[data-v-b64a8d0d],.timeline-container:hover .timeline[data-v-b64a8d0d]{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%}