@evercam/ui 0.0.53 → 0.0.54

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,11 +1,12 @@
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, TimelineMarker, TimelinePrecision, TimelineTicksConfig, Timestamp } from '../types';
4
+ import { TimelineAxesConfig, TimelineAxis, TimelineCountEvent, TimelineEvent, TimelineEventsByType, TimelineEventsGroup, 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;
8
8
  timeline: HTMLElement;
9
+ wrapperDiv: HTMLElement;
9
10
  selectedTimestampCursor: HTMLElement;
10
11
  svg: d3.Selection<SVGSVGElement, any, any, any>;
11
12
  axesContainer: d3.Selection<SVGGElement, any, any, any>;
@@ -55,6 +56,10 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
55
56
  position: number;
56
57
  isHidden: boolean;
57
58
  }>;
59
+ markersDragBehavior: d3.DragBehavior<HTMLElement, TimelineMarker, any>;
60
+ initialMarkerDragMouseOffset: number;
61
+ selectedMilestoneId: any;
62
+ isInitialized: boolean;
58
63
  }, {
59
64
  initTimeline(startDate?: string, endDate?: string): void;
60
65
  initRefs(): void;
@@ -66,8 +71,10 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
66
71
  initYScale(): void;
67
72
  updateYScaleDomain(): void;
68
73
  initZoomBehavior(): void;
74
+ zoomToFitMarkers(): void;
75
+ translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
69
76
  initSelectedTimestampCursor(): void;
70
- updateMarkersPositions(): void;
77
+ updateMarkers(): void;
71
78
  updateAndRedrawTimeline(): void;
72
79
  clearTimeline(): void;
73
80
  repositionSelectedTimestampCursor(): void;
@@ -83,7 +90,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
83
90
  handleResize({ contentRect }: ResizeObserverEntry): void;
84
91
  handleDarkModeChange(): void;
85
92
  handleMouseDown(): void;
86
- handleDocumentMouseUp(): void;
93
+ handleDocumentMouseUp(e: MouseEvent): void;
87
94
  handleMouseLeave(): void;
88
95
  handleMouseMove(event: MouseEvent): void;
89
96
  handleClick(event: MouseEvent): void;
@@ -95,7 +102,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
95
102
  handleLabelMouseOver(groupType: string): void;
96
103
  handleLabelMouseLeave(groupType: string): void;
97
104
  handleZoom(event: D3ZoomEvent<SVGSVGElement, any>): void;
98
- panToTimestamp(targetTimestamp: string): void;
105
+ panToTimestamp(targetTimestamp: string | Date): void;
99
106
  emitCurtainChange(): void;
100
107
  calculateDateRangeFromCurtains(): {
101
108
  startDate: Date;
@@ -115,7 +122,18 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
115
122
  getEventRectX(d: TimelineEvent): any;
116
123
  getEventRectWidth(d: TimelineEvent): number;
117
124
  getEventText(e: TimelineEvent): string;
125
+ getElementLeftPosition(element: HTMLElement): number;
126
+ isTimestampAllowedForMarker(timestamp: any, marker: TimelineMarker): boolean;
127
+ handleMarkerDrag({ marker, markerElement, dragEvent, }: {
128
+ marker: TimelineMarker;
129
+ markerElement: d3.Selection<any, TimelineMarker, any, any>;
130
+ dragEvent: d3.D3DragEvent<any, TimelineMarker, any>;
131
+ }): void;
132
+ removeMarkersDragBehavior(): void;
133
+ initMarkersDragBehavior(): void;
118
134
  initCurtains(): void;
135
+ initForbiddenIntervals(): void;
136
+ updateForbiddenIntervals(): void;
119
137
  drawEventsGroups(): void;
120
138
  drawLineGraphEventsGroups(): void;
121
139
  drawLineGraph({ events, gElement, color, type, }: {
@@ -130,7 +148,22 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
130
148
  color: string;
131
149
  type: string;
132
150
  }): void;
151
+ drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
152
+ type: string;
153
+ eventsGroup: TimelineEventsGroup;
154
+ index?: number | undefined;
155
+ milestone?: boolean | undefined;
156
+ height?: number | undefined;
157
+ }): void;
133
158
  drawBarEventsGroups(): void;
159
+ drawMilestonesPlaceholder(): void;
160
+ getMilestoneClass(milestone: TimelineEvent): Record<string, boolean>;
161
+ getMilestoneColors(milestoneColor: string | undefined, groupColor: string): {
162
+ background: string;
163
+ border: string;
164
+ };
165
+ getMilestoneGroupYPosition(groupName: string): number;
166
+ updateMilestonesPositions(): void;
134
167
  drawBarChartEventsGroups(): void;
135
168
  drawProgressIndicator({ yPosition, type, isLoading, }: {
136
169
  yPosition: number;
@@ -138,10 +171,11 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
138
171
  color: string;
139
172
  isLoading: Boolean | undefined;
140
173
  }): void;
141
- drawBackground({ color, yPosition, gElement, }: {
174
+ drawBackground({ color, yPosition, gElement, height, }: {
142
175
  gElement: d3.Selection<SVGGElement, any, any, any>;
143
176
  yPosition: number;
144
177
  color: string;
178
+ height?: number | undefined;
145
179
  }): void;
146
180
  drawBars({ events, gElement, yPosition, color, type, }: {
147
181
  events: TimelineEvent[];
@@ -160,12 +194,13 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
160
194
  }): void;
161
195
  onBarChartBarMouseOver(container: d3.Selection<SVGGElement, any, any, any>, color: string): void;
162
196
  onBarChartBarMouseOut(container: d3.Selection<SVGGElement, any, any, any>, eventType: string): void;
163
- drawTextLabel({ gElement, yPosition, color, label, type, }: {
197
+ drawTextLabel({ gElement, yPosition, color, label, type, height, }: {
164
198
  gElement: d3.Selection<SVGGElement, any, any, any>;
165
199
  yPosition: number;
166
200
  color: string;
167
201
  label: string;
168
202
  type: string;
203
+ height?: number | undefined;
169
204
  }): void;
170
205
  getTextFillColor(baseColor: string, k?: number): string;
171
206
  getLabelBackgroundColor(baseColor: string): string;
@@ -178,6 +213,10 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
178
213
  getExternalLabelWrapperStyles(type: string): {
179
214
  borderColor: string;
180
215
  };
216
+ getMarkerClass(marker: TimelineMarker): {
217
+ "marker--hidden": boolean;
218
+ "marker--draggable": boolean | undefined;
219
+ };
181
220
  getMarkerContainerStyle(marker: TimelineMarker): Record<string, string>;
182
221
  getMarkerLabelStyle(marker: TimelineMarker): Record<string, string>;
183
222
  getMarkerLineStyle(marker: TimelineMarker): Record<string, string>;
@@ -189,10 +228,11 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
189
228
  };
190
229
  getFormattedTimestamp(timestamp: Timestamp): string;
191
230
  fillTimeGaps(events: TimelineEvent[]): (import('../types').TimelineBarEvent | import('../types').TimelineRangeEvent | TimelineCountEvent | {
192
- timestamp: any;
231
+ timestamp: string;
193
232
  count: number;
194
233
  })[];
195
234
  fillEvents(events: TimelineEvent[]): TimelineEvent[];
235
+ onMilestoneClick(milestone: TimelineEvent, milestoneType: string): void;
196
236
  }, {
197
237
  barChartHeight: number;
198
238
  classes: Record<string, string | Record<string, boolean>>;
@@ -200,6 +240,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
200
240
  chartHeight: number;
201
241
  barGroups: TimelineEventsByType;
202
242
  barChartGroups: TimelineEventsByType;
243
+ milestonesGroups: TimelineEventsByType;
203
244
  hasChart: boolean;
204
245
  labelRectWidth: number;
205
246
  combinedXAxesHeight: number;
@@ -236,6 +277,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
236
277
  chartMinHeight: number;
237
278
  minZoom: number;
238
279
  maxZoom: number;
280
+ minDate: string;
281
+ maxDate: string;
239
282
  cursorTimestamp: string | undefined;
240
283
  selectedClass: string | undefined;
241
284
  panOnDateClick: boolean;
@@ -244,5 +287,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
244
287
  autoResize: boolean;
245
288
  markers: TimelineMarker[];
246
289
  stickyMarkers: boolean;
290
+ fitMarkersOnChange: boolean;
291
+ fitMarkersTransitionDuration: number;
292
+ zoomToBoundariesTransitionDuration: number;
293
+ milestoneBulletSize: number;
247
294
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
248
295
  export default _default;
@@ -0,0 +1,39 @@
1
+ import Vue from "vue";
2
+ import { TimelineMilestoneEvent } from '../types';
3
+ export declare const milestoneClasses: {
4
+ milestone: string;
5
+ milestoneContent: string;
6
+ milestoneLine: string;
7
+ milestonesContainer: string;
8
+ milestoneHovered: string;
9
+ milestoneSelected: string;
10
+ milestoneLabel: string;
11
+ };
12
+ 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>>, {
13
+ milestoneClasses: {
14
+ milestone: string;
15
+ milestoneContent: string;
16
+ milestoneLine: string;
17
+ milestonesContainer: string;
18
+ milestoneHovered: string;
19
+ milestoneSelected: string;
20
+ milestoneLabel: string;
21
+ };
22
+ timeouts: number[];
23
+ }, {
24
+ onMilestoneMouseOver(e: MouseEvent, _milestone: TimelineMilestoneEvent): void;
25
+ onMilestoneMouseLeave(e: MouseEvent, _milestone: TimelineMilestoneEvent): void;
26
+ onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent): void;
27
+ }, {
28
+ styles: Record<string, any>;
29
+ contentStyles: Record<string, any>;
30
+ labelStyles: Record<string, any>;
31
+ }, {
32
+ milestone: TimelineMilestoneEvent;
33
+ size: number;
34
+ borderColor: string;
35
+ backgroundColor: string;
36
+ borderWidth: number;
37
+ transitionDuration: number;
38
+ }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
39
+ 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,11 +171,15 @@ 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;
176
180
  cursor: HTMLElement;
177
181
  timeline: HTMLElement;
182
+ wrapperDiv: HTMLElement;
178
183
  selectedTimestampCursor: HTMLElement;
179
184
  svg: import("d3-selection").Selection<SVGSVGElement, any, any, any>;
180
185
  axesContainer: import("d3-selection").Selection<SVGGElement, any, any, any>;
@@ -224,6 +229,10 @@ export declare const components: {
224
229
  position: number;
225
230
  isHidden: boolean;
226
231
  }>;
232
+ markersDragBehavior: import("d3-drag").DragBehavior<HTMLElement, import('./types').TimelineMarker, any>;
233
+ initialMarkerDragMouseOffset: number;
234
+ selectedMilestoneId: any;
235
+ isInitialized: boolean;
227
236
  }, {
228
237
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
229
238
  initRefs(): void;
@@ -235,8 +244,10 @@ export declare const components: {
235
244
  initYScale(): void;
236
245
  updateYScaleDomain(): void;
237
246
  initZoomBehavior(): void;
247
+ zoomToFitMarkers(): void;
248
+ translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
238
249
  initSelectedTimestampCursor(): void;
239
- updateMarkersPositions(): void;
250
+ updateMarkers(): void;
240
251
  updateAndRedrawTimeline(): void;
241
252
  clearTimeline(): void;
242
253
  repositionSelectedTimestampCursor(): void;
@@ -252,7 +263,7 @@ export declare const components: {
252
263
  handleResize({ contentRect }: ResizeObserverEntry): void;
253
264
  handleDarkModeChange(): void;
254
265
  handleMouseDown(): void;
255
- handleDocumentMouseUp(): void;
266
+ handleDocumentMouseUp(e: MouseEvent): void;
256
267
  handleMouseLeave(): void;
257
268
  handleMouseMove(event: MouseEvent): void;
258
269
  handleClick(event: MouseEvent): void;
@@ -264,7 +275,7 @@ export declare const components: {
264
275
  handleLabelMouseOver(groupType: string): void;
265
276
  handleLabelMouseLeave(groupType: string): void;
266
277
  handleZoom(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): void;
267
- panToTimestamp(targetTimestamp: string): void;
278
+ panToTimestamp(targetTimestamp: string | Date): void;
268
279
  emitCurtainChange(): void;
269
280
  calculateDateRangeFromCurtains(): {
270
281
  startDate: Date;
@@ -284,7 +295,18 @@ export declare const components: {
284
295
  getEventRectX(d: import('./types').TimelineEvent): any;
285
296
  getEventRectWidth(d: import('./types').TimelineEvent): number;
286
297
  getEventText(e: import('./types').TimelineEvent): string;
298
+ getElementLeftPosition(element: HTMLElement): number;
299
+ isTimestampAllowedForMarker(timestamp: any, marker: import('./types').TimelineMarker): boolean;
300
+ handleMarkerDrag({ marker, markerElement, dragEvent, }: {
301
+ marker: import('./types').TimelineMarker;
302
+ markerElement: import("d3-selection").Selection<any, import('./types').TimelineMarker, any, any>;
303
+ dragEvent: import("d3-drag").D3DragEvent<any, import('./types').TimelineMarker, any>;
304
+ }): void;
305
+ removeMarkersDragBehavior(): void;
306
+ initMarkersDragBehavior(): void;
287
307
  initCurtains(): void;
308
+ initForbiddenIntervals(): void;
309
+ updateForbiddenIntervals(): void;
288
310
  drawEventsGroups(): void;
289
311
  drawLineGraphEventsGroups(): void;
290
312
  drawLineGraph({ events, gElement, color, type, }: {
@@ -299,7 +321,22 @@ export declare const components: {
299
321
  color: string;
300
322
  type: string;
301
323
  }): void;
324
+ drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
325
+ type: string;
326
+ eventsGroup: import('./types').TimelineEventsGroup;
327
+ index?: number | undefined;
328
+ milestone?: boolean | undefined;
329
+ height?: number | undefined;
330
+ }): void;
302
331
  drawBarEventsGroups(): void;
332
+ drawMilestonesPlaceholder(): void;
333
+ getMilestoneClass(milestone: import('./types').TimelineEvent): Record<string, boolean>;
334
+ getMilestoneColors(milestoneColor: string | undefined, groupColor: string): {
335
+ background: string;
336
+ border: string;
337
+ };
338
+ getMilestoneGroupYPosition(groupName: string): number;
339
+ updateMilestonesPositions(): void;
303
340
  drawBarChartEventsGroups(): void;
304
341
  drawProgressIndicator({ yPosition, type, isLoading, }: {
305
342
  yPosition: number;
@@ -307,10 +344,11 @@ export declare const components: {
307
344
  color: string;
308
345
  isLoading: Boolean | undefined;
309
346
  }): void;
310
- drawBackground({ color, yPosition, gElement, }: {
347
+ drawBackground({ color, yPosition, gElement, height, }: {
311
348
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
312
349
  yPosition: number;
313
350
  color: string;
351
+ height?: number | undefined;
314
352
  }): void;
315
353
  drawBars({ events, gElement, yPosition, color, type, }: {
316
354
  events: import('./types').TimelineEvent[];
@@ -329,12 +367,13 @@ export declare const components: {
329
367
  }): void;
330
368
  onBarChartBarMouseOver(container: import("d3-selection").Selection<SVGGElement, any, any, any>, color: string): void;
331
369
  onBarChartBarMouseOut(container: import("d3-selection").Selection<SVGGElement, any, any, any>, eventType: string): void;
332
- drawTextLabel({ gElement, yPosition, color, label, type, }: {
370
+ drawTextLabel({ gElement, yPosition, color, label, type, height, }: {
333
371
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
334
372
  yPosition: number;
335
373
  color: string;
336
374
  label: string;
337
375
  type: string;
376
+ height?: number | undefined;
338
377
  }): void;
339
378
  getTextFillColor(baseColor: string, k?: number): string;
340
379
  getLabelBackgroundColor(baseColor: string): string;
@@ -347,6 +386,10 @@ export declare const components: {
347
386
  getExternalLabelWrapperStyles(type: string): {
348
387
  borderColor: string;
349
388
  };
389
+ getMarkerClass(marker: import('./types').TimelineMarker): {
390
+ "marker--hidden": boolean;
391
+ "marker--draggable": boolean | undefined;
392
+ };
350
393
  getMarkerContainerStyle(marker: import('./types').TimelineMarker): Record<string, string>;
351
394
  getMarkerLabelStyle(marker: import('./types').TimelineMarker): Record<string, string>;
352
395
  getMarkerLineStyle(marker: import('./types').TimelineMarker): Record<string, string>;
@@ -358,10 +401,11 @@ export declare const components: {
358
401
  };
359
402
  getFormattedTimestamp(timestamp: import('./types').Timestamp): string;
360
403
  fillTimeGaps(events: import('./types').TimelineEvent[]): (import('./types').TimelineBarEvent | import('./types').TimelineRangeEvent | import('./types').TimelineCountEvent | {
361
- timestamp: any;
404
+ timestamp: string;
362
405
  count: number;
363
406
  })[];
364
407
  fillEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
408
+ onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: string): void;
365
409
  }, {
366
410
  barChartHeight: number;
367
411
  classes: Record<string, string | Record<string, boolean>>;
@@ -369,6 +413,7 @@ export declare const components: {
369
413
  chartHeight: number;
370
414
  barGroups: import('./types').TimelineEventsByType;
371
415
  barChartGroups: import('./types').TimelineEventsByType;
416
+ milestonesGroups: import('./types').TimelineEventsByType;
372
417
  hasChart: boolean;
373
418
  labelRectWidth: number;
374
419
  combinedXAxesHeight: number;
@@ -405,6 +450,8 @@ export declare const components: {
405
450
  chartMinHeight: number;
406
451
  minZoom: number;
407
452
  maxZoom: number;
453
+ minDate: string;
454
+ maxDate: string;
408
455
  cursorTimestamp: string | undefined;
409
456
  selectedClass: string | undefined;
410
457
  panOnDateClick: boolean;
@@ -413,6 +460,10 @@ export declare const components: {
413
460
  autoResize: boolean;
414
461
  markers: import('./types').TimelineMarker[];
415
462
  stickyMarkers: boolean;
463
+ fitMarkersOnChange: boolean;
464
+ fitMarkersTransitionDuration: number;
465
+ zoomToBoundariesTransitionDuration: number;
466
+ milestoneBulletSize: number;
416
467
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
417
468
  EVideoEmbed: import("vue").DefineComponent<{
418
469
  videoUrl: {
@@ -67,11 +67,21 @@ export type TimelineCountEvent = {
67
67
  className?: string;
68
68
  [key: string]: any;
69
69
  };
70
- export type TimelineEvent = TimelineBarEvent | TimelineRangeEvent | TimelineCountEvent;
70
+ export type TimelineMilestoneEvent = {
71
+ timestamp: string | Date;
72
+ color?: string;
73
+ className?: string;
74
+ text?: string;
75
+ milestoneType: string;
76
+ size?: number;
77
+ [key: string]: any;
78
+ };
79
+ export type TimelineEvent = TimelineBarEvent | TimelineRangeEvent | TimelineCountEvent | TimelineMilestoneEvent;
71
80
  export declare enum TimelineChartType {
72
81
  bars = "bars",
73
82
  lineGraph = "lineGraph",
74
- barChart = "barGraph"
83
+ barChart = "barGraph",
84
+ milestones = "milestones"
75
85
  }
76
86
  export type TimelineEventsGroup = {
77
87
  label: string;
@@ -81,6 +91,7 @@ export type TimelineEventsGroup = {
81
91
  isHidden?: Boolean;
82
92
  chartType?: TimelineChartType;
83
93
  events: Array<TimelineEvent>;
94
+ height?: number;
84
95
  };
85
96
  export type TimelineEventsByType = {
86
97
  [eventsType: string]: TimelineEventsGroup;
@@ -96,7 +107,11 @@ export type TimelineMarker = {
96
107
  label: string;
97
108
  color: string;
98
109
  textColor?: string;
110
+ className?: string;
99
111
  id: string | number;
112
+ isDraggable?: boolean;
113
+ minDate?: string;
114
+ maxDate?: string;
100
115
  };
101
116
  declare const _default: {};
102
117
  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}.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%}
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-160e835f]{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-160e835f]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-160e835f]{max-width:initial;width:100%;max-height:100vh}video[data-v-160e835f]{width:100%;height:inherit}.video-controls-container[data-v-160e835f]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-160e835f]{display:none}.video-controls-container[data-v-160e835f]: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-160e835f],.video-container:focus-within .video-controls-container[data-v-160e835f],.video-container.paused .video-controls-container[data-v-160e835f]{opacity:1}.video-controls-container .controls[data-v-160e835f]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-160e835f]{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-160e835f]:hover{opacity:1}.duration-container[data-v-160e835f]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-160e835f]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-160e835f]{width:50px}.timeline-container[data-v-160e835f]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-160e835f]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-160e835f]: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-160e835f]: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-160e835f]{--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-160e835f]{display:block}.video-container.scrubbing .timeline[data-v-160e835f]:before,.timeline-container:hover .timeline[data-v-160e835f]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-160e835f],.timeline-container:hover .thumb-indicator[data-v-160e835f]{--scale: 1}.video-container.scrubbing .timeline[data-v-160e835f],.timeline-container:hover .timeline[data-v-160e835f]{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%}
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
  },
@@ -97,6 +100,8 @@
97
100
  "chart-min-height",
98
101
  "min-zoom",
99
102
  "max-zoom",
103
+ "min-date",
104
+ "max-date",
100
105
  "cursor-timestamp",
101
106
  "selected-class",
102
107
  "pan-on-date-click",
@@ -104,7 +109,11 @@
104
109
  "selected-date",
105
110
  "auto-resize",
106
111
  "markers",
107
- "sticky-markers"
112
+ "sticky-markers",
113
+ "fit-markers-on-change",
114
+ "fit-markers-transition-duration",
115
+ "zoom-to-boundaries-transition-duration",
116
+ "milestone-bullet-size"
108
117
  ],
109
118
  "description": ""
110
119
  }
@@ -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.53",
5
+ "version": "0.0.54",
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": "() => Ah",
539
566
  "value": {
540
567
  "kind": "expression",
541
568
  "type": "object"
@@ -694,6 +721,24 @@
694
721
  "type": "number"
695
722
  }
696
723
  },
724
+ {
725
+ "name": "min-date",
726
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
727
+ "default": "undefined",
728
+ "value": {
729
+ "kind": "expression",
730
+ "type": "string"
731
+ }
732
+ },
733
+ {
734
+ "name": "max-date",
735
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
736
+ "default": "undefined",
737
+ "value": {
738
+ "kind": "expression",
739
+ "type": "string"
740
+ }
741
+ },
697
742
  {
698
743
  "name": "cursor-timestamp",
699
744
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
@@ -730,7 +775,7 @@
730
775
  {
731
776
  "name": "pan-transition-duration",
732
777
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
733
- "default": "500",
778
+ "default": "800",
734
779
  "value": {
735
780
  "kind": "expression",
736
781
  "type": "number"
@@ -771,6 +816,42 @@
771
816
  "kind": "expression",
772
817
  "type": "boolean"
773
818
  }
819
+ },
820
+ {
821
+ "name": "fit-markers-on-change",
822
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
823
+ "default": "false",
824
+ "value": {
825
+ "kind": "expression",
826
+ "type": "boolean"
827
+ }
828
+ },
829
+ {
830
+ "name": "fit-markers-transition-duration",
831
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
832
+ "default": "800",
833
+ "value": {
834
+ "kind": "expression",
835
+ "type": "number"
836
+ }
837
+ },
838
+ {
839
+ "name": "zoom-to-boundaries-transition-duration",
840
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
841
+ "default": "0",
842
+ "value": {
843
+ "kind": "expression",
844
+ "type": "number"
845
+ }
846
+ },
847
+ {
848
+ "name": "milestone-bullet-size",
849
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
850
+ "default": "18",
851
+ "value": {
852
+ "kind": "expression",
853
+ "type": "number"
854
+ }
774
855
  }
775
856
  ]
776
857
  },