@evercam/ui 0.0.54 → 0.0.55-beta.10

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, TimelineEventsGroup, TimelineIntervalChangeTrigger, TimelineMarker, TimelinePrecision, TimelineTicksConfig, Timestamp } from '../types';
4
+ import { TimelineAxesConfig, TimelineAxis, TimelineCountEvent, TimelineEvent, TimelineEventsByType, TimelineEventsGroup, TimelineForbiddenInterval, 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;
@@ -60,14 +60,17 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
60
60
  initialMarkerDragMouseOffset: number;
61
61
  selectedMilestoneId: any;
62
62
  isInitialized: boolean;
63
+ lastValidTransform: d3.ZoomTransform;
63
64
  }, {
65
+ updateTimeline(): void;
64
66
  initTimeline(startDate?: string, endDate?: string): void;
65
67
  initRefs(): void;
66
- initSvg(): void;
68
+ initOrUpdateSvg(): void;
67
69
  initDefs(): void;
68
70
  initUtcOffset(): void;
69
71
  initTimeScale(start?: string, end?: string): void;
70
72
  initXAxes(): void;
73
+ updateXAxes(): void;
71
74
  initYScale(): void;
72
75
  updateYScaleDomain(): void;
73
76
  initZoomBehavior(): void;
@@ -90,7 +93,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
90
93
  handleResize({ contentRect }: ResizeObserverEntry): void;
91
94
  handleDarkModeChange(): void;
92
95
  handleMouseDown(): void;
93
- handleDocumentMouseUp(e: MouseEvent): void;
96
+ handleDocumentMouseUp(_e: MouseEvent): void;
94
97
  handleMouseLeave(): void;
95
98
  handleMouseMove(event: MouseEvent): void;
96
99
  handleClick(event: MouseEvent): void;
@@ -101,6 +104,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
101
104
  handleBarMouseOut(): void;
102
105
  handleLabelMouseOver(groupType: string): void;
103
106
  handleLabelMouseLeave(groupType: string): void;
107
+ isZoomAllowed(event: D3ZoomEvent<SVGSVGElement, any>): boolean;
104
108
  handleZoom(event: D3ZoomEvent<SVGSVGElement, any>): void;
105
109
  panToTimestamp(targetTimestamp: string | Date): void;
106
110
  emitCurtainChange(): void;
@@ -123,7 +127,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
123
127
  getEventRectWidth(d: TimelineEvent): number;
124
128
  getEventText(e: TimelineEvent): string;
125
129
  getElementLeftPosition(element: HTMLElement): number;
126
- isTimestampAllowedForMarker(timestamp: any, marker: TimelineMarker): boolean;
130
+ isTimestampAllowedForMarker(timestamp: Date | number, marker: TimelineMarker): boolean;
127
131
  handleMarkerDrag({ marker, markerElement, dragEvent, }: {
128
132
  marker: TimelineMarker;
129
133
  markerElement: d3.Selection<any, TimelineMarker, any, any>;
@@ -132,8 +136,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
132
136
  removeMarkersDragBehavior(): void;
133
137
  initMarkersDragBehavior(): void;
134
138
  initCurtains(): void;
135
- initForbiddenIntervals(): void;
136
- updateForbiddenIntervals(): void;
139
+ createCurtains(): void;
140
+ updateCurtains(): void;
141
+ updateForbiddenIntervals(reset?: boolean): void;
137
142
  drawEventsGroups(): void;
138
143
  drawLineGraphEventsGroups(): void;
139
144
  drawLineGraph({ events, gElement, color, type, }: {
@@ -148,12 +153,13 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
148
153
  color: string;
149
154
  type: string;
150
155
  }): void;
151
- drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
156
+ drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
152
157
  type: string;
153
158
  eventsGroup: TimelineEventsGroup;
154
- index?: number | undefined;
155
159
  milestone?: boolean | undefined;
156
- height?: number | undefined;
160
+ dots?: boolean | undefined;
161
+ dotsSize?: number | undefined;
162
+ bottom?: boolean | undefined;
157
163
  }): void;
158
164
  drawBarEventsGroups(): void;
159
165
  drawMilestonesPlaceholder(): void;
@@ -163,6 +169,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
163
169
  border: string;
164
170
  };
165
171
  getMilestoneGroupYPosition(groupName: string): number;
172
+ getBarGroupYPosition(groupName: string, bottom?: boolean): number;
173
+ getBarGroupHeight(eventsGroup: TimelineEventsGroup): number;
166
174
  updateMilestonesPositions(): void;
167
175
  drawBarChartEventsGroups(): void;
168
176
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -177,12 +185,16 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
177
185
  color: string;
178
186
  height?: number | undefined;
179
187
  }): void;
180
- drawBars({ events, gElement, yPosition, color, type, }: {
188
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
181
189
  events: TimelineEvent[];
182
190
  gElement: d3.Selection<SVGGElement, any, any, any>;
183
191
  yPosition: number;
184
192
  color: string;
185
193
  type: string;
194
+ dots?: boolean | undefined;
195
+ dotsSize?: number | undefined;
196
+ height?: number | undefined;
197
+ barBorderRadius?: number | undefined;
186
198
  }): void;
187
199
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
188
200
  events: TimelineEvent[];
@@ -232,8 +244,16 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
232
244
  count: number;
233
245
  })[];
234
246
  fillEvents(events: TimelineEvent[]): TimelineEvent[];
235
- onMilestoneClick(milestone: TimelineEvent, milestoneType: string): void;
247
+ onMilestoneClick(milestone: TimelineEvent, milestoneType: any): void;
248
+ getSortedEvents(events: TimelineEvent[]): TimelineEvent[];
236
249
  }, {
250
+ combinedBarsHeight: number;
251
+ combinedBottomBarsHeight: number;
252
+ combinedMilestonesHeight: number;
253
+ milestonesYOffset: number;
254
+ chartsYOffset: number;
255
+ barsYOffset: number;
256
+ hasMilestones: boolean;
237
257
  barChartHeight: number;
238
258
  classes: Record<string, string | Record<string, boolean>>;
239
259
  lineGraphGroups: TimelineEventsByType;
@@ -275,6 +295,7 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
275
295
  barYPadding: number;
276
296
  barXPadding: number;
277
297
  chartMinHeight: number;
298
+ chartMinLabelHeight: number;
278
299
  minZoom: number;
279
300
  maxZoom: number;
280
301
  minDate: string;
@@ -291,5 +312,8 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
291
312
  fitMarkersTransitionDuration: number;
292
313
  zoomToBoundariesTransitionDuration: number;
293
314
  milestoneBulletSize: number;
315
+ milestonesFirst: boolean;
316
+ forbiddenIntervals: TimelineForbiddenInterval[];
317
+ forbiddenIntervalColor: string;
294
318
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
295
319
  export default _default;
@@ -2,32 +2,54 @@ import Vue from "vue";
2
2
  import { TimelineMilestoneEvent } from '../types';
3
3
  export declare const milestoneClasses: {
4
4
  milestone: string;
5
+ milestoneBullet: string;
6
+ milestoneDot: string;
5
7
  milestoneContent: string;
6
8
  milestoneLine: string;
7
9
  milestonesContainer: string;
8
10
  milestoneHovered: string;
9
11
  milestoneSelected: string;
10
12
  milestoneLabel: string;
13
+ milestoneDotContainer: string;
14
+ milestoneDotLine: string;
15
+ milestoneDotDot: string;
16
+ milestoneDotHovered: string;
11
17
  };
12
18
  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
19
  milestoneClasses: {
14
20
  milestone: string;
21
+ milestoneBullet: string;
22
+ milestoneDot: string;
15
23
  milestoneContent: string;
16
24
  milestoneLine: string;
17
25
  milestonesContainer: string;
18
26
  milestoneHovered: string;
19
27
  milestoneSelected: string;
20
28
  milestoneLabel: string;
29
+ milestoneDotContainer: string;
30
+ milestoneDotLine: string;
31
+ milestoneDotDot: string;
32
+ milestoneDotHovered: string;
21
33
  };
22
34
  timeouts: number[];
35
+ isInitialRender: boolean;
36
+ isMouseOver: boolean;
23
37
  }, {
24
- onMilestoneMouseOver(e: MouseEvent, _milestone: TimelineMilestoneEvent): void;
25
- onMilestoneMouseLeave(e: MouseEvent, _milestone: TimelineMilestoneEvent): void;
38
+ onMilestoneMouseOver(e?: MouseEvent): void;
39
+ onMilestoneMouseMove(): void;
40
+ onMilestoneMouseLeave(e?: MouseEvent): void;
26
41
  onMilestoneClick(_e: MouseEvent, milestone: TimelineMilestoneEvent): void;
27
42
  }, {
43
+ transitionStyles: Record<string, any>;
44
+ sizeStyles: Record<string, any>;
45
+ positionStyles: Record<string, any>;
28
46
  styles: Record<string, any>;
29
47
  contentStyles: Record<string, any>;
48
+ computedTransitionDuration: number;
30
49
  labelStyles: Record<string, any>;
50
+ dotContainerStyles: Record<string, any>;
51
+ lineStyles: Record<string, any>;
52
+ dotStyles: Record<string, any>;
31
53
  }, {
32
54
  milestone: TimelineMilestoneEvent;
33
55
  size: number;
@@ -35,5 +57,9 @@ declare const _default: import("vue/types/vue").ExtendedVue<Vue<Record<string, a
35
57
  backgroundColor: string;
36
58
  borderWidth: number;
37
59
  transitionDuration: number;
60
+ dot: boolean;
61
+ dotSize: number;
62
+ lineWidth: number;
63
+ lineHeight: number;
38
64
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
39
65
  export default _default;
@@ -233,14 +233,17 @@ export declare const components: {
233
233
  initialMarkerDragMouseOffset: number;
234
234
  selectedMilestoneId: any;
235
235
  isInitialized: boolean;
236
+ lastValidTransform: import("d3-zoom").ZoomTransform;
236
237
  }, {
238
+ updateTimeline(): void;
237
239
  initTimeline(startDate?: string | undefined, endDate?: string | undefined): void;
238
240
  initRefs(): void;
239
- initSvg(): void;
241
+ initOrUpdateSvg(): void;
240
242
  initDefs(): void;
241
243
  initUtcOffset(): void;
242
244
  initTimeScale(start?: string | undefined, end?: string | undefined): void;
243
245
  initXAxes(): void;
246
+ updateXAxes(): void;
244
247
  initYScale(): void;
245
248
  updateYScaleDomain(): void;
246
249
  initZoomBehavior(): void;
@@ -263,7 +266,7 @@ export declare const components: {
263
266
  handleResize({ contentRect }: ResizeObserverEntry): void;
264
267
  handleDarkModeChange(): void;
265
268
  handleMouseDown(): void;
266
- handleDocumentMouseUp(e: MouseEvent): void;
269
+ handleDocumentMouseUp(_e: MouseEvent): void;
267
270
  handleMouseLeave(): void;
268
271
  handleMouseMove(event: MouseEvent): void;
269
272
  handleClick(event: MouseEvent): void;
@@ -274,6 +277,7 @@ export declare const components: {
274
277
  handleBarMouseOut(): void;
275
278
  handleLabelMouseOver(groupType: string): void;
276
279
  handleLabelMouseLeave(groupType: string): void;
280
+ isZoomAllowed(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): boolean;
277
281
  handleZoom(event: import("d3-zoom").D3ZoomEvent<SVGSVGElement, any>): void;
278
282
  panToTimestamp(targetTimestamp: string | Date): void;
279
283
  emitCurtainChange(): void;
@@ -296,7 +300,7 @@ export declare const components: {
296
300
  getEventRectWidth(d: import('./types').TimelineEvent): number;
297
301
  getEventText(e: import('./types').TimelineEvent): string;
298
302
  getElementLeftPosition(element: HTMLElement): number;
299
- isTimestampAllowedForMarker(timestamp: any, marker: import('./types').TimelineMarker): boolean;
303
+ isTimestampAllowedForMarker(timestamp: number | Date, marker: import('./types').TimelineMarker): boolean;
300
304
  handleMarkerDrag({ marker, markerElement, dragEvent, }: {
301
305
  marker: import('./types').TimelineMarker;
302
306
  markerElement: import("d3-selection").Selection<any, import('./types').TimelineMarker, any, any>;
@@ -305,8 +309,9 @@ export declare const components: {
305
309
  removeMarkersDragBehavior(): void;
306
310
  initMarkersDragBehavior(): void;
307
311
  initCurtains(): void;
308
- initForbiddenIntervals(): void;
309
- updateForbiddenIntervals(): void;
312
+ createCurtains(): void;
313
+ updateCurtains(): void;
314
+ updateForbiddenIntervals(reset?: boolean): void;
310
315
  drawEventsGroups(): void;
311
316
  drawLineGraphEventsGroups(): void;
312
317
  drawLineGraph({ events, gElement, color, type, }: {
@@ -321,12 +326,13 @@ export declare const components: {
321
326
  color: string;
322
327
  type: string;
323
328
  }): void;
324
- drawSingleBarEventsGroup({ type, eventsGroup, index, milestone, height, }: {
329
+ drawSingleBarEventsGroup({ type, eventsGroup, milestone, dots, dotsSize, bottom, }: {
325
330
  type: string;
326
331
  eventsGroup: import('./types').TimelineEventsGroup;
327
- index?: number | undefined;
328
332
  milestone?: boolean | undefined;
329
- height?: number | undefined;
333
+ dots?: boolean | undefined;
334
+ dotsSize?: number | undefined;
335
+ bottom?: boolean | undefined;
330
336
  }): void;
331
337
  drawBarEventsGroups(): void;
332
338
  drawMilestonesPlaceholder(): void;
@@ -336,6 +342,8 @@ export declare const components: {
336
342
  border: string;
337
343
  };
338
344
  getMilestoneGroupYPosition(groupName: string): number;
345
+ getBarGroupYPosition(groupName: string, bottom?: boolean | undefined): number;
346
+ getBarGroupHeight(eventsGroup: import('./types').TimelineEventsGroup): number;
339
347
  updateMilestonesPositions(): void;
340
348
  drawBarChartEventsGroups(): void;
341
349
  drawProgressIndicator({ yPosition, type, isLoading, }: {
@@ -350,12 +358,16 @@ export declare const components: {
350
358
  color: string;
351
359
  height?: number | undefined;
352
360
  }): void;
353
- drawBars({ events, gElement, yPosition, color, type, }: {
361
+ drawBars({ events, gElement, yPosition, color, type, dots, dotsSize, height, barBorderRadius, }: {
354
362
  events: import('./types').TimelineEvent[];
355
363
  gElement: import("d3-selection").Selection<SVGGElement, any, any, any>;
356
364
  yPosition: number;
357
365
  color: string;
358
366
  type: string;
367
+ dots?: boolean | undefined;
368
+ dotsSize?: number | undefined;
369
+ height?: number | undefined;
370
+ barBorderRadius?: number | undefined;
359
371
  }): void;
360
372
  drawBarsChart({ events, gElement, color, yOffset, type, index, }: {
361
373
  events: import('./types').TimelineEvent[];
@@ -405,8 +417,16 @@ export declare const components: {
405
417
  count: number;
406
418
  })[];
407
419
  fillEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
408
- onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: string): void;
420
+ onMilestoneClick(milestone: import('./types').TimelineEvent, milestoneType: any): void;
421
+ getSortedEvents(events: import('./types').TimelineEvent[]): import('./types').TimelineEvent[];
409
422
  }, {
423
+ combinedBarsHeight: number;
424
+ combinedBottomBarsHeight: number;
425
+ combinedMilestonesHeight: number;
426
+ milestonesYOffset: number;
427
+ chartsYOffset: number;
428
+ barsYOffset: number;
429
+ hasMilestones: boolean;
410
430
  barChartHeight: number;
411
431
  classes: Record<string, string | Record<string, boolean>>;
412
432
  lineGraphGroups: import('./types').TimelineEventsByType;
@@ -448,6 +468,7 @@ export declare const components: {
448
468
  barYPadding: number;
449
469
  barXPadding: number;
450
470
  chartMinHeight: number;
471
+ chartMinLabelHeight: number;
451
472
  minZoom: number;
452
473
  maxZoom: number;
453
474
  minDate: string;
@@ -464,6 +485,9 @@ export declare const components: {
464
485
  fitMarkersTransitionDuration: number;
465
486
  zoomToBoundariesTransitionDuration: number;
466
487
  milestoneBulletSize: number;
488
+ milestonesFirst: boolean;
489
+ forbiddenIntervals: import('./types').TimelineForbiddenInterval[];
490
+ forbiddenIntervalColor: string;
467
491
  }, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin>;
468
492
  EVideoEmbed: import("vue").DefineComponent<{
469
493
  videoUrl: {
@@ -79,19 +79,27 @@ export type TimelineMilestoneEvent = {
79
79
  export type TimelineEvent = TimelineBarEvent | TimelineRangeEvent | TimelineCountEvent | TimelineMilestoneEvent;
80
80
  export declare enum TimelineChartType {
81
81
  bars = "bars",
82
+ dots = "dots",
82
83
  lineGraph = "lineGraph",
83
84
  barChart = "barGraph",
84
85
  milestones = "milestones"
85
86
  }
86
87
  export type TimelineEventsGroup = {
88
+ events: Array<TimelineEvent>;
87
89
  label: string;
88
90
  color: string;
89
91
  bgColor?: string;
90
92
  isLoading?: Boolean;
91
93
  isHidden?: Boolean;
92
94
  chartType?: TimelineChartType;
93
- events: Array<TimelineEvent>;
95
+ dots?: boolean;
96
+ milestonesTransitionDuration?: number;
97
+ milestonesLineHeight?: number;
98
+ milestonesDotSize?: number;
94
99
  height?: number;
100
+ dotsSize?: number;
101
+ bottom?: boolean;
102
+ barBorderRadius?: number;
95
103
  };
96
104
  export type TimelineEventsByType = {
97
105
  [eventsType: string]: TimelineEventsGroup;
@@ -106,12 +114,17 @@ export type TimelineMarker = {
106
114
  timestamp: string | Date;
107
115
  label: string;
108
116
  color: string;
117
+ id: string | number;
109
118
  textColor?: string;
110
119
  className?: string;
111
- id: string | number;
112
120
  isDraggable?: boolean;
113
121
  minDate?: string;
114
122
  maxDate?: string;
123
+ [key: string]: any;
124
+ };
125
+ export type TimelineForbiddenInterval = {
126
+ startDate: Date | string | number;
127
+ endDate: Date | string | number;
115
128
  };
116
129
  declare const _default: {};
117
130
  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-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%}
1
+ .e-spinner[data-v-29711f67]{vertical-align:center}.e-spinner__primary[data-v-29711f67],.e-spinner__secondary[data-v-29711f67]{stroke-width:0;animation:fade-29711f67;animation-iteration-count:infinite}@keyframes fade-29711f67{0%{fill-opacity:0}50%{fill-opacity:1}to{fill-opacity:0}}.e-row.e-row--no-gutters{margin:0}.e-row.e-row--no-gutters>.e-col{padding:0}.e-col{padding:.75rem}.spinner-container[data-v-9071f674]{position:absolute;background:linear-gradient(to top,rgba(0,0,0,.65),transparent);inset:0;display:flex;justify-content:center;align-items:center;vertical-align:middle}.video-container[data-v-9071f674]{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;margin:0 auto}.video-container.full-screen[data-v-9071f674]{max-width:initial;width:100%;max-height:100vh}video[data-v-9071f674]{width:100%;height:inherit}.video-controls-container[data-v-9071f674]{position:absolute;bottom:0;left:0;right:0;color:#fff;z-index:100;opacity:0;transition:opacity .15s ease-in-out}.hide[data-v-9071f674]{display:none}.video-controls-container[data-v-9071f674]:before{content:"";position:absolute;bottom:0;background:linear-gradient(to top,rgba(0,0,0,.75),transparent);width:100%;aspect-ratio:6 / 1;z-index:-1;pointer-events:none}.video-container:hover .video-controls-container[data-v-9071f674],.video-container:focus-within .video-controls-container[data-v-9071f674],.video-container.paused .video-controls-container[data-v-9071f674]{opacity:1}.video-controls-container .controls[data-v-9071f674]{display:flex;gap:.5rem;padding:.75rem 1rem;align-items:center;width:100%}.video-controls-container .controls button[data-v-9071f674]{background:none;border:none;color:inherit;padding:0;height:32px;width:32px;font-size:1.35rem;cursor:pointer;opacity:.85;transition:opacity .15s ease-in-out}.video-controls-container .controls button[data-v-9071f674]:hover{opacity:1}.duration-container[data-v-9071f674]{display:flex;align-items:center;gap:.25rem;flex-grow:1}.video-container.captions .captions-btn[data-v-9071f674]{border-bottom:3px solid red}.video-controls-container .controls button.wide-btn[data-v-9071f674]{width:50px}.timeline-container[data-v-9071f674]{width:100%;height:7px;margin-inline:.5rem;cursor:pointer;display:flex;align-items:center}.timeline[data-v-9071f674]{background-color:#64646480;height:3px;width:100%;position:relative}.timeline[data-v-9071f674]:before{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--preview-position) * 100%);background-color:#969696;display:none}.timeline[data-v-9071f674]:after{content:"";position:absolute;left:0;top:0;bottom:0;right:calc(100% - var(--progress-position) * 100%);background-color:red}.timeline .thumb-indicator[data-v-9071f674]{--scale: 0;position:absolute;transform:translate(-50%) scale(var(--scale));height:200%;top:-50%;left:calc(var(--progress-position) * 100%);background-color:red;border-radius:50%;transition:transform .15s ease-in-out;aspect-ratio:1 / 1}.video-container.scrubbing .thumbnail-img[data-v-9071f674]{display:block}.video-container.scrubbing .timeline[data-v-9071f674]:before,.timeline-container:hover .timeline[data-v-9071f674]:before{display:block}.video-container.scrubbing .thumb-indicator[data-v-9071f674],.timeline-container:hover .thumb-indicator[data-v-9071f674]{--scale: 1}.video-container.scrubbing .timeline[data-v-9071f674],.timeline-container:hover .timeline[data-v-9071f674]{height:100%}.e-tl-milestone{position:absolute;border-radius:10em;box-sizing:border-box}.e-tl-milestone-content{cursor:pointer}.e-tl-milestone--bullet{transform:translate(-50%,-50%)}.e-tl-milestone--bullet .e-tl-milestone-content{opacity:0;width:0;height:0;white-space:nowrap;pointer-events:none;cursor:pointer}.e-tl-milestone--bullet.e-tl-milestone--hovered{cursor:pointer;min-height:26px;padding:0 8px;border-radius:.5em}.e-tl-milestone--bullet.e-tl-milestone--hovered .e-tl-milestone-content{opacity:1;font-size:small;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.e-tl-milestone--bullet .e-tl-milestone-label{position:absolute;top:0;left:0;opacity:1;pointer-events:none;height:100%;width:100%}.e-tl-milestone--bullet.e-tl-milestone--hovered .e-tl-milestone-label{opacity:0}.e-tl-milestone--dot{transform:translateY(-50%)}.e-tl-milestone-dot--hovered .e-tl-milestone-dot-container{padding:0 3em;transform:translate(-50%);opacity:1}.e-tl-milestone-dot-line{position:absolute}.e-tl-milestone-dot-dot{position:absolute;border-radius:50%}.e-tl-milestone-dot-container{opacity:0;position:absolute;padding:0 .3em;transform:translate(-50%,-100%);cursor:pointer}.e-timeline svg{display:block}.e-timeline .x-axis-overview .domain,.e-timeline .x-axis-detailed .domain,.e-timeline .x-axis-overviewBackground .domain,.e-timeline .x-axis-detailedBackground .domain{display:none}.e-timeline .x-axis-detailedBackground .domain,.e-timeline .x-axis-detailedBackground text{display:none}.e-timeline .x-axis-overview>g.tick>line{opacity:.1;stroke-width:3;stroke-linecap:round}.e-timeline .x-axis-detailed>g.tick>line{opacity:.1;stroke-linecap:round}.e-timeline .x-axis-detailedBackground>g.tick>line{opacity:.075;stroke-linecap:round}.e-timeline--dark .tick line{stroke:#fff}.e-timeline--dark .tick text{fill:#fff}@keyframes moveGradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}@keyframes pulse-rect{0%{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}50%{filter:saturate(.5) drop-shadow(0 0 0 #0000)}to{filter:saturate(3.5) drop-shadow(0 0 1px #0008)}}@keyframes pulse-circle{0%{r:4px}50%{r:1px}to{r:4px}}.loading-indicator{animation:moveGradient 1.5s ease-in infinite}.line-graph-dot--active{animation:pulse-circle 1s ease-in-out infinite}.event-rect--hovered{animation:pulse-rect 1s ease-in-out infinite}@keyframes dash{0%{filter:saturate(1) drop-shadow(0 0 0 #0000)}50%{stroke-width:2px;filter:saturate(2.5) drop-shadow(0 0 0 #0006)}to{filter:saturate(1) drop-shadow(0 0 0 #0000)}}.line-graph-group--highlighted path{animation:dash 1s ease-in-out infinite}.e-timeline--dragging{cursor:ew-resize}.curtain{cursor:ew-resize;fill:#3332;stroke-width:1px;stroke:#3338;transition:stroke-width .2s}.e-timeline--dragging .curtain{stroke-width:3px}.e-timeline--dark .curtain{fill:#fff3;stroke:#fff7}.event-bar-hover-zone{cursor:pointer}.external-labels-container{position:absolute;top:-1.5em;left:0}.external-label{margin-right:.35em;border-width:.5px;border-radius:.2em}.external-label__content{cursor:pointer;font-size:.8em;font-weight:500;padding:0 .6em;line-height:1.4em}.marker-label{transition:transform .2s;transform:translateY(-32px);position:absolute;width:max-content}.marker-label-text{position:absolute;width:max-content;font-size:.8em;font-weight:500;padding:0 .75em;border-radius:.4em .4em .4em 0;box-shadow:0 0 5px -1px #000000f5}.marker-label-text:after{content:"";background:inherit;width:5px;height:5px;bottom:-5px;position:absolute;left:2px;clip-path:path("M 0,5 L 0,0 L 5,0 A 5,5 0 0 0 0,5")}.marker-label-text:before{content:"";background:inherit;height:20px;top:18px;position:absolute;width:2px;left:0}.marker{top:0;filter:saturate(.9)}.marker-line{position:absolute;width:2px;top:-24px;transition:top .2s,height .2s}.marker:hover{cursor:pointer;opacity:1;filter:saturate(1.1)}.marker:hover .marker-label{transform:translateY(-38px);height:61px;width:255px;padding-bottom:42px}.marker:hover .marker-label-text{box-shadow:2px 2px 11px -4px #000}.marker--hidden:hover .marker-label{transform:translateY(-54px)}.marker--draggable,.marker--draggable:hover{user-select:none;cursor:grab}.marker--dragged:hover{cursor:grabbing}.forbidden-interval{opacity:.2}.e-timeline-milestones{height:0}.video-embed[data-v-0ecf4a71]{position:relative;width:100%!important;padding-bottom:56.25%}.video-embed iframe[data-v-0ecf4a71]{position:absolute;top:0;left:0;width:100%;height:100%}
package/dist/tags.json CHANGED
@@ -98,6 +98,7 @@
98
98
  "bar-ypadding",
99
99
  "bar-xpadding",
100
100
  "chart-min-height",
101
+ "chart-min-label-height",
101
102
  "min-zoom",
102
103
  "max-zoom",
103
104
  "min-date",
@@ -113,7 +114,10 @@
113
114
  "fit-markers-on-change",
114
115
  "fit-markers-transition-duration",
115
116
  "zoom-to-boundaries-transition-duration",
116
- "milestone-bullet-size"
117
+ "milestone-bullet-size",
118
+ "milestones-first",
119
+ "forbidden-intervals",
120
+ "forbidden-interval-color"
117
121
  ],
118
122
  "description": ""
119
123
  }
@@ -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.54",
5
+ "version": "0.0.55-beta.10",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -703,6 +703,15 @@
703
703
  "type": "number"
704
704
  }
705
705
  },
706
+ {
707
+ "name": "chart-min-label-height",
708
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
709
+ "default": "18",
710
+ "value": {
711
+ "kind": "expression",
712
+ "type": "number"
713
+ }
714
+ },
706
715
  {
707
716
  "name": "min-zoom",
708
717
  "doc-url": "https://www.npmjs.com/package/@evercam/ui",
@@ -852,6 +861,33 @@
852
861
  "kind": "expression",
853
862
  "type": "number"
854
863
  }
864
+ },
865
+ {
866
+ "name": "milestones-first",
867
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
868
+ "default": "true",
869
+ "value": {
870
+ "kind": "expression",
871
+ "type": "boolean"
872
+ }
873
+ },
874
+ {
875
+ "name": "forbidden-intervals",
876
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
877
+ "default": "() => []",
878
+ "value": {
879
+ "kind": "expression",
880
+ "type": "array"
881
+ }
882
+ },
883
+ {
884
+ "name": "forbidden-interval-color",
885
+ "doc-url": "https://www.npmjs.com/package/@evercam/ui",
886
+ "default": "#ddd",
887
+ "value": {
888
+ "kind": "expression",
889
+ "type": "string"
890
+ }
855
891
  }
856
892
  ]
857
893
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evercam/ui",
3
- "version": "0.0.54",
3
+ "version": "0.0.55-beta.10",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "author": "Evercam - Constuction Cameras.",