@evercam/ui 0.0.53-beta.6 → 0.0.54-beta.0

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;
@@ -180,6 +215,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
180
215
  };
181
216
  getMarkerClass(marker: TimelineMarker): {
182
217
  "marker--hidden": boolean;
218
+ "marker--draggable": boolean | undefined;
183
219
  };
184
220
  getMarkerContainerStyle(marker: TimelineMarker): Record<string, string>;
185
221
  getMarkerLabelStyle(marker: TimelineMarker): Record<string, string>;
@@ -192,10 +228,11 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
192
228
  };
193
229
  getFormattedTimestamp(timestamp: Timestamp): string;
194
230
  fillTimeGaps(events: TimelineEvent[]): (import('../types').TimelineBarEvent | import('../types').TimelineRangeEvent | TimelineCountEvent | {
195
- timestamp: any;
231
+ timestamp: string;
196
232
  count: number;
197
233
  })[];
198
234
  fillEvents(events: TimelineEvent[]): TimelineEvent[];
235
+ onMilestoneClick(milestone: TimelineEvent, milestoneType: string): void;
199
236
  }, {
200
237
  barChartHeight: number;
201
238
  classes: Record<string, string | Record<string, boolean>>;
@@ -203,6 +240,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
203
240
  chartHeight: number;
204
241
  barGroups: TimelineEventsByType;
205
242
  barChartGroups: TimelineEventsByType;
243
+ milestonesGroups: TimelineEventsByType;
206
244
  hasChart: boolean;
207
245
  labelRectWidth: number;
208
246
  combinedXAxesHeight: number;
@@ -239,6 +277,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
239
277
  chartMinHeight: number;
240
278
  minZoom: number;
241
279
  maxZoom: number;
280
+ minDate: string;
281
+ maxDate: string;
242
282
  cursorTimestamp: string | undefined;
243
283
  selectedClass: string | undefined;
244
284
  panOnDateClick: boolean;
@@ -247,5 +287,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
247
287
  autoResize: boolean;
248
288
  markers: TimelineMarker[];
249
289
  stickyMarkers: boolean;
290
+ fitMarkersOnChange: boolean;
291
+ fitMarkersTransitionDuration: number;
292
+ zoomToBoundariesTransitionDuration: number;
293
+ milestoneBulletSize: number;
250
294
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
251
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,4 +1,4 @@
1
- import Hls, { ErrorData, Events } from "hls.js";
1
+ import Hls from "hls.js";
2
2
  import Vue from "vue";
3
3
  export type VideoSource = {
4
4
  type: string;
@@ -23,7 +23,6 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
23
23
  }, {
24
24
  initHls(): void;
25
25
  handle404Error(): void;
26
- handleHlsError(_: Events.ERROR, data: ErrorData): void;
27
26
  bindEvents(): void;
28
27
  unbindEvents(): void;
29
28
  bindVideoEvent(which: string): void;
@@ -136,7 +136,6 @@ export declare const components: {
136
136
  }, {
137
137
  initHls(): void;
138
138
  handle404Error(): void;
139
- handleHlsError(_: import("hls.js").Events.ERROR, data: import("hls.js").ErrorData): void;
140
139
  bindEvents(): void;
141
140
  unbindEvents(): void;
142
141
  bindVideoEvent(which: string): void;
@@ -180,6 +179,7 @@ export declare const components: {
180
179
  tooltip: HTMLElement;
181
180
  cursor: HTMLElement;
182
181
  timeline: HTMLElement;
182
+ wrapperDiv: HTMLElement;
183
183
  selectedTimestampCursor: HTMLElement;
184
184
  svg: import("d3-selection").Selection<SVGSVGElement, any, any, any>;
185
185
  axesContainer: import("d3-selection").Selection<SVGGElement, any, any, any>;
@@ -229,6 +229,10 @@ export declare const components: {
229
229
  position: number;
230
230
  isHidden: boolean;
231
231
  }>;
232
+ markersDragBehavior: import("d3-drag").DragBehavior<HTMLElement, import('./types').TimelineMarker, any>;
233
+ initialMarkerDragMouseOffset: number;
234
+ selectedMilestoneId: any;
235
+ isInitialized: boolean;
232
236
  }, {
233
237
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
234
238
  initRefs(): void;
@@ -240,8 +244,10 @@ export declare const components: {
240
244
  initYScale(): void;
241
245
  updateYScaleDomain(): void;
242
246
  initZoomBehavior(): void;
247
+ zoomToFitMarkers(): void;
248
+ translateMarkersIntoView(minTimestamp: number, maxTimestamp: number, scaleFactor: number): void;
243
249
  initSelectedTimestampCursor(): void;
244
- updateMarkersPositions(): void;
250
+ updateMarkers(): void;
245
251
  updateAndRedrawTimeline(): void;
246
252
  clearTimeline(): void;
247
253
  repositionSelectedTimestampCursor(): void;
@@ -257,7 +263,7 @@ export declare const components: {
257
263
  handleResize({ contentRect }: ResizeObserverEntry): void;
258
264
  handleDarkModeChange(): void;
259
265
  handleMouseDown(): void;
260
- handleDocumentMouseUp(): void;
266
+ handleDocumentMouseUp(e: MouseEvent): void;
261
267
  handleMouseLeave(): void;
262
268
  handleMouseMove(event: MouseEvent): void;
263
269
  handleClick(event: MouseEvent): void;
@@ -269,7 +275,7 @@ export declare const components: {
269
275
  handleLabelMouseOver(groupType: string): void;
270
276
  handleLabelMouseLeave(groupType: string): void;
271
277
  handleZoom(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): void;
272
- panToTimestamp(targetTimestamp: string): void;
278
+ panToTimestamp(targetTimestamp: string | Date): void;
273
279
  emitCurtainChange(): void;
274
280
  calculateDateRangeFromCurtains(): {
275
281
  startDate: Date;
@@ -289,7 +295,18 @@ export declare const components: {
289
295
  getEventRectX(d: import('./types').TimelineEvent): any;
290
296
  getEventRectWidth(d: import('./types').TimelineEvent): number;
291
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;
292
307
  initCurtains(): void;
308
+ initForbiddenIntervals(): void;
309
+ updateForbiddenIntervals(): void;
293
310
  drawEventsGroups(): void;
294
311
  drawLineGraphEventsGroups(): void;
295
312
  drawLineGraph({ events, gElement, color, type, }: {
@@ -304,7 +321,22 @@ export declare const components: {
304
321
  color: string;
305
322
  type: string;
306
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;
307
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;
308
340
  drawBarChartEventsGroups(): void;
309
341
  drawProgressIndicator({ yPosition, type, isLoading, }: {
310
342
  yPosition: number;
@@ -312,10 +344,11 @@ export declare const components: {
312
344
  color: string;
313
345
  isLoading: Boolean | undefined;
314
346
  }): void;
315
- drawBackground({ color, yPosition, gElement, }: {
347
+ drawBackground({ color, yPosition, gElement, height, }: {
316
348
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
317
349
  yPosition: number;
318
350
  color: string;
351
+ height?: number | undefined;
319
352
  }): void;
320
353
  drawBars({ events, gElement, yPosition, color, type, }: {
321
354
  events: import('./types').TimelineEvent[];
@@ -334,12 +367,13 @@ export declare const components: {
334
367
  }): void;
335
368
  onBarChartBarMouseOver(container: import("d3-selection").Selection<SVGGElement, any, any, any>, color: string): void;
336
369
  onBarChartBarMouseOut(container: import("d3-selection").Selection<SVGGElement, any, any, any>, eventType: string): void;
337
- drawTextLabel({ gElement, yPosition, color, label, type, }: {
370
+ drawTextLabel({ gElement, yPosition, color, label, type, height, }: {
338
371
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
339
372
  yPosition: number;
340
373
  color: string;
341
374
  label: string;
342
375
  type: string;
376
+ height?: number | undefined;
343
377
  }): void;
344
378
  getTextFillColor(baseColor: string, k?: number): string;
345
379
  getLabelBackgroundColor(baseColor: string): string;
@@ -354,6 +388,7 @@ export declare const components: {
354
388
  };
355
389
  getMarkerClass(marker: import('./types').TimelineMarker): {
356
390
  "marker--hidden": boolean;
391
+ "marker--draggable": boolean | undefined;
357
392
  };
358
393
  getMarkerContainerStyle(marker: import('./types').TimelineMarker): Record<string, string>;
359
394
  getMarkerLabelStyle(marker: import('./types').TimelineMarker): Record<string, string>;
@@ -366,10 +401,11 @@ export declare const components: {
366
401
  };
367
402
  getFormattedTimestamp(timestamp: import('./types').Timestamp): string;
368
403
  fillTimeGaps(events: import('./types').TimelineEvent[]): (import('./types').TimelineBarEvent | import('./types').TimelineRangeEvent | import('./types').TimelineCountEvent | {
369
- timestamp: any;
404
+ timestamp: string;
370
405
  count: number;
371
406
  })[];
372
407
  fillEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
408
+ onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: string): void;
373
409
  }, {
374
410
  barChartHeight: number;
375
411
  classes: Record<string, string | Record<string, boolean>>;
@@ -377,6 +413,7 @@ export declare const components: {
377
413
  chartHeight: number;
378
414
  barGroups: import('./types').TimelineEventsByType;
379
415
  barChartGroups: import('./types').TimelineEventsByType;
416
+ milestonesGroups: import('./types').TimelineEventsByType;
380
417
  hasChart: boolean;
381
418
  labelRectWidth: number;
382
419
  combinedXAxesHeight: number;
@@ -413,6 +450,8 @@ export declare const components: {
413
450
  chartMinHeight: number;
414
451
  minZoom: number;
415
452
  maxZoom: number;
453
+ minDate: string;
454
+ maxDate: string;
416
455
  cursorTimestamp: string | undefined;
417
456
  selectedClass: string | undefined;
418
457
  panOnDateClick: boolean;
@@ -421,6 +460,10 @@ export declare const components: {
421
460
  autoResize: boolean;
422
461
  markers: import('./types').TimelineMarker[];
423
462
  stickyMarkers: boolean;
463
+ fitMarkersOnChange: boolean;
464
+ fitMarkersTransitionDuration: number;
465
+ zoomToBoundariesTransitionDuration: number;
466
+ milestoneBulletSize: number;
424
467
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
425
468
  EVideoEmbed: import("vue").DefineComponent<{
426
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-8155676e]{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-8155676e]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-8155676e]{max-width:initial;width:100%;max-height:100vh}video[data-v-8155676e]{width:100%;height:inherit}.video-controls-container[data-v-8155676e]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-8155676e]{display:none}.video-controls-container[data-v-8155676e]: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-8155676e],.video-container:focus-within .video-controls-container[data-v-8155676e],.video-container.paused .video-controls-container[data-v-8155676e]{opacity:1}.video-controls-container .controls[data-v-8155676e]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-8155676e]{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-8155676e]:hover{opacity:1}.duration-container[data-v-8155676e]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-8155676e]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-8155676e]{width:50px}.timeline-container[data-v-8155676e]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-8155676e]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-8155676e]: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-8155676e]: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-8155676e]{--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-8155676e]{display:block}.video-container.scrubbing .timeline[data-v-8155676e]:before,.timeline-container:hover .timeline[data-v-8155676e]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-8155676e],.timeline-container:hover .thumb-indicator[data-v-8155676e]{--scale: 1}.video-container.scrubbing .timeline[data-v-8155676e],.timeline-container:hover .timeline[data-v-8155676e]{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-9071f674]{position:absolute;background:linear-gradient(to top,rgba(0,0,0,.65),transparent);inset:0;display:flex;justify-content:center;align-items:center;vertical-align:middle}.video-container[data-v-9071f674]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-9071f674]{max-width:initial;width:100%;max-height:100vh}video[data-v-9071f674]{width:100%;height:inherit}.video-controls-container[data-v-9071f674]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-9071f674]{display:none}.video-controls-container[data-v-9071f674]:before{content:"";position:absolute;bottom:0;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);width:100%;aspect-ratio:6 / 1;z-index:-1;pointer-events:none}.video-container:hover .video-controls-container[data-v-9071f674],.video-container:focus-within .video-controls-container[data-v-9071f674],.video-container.paused .video-controls-container[data-v-9071f674]{opacity:1}.video-controls-container .controls[data-v-9071f674]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-9071f674]{background:none;border:none;color:inherit;padding:0;height:32px;width:32px;font-size:1.35rem;cursor:pointer;opacity:.85;transition:opacity .15s ease-in-out}.video-controls-container .controls button[data-v-9071f674]:hover{opacity:1}.duration-container[data-v-9071f674]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-9071f674]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-9071f674]{width:50px}.timeline-container[data-v-9071f674]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-9071f674]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-9071f674]:before{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--preview-position) * 100%);background-color:#969696;display:none}.timeline[data-v-9071f674]:after{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--progress-position) * 100%);background-color:red}.timeline .thumb-indicator[data-v-9071f674]{--scale: 0;position:absolute;transform:translate(-50%) scale(var(--scale));height:200%;top:-50%;left:calc(var(--progress-position) * 100%);background-color:red;border-radius:50%;transition:transform .15s ease-in-out;aspect-ratio:1 / 1}.video-container.scrubbing .thumbnail-img[data-v-9071f674]{display:block}.video-container.scrubbing .timeline[data-v-9071f674]:before,.timeline-container:hover .timeline[data-v-9071f674]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-9071f674],.timeline-container:hover .thumb-indicator[data-v-9071f674]{--scale: 1}.video-container.scrubbing .timeline[data-v-9071f674],.timeline-container:hover .timeline[data-v-9071f674]{height:100%}.e-tl-milestone{position:absolute;border-radius:10em;box-sizing:border-box}.e-tl-milestone-content{opacity:0;width:0;height:0;white-space:nowrap;pointer-events:none}.e-tl-milestone--hovered{cursor:pointer;min-height:26px;padding:0 8px;border-radius:.5em}.e-tl-milestone--hovered .e-tl-milestone-content{opacity:1;font-size:small;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.e-tl-milestone-label{position:absolute;top:0;left:0;opacity:1;pointer-events:none;height:100%;width:100%}.e-tl-milestone--hovered .e-tl-milestone-label{opacity:0}.e-timeline svg{display:block}.e-timeline .x-axis-overview .domain,.e-timeline .x-axis-detailed .domain,.e-timeline .x-axis-overviewBackground .domain,.e-timeline .x-axis-detailedBackground .domain{display:none}.e-timeline .x-axis-detailedBackground .domain,.e-timeline .x-axis-detailedBackground text{display:none}.e-timeline .x-axis-overview>g.tick>line{opacity:.1;stroke-width:3;stroke-linecap:round}.e-timeline .x-axis-detailed>g.tick>line{opacity:.1;stroke-linecap:round}.e-timeline .x-axis-detailedBackground>g.tick>line{opacity:.075;stroke-linecap:round}.e-timeline--dark .tick line{stroke:#fff}.e-timeline--dark .tick text{fill:#fff}@keyframes moveGradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}@keyframes pulse-rect{0%{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}50%{filter:saturate(.5) drop-shadow(0 0 0 #0000)}to{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}}@keyframes pulse-circle{0%{r:4px}50%{r:1px}to{r:4px}}.loading-indicator{animation:moveGradient 1.5s ease-in infinite}.line-graph-dot--active{animation:pulse-circle 1s ease-in-out infinite}.event-rect--hovered{animation:pulse-rect 1s ease-in-out infinite}@keyframes dash{0%{filter:saturate(1) drop-shadow(0 0 0 #0000)}50%{stroke-width:2px;filter:saturate(2.5) drop-shadow(0 0 0 #0006)}to{filter:saturate(1) drop-shadow(0 0 0 #0000)}}.line-graph-group--highlighted path{animation:dash 1s ease-in-out infinite}.e-timeline--dragging{cursor:ew-resize}.curtain{cursor:ew-resize;fill:#3332;stroke-width:1px;stroke:#3338;transition:stroke-width .2s}.e-timeline--dragging .curtain{stroke-width:3px}.e-timeline--dark .curtain{fill:#fff3;stroke:#fff7}.event-bar-hover-zone{cursor:pointer}.external-labels-container{position:absolute;top:-1.5em;left:0}.external-label{margin-right:.35em;border-width:.5px;border-radius:.2em}.external-label__content{cursor:pointer;font-size:.8em;font-weight:500;padding:0 .6em;line-height:1.4em}.marker-label{transition:transform .2s;transform:translateY(-32px);position:absolute;width:max-content}.marker-label-text{position:absolute;width:max-content;font-size:.8em;font-weight:500;padding:0 .75em;border-radius:.4em .4em .4em 0;box-shadow:0 0 5px -1px #000000f5}.marker-label-text:after{content:"";background:inherit;width:5px;height:5px;bottom:-5px;position:absolute;left:2px;clip-path:path("M 0,5 L 0,0 L 5,0 A 5,5 0 0 0 0,5")}.marker-label-text:before{content:"";background:inherit;height:20px;top:18px;position:absolute;width:2px;left:0}.marker{top:0;filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px;transition:top .2s,height .2s}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1)}.marker:hover .marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker:hover .marker-label-text{box-shadow:2px 2px 11px -4px #000}.marker--hidden:hover .marker-label{transform:translateY(-54px)}.marker--draggable,.marker--draggable:hover{user-select:none;cursor:grab}.marker--dragged:hover{cursor:grabbing}.forbidden-interval{opacity:.2}.e-timeline-milestones{height:0}.video-embed[data-v-0ecf4a71]{position:relative;width:100%!important;padding-bottom:56.25%}.video-embed iframe[data-v-0ecf4a71]{position:absolute;top:0;left:0;width:100%;height:100%}
package/dist/tags.json CHANGED
@@ -100,6 +100,8 @@
100
100
  "chart-min-height",
101
101
  "min-zoom",
102
102
  "max-zoom",
103
+ "min-date",
104
+ "max-date",
103
105
  "cursor-timestamp",
104
106
  "selected-class",
105
107
  "pan-on-date-click",
@@ -107,7 +109,11 @@
107
109
  "selected-date",
108
110
  "auto-resize",
109
111
  "markers",
110
- "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"
111
117
  ],
112
118
  "description": ""
113
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-beta.5",
5
+ "version": "0.0.54",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -562,7 +562,7 @@
562
562
  {
563
563
  "name": "x-axes-config",
564
564
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
565
- "default": "() => bh",
565
+ "default": "() => Ah",
566
566
  "value": {
567
567
  "kind": "expression",
568
568
  "type": "object"
@@ -721,6 +721,24 @@
721
721
  "type": "number"
722
722
  }
723
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
+ },
724
742
  {
725
743
  "name": "cursor-timestamp",
726
744
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
@@ -757,7 +775,7 @@
757
775
  {
758
776
  "name": "pan-transition-duration",
759
777
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
760
- "default": "500",
778
+ "default": "800",
761
779
  "value": {
762
780
  "kind": "expression",
763
781
  "type": "number"
@@ -798,6 +816,42 @@
798
816
  "kind": "expression",
799
817
  "type": "boolean"
800
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
+ }
801
855
  }
802
856
  ]
803
857
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evercam/ui",
3
- "version": "0.0.53-beta.6",
3
+ "version": "0.0.54-beta.0",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "author": "Evercam - Constuction Cameras.",
@@ -33,6 +33,7 @@
33
33
  "build": "yarn build:lib && yarn build:style && yarn generate-ide-docs",
34
34
  "build:lib": "vite build",
35
35
  "build:style": "postcss src/style/main.css --verbose -o dist/styles.css",
36
+ "build-and-copy": "yarn build && rsync -av --delete ./dist/ ../../node_modules/@evercam/ui/dist/",
36
37
  "typecheck": "vue-tsc --declaration --emitDeclarationOnly",
37
38
  "generate-ide-docs": "node scripts/generate-vetur.mjs && node scripts/generate-web-types.mjs",
38
39
  "ci": "(cd ../..; yarn ci)",