@evercam/ui 0.0.52-beta.9 → 0.0.53-beta.2

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.
@@ -1,7 +1,7 @@
1
1
  import * as d3 from "d3";
2
2
  import { D3ZoomEvent } from "d3";
3
3
  import Vue from "vue";
4
- import { TimelineAxesConfig, TimelineAxis, TimelineCountEvent, TimelineEvent, TimelineEventsByType, TimelineIntervalChangeTrigger, TimelinePrecision, TimelineTicksConfig, Timestamp } from '../types';
4
+ import { TimelineAxesConfig, TimelineAxis, TimelineCountEvent, TimelineEvent, TimelineEventsByType, TimelineIntervalChangeTrigger, TimelineMarker, TimelinePrecision, TimelineTicksConfig, Timestamp } from '../types';
5
5
  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>>, {
6
6
  tooltip: HTMLElement;
7
7
  cursor: HTMLElement;
@@ -49,6 +49,12 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
49
49
  textPadding: number;
50
50
  debouncedOnResize: Function;
51
51
  isFirstPaint: boolean;
52
+ timeouts: number[];
53
+ groupsVisibility: Record<string, boolean>;
54
+ markersPositions: Record<string, {
55
+ position: number;
56
+ isHidden: boolean;
57
+ }>;
52
58
  }, {
53
59
  initTimeline(startDate?: string, endDate?: string): void;
54
60
  initRefs(): void;
@@ -61,6 +67,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
61
67
  updateYScaleDomain(): void;
62
68
  initZoomBehavior(): void;
63
69
  initSelectedTimestampCursor(): void;
70
+ updateMarkersPositions(): void;
64
71
  updateAndRedrawTimeline(): void;
65
72
  clearTimeline(): void;
66
73
  repositionSelectedTimestampCursor(): void;
@@ -80,19 +87,20 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
80
87
  handleMouseLeave(): void;
81
88
  handleMouseMove(event: MouseEvent): void;
82
89
  handleClick(event: MouseEvent): void;
90
+ handleMarkerClick(marker: TimelineMarker): void;
83
91
  handleLineMouseOver(_event: MouseEvent, eventData: TimelineCountEvent, eventType: string): void;
84
92
  handleLineMouseOut(): void;
85
- handleBarMouseOver(_event: MouseEvent, eventData: TimelineEvent, eventType: string): void;
93
+ handleBarMouseOver(event: MouseEvent, eventData: TimelineEvent, eventType: string): void;
86
94
  handleBarMouseOut(): void;
87
95
  handleLabelMouseOver(groupType: string): void;
88
96
  handleLabelMouseLeave(groupType: string): void;
89
97
  handleZoom(event: D3ZoomEvent<SVGSVGElement, any>): void;
98
+ panToTimestamp(targetTimestamp: string): void;
90
99
  emitCurtainChange(): void;
91
100
  calculateDateRangeFromCurtains(): {
92
101
  startDate: Date;
93
102
  endDate: Date;
94
103
  };
95
- updateCurtainsOnResize(timelineWidth: number): void;
96
104
  handleDragStart(): void;
97
105
  handleDragEnd(): void;
98
106
  handleLeftDrag(event: d3.D3DragEvent<SVGRectElement, any, any>): void;
@@ -142,21 +150,40 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
142
150
  color: string;
143
151
  type: string;
144
152
  }): void;
145
- drawBarsChart({ events, gElement, color, yOffset, type, }: {
153
+ drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
146
154
  events: TimelineEvent[];
147
155
  gElement: d3.Selection<SVGGElement, any, any, any>;
148
156
  color: string;
149
157
  yOffset: number;
150
158
  type: string;
159
+ index: number;
151
160
  }): void;
152
- drawTextLabel({ gElement, yPosition, color, label, }: {
161
+ onBarChartBarMouseOver(container: d3.Selection<SVGGElement, any, any, any>, color: string): void;
162
+ onBarChartBarMouseOut(container: d3.Selection<SVGGElement, any, any, any>, eventType: string): void;
163
+ drawTextLabel({ gElement, yPosition, color, label, type, }: {
153
164
  gElement: d3.Selection<SVGGElement, any, any, any>;
154
165
  yPosition: number;
155
166
  color: string;
156
167
  label: string;
168
+ type: string;
157
169
  }): void;
158
170
  getTextFillColor(baseColor: string, k?: number): string;
159
171
  getLabelBackgroundColor(baseColor: string): string;
172
+ getCurrentGroupVisibility(type: string): boolean;
173
+ toggleGroupVisibility(type: string): void;
174
+ getExternalLabelStyles(type: string): {
175
+ background: string;
176
+ color: string;
177
+ };
178
+ getExternalLabelWrapperStyles(type: string): {
179
+ borderColor: string;
180
+ };
181
+ getMarkerClass(marker: TimelineMarker): {
182
+ "marker--hidden": boolean;
183
+ };
184
+ getMarkerContainerStyle(marker: TimelineMarker): Record<string, string>;
185
+ getMarkerLabelStyle(marker: TimelineMarker): Record<string, string>;
186
+ getMarkerLineStyle(marker: TimelineMarker): Record<string, string>;
160
187
  tzStringToDate(timestamp: Timestamp): Date;
161
188
  dateToTzString(date: Date): string;
162
189
  getCurrentTimeBounds(): {
@@ -189,6 +216,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
189
216
  filledGapsLineGraphGroups: TimelineEventsByType;
190
217
  isInteractingWithCurtain: boolean;
191
218
  flattenedCounts: TimelineCountEvent[];
219
+ hiddenGroupsLabels: string[];
220
+ minHoverZone: number;
221
+ sortedMarkers: TimelineMarker[];
192
222
  }, {
193
223
  eventsGroups: {};
194
224
  xAxesConfig: TimelineAxesConfig;
@@ -210,5 +240,12 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
210
240
  minZoom: number;
211
241
  maxZoom: number;
212
242
  cursorTimestamp: string | undefined;
243
+ selectedClass: string | undefined;
244
+ panOnDateClick: boolean;
245
+ panTransitionDuration: number;
246
+ selectedDate: string;
247
+ autoResize: boolean;
248
+ markers: TimelineMarker[];
249
+ stickyMarkers: boolean;
213
250
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
214
251
  export default _default;
@@ -1,3 +1,4 @@
1
+ import Hls from "hls.js";
1
2
  import Vue from "vue";
2
3
  export type VideoSource = {
3
4
  type: string;
@@ -18,12 +19,13 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
18
19
  isFinished: boolean;
19
20
  isLoading: boolean;
20
21
  isError: boolean;
22
+ player: Hls;
21
23
  }, {
24
+ initHls(): void;
22
25
  handle404Error(): void;
23
26
  bindEvents(): void;
24
27
  unbindEvents(): void;
25
28
  bindVideoEvent(which: string): void;
26
- unbindVideoEvent(which: string): void;
27
29
  initializePlayer(): void;
28
30
  destroyPlayer(): void;
29
31
  removeFullscreenListeners(): void;
@@ -56,5 +58,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
56
58
  sources: string | VideoSource[];
57
59
  videoListeners: {};
58
60
  videoOptions: {};
61
+ isHls: boolean;
62
+ streamingToken: string;
63
+ isLiveView: boolean;
59
64
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
60
65
  export default _default;
@@ -132,12 +132,13 @@ export declare const components: {
132
132
  isFinished: boolean;
133
133
  isLoading: boolean;
134
134
  isError: boolean;
135
+ player: import("hls.js").default;
135
136
  }, {
137
+ initHls(): void;
136
138
  handle404Error(): void;
137
139
  bindEvents(): void;
138
140
  unbindEvents(): void;
139
141
  bindVideoEvent(which: string): void;
140
- unbindVideoEvent(which: string): void;
141
142
  initializePlayer(): void;
142
143
  destroyPlayer(): void;
143
144
  removeFullscreenListeners(): void;
@@ -170,6 +171,9 @@ export declare const components: {
170
171
  sources: string | import('./components/EVideoPlayer.vue').VideoSource[];
171
172
  videoListeners: {};
172
173
  videoOptions: {};
174
+ isHls: boolean;
175
+ streamingToken: string;
176
+ isLiveView: boolean;
173
177
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
174
178
  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>>, {
175
179
  tooltip: HTMLElement;
@@ -218,6 +222,12 @@ export declare const components: {
218
222
  textPadding: number;
219
223
  debouncedOnResize: Function;
220
224
  isFirstPaint: boolean;
225
+ timeouts: number[];
226
+ groupsVisibility: Record<string, boolean>;
227
+ markersPositions: Record<string, {
228
+ position: number;
229
+ isHidden: boolean;
230
+ }>;
221
231
  }, {
222
232
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
223
233
  initRefs(): void;
@@ -230,6 +240,7 @@ export declare const components: {
230
240
  updateYScaleDomain(): void;
231
241
  initZoomBehavior(): void;
232
242
  initSelectedTimestampCursor(): void;
243
+ updateMarkersPositions(): void;
233
244
  updateAndRedrawTimeline(): void;
234
245
  clearTimeline(): void;
235
246
  repositionSelectedTimestampCursor(): void;
@@ -249,19 +260,20 @@ export declare const components: {
249
260
  handleMouseLeave(): void;
250
261
  handleMouseMove(event: MouseEvent): void;
251
262
  handleClick(event: MouseEvent): void;
263
+ handleMarkerClick(marker: import('./types').TimelineMarker): void;
252
264
  handleLineMouseOver(_event: MouseEvent, eventData: import('./types').TimelineCountEvent, eventType: string): void;
253
265
  handleLineMouseOut(): void;
254
- handleBarMouseOver(_event: MouseEvent, eventData: import('./types').TimelineEvent, eventType: string): void;
266
+ handleBarMouseOver(event: MouseEvent, eventData: import('./types').TimelineEvent, eventType: string): void;
255
267
  handleBarMouseOut(): void;
256
268
  handleLabelMouseOver(groupType: string): void;
257
269
  handleLabelMouseLeave(groupType: string): void;
258
270
  handleZoom(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): void;
271
+ panToTimestamp(targetTimestamp: string): void;
259
272
  emitCurtainChange(): void;
260
273
  calculateDateRangeFromCurtains(): {
261
274
  startDate: Date;
262
275
  endDate: Date;
263
276
  };
264
- updateCurtainsOnResize(timelineWidth: number): void;
265
277
  handleDragStart(): void;
266
278
  handleDragEnd(): void;
267
279
  handleLeftDrag(event: import("d3-drag").D3DragEvent<SVGRectElement, any, any>): void;
@@ -311,21 +323,40 @@ export declare const components: {
311
323
  color: string;
312
324
  type: string;
313
325
  }): void;
314
- drawBarsChart({ events, gElement, color, yOffset, type, }: {
326
+ drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
315
327
  events: import('./types').TimelineEvent[];
316
328
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
317
329
  color: string;
318
330
  yOffset: number;
319
331
  type: string;
332
+ index: number;
320
333
  }): void;
321
- drawTextLabel({ gElement, yPosition, color, label, }: {
334
+ onBarChartBarMouseOver(container: import("d3-selection").Selection<SVGGElement, any, any, any>, color: string): void;
335
+ onBarChartBarMouseOut(container: import("d3-selection").Selection<SVGGElement, any, any, any>, eventType: string): void;
336
+ drawTextLabel({ gElement, yPosition, color, label, type, }: {
322
337
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
323
338
  yPosition: number;
324
339
  color: string;
325
340
  label: string;
341
+ type: string;
326
342
  }): void;
327
343
  getTextFillColor(baseColor: string, k?: number): string;
328
344
  getLabelBackgroundColor(baseColor: string): string;
345
+ getCurrentGroupVisibility(type: string): boolean;
346
+ toggleGroupVisibility(type: string): void;
347
+ getExternalLabelStyles(type: string): {
348
+ background: string;
349
+ color: string;
350
+ };
351
+ getExternalLabelWrapperStyles(type: string): {
352
+ borderColor: string;
353
+ };
354
+ getMarkerClass(marker: import('./types').TimelineMarker): {
355
+ "marker--hidden": boolean;
356
+ };
357
+ getMarkerContainerStyle(marker: import('./types').TimelineMarker): Record<string, string>;
358
+ getMarkerLabelStyle(marker: import('./types').TimelineMarker): Record<string, string>;
359
+ getMarkerLineStyle(marker: import('./types').TimelineMarker): Record<string, string>;
329
360
  tzStringToDate(timestamp: import('./types').Timestamp): Date;
330
361
  dateToTzString(date: Date): string;
331
362
  getCurrentTimeBounds(): {
@@ -358,6 +389,9 @@ export declare const components: {
358
389
  filledGapsLineGraphGroups: import('./types').TimelineEventsByType;
359
390
  isInteractingWithCurtain: boolean;
360
391
  flattenedCounts: import('./types').TimelineCountEvent[];
392
+ hiddenGroupsLabels: string[];
393
+ minHoverZone: number;
394
+ sortedMarkers: import('./types').TimelineMarker[];
361
395
  }, {
362
396
  eventsGroups: {};
363
397
  xAxesConfig: import('./types').TimelineAxesConfig;
@@ -379,6 +413,13 @@ export declare const components: {
379
413
  minZoom: number;
380
414
  maxZoom: number;
381
415
  cursorTimestamp: string | undefined;
416
+ selectedClass: string | undefined;
417
+ panOnDateClick: boolean;
418
+ panTransitionDuration: number;
419
+ selectedDate: string;
420
+ autoResize: boolean;
421
+ markers: import('./types').TimelineMarker[];
422
+ stickyMarkers: boolean;
382
423
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
383
424
  EVideoEmbed: import("vue").DefineComponent<{
384
425
  videoUrl: {
@@ -58,6 +58,7 @@ export type TimelineBarEvent = {
58
58
  export type TimelineRangeEvent = {
59
59
  startDate: string | Date;
60
60
  endDate: string | Date;
61
+ text?: string;
61
62
  [key: string]: any;
62
63
  };
63
64
  export type TimelineCountEvent = {
@@ -90,5 +91,12 @@ export declare enum TimelineIntervalChangeTrigger {
90
91
  autoPan = "autoPan",
91
92
  initial = "initial"
92
93
  }
94
+ export type TimelineMarker = {
95
+ timestamp: string | Date;
96
+ label: string;
97
+ color: string;
98
+ textColor?: string;
99
+ id: string | number;
100
+ };
93
101
  declare const _default: {};
94
102
  export default _default;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .e-spinner[data-v-29711f67]{vertical-align:center}.e-spinner__primary[data-v-29711f67],.e-spinner__secondary[data-v-29711f67]{stroke-width:0;animation:fade-29711f67;animation-iteration-count:infinite}@keyframes fade-29711f67{0%{fill-opacity:0}50%{fill-opacity:1}to{fill-opacity:0}}.e-row.e-row--no-gutters{margin:0}.e-row.e-row--no-gutters>.e-col{padding:0}.e-col{padding:.75rem}.spinner-container[data-v-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}.event-bar-hover-zone{cursor:pointer}.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}.spinner-container[data-v-cffc31d4]{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-cffc31d4]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-cffc31d4]{max-width:initial;width:100%;max-height:100vh}video[data-v-cffc31d4]{width:100%;height:inherit}.video-controls-container[data-v-cffc31d4]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-cffc31d4]{display:none}.video-controls-container[data-v-cffc31d4]: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-cffc31d4],.video-container:focus-within .video-controls-container[data-v-cffc31d4],.video-container.paused .video-controls-container[data-v-cffc31d4]{opacity:1}.video-controls-container .controls[data-v-cffc31d4]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-cffc31d4]{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-cffc31d4]:hover{opacity:1}.duration-container[data-v-cffc31d4]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-cffc31d4]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-cffc31d4]{width:50px}.timeline-container[data-v-cffc31d4]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-cffc31d4]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-cffc31d4]: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-cffc31d4]: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-cffc31d4]{--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-cffc31d4]{display:block}.video-container.scrubbing .timeline[data-v-cffc31d4]:before,.timeline-container:hover .timeline[data-v-cffc31d4]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-cffc31d4],.timeline-container:hover .thumb-indicator[data-v-cffc31d4]{--scale: 1}.video-container.scrubbing .timeline[data-v-cffc31d4],.timeline-container:hover .timeline[data-v-cffc31d4]{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}.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{filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1);.marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker-label-text{box-shadow:2px 2px 11px -4px #000}}.marker--hidden:hover{.marker-label{transform:translateY(-54px)}}.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%}
package/dist/styles.css CHANGED
@@ -770,9 +770,6 @@
770
770
  .e-overflow-auto{
771
771
  overflow: auto;
772
772
  }
773
- .e-overflow-hidden{
774
- overflow: hidden;
775
- }
776
773
  .e-overflow-x-hidden{
777
774
  overflow-x: hidden;
778
775
  }
@@ -868,9 +865,18 @@
868
865
  .e-object-cover{
869
866
  object-fit: cover;
870
867
  }
868
+ .e-p-1{
869
+ padding: 0.25rem;
870
+ }
871
+ .e-p-2{
872
+ padding: 0.5rem;
873
+ }
871
874
  .e-p-3{
872
875
  padding: 0.75rem;
873
876
  }
877
+ .e-p-4{
878
+ padding: 1rem;
879
+ }
874
880
  .e-p-5{
875
881
  padding: 1.25rem;
876
882
  }
package/dist/tags.json CHANGED
@@ -72,7 +72,10 @@
72
72
  "attributes": [
73
73
  "sources",
74
74
  "video-listeners",
75
- "video-options"
75
+ "video-options",
76
+ "is-hls",
77
+ "streaming-token",
78
+ "is-live-view"
76
79
  ],
77
80
  "description": ""
78
81
  },
@@ -98,8 +101,13 @@
98
101
  "min-zoom",
99
102
  "max-zoom",
100
103
  "cursor-timestamp",
104
+ "selected-class",
101
105
  "pan-on-date-click",
102
- "pan-transition-duration"
106
+ "pan-transition-duration",
107
+ "selected-date",
108
+ "auto-resize",
109
+ "markers",
110
+ "sticky-markers"
103
111
  ],
104
112
  "description": ""
105
113
  }
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json.schemastore.org/web-types",
3
3
  "framework": "vue",
4
4
  "name": "@evercam/ui",
5
- "version": "0.0.52-beta.9",
5
+ "version": "0.0.53-beta.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -511,6 +511,33 @@
511
511
  "kind": "expression",
512
512
  "type": "object"
513
513
  }
514
+ },
515
+ {
516
+ "name": "is-hls",
517
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
518
+ "default": "false",
519
+ "value": {
520
+ "kind": "expression",
521
+ "type": "boolean"
522
+ }
523
+ },
524
+ {
525
+ "name": "streaming-token",
526
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
527
+ "default": "",
528
+ "value": {
529
+ "kind": "expression",
530
+ "type": "string"
531
+ }
532
+ },
533
+ {
534
+ "name": "is-live-view",
535
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
536
+ "default": "false",
537
+ "value": {
538
+ "kind": "expression",
539
+ "type": "boolean"
540
+ }
514
541
  }
515
542
  ]
516
543
  },
@@ -535,7 +562,7 @@
535
562
  {
536
563
  "name": "x-axes-config",
537
564
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
538
- "default": "() => qt",
565
+ "default": "() => bh",
539
566
  "value": {
540
567
  "kind": "expression",
541
568
  "type": "object"
@@ -706,6 +733,18 @@
706
733
  ]
707
734
  }
708
735
  },
736
+ {
737
+ "name": "selected-class",
738
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
739
+ "default": "undefined",
740
+ "value": {
741
+ "kind": "expression",
742
+ "type": [
743
+ "string",
744
+ "any"
745
+ ]
746
+ }
747
+ },
709
748
  {
710
749
  "name": "pan-on-date-click",
711
750
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
@@ -723,6 +762,42 @@
723
762
  "kind": "expression",
724
763
  "type": "number"
725
764
  }
765
+ },
766
+ {
767
+ "name": "selected-date",
768
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
769
+ "default": "",
770
+ "value": {
771
+ "kind": "expression",
772
+ "type": "string"
773
+ }
774
+ },
775
+ {
776
+ "name": "auto-resize",
777
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
778
+ "default": "true",
779
+ "value": {
780
+ "kind": "expression",
781
+ "type": "boolean"
782
+ }
783
+ },
784
+ {
785
+ "name": "markers",
786
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
787
+ "default": "() => []",
788
+ "value": {
789
+ "kind": "expression",
790
+ "type": "array"
791
+ }
792
+ },
793
+ {
794
+ "name": "sticky-markers",
795
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
796
+ "default": "true",
797
+ "value": {
798
+ "kind": "expression",
799
+ "type": "boolean"
800
+ }
726
801
  }
727
802
  ]
728
803
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evercam/ui",
3
- "version": "0.0.52-beta.9",
3
+ "version": "0.0.53-beta.2",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "author": "Evercam - Constuction Cameras.",
@@ -72,5 +72,8 @@
72
72
  "tags": "dist/tags.json",
73
73
  "attributes": "dist/attributes.json"
74
74
  },
75
- "web-types": "dist/web-types.json"
75
+ "web-types": "dist/web-types.json",
76
+ "dependencies": {
77
+ "hls.js": "^1.5.6"
78
+ }
76
79
  }