@evercam/ui 0.0.55-beta.1 → 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;
@@ -233,6 +467,7 @@ export declare const components: {
233
467
  initialMarkerDragMouseOffset: number;
234
468
  selectedMilestoneId: any;
235
469
  isInitialized: boolean;
470
+ lastValidTransform: import("d3-zoom").ZoomTransform;
236
471
  }, {
237
472
  updateTimeline(): void;
238
473
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
@@ -276,6 +511,7 @@ export declare const components: {
276
511
  handleBarMouseOut(): void;
277
512
  handleLabelMouseOver(groupType: string): void;
278
513
  handleLabelMouseLeave(groupType: string): void;
514
+ isZoomAllowed(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): boolean;
279
515
  handleZoom(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): void;
280
516
  panToTimestamp(targetTimestamp: string | Date): void;
281
517
  emitCurtainChange(): void;
@@ -298,7 +534,7 @@ export declare const components: {
298
534
  getEventRectWidth(d: import('./types').TimelineEvent): number;
299
535
  getEventText(e: import('./types').TimelineEvent): string;
300
536
  getElementLeftPosition(element: HTMLElement): number;
301
- isTimestampAllowedForMarker(timestamp: any, marker: import('./types').TimelineMarker): boolean;
537
+ isTimestampAllowedForMarker(timestamp: number | Date, marker: import('./types').TimelineMarker): boolean;
302
538
  handleMarkerDrag({ marker, markerElement, dragEvent, }: {
303
539
  marker: import('./types').TimelineMarker;
304
540
  markerElement: import("d3-selection").Selection<any, import('./types').TimelineMarker, any, any>;
@@ -325,12 +561,14 @@ export declare const components: {
325
561
  color: string;
326
562
  type: string;
327
563
  }): void;
328
- drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
564
+ drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, dots, dotsSize, }: {
329
565
  type: string;
330
566
  eventsGroup: import('./types').TimelineEventsGroup;
331
567
  index?: number | undefined;
332
568
  milestone?: boolean | undefined;
333
569
  height?: number | undefined;
570
+ dots?: boolean | undefined;
571
+ dotsSize?: number | undefined;
334
572
  }): void;
335
573
  drawBarEventsGroups(): void;
336
574
  drawMilestonesPlaceholder(): void;
@@ -354,12 +592,14 @@ export declare const components: {
354
592
  color: string;
355
593
  height?: number | undefined;
356
594
  }): void;
357
- drawBars({ events, gElement, yPosition, color, type, }: {
595
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, }: {
358
596
  events: import('./types').TimelineEvent[];
359
597
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
360
598
  yPosition: number;
361
599
  color: string;
362
600
  type: string;
601
+ dots?: boolean | undefined;
602
+ dotsSize?: number | undefined;
363
603
  }): void;
364
604
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
365
605
  events: import('./types').TimelineEvent[];
@@ -409,8 +649,15 @@ export declare const components: {
409
649
  count: number;
410
650
  })[];
411
651
  fillEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
412
- onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: string): void;
652
+ onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: any): void;
653
+ getSortedEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
413
654
  }, {
655
+ combinedBarsHeight: number;
656
+ combinedMilestonesHeight: number;
657
+ milestonesYOffset: number;
658
+ chartsYOffset: number;
659
+ barsYOffset: number;
660
+ hasMilestones: boolean;
414
661
  barChartHeight: number;
415
662
  classes: Record<string, string | Record<string, boolean>>;
416
663
  lineGraphGroups: import('./types').TimelineEventsByType;
@@ -456,6 +703,8 @@ export declare const components: {
456
703
  maxZoom: number;
457
704
  minDate: string;
458
705
  maxDate: string;
706
+ minVisibleDate: string;
707
+ maxVisibleDate: string;
459
708
  cursorTimestamp: string | undefined;
460
709
  selectedClass: string | undefined;
461
710
  panOnDateClick: boolean;
@@ -468,6 +717,7 @@ export declare const components: {
468
717
  fitMarkersTransitionDuration: number;
469
718
  zoomToBoundariesTransitionDuration: number;
470
719
  milestoneBulletSize: number;
720
+ milestonesFirst: boolean;
471
721
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
472
722
  EVideoEmbed: import("vue").DefineComponent<{
473
723
  videoUrl: {
@@ -512,12 +762,118 @@ export declare const components: {
512
762
  iframeListeners: Partial<HTMLIFrameElement>;
513
763
  iframeOptions: Record<string, any>;
514
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
+ }>;
515
871
  };
516
872
  declare const _default: {
517
873
  install(Vue: VueConstructor): void;
518
874
  };
519
875
  export default _default;
520
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, };
876
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EToggleSwitch, EZoomable, };
521
877
  export * from './constants';
522
878
  export * from './types';
523
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];
@@ -79,19 +86,25 @@ export type TimelineMilestoneEvent = {
79
86
  export type TimelineEvent = TimelineBarEvent | TimelineRangeEvent | TimelineCountEvent | TimelineMilestoneEvent;
80
87
  export declare enum TimelineChartType {
81
88
  bars = "bars",
89
+ dots = "dots",
82
90
  lineGraph = "lineGraph",
83
91
  barChart = "barGraph",
84
92
  milestones = "milestones"
85
93
  }
86
94
  export type TimelineEventsGroup = {
95
+ events: Array<TimelineEvent>;
87
96
  label: string;
88
97
  color: string;
89
98
  bgColor?: string;
90
99
  isLoading?: Boolean;
91
100
  isHidden?: Boolean;
92
101
  chartType?: TimelineChartType;
93
- events: Array<TimelineEvent>;
102
+ dots?: boolean;
103
+ milestonesTransitionDuration?: number;
104
+ milestonesLineHeight?: number;
105
+ milestonesDotSize?: number;
94
106
  height?: number;
107
+ dotsSize?: number;
95
108
  };
96
109
  export type TimelineEventsByType = {
97
110
  [eventsType: string]: TimelineEventsGroup;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .e-spinner[data-v-29711f67]{vertical-align:center}.e-spinner__primary[data-v-29711f67],.e-spinner__secondary[data-v-29711f67]{stroke-width:0;animation:fade-29711f67;animation-iteration-count:infinite}@keyframes fade-29711f67{0%{fill-opacity:0}50%{fill-opacity:1}to{fill-opacity:0}}.e-row.e-row--no-gutters{margin:0}.e-row.e-row--no-gutters>.e-col{padding:0}.e-col{padding:.75rem}.spinner-container[data-v-9071f674]{position:absolute;background:linear-gradient(to top,rgba(0,0,0,.65),transparent);inset:0;display:flex;justify-content:center;align-items:center;vertical-align:middle}.video-container[data-v-9071f674]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-9071f674]{max-width:initial;width:100%;max-height:100vh}video[data-v-9071f674]{width:100%;height:inherit}.video-controls-container[data-v-9071f674]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-9071f674]{display:none}.video-controls-container[data-v-9071f674]:before{content:"";position:absolute;bottom:0;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);width:100%;aspect-ratio:6 / 1;z-index:-1;pointer-events:none}.video-container:hover .video-controls-container[data-v-9071f674],.video-container:focus-within .video-controls-container[data-v-9071f674],.video-container.paused .video-controls-container[data-v-9071f674]{opacity:1}.video-controls-container .controls[data-v-9071f674]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-9071f674]{background:none;border:none;color:inherit;padding:0;height:32px;width:32px;font-size:1.35rem;cursor:pointer;opacity:.85;transition:opacity .15s ease-in-out}.video-controls-container .controls button[data-v-9071f674]:hover{opacity:1}.duration-container[data-v-9071f674]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-9071f674]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-9071f674]{width:50px}.timeline-container[data-v-9071f674]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-9071f674]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-9071f674]:before{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--preview-position) * 100%);background-color:#969696;display:none}.timeline[data-v-9071f674]:after{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--progress-position) * 100%);background-color:red}.timeline .thumb-indicator[data-v-9071f674]{--scale: 0;position:absolute;transform:translate(-50%) scale(var(--scale));height:200%;top:-50%;left:calc(var(--progress-position) * 100%);background-color:red;border-radius:50%;transition:transform .15s ease-in-out;aspect-ratio:1 / 1}.video-container.scrubbing .thumbnail-img[data-v-9071f674]{display:block}.video-container.scrubbing .timeline[data-v-9071f674]:before,.timeline-container:hover .timeline[data-v-9071f674]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-9071f674],.timeline-container:hover .thumb-indicator[data-v-9071f674]{--scale: 1}.video-container.scrubbing .timeline[data-v-9071f674],.timeline-container:hover .timeline[data-v-9071f674]{height:100%}.e-tl-milestone{position:absolute;border-radius:10em;box-sizing:border-box}.e-tl-milestone-content{opacity:0;width:0;height:0;white-space:nowrap;pointer-events:none}.e-tl-milestone--hovered{cursor:pointer;min-height:26px;padding:0 8px;border-radius:.5em}.e-tl-milestone--hovered .e-tl-milestone-content{opacity:1;font-size:small;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.e-tl-milestone-label{position:absolute;top:0;left:0;opacity:1;pointer-events:none;height:100%;width:100%}.e-tl-milestone--hovered .e-tl-milestone-label{opacity:0}.e-timeline svg{display:block}.e-timeline .x-axis-overview .domain,.e-timeline .x-axis-detailed .domain,.e-timeline .x-axis-overviewBackground .domain,.e-timeline .x-axis-detailedBackground .domain{display:none}.e-timeline .x-axis-detailedBackground .domain,.e-timeline .x-axis-detailedBackground text{display:none}.e-timeline .x-axis-overview>g.tick>line{opacity:.1;stroke-width:3;stroke-linecap:round}.e-timeline .x-axis-detailed>g.tick>line{opacity:.1;stroke-linecap:round}.e-timeline .x-axis-detailedBackground>g.tick>line{opacity:.075;stroke-linecap:round}.e-timeline--dark .tick line{stroke:#fff}.e-timeline--dark .tick text{fill:#fff}@keyframes moveGradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}@keyframes pulse-rect{0%{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}50%{filter:saturate(.5) drop-shadow(0 0 0 #0000)}to{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}}@keyframes pulse-circle{0%{r:4px}50%{r:1px}to{r:4px}}.loading-indicator{animation:moveGradient 1.5s ease-in infinite}.line-graph-dot--active{animation:pulse-circle 1s ease-in-out infinite}.event-rect--hovered{animation:pulse-rect 1s ease-in-out infinite}@keyframes dash{0%{filter:saturate(1) drop-shadow(0 0 0 #0000)}50%{stroke-width:2px;filter:saturate(2.5) drop-shadow(0 0 0 #0006)}to{filter:saturate(1) drop-shadow(0 0 0 #0000)}}.line-graph-group--highlighted path{animation:dash 1s ease-in-out infinite}.e-timeline--dragging{cursor:ew-resize}.curtain{cursor:ew-resize;fill:#3332;stroke-width:1px;stroke:#3338;transition:stroke-width .2s}.e-timeline--dragging .curtain{stroke-width:3px}.e-timeline--dark .curtain{fill:#fff3;stroke:#fff7}.event-bar-hover-zone{cursor:pointer}.external-labels-container{position:absolute;top:-1.5em;left:0}.external-label{margin-right:.35em;border-width:.5px;border-radius:.2em}.external-label__content{cursor:pointer;font-size:.8em;font-weight:500;padding:0 .6em;line-height:1.4em}.marker-label{transition:transform .2s;transform:translateY(-32px);position:absolute;width:max-content}.marker-label-text{position:absolute;width:max-content;font-size:.8em;font-weight:500;padding:0 .75em;border-radius:.4em .4em .4em 0;box-shadow:0 0 5px -1px #000000f5}.marker-label-text:after{content:"";background:inherit;width:5px;height:5px;bottom:-5px;position:absolute;left:2px;clip-path:path("M 0,5 L 0,0 L 5,0 A 5,5 0 0 0 0,5")}.marker-label-text:before{content:"";background:inherit;height:20px;top:18px;position:absolute;width:2px;left:0}.marker{top:0;filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px;transition:top .2s,height .2s}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1)}.marker:hover .marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker:hover .marker-label-text{box-shadow:2px 2px 11px -4px #000}.marker--hidden:hover .marker-label{transform:translateY(-54px)}.marker--draggable,.marker--draggable:hover{user-select:none;cursor:grab}.marker--dragged:hover{cursor:grabbing}.forbidden-interval{opacity:.2}.e-timeline-milestones{height:0}.video-embed[data-v-0ecf4a71]{position:relative;width:100%!important;padding-bottom:56.25%}.video-embed iframe[data-v-0ecf4a71]{position:absolute;top:0;left:0;width:100%;height:100%}
1
+ .e-spinner[data-v-29711f67]{vertical-align:center}.e-spinner__primary[data-v-29711f67],.e-spinner__secondary[data-v-29711f67]{stroke-width:0;animation:fade-29711f67;animation-iteration-count:infinite}@keyframes fade-29711f67{0%{fill-opacity:0}50%{fill-opacity:1}to{fill-opacity:0}}.e-row.e-row--no-gutters{margin:0}.e-row.e-row--no-gutters>.e-col{padding:0}.e-col{padding:.75rem}.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%}