@evercam/ui 0.0.57 → 0.0.58-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,8 +7,14 @@ import ECol from './components/ECol.vue';
7
7
  import EVideoPlayer from './components/EVideoPlayer.vue';
8
8
  import ETimeline from './components/ETimeline.vue';
9
9
  import EVideoEmbed from './components/EVideoEmbed.vue';
10
+ import EHeatmapBar from './components/EHeatmapBar.vue';
11
+ import EHoursHeatmap from './components/EHoursHeatmap.vue';
10
12
  import EReadMore from './components/EReadMore.vue';
11
13
  import ETruncatedDiv from './components/ETruncatedDiv.vue';
14
+ import ECompareSeparator from './components/ECompareSeparator.vue';
15
+ import ESvgIcon from './components/ESvgIcon.vue';
16
+ import EToggleSwitch from './components/EToggleSwitch.vue';
17
+ import EZoomable from './components/EZoomable.vue';
12
18
  import { VueConstructor } from "vue";
13
19
  export declare const components: {
14
20
  EAvatar: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, {
@@ -120,7 +126,80 @@ export declare const components: {
120
126
  xs: string | number | boolean;
121
127
  xl: string | number | boolean;
122
128
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
123
- 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>>, {
129
+ EVideoPlayer: import("vue").DefineComponent<{
130
+ targetTimestamp: {
131
+ type: (StringConstructor | DateConstructor)[];
132
+ default: undefined;
133
+ };
134
+ sources: {
135
+ type: import("vue").PropType<string | import('./components/EVideoPlayer.vue').VideoSource[]>;
136
+ required: true;
137
+ };
138
+ videoListeners: {
139
+ type: import("vue").PropType<Partial<HTMLVideoElement>>;
140
+ default: () => {};
141
+ };
142
+ videoOptions: {
143
+ type: import("vue").PropType<Partial<HTMLVideoElement>>;
144
+ default: () => {};
145
+ };
146
+ isHls: {
147
+ type: BooleanConstructor;
148
+ default: boolean;
149
+ };
150
+ streamingToken: {
151
+ type: StringConstructor;
152
+ default: string;
153
+ };
154
+ pauseOnClick: {
155
+ type: BooleanConstructor;
156
+ default: boolean;
157
+ };
158
+ isHlsLoading: {
159
+ type: BooleanConstructor;
160
+ default: boolean;
161
+ };
162
+ isPlaying: {
163
+ type: BooleanConstructor;
164
+ default: boolean;
165
+ };
166
+ isZoomable: {
167
+ type: BooleanConstructor;
168
+ default: boolean;
169
+ };
170
+ zoomableIgnorePointerEvents: {
171
+ type: BooleanConstructor;
172
+ default: boolean;
173
+ };
174
+ timezone: {
175
+ type: StringConstructor;
176
+ default: string;
177
+ };
178
+ playPauseAnimation: {
179
+ type: BooleanConstructor;
180
+ default: boolean;
181
+ };
182
+ disablePlayPauseAnimation: {
183
+ type: BooleanConstructor;
184
+ default: boolean;
185
+ };
186
+ isWebRtc: {
187
+ type: BooleanConstructor;
188
+ default: boolean;
189
+ };
190
+ withColoredLoader: {
191
+ type: BooleanConstructor;
192
+ default: boolean;
193
+ };
194
+ loaderSize: {
195
+ type: StringConstructor;
196
+ default: string;
197
+ };
198
+ withOverlayOnBackground: {
199
+ type: BooleanConstructor;
200
+ default: boolean;
201
+ };
202
+ }, {}, {
124
203
  playing: boolean;
125
204
  percentagePlayed: number;
126
205
  videoLength: string;
@@ -135,10 +214,23 @@ export declare const components: {
135
214
  isLoading: boolean;
136
215
  isError: boolean;
137
216
  player: import("hls.js").default;
217
+ playbackRetries: number;
218
+ preloadedSeconds: number;
219
+ preloadedInterval: {
220
+ start: string;
221
+ end: string;
222
+ };
223
+ }, {
224
+ sourceItems(): import('./components/EVideoPlayer.vue').VideoSource[];
225
+ hasStartedOrFinished(): boolean;
226
+ withControls(): "" | "hide";
138
227
  }, {
139
228
  initHls(): void;
229
+ onContainerClick(): void;
140
230
  handle404Error(): void;
231
+ handleHlsError(_: import("hls.js").Events.ERROR, data: import("hls.js").ErrorData): void;
141
232
  bindEvents(): void;
233
+ onProgress(): void;
142
234
  unbindEvents(): void;
143
235
  bindVideoEvent(which: string): void;
144
236
  initializePlayer(): void;
@@ -150,9 +242,9 @@ export declare const components: {
150
242
  handleScrubbingOnMouseEnd(e: MouseEvent): void;
151
243
  handleEnded(): void;
152
244
  handleLoading(): void;
153
- play(): void;
245
+ play(): Promise<void>;
154
246
  pause(): void;
155
- togglePlay(): void;
247
+ togglePlay(): Promise<void>;
156
248
  setPlaying(state: boolean): void;
157
249
  seekToPercentage(percentage: number): void;
158
250
  convertTimeToDuration(seconds: number): string;
@@ -165,18 +257,98 @@ export declare const components: {
165
257
  skip(duration?: number): void;
166
258
  toggleScrubbing(e: MouseEvent): Promise<void>;
167
259
  handleKeyDown(e: KeyboardEvent): void;
168
- }, {
169
- sourceItems: import('./components/EVideoPlayer.vue').VideoSource[];
170
- hasStartedOrFinished: boolean;
171
- withControls: "" | "hide";
172
- }, {
173
- sources: string | import('./components/EVideoPlayer.vue').VideoSource[];
174
- videoListeners: {};
175
- videoOptions: {};
260
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
261
+ targetTimestamp: {
262
+ type: (StringConstructor | DateConstructor)[];
263
+ default: undefined;
264
+ };
265
+ sources: {
266
+ type: import("vue").PropType<string | import('./components/EVideoPlayer.vue').VideoSource[]>;
267
+ required: true;
268
+ };
269
+ videoListeners: {
270
+ type: import("vue").PropType<Partial<HTMLVideoElement>>;
271
+ default: () => {};
272
+ };
273
+ videoOptions: {
274
+ type: import("vue").PropType<Partial<HTMLVideoElement>>;
275
+ default: () => {};
276
+ };
277
+ isHls: {
278
+ type: BooleanConstructor;
279
+ default: boolean;
280
+ };
281
+ streamingToken: {
282
+ type: StringConstructor;
283
+ default: string;
284
+ };
285
+ pauseOnClick: {
286
+ type: BooleanConstructor;
287
+ default: boolean;
288
+ };
289
+ isHlsLoading: {
290
+ type: BooleanConstructor;
291
+ default: boolean;
292
+ };
293
+ isPlaying: {
294
+ type: BooleanConstructor;
295
+ default: boolean;
296
+ };
297
+ isZoomable: {
298
+ type: BooleanConstructor;
299
+ default: boolean;
300
+ };
301
+ zoomableIgnorePointerEvents: {
302
+ type: BooleanConstructor;
303
+ default: boolean;
304
+ };
305
+ timezone: {
306
+ type: StringConstructor;
307
+ default: string;
308
+ };
309
+ playPauseAnimation: {
310
+ type: BooleanConstructor;
311
+ default: boolean;
312
+ };
313
+ disablePlayPauseAnimation: {
314
+ type: BooleanConstructor;
315
+ default: boolean;
316
+ };
317
+ isWebRtc: {
318
+ type: BooleanConstructor;
319
+ default: boolean;
320
+ };
321
+ withColoredLoader: {
322
+ type: BooleanConstructor;
323
+ default: boolean;
324
+ };
325
+ loaderSize: {
326
+ type: StringConstructor;
327
+ default: string;
328
+ };
329
+ withOverlayOnBackground: {
330
+ type: BooleanConstructor;
331
+ default: boolean;
332
+ };
333
+ }>>, {
334
+ timezone: string;
335
+ isPlaying: boolean;
336
+ targetTimestamp: string | Date;
337
+ videoListeners: Partial<HTMLVideoElement>;
338
+ videoOptions: Partial<HTMLVideoElement>;
176
339
  isHls: boolean;
177
340
  streamingToken: string;
178
- isLiveView: boolean;
179
- }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
341
+ pauseOnClick: boolean;
342
+ isHlsLoading: boolean;
343
+ isZoomable: boolean;
344
+ zoomableIgnorePointerEvents: boolean;
345
+ playPauseAnimation: boolean;
346
+ disablePlayPauseAnimation: boolean;
347
+ isWebRtc: boolean;
348
+ withColoredLoader: boolean;
349
+ loaderSize: string;
350
+ withOverlayOnBackground: boolean;
351
+ }>;
180
352
  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>>, {
181
353
  tooltip: HTMLElement;
182
354
  cursor: HTMLElement;
@@ -570,13 +742,117 @@ export declare const components: {
570
742
  width: string | number;
571
743
  fixedWidth: boolean;
572
744
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
745
+ ECompareSeparator: import("vue/types/vue").ExtendedVue<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>>, unknown, unknown, {
746
+ separatorStyle: Record<string, any>;
747
+ }, {
748
+ xOffset: string | number;
749
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
750
+ EToggleSwitch: 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>>, {
751
+ value: any;
752
+ }, {
753
+ getButtonClasses(optionValue: any): {
754
+ "e-bg-inherit": boolean;
755
+ "e-bg-brand-600": boolean;
756
+ "e-bg-gray-600": boolean;
757
+ "e-bg-[#629efc] e-text-gray-900 e-font-normal": boolean;
758
+ };
759
+ handleClick(value: any): void;
760
+ }, {
761
+ sizeClasses: {
762
+ container: import('./components/EToggleSwitch.vue').CssClassMap;
763
+ button: import('./components/EToggleSwitch.vue').CssClassMap;
764
+ text: import('./components/EToggleSwitch.vue').CssClassMap;
765
+ };
766
+ containerClasses: import('./components/EToggleSwitch.vue').CssClassMap;
767
+ textClasses: import('./components/EToggleSwitch.vue').CssClassMap;
768
+ buttonBaseClasses: import('./components/EToggleSwitch.vue').CssClassMap;
769
+ }, {
770
+ options: import('./components/EToggleSwitch.vue').EToggleSwitchOption[];
771
+ color: string;
772
+ size: import('./types').Size;
773
+ defaultValue: string | number | boolean;
774
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
775
+ EZoomable: import("vue").DefineComponent<{
776
+ ignorePointerEvents: {
777
+ type: BooleanConstructor;
778
+ default: boolean;
779
+ };
780
+ withOverlay: {
781
+ type: BooleanConstructor;
782
+ default: boolean;
783
+ };
784
+ disabled: {
785
+ type: BooleanConstructor;
786
+ default: boolean;
787
+ };
788
+ }, {}, {
789
+ scale: number;
790
+ minScale: number;
791
+ maxScale: number;
792
+ top: number;
793
+ left: number;
794
+ isPanning: boolean;
795
+ panStart: {
796
+ x: number;
797
+ y: number;
798
+ };
799
+ isPinching: boolean;
800
+ previousPinchDistance: number;
801
+ pinchDistance: number;
802
+ pointers: {};
803
+ transform: string;
804
+ }, {
805
+ contentStyle(): {
806
+ transform: string;
807
+ };
808
+ isZoomed(): boolean;
809
+ }, {
810
+ updateZoomScale(): void;
811
+ handleZoom(e: any): void;
812
+ handleMouseDown(e: any): void;
813
+ handleMouseUp(): void;
814
+ handleMouseLeave(): void;
815
+ handleMouseMove(e: any): void;
816
+ applyBoundsCorrection(): void;
817
+ updateTransform(): void;
818
+ getPointersDistance(a: any, b: any): number;
819
+ getPointersMidPoint(a: any, b: any): {
820
+ x: any;
821
+ y: any;
822
+ };
823
+ updatePointerEvent(e: any): void;
824
+ clearPointerEvent(e: any): void;
825
+ updatePinchDistance(): void;
826
+ handlePointerDown(e: any): void;
827
+ handlePointerMove(e: any): void;
828
+ handlePointerUp(e: any): void;
829
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
830
+ ignorePointerEvents: {
831
+ type: BooleanConstructor;
832
+ default: boolean;
833
+ };
834
+ withOverlay: {
835
+ type: BooleanConstructor;
836
+ default: boolean;
837
+ };
838
+ disabled: {
839
+ type: BooleanConstructor;
840
+ default: boolean;
841
+ };
842
+ }>>, {
843
+ ignorePointerEvents: boolean;
844
+ withOverlay: boolean;
845
+ disabled: boolean;
846
+ }>;
847
+ ESvgIcon: any;
573
848
  };
574
849
  declare const _default: {
575
850
  install(Vue: VueConstructor): void;
576
851
  };
577
852
  export default _default;
578
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EReadMore, ETruncatedDiv, };
853
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, EHeatmapBar, EHoursHeatmap, EReadMore, ETruncatedDiv, ECompareSeparator, EToggleSwitch, EZoomable, ESvgIcon, };
579
854
  export * from './constants';
580
855
  export * from './types';
581
856
  export * from './utils';
582
857
  export * from './directives';
858
+ export * from './mixins';
@@ -0,0 +1,13 @@
1
+ import Vue from "vue";
2
+ export interface IEventListener {
3
+ event: string;
4
+ cb: () => void;
5
+ element: EventTarget | null;
6
+ }
7
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
8
+ eventListeners: IEventListener[];
9
+ }, {
10
+ $addEventListener(event: string, cb: () => void, element?: Window & typeof globalThis): void;
11
+ $removeEventListeners(): void;
12
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
13
+ export default _default;
@@ -0,0 +1,25 @@
1
+ /// <reference types="node" />
2
+ import Vue from "vue";
3
+ export interface InactivityListenerMixinProps {
4
+ duration: number;
5
+ reminders?: number[];
6
+ callback: () => void;
7
+ }
8
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, unknown, {
9
+ resetInactivityListenerTimer(callback?: () => void, duration?: number, reminders?: number[]): void;
10
+ setInactivityListenerTimer(callback?: () => void, duration?: number, reminders?: number[]): void;
11
+ setInactivityListenerReminderTimers(callback?: () => void, reminders?: number[], index?: number): void;
12
+ $registerInactivityListener({ callback, duration, reminders, }: InactivityListenerMixinProps): void;
13
+ $removeInactivityListeners(): void;
14
+ }, unknown, Record<never, any>, {}, import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
15
+ eventListeners: import('../mixins/event-listeners').IEventListener[];
16
+ }, {
17
+ $addEventListener(event: string, cb: () => void, element?: Window & typeof globalThis): void;
18
+ $removeEventListeners(): void;
19
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin> | import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
20
+ timeouts: number[];
21
+ }, {
22
+ $setTimeout(cb: () => void, timeout?: number): NodeJS.Timeout;
23
+ $clearTimeouts(): void;
24
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>, import("vue").ComponentOptionsMixin>;
25
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import inactivityListener from '../mixins/inactivity-listener';
2
+ import eventListeners from '../mixins/event-listeners';
3
+ import timeouts from '../mixins/timeouts';
4
+ export { inactivityListener, eventListeners, timeouts };
@@ -0,0 +1,8 @@
1
+ import Vue from "vue";
2
+ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => Vue<Record<string, any>, Record<string, any>, never, never, any>>, {
3
+ timeouts: number[];
4
+ }, {
5
+ $setTimeout(cb: () => void, timeout?: number): NodeJS.Timeout;
6
+ $clearTimeouts(): void;
7
+ }, unknown, Record<never, any>, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
8
+ export default _default;
@@ -1,4 +1,4 @@
1
- import { BadgeSizes, AvatarSizes, IconSizes, BadgeColors } from './constants';
1
+ import { BadgeSizes, AvatarSizes, IconSizes, BadgeColors, ToggleSwitchSizes } from './constants';
2
2
  export declare enum Size {
3
3
  dot = "dot",
4
4
  xs = "xs",
@@ -28,6 +28,7 @@ export declare enum BaseColor {
28
28
  export type TBadgeSize = (typeof BadgeSizes)[number];
29
29
  export type TAvatarSize = (typeof AvatarSizes)[number];
30
30
  export type TIconSize = (typeof IconSizes)[number];
31
+ export type TToggleSwitchSize = (typeof ToggleSwitchSizes)[number];
31
32
  export type TBadgeColor = (typeof BadgeColors)[number];
32
33
  export type TailwindColorClass = string;
33
34
  export type FlexJustifyContent = "around" | "between" | "center" | "end" | "evenly" | "normal" | "start" | "stretch";
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-8921bc32]{transform-origin:0 0}.spinner-container[data-v-97ac1907]{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-97ac1907]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-97ac1907]{max-width:initial;width:100%;max-height:100vh}video[data-v-97ac1907]{width:100%;height:inherit}.video-controls-container[data-v-97ac1907]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-97ac1907]{display:none}.video-controls-container[data-v-97ac1907]: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-97ac1907],.video-container:focus-within .video-controls-container[data-v-97ac1907],.video-container.paused .video-controls-container[data-v-97ac1907]{opacity:1}.video-controls-container .controls[data-v-97ac1907]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-97ac1907]{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-97ac1907]:hover{opacity:1}.duration-container[data-v-97ac1907]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-97ac1907]{border-bottom:3px solid #0090ff}.video-controls-container .controls button.wide-btn[data-v-97ac1907]{width:50px}.timeline-container[data-v-97ac1907]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-97ac1907]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-97ac1907]: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-97ac1907]:after{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--progress-position) * 100%);background-color:#0090ff}.timeline .thumb-indicator[data-v-97ac1907]{--scale: 0;position:absolute;transform:translate(-50%) scale(var(--scale));height:200%;top:-50%;left:calc(var(--progress-position) * 100%);background-color:#0090ff;border-radius:50%;transition:transform .15s ease-in-out;aspect-ratio:1 / 1}.video-container.scrubbing .thumbnail-img[data-v-97ac1907]{display:block}.video-container.scrubbing .timeline[data-v-97ac1907]:before,.timeline-container:hover .timeline[data-v-97ac1907]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-97ac1907],.timeline-container:hover .thumb-indicator[data-v-97ac1907]{--scale: 1}.video-container.scrubbing .timeline[data-v-97ac1907],.timeline-container:hover .timeline[data-v-97ac1907]{height:100%}.e-tl-milestone{position:absolute;border-radius:10em;box-sizing:border-box}.e-tl-milestone-content{cursor:pointer}.e-tl-milestone--bullet{transform:translate(-50%,-50%)}.e-tl-milestone--bullet .e-tl-milestone-content{opacity:0;width:0;height:0;white-space:nowrap;pointer-events:none;cursor:pointer}.e-tl-milestone--bullet.e-tl-milestone--hovered{cursor:pointer;min-height:26px;padding:0 8px;border-radius:.5em}.e-tl-milestone--bullet.e-tl-milestone--hovered .e-tl-milestone-content{opacity:1;font-size:small;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.e-tl-milestone--bullet .e-tl-milestone-label{position:absolute;top:0;left:0;opacity:1;pointer-events:none;height:100%;width:100%}.e-tl-milestone--bullet.e-tl-milestone--hovered .e-tl-milestone-label{opacity:0}.e-tl-milestone--dot{transform:translateY(-50%)}.e-tl-milestone-dot--hovered .e-tl-milestone-dot-container{padding:0 3em;transform:translate(-50%);opacity:1}.e-tl-milestone-dot-line{position:absolute}.e-tl-milestone-dot-dot{position:absolute;border-radius:50%}.e-tl-milestone-dot-container{opacity:0;position:absolute;padding:0 .3em;transform:translate(-50%,-100%);cursor:pointer}.e-timeline svg{display:block}.e-timeline .x-axis-overview .domain,.e-timeline .x-axis-detailed .domain,.e-timeline .x-axis-overviewBackground .domain,.e-timeline .x-axis-detailedBackground .domain{display:none}.e-timeline .x-axis-detailedBackground .domain,.e-timeline .x-axis-detailedBackground text{display:none}.e-timeline .x-axis-overview>g.tick>line{opacity:.1;stroke-width:3;stroke-linecap:round}.e-timeline .x-axis-detailed>g.tick>line{opacity:.1;stroke-linecap:round}.e-timeline .x-axis-detailedBackground>g.tick>line{opacity:.075;stroke-linecap:round}.e-timeline--dark .tick line{stroke:#fff}.e-timeline--dark .tick text{fill:#fff}@keyframes moveGradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}@keyframes pulse-rect{0%{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}50%{filter:saturate(.5) drop-shadow(0 0 0 #0000)}to{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}}@keyframes pulse-circle{0%{r:4px}50%{r:1px}to{r:4px}}.loading-indicator{animation:moveGradient 1.5s ease-in infinite}.line-graph-dot--active{animation:pulse-circle 1s ease-in-out infinite}.event-rect--hovered{animation:pulse-rect 1s ease-in-out infinite}@keyframes dash{0%{filter:saturate(1) drop-shadow(0 0 0 #0000)}50%{stroke-width:2px;filter:saturate(2.5) drop-shadow(0 0 0 #0006)}to{filter:saturate(1) drop-shadow(0 0 0 #0000)}}.line-graph-group--highlighted path{animation:dash 1s ease-in-out infinite}.e-timeline--dragging{cursor:ew-resize}.curtain{cursor:ew-resize;fill:#3332;stroke-width:1px;stroke:#3338;transition:stroke-width .2s}.e-timeline--dragging .curtain{stroke-width:3px}.e-timeline--dark .curtain{fill:#fff3;stroke:#fff7}.event-bar-hover-zone{cursor:pointer}.external-labels-container{position:absolute;top:-1.5em;left:0}.external-label{margin-right:.35em;border-width:.5px;border-radius:.2em}.external-label__content{cursor:pointer;font-size:.8em;font-weight:500;padding:0 .6em;line-height:1.4em}.marker-label{transition:transform .2s;transform:translateY(-32px);position:absolute;width:max-content}.marker-label-text{position:absolute;width:max-content;font-size:.8em;font-weight:500;padding:0 .75em;border-radius:.4em .4em .4em 0;box-shadow:0 0 5px -1px #000000f5}.marker-label-text:after{content:"";background:inherit;width:5px;height:5px;bottom:-5px;position:absolute;left:2px;clip-path:path("M 0,5 L 0,0 L 5,0 A 5,5 0 0 0 0,5")}.marker-label-text:before{content:"";background:inherit;height:20px;top:18px;position:absolute;width:2px;left:0}.marker{top:0;filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px;transition:top .2s,height .2s}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1)}.marker:hover .marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker:hover .marker-label-text{box-shadow:2px 2px 11px -4px #000}.marker--hidden:hover .marker-label{transform:translateY(-54px)}.marker--draggable,.marker--draggable:hover{user-select:none;cursor:grab}.marker--dragged:hover{cursor:grabbing}.forbidden-interval{opacity:.2}.e-timeline-milestones{height:0}.video-embed[data-v-0ecf4a71]{position:relative;width:100%!important;padding-bottom:56.25%}.video-embed iframe[data-v-0ecf4a71]{position:absolute;top:0;left:0;width:100%;height:100%}.e-heatmap-bar__label{white-space:nowrap;width:6rem;min-width:6rem}.e-heatmap-bar__item{height:16px;margin:2px;position:relative;cursor:pointer;border-radius:2px;min-width:0}.e-heatmap-bar__item:hover{box-shadow:0 0 0 1.5px #5c6d97}.e-heatmap-bar__item--selected{box-shadow:0 0 0 2px #151e3a}.e-heatmap-bar__item__count{font-size:12px;color:#fff;font-weight:500}.e-heatmap-bar__item__count--light{color:#0a214bbd}.e-heatmap-bar__item__name{position:absolute;top:-25px}.e-heatmap-bar:not(.e-heatmap-bar--dense) .e-heatmap-bar__item{min-width:35px}.e-compare-separator__icon{position:absolute;width:40px;height:40px;top:50%;transform:translate(-50%,-50%);z-index:4;border-radius:50%;cursor:ew-resize;background:#1976d2;border:2px solid white;-webkit-box-shadow:0 0 8px 1px rgba(0,0,0,.3);-moz-box-shadow:0 0 8px 1px rgba(0,0,0,.3);box-shadow:0 0 8px 1px #0000004d}.e-compare-separator__line{position:absolute;top:0;width:3px;height:100%;background:white;transform:translate(-50%)}.custom-icon__inline[data-v-e9a12c04]{margin:0}.company-logo path[data-v-4f88f353]{fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1}.custom-icon__inline[data-v-73010acc],.custom-icon__inline[data-v-fcfe4d93],.custom-icon__inline[data-v-841d8de6],.custom-icon__inline[data-v-60c21449],.custom-icon__inline[data-v-cfd4f87d]{margin:0}