@evercam/ui 0.0.45-beta.6 → 0.0.46

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.
@@ -4,6 +4,8 @@ import { D3ZoomEvent } from "d3";
4
4
  import { TimelineAxesConfig, TimelineAxis, TimelineTicksConfig, Timestamp } from '../types';
5
5
  export type TimelineBarEvent = {
6
6
  timestamp: string | Date;
7
+ color?: string;
8
+ text?: string;
7
9
  [key: string]: any;
8
10
  };
9
11
  export type TimelineRangeEvent = {
@@ -24,6 +26,7 @@ export declare enum TimelineChartType {
24
26
  export type TimelineEventsGroup = {
25
27
  label: string;
26
28
  color: string;
29
+ bgColor?: string;
27
30
  isLoading?: Boolean;
28
31
  isHidden?: Boolean;
29
32
  chartType?: TimelineChartType;
@@ -46,7 +49,6 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
46
49
  zoomBehavior: d3.ZoomBehavior<SVGSVGElement, unknown>;
47
50
  isMouseDown: boolean;
48
51
  axisHeight: number;
49
- eventGroupPadding: number;
50
52
  isHoveringEvent: boolean;
51
53
  hoveredEvent: TimelineEvent;
52
54
  isHoveringTimeline: boolean;
@@ -76,6 +78,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
76
78
  rightCurtainWidth: number;
77
79
  isHoveringCurtain: boolean;
78
80
  isDraggingCurtain: boolean;
81
+ characterWidth: number;
82
+ textPadding: number;
79
83
  }, {
80
84
  initTimeline(startDate?: string, endDate?: string): void;
81
85
  initRefs(): void;
@@ -130,6 +134,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
130
134
  updateLineGraphHoverZones(): void;
131
135
  getEventRectX(d: TimelineEvent): any;
132
136
  getEventRectWidth(d: TimelineEvent): number;
137
+ getEventText(e: TimelineEvent): string;
133
138
  initCurtains(): void;
134
139
  drawEventsGroups(): void;
135
140
  drawLineGraphEventsGroups(): void;
@@ -170,7 +175,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
170
175
  color: string;
171
176
  label: string;
172
177
  }): void;
173
- getTextFillColor(baseColor: string): string;
178
+ getTextFillColor(baseColor: string, k?: number): string;
174
179
  getLabelBackgroundColor(baseColor: string): string;
175
180
  tzStringToDate(timestamp: Timestamp): Date;
176
181
  dateToTzString(date: Date): string;
@@ -182,6 +187,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
182
187
  fillTimeGaps(events: TimelineEvent[]): TimelineEvent[];
183
188
  getNormalizedEvents(events: TimelineEvent[]): TimelineEvent[];
184
189
  }, {
190
+ barChartHeight: number;
185
191
  classes: Record<string, string | Record<string, boolean>>;
186
192
  lineGraphGroups: TimelineEventsByType;
187
193
  lineGraphChartHeight: number;
@@ -212,7 +218,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
212
218
  curtains: boolean;
213
219
  showLabels: boolean;
214
220
  rectMinWidth: number;
215
- barChartHeight: number;
221
+ barHeight: number;
222
+ barYPadding: number;
216
223
  lineGraphMinHeight: number;
217
224
  minZoom: number;
218
225
  maxZoom: number;
@@ -0,0 +1,45 @@
1
+ import { PropType } from "vue";
2
+ declare const _default: import("vue").DefineComponent<{
3
+ videoUrl: {
4
+ type: StringConstructor;
5
+ required: true;
6
+ };
7
+ platform: {
8
+ type: PropType<"youtube" | "vimeo">;
9
+ required: true;
10
+ validator: (value: string) => boolean;
11
+ };
12
+ iframeListeners: {
13
+ type: PropType<Partial<HTMLIFrameElement>>;
14
+ default: () => {};
15
+ };
16
+ iframeOptions: {
17
+ type: ObjectConstructor;
18
+ default: () => {};
19
+ };
20
+ }, {}, {}, {
21
+ videoId(): string | undefined;
22
+ embedUrl(): string;
23
+ }, {}, import("vue/types/v3-component-options").ComponentOptionsMixin, import("vue/types/v3-component-options").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
24
+ videoUrl: {
25
+ type: StringConstructor;
26
+ required: true;
27
+ };
28
+ platform: {
29
+ type: PropType<"youtube" | "vimeo">;
30
+ required: true;
31
+ validator: (value: string) => boolean;
32
+ };
33
+ iframeListeners: {
34
+ type: PropType<Partial<HTMLIFrameElement>>;
35
+ default: () => {};
36
+ };
37
+ iframeOptions: {
38
+ type: ObjectConstructor;
39
+ default: () => {};
40
+ };
41
+ }>>, {
42
+ iframeListeners: Partial<HTMLIFrameElement>;
43
+ iframeOptions: Record<string, any>;
44
+ }>;
45
+ export default _default;
@@ -2,9 +2,7 @@ import Vue from "vue";
2
2
  export type VideoSource = {
3
3
  type: string;
4
4
  src: string;
5
- srcObject?: MediaStream;
6
5
  };
7
- export type MediaType = "video" | "webRtc" | "ptz" | "hls";
8
6
  export declare const VIDEO_PLAYER_EVENTS: string[];
9
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>>, {
10
8
  playing: boolean;
@@ -21,7 +19,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
21
19
  isLoading: boolean;
22
20
  isError: boolean;
23
21
  }, {
24
- handle404Error(e: any): void;
22
+ handle404Error(): void;
25
23
  bindEvents(): void;
26
24
  unbindEvents(): void;
27
25
  bindVideoEvent(which: string): void;
@@ -55,7 +53,6 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
55
53
  hasStartedOrFinished: boolean;
56
54
  withControls: "" | "hide";
57
55
  }, {
58
- type: string;
59
56
  sources: string | VideoSource[];
60
57
  videoListeners: {};
61
58
  videoOptions: {};
@@ -6,6 +6,7 @@ import ERow from './components/ERow.vue';
6
6
  import ECol from './components/ECol.vue';
7
7
  import EVideoPlayer from './components/EVideoPlayer.vue';
8
8
  import ETimeline from './components/ETimeline.vue';
9
+ import EVideoEmbed from './components/EVideoEmbed.vue';
9
10
  import { VueConstructor } from "vue";
10
11
  export declare const components: {
11
12
  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>>, {
@@ -132,7 +133,7 @@ export declare const components: {
132
133
  isLoading: boolean;
133
134
  isError: boolean;
134
135
  }, {
135
- handle404Error(e: any): void;
136
+ handle404Error(): void;
136
137
  bindEvents(): void;
137
138
  unbindEvents(): void;
138
139
  bindVideoEvent(which: string): void;
@@ -166,7 +167,6 @@ export declare const components: {
166
167
  hasStartedOrFinished: boolean;
167
168
  withControls: "" | "hide";
168
169
  }, {
169
- type: string;
170
170
  sources: string | import('./components/EVideoPlayer.vue').VideoSource[];
171
171
  videoListeners: {};
172
172
  videoOptions: {};
@@ -185,7 +185,6 @@ export declare const components: {
185
185
  zoomBehavior: import("d3-zoom").ZoomBehavior<SVGSVGElement, unknown>;
186
186
  isMouseDown: boolean;
187
187
  axisHeight: number;
188
- eventGroupPadding: number;
189
188
  isHoveringEvent: boolean;
190
189
  hoveredEvent: import('./components/ETimeline.vue').TimelineEvent;
191
190
  isHoveringTimeline: boolean;
@@ -215,6 +214,8 @@ export declare const components: {
215
214
  rightCurtainWidth: number;
216
215
  isHoveringCurtain: boolean;
217
216
  isDraggingCurtain: boolean;
217
+ characterWidth: number;
218
+ textPadding: number;
218
219
  }, {
219
220
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
220
221
  initRefs(): void;
@@ -269,6 +270,7 @@ export declare const components: {
269
270
  updateLineGraphHoverZones(): void;
270
271
  getEventRectX(d: import('./components/ETimeline.vue').TimelineEvent): any;
271
272
  getEventRectWidth(d: import('./components/ETimeline.vue').TimelineEvent): number;
273
+ getEventText(e: import('./components/ETimeline.vue').TimelineEvent): string;
272
274
  initCurtains(): void;
273
275
  drawEventsGroups(): void;
274
276
  drawLineGraphEventsGroups(): void;
@@ -309,7 +311,7 @@ export declare const components: {
309
311
  color: string;
310
312
  label: string;
311
313
  }): void;
312
- getTextFillColor(baseColor: string): string;
314
+ getTextFillColor(baseColor: string, k?: number): string;
313
315
  getLabelBackgroundColor(baseColor: string): string;
314
316
  tzStringToDate(timestamp: import('./types').Timestamp): Date;
315
317
  dateToTzString(date: Date): string;
@@ -321,6 +323,7 @@ export declare const components: {
321
323
  fillTimeGaps(events: import('./components/ETimeline.vue').TimelineEvent[]): import('./components/ETimeline.vue').TimelineEvent[];
322
324
  getNormalizedEvents(events: import('./components/ETimeline.vue').TimelineEvent[]): import('./components/ETimeline.vue').TimelineEvent[];
323
325
  }, {
326
+ barChartHeight: number;
324
327
  classes: Record<string, string | Record<string, boolean>>;
325
328
  lineGraphGroups: import('./components/ETimeline.vue').TimelineEventsByType;
326
329
  lineGraphChartHeight: number;
@@ -351,18 +354,62 @@ export declare const components: {
351
354
  curtains: boolean;
352
355
  showLabels: boolean;
353
356
  rectMinWidth: number;
354
- barChartHeight: number;
357
+ barHeight: number;
358
+ barYPadding: number;
355
359
  lineGraphMinHeight: number;
356
360
  minZoom: number;
357
361
  maxZoom: number;
358
362
  cursorTimestamp: string | undefined;
359
363
  }, {}, import("vue/types/v3-component-options").ComponentOptionsMixin, import("vue/types/v3-component-options").ComponentOptionsMixin>;
364
+ EVideoEmbed: import("vue").DefineComponent<{
365
+ videoUrl: {
366
+ type: StringConstructor;
367
+ required: true;
368
+ };
369
+ platform: {
370
+ type: import("vue").PropType<"youtube" | "vimeo">;
371
+ required: true;
372
+ validator: (value: string) => boolean;
373
+ };
374
+ iframeListeners: {
375
+ type: import("vue").PropType<Partial<HTMLIFrameElement>>;
376
+ default: () => {};
377
+ };
378
+ iframeOptions: {
379
+ type: ObjectConstructor;
380
+ default: () => {};
381
+ };
382
+ }, {}, {}, {
383
+ videoId(): string | undefined;
384
+ embedUrl(): string;
385
+ }, {}, import("vue/types/v3-component-options").ComponentOptionsMixin, import("vue/types/v3-component-options").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{
386
+ videoUrl: {
387
+ type: StringConstructor;
388
+ required: true;
389
+ };
390
+ platform: {
391
+ type: import("vue").PropType<"youtube" | "vimeo">;
392
+ required: true;
393
+ validator: (value: string) => boolean;
394
+ };
395
+ iframeListeners: {
396
+ type: import("vue").PropType<Partial<HTMLIFrameElement>>;
397
+ default: () => {};
398
+ };
399
+ iframeOptions: {
400
+ type: ObjectConstructor;
401
+ default: () => {};
402
+ };
403
+ }>>, {
404
+ iframeListeners: Partial<HTMLIFrameElement>;
405
+ iframeOptions: Record<string, any>;
406
+ }>;
360
407
  };
361
408
  declare const _default: {
362
409
  install(Vue: VueConstructor): void;
363
410
  };
364
411
  export default _default;
365
- export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline };
412
+ export { EAvatar, EBadge, EIcon, ESpinner, ERow, ECol, EVideoPlayer, ETimeline, EVideoEmbed, };
366
413
  export * from './constants';
367
414
  export * from './types';
368
415
  export * from './utils';
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .e-spinner[data-v-f6962f4a]{vertical-align:center}.e-spinner__primary[data-v-f6962f4a],.e-spinner__secondary[data-v-f6962f4a]{stroke-width:0;animation:fade-f6962f4a;animation-iteration-count:infinite}@keyframes fade-f6962f4a{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-9bce97aa]{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-9bce97aa]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-9bce97aa]{max-width:initial;width:100%;max-height:100vh}video[data-v-9bce97aa]{width:100%;height:inherit}.video-controls-container[data-v-9bce97aa]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-9bce97aa]{display:none}.video-controls-container[data-v-9bce97aa]: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-9bce97aa],.video-container:focus-within .video-controls-container[data-v-9bce97aa],.video-container.paused .video-controls-container[data-v-9bce97aa]{opacity:1}.video-controls-container .controls[data-v-9bce97aa]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-9bce97aa]{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-9bce97aa]:hover{opacity:1}.duration-container[data-v-9bce97aa]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-9bce97aa]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-9bce97aa]{width:50px}.timeline-container[data-v-9bce97aa]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-9bce97aa]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-9bce97aa]: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-9bce97aa]: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-9bce97aa]{--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-9bce97aa]{display:block}.video-container.scrubbing .timeline[data-v-9bce97aa]:before,.timeline-container:hover .timeline[data-v-9bce97aa]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-9bce97aa],.timeline-container:hover .thumb-indicator[data-v-9bce97aa]{--scale: 1}.video-container.scrubbing .timeline[data-v-9bce97aa],.timeline-container:hover .timeline[data-v-9bce97aa]{height:100%}.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}
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-dd8ff405]{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-dd8ff405]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-dd8ff405]{max-width:initial;width:100%;max-height:100vh}video[data-v-dd8ff405]{width:100%;height:inherit}.video-controls-container[data-v-dd8ff405]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-dd8ff405]{display:none}.video-controls-container[data-v-dd8ff405]: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-dd8ff405],.video-container:focus-within .video-controls-container[data-v-dd8ff405],.video-container.paused .video-controls-container[data-v-dd8ff405]{opacity:1}.video-controls-container .controls[data-v-dd8ff405]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-dd8ff405]{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-dd8ff405]:hover{opacity:1}.duration-container[data-v-dd8ff405]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-dd8ff405]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-dd8ff405]{width:50px}.timeline-container[data-v-dd8ff405]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-dd8ff405]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-dd8ff405]: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-dd8ff405]: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-dd8ff405]{--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-dd8ff405]{display:block}.video-container.scrubbing .timeline[data-v-dd8ff405]:before,.timeline-container:hover .timeline[data-v-dd8ff405]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-dd8ff405],.timeline-container:hover .thumb-indicator[data-v-dd8ff405]{--scale: 1}.video-container.scrubbing .timeline[data-v-dd8ff405],.timeline-container:hover .timeline[data-v-dd8ff405]{height:100%}.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}.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%}