@rivet-health/design-system 2.21.0 → 2.23.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.
- package/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +63 -0
- package/esm2020/lib/format/truncate/truncate.component.mjs +50 -0
- package/esm2020/lib/modal/tooltip/tooltip.directive.mjs +1 -1
- package/esm2020/lib/riv.module.mjs +11 -1
- package/esm2020/lib/visualization/funnel-chart/funnel-chart.component.mjs +24 -23
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +5 -4
- package/esm2020/lib/visualization/trend/trend.component.mjs +13 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/rivet-health-design-system.mjs +305 -176
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +303 -176
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +14 -0
- package/lib/format/truncate/truncate.component.d.ts +17 -0
- package/lib/modal/tooltip/tooltip.directive.d.ts +2 -2
- package/lib/riv.module.d.ts +10 -8
- package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +10 -6
- package/lib/visualization/trend/trend.component.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
|
+
import { TooltipDirective } from '../../modal/tooltip/tooltip.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// Credit to boneskull on Github, whose work I used as a reference
|
|
5
|
+
export class SVGTextTruncateDirective extends TooltipDirective {
|
|
6
|
+
constructor(el, applicationRef) {
|
|
7
|
+
super(el, applicationRef);
|
|
8
|
+
this.el = el;
|
|
9
|
+
this.applicationRef = applicationRef;
|
|
10
|
+
this.text = '';
|
|
11
|
+
this.width = 50;
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.svgTruncate(this.el.nativeElement);
|
|
15
|
+
}
|
|
16
|
+
// Truncate through setting strings as the text-content and testing their width
|
|
17
|
+
svgTruncate(element) {
|
|
18
|
+
let currentLength = this.text.length;
|
|
19
|
+
element.textContent = this.text;
|
|
20
|
+
// If the text can fit in the given width, no truncation needed.
|
|
21
|
+
if (currentLength > 0 &&
|
|
22
|
+
element.getSubStringLength(0, currentLength) <= this.width) {
|
|
23
|
+
element.textContent = this.text;
|
|
24
|
+
this.rivTooltip = '';
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
/*
|
|
28
|
+
Test the length of each "substring + ..." combo until we find one that fits.
|
|
29
|
+
Start by making room for the elipses by subtracting 3 from the length.
|
|
30
|
+
*/
|
|
31
|
+
currentLength = currentLength - 3;
|
|
32
|
+
let currentTextFitsInWidth = false;
|
|
33
|
+
while (currentLength > 0 && !currentTextFitsInWidth) {
|
|
34
|
+
const currentTextToTry = this.text.slice(0, currentLength) + '...';
|
|
35
|
+
element.textContent = currentTextToTry;
|
|
36
|
+
if (element.getSubStringLength(0, currentTextToTry.length) <= this.width) {
|
|
37
|
+
currentTextFitsInWidth = true;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
currentLength--;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// If we end up not finding a width of text that works, display just the ellipses.
|
|
44
|
+
if (!currentTextFitsInWidth) {
|
|
45
|
+
element.textContent = '...';
|
|
46
|
+
}
|
|
47
|
+
this.rivTooltip = this.text;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
SVGTextTruncateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SVGTextTruncateDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
|
+
SVGTextTruncateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: SVGTextTruncateDirective, selector: "svg text[rivSVGTextTruncate]", inputs: { text: "text", width: "width" }, usesInheritance: true, ngImport: i0 });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SVGTextTruncateDirective, decorators: [{
|
|
54
|
+
type: Directive,
|
|
55
|
+
args: [{
|
|
56
|
+
selector: 'svg text[rivSVGTextTruncate]',
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ApplicationRef }]; }, propDecorators: { text: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], width: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXRleHQtdHJ1bmNhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvZm9ybWF0L3N2Zy10ZXh0LXRydW5jYXRlL3N2Zy10ZXh0LXRydW5jYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFekUsa0VBQWtFO0FBSWxFLE1BQU0sT0FBTyx3QkFDWCxTQUFRLGdCQUFnQjtJQVN4QixZQUM4QixFQUFjLEVBQ2QsY0FBOEI7UUFFMUQsS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUhFLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFQNUQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUdsQixVQUFLLEdBQVcsRUFBRSxDQUFDO0lBT25CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsV0FBVyxDQUFDLE9BQThCO1FBQ3hDLElBQUksYUFBYSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTdDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoQyxnRUFBZ0U7UUFDaEUsSUFDRSxhQUFhLEdBQUcsQ0FBQztZQUNqQixPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQzFEO1lBQ0EsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO2FBQU07WUFDTDs7O2NBR0U7WUFDRixhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUNsQyxJQUFJLHNCQUFzQixHQUFZLEtBQUssQ0FBQztZQUM1QyxPQUFPLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDbkQsTUFBTSxnQkFBZ0IsR0FDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFFNUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztnQkFFdkMsSUFDRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQ3BFO29CQUNBLHNCQUFzQixHQUFHLElBQUksQ0FBQztpQkFDL0I7cUJBQU07b0JBQ0wsYUFBYSxFQUFFLENBQUM7aUJBQ2pCO2FBQ0Y7WUFFRCxrRkFBa0Y7WUFDbEYsSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUMzQixPQUFPLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUM3QjtJQUNILENBQUM7O3FIQTdEVSx3QkFBd0I7eUdBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7aUJBQ3pDOzhIQU1DLElBQUk7c0JBREgsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuLy8gQ3JlZGl0IHRvIGJvbmVza3VsbCBvbiBHaXRodWIsIHdob3NlIHdvcmsgSSB1c2VkIGFzIGEgcmVmZXJlbmNlXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdzdmcgdGV4dFtyaXZTVkdUZXh0VHJ1bmNhdGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgU1ZHVGV4dFRydW5jYXRlRGlyZWN0aXZlXG4gIGV4dGVuZHMgVG9vbHRpcERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBASW5wdXQoKVxuICB0ZXh0OiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICB3aWR0aDogbnVtYmVyID0gNTA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICkge1xuICAgIHN1cGVyKGVsLCBhcHBsaWNhdGlvblJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN2Z1RydW5jYXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvLyBUcnVuY2F0ZSB0aHJvdWdoIHNldHRpbmcgc3RyaW5ncyBhcyB0aGUgdGV4dC1jb250ZW50IGFuZCB0ZXN0aW5nIHRoZWlyIHdpZHRoXG4gIHN2Z1RydW5jYXRlKGVsZW1lbnQ6IFNWR1RleHRDb250ZW50RWxlbWVudCkge1xuICAgIGxldCBjdXJyZW50TGVuZ3RoOiBudW1iZXIgPSB0aGlzLnRleHQubGVuZ3RoO1xuXG4gICAgZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMudGV4dDtcbiAgICAvLyBJZiB0aGUgdGV4dCBjYW4gZml0IGluIHRoZSBnaXZlbiB3aWR0aCwgbm8gdHJ1bmNhdGlvbiBuZWVkZWQuXG4gICAgaWYgKFxuICAgICAgY3VycmVudExlbmd0aCA+IDAgJiZcbiAgICAgIGVsZW1lbnQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIGN1cnJlbnRMZW5ndGgpIDw9IHRoaXMud2lkdGhcbiAgICApIHtcbiAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnRleHQ7XG4gICAgICB0aGlzLnJpdlRvb2x0aXAgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLypcbiAgICAgICAgVGVzdCB0aGUgbGVuZ3RoIG9mIGVhY2ggXCJzdWJzdHJpbmcgKyAuLi5cIiBjb21ibyB1bnRpbCB3ZSBmaW5kIG9uZSB0aGF0IGZpdHMuXG4gICAgICAgIFN0YXJ0IGJ5IG1ha2luZyByb29tIGZvciB0aGUgZWxpcHNlcyBieSBzdWJ0cmFjdGluZyAzIGZyb20gdGhlIGxlbmd0aC5cbiAgICAgICovXG4gICAgICBjdXJyZW50TGVuZ3RoID0gY3VycmVudExlbmd0aCAtIDM7XG4gICAgICBsZXQgY3VycmVudFRleHRGaXRzSW5XaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGN1cnJlbnRMZW5ndGggPiAwICYmICFjdXJyZW50VGV4dEZpdHNJbldpZHRoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUZXh0VG9Ucnk6IHN0cmluZyA9XG4gICAgICAgICAgdGhpcy50ZXh0LnNsaWNlKDAsIGN1cnJlbnRMZW5ndGgpICsgJy4uLic7XG5cbiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IGN1cnJlbnRUZXh0VG9Ucnk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGVsZW1lbnQuZ2V0U3ViU3RyaW5nTGVuZ3RoKDAsIGN1cnJlbnRUZXh0VG9UcnkubGVuZ3RoKSA8PSB0aGlzLndpZHRoXG4gICAgICAgICkge1xuICAgICAgICAgIGN1cnJlbnRUZXh0Rml0c0luV2lkdGggPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRMZW5ndGgtLTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBlbmQgdXAgbm90IGZpbmRpbmcgYSB3aWR0aCBvZiB0ZXh0IHRoYXQgd29ya3MsIGRpc3BsYXkganVzdCB0aGUgZWxsaXBzZXMuXG4gICAgICBpZiAoIWN1cnJlbnRUZXh0Rml0c0luV2lkdGgpIHtcbiAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICcuLi4nO1xuICAgICAgfVxuICAgICAgdGhpcy5yaXZUb29sdGlwID0gdGhpcy50ZXh0O1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostListener, Input, Self, } from '@angular/core';
|
|
2
|
+
import { TooltipDirective } from '../../modal/tooltip/tooltip.directive';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../modal/tooltip/tooltip.directive";
|
|
5
|
+
function scrolled(element) {
|
|
6
|
+
return element.offsetWidth < element.scrollWidth;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Truncate the text to one line. When truncated, display the full text in a tooltip.
|
|
10
|
+
*/
|
|
11
|
+
export class TruncateComponent {
|
|
12
|
+
constructor(element,
|
|
13
|
+
// For performance reasons, take more control
|
|
14
|
+
tooltip) {
|
|
15
|
+
this.element = element;
|
|
16
|
+
this.tooltip = tooltip;
|
|
17
|
+
this.maxTooltipWidth = '200px';
|
|
18
|
+
}
|
|
19
|
+
enter() {
|
|
20
|
+
if (scrolled(this.element.nativeElement)) {
|
|
21
|
+
this.tooltip.rivTooltip = this.element.nativeElement.textContent;
|
|
22
|
+
this.tooltip.rivTooltipMaxWidth = this.maxTooltipWidth;
|
|
23
|
+
this.tooltip.onMouseEnter();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
leave() {
|
|
27
|
+
this.tooltip.onMouseLeave();
|
|
28
|
+
}
|
|
29
|
+
// For the auto-complete textbox.
|
|
30
|
+
scrollIntoView() {
|
|
31
|
+
this.element.nativeElement.scrollIntoView(false);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
TruncateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TruncateComponent, deps: [{ token: i0.ElementRef }, { token: i1.TooltipDirective, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
TruncateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TruncateComponent, selector: "[rivTruncate]", inputs: { maxTooltipWidth: "maxTooltipWidth" }, host: { listeners: { "mouseenter": "enter()", "mouseleave": "leave()" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a:host{display:block;max-width:100%}\n"], viewProviders: [TooltipDirective], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TruncateComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: '[rivTruncate]', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [TooltipDirective], template: "<ng-content></ng-content>\n", styles: [":host{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a:host{display:block;max-width:100%}\n"] }]
|
|
39
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.TooltipDirective, decorators: [{
|
|
40
|
+
type: Self
|
|
41
|
+
}] }]; }, propDecorators: { maxTooltipWidth: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], enter: [{
|
|
44
|
+
type: HostListener,
|
|
45
|
+
args: ['mouseenter']
|
|
46
|
+
}], leave: [{
|
|
47
|
+
type: HostListener,
|
|
48
|
+
args: ['mouseleave']
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvZm9ybWF0L3RydW5jYXRlL3RydW5jYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2Zvcm1hdC90cnVuY2F0ZS90cnVuY2F0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRXpFLFNBQVMsUUFBUSxDQUFDLE9BQW9CO0lBQ3BDLE9BQU8sT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7R0FFRztBQVFILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDbUIsT0FBbUI7SUFDcEMsNkNBQTZDO0lBQ3BCLE9BQXlCO1FBRmpDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFFWCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUlwRCxvQkFBZSxHQUFXLE9BQU8sQ0FBQztJQUgvQixDQUFDO0lBTUosS0FBSztRQUNILElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUdELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsY0FBYztRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs4R0EzQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ0xDeEI5Qiw2QkFDQSxxSURxQmlCLENBQUMsZ0JBQWdCLENBQUM7MkZBRXRCLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLENBQUMsZ0JBQWdCLENBQUM7OzBCQU05QixJQUFJOzRDQUlQLGVBQWU7c0JBRGQsS0FBSztnQkFJTixLQUFLO3NCQURKLFlBQVk7dUJBQUMsWUFBWTtnQkFVMUIsS0FBSztzQkFESixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcblxuZnVuY3Rpb24gc2Nyb2xsZWQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0V2lkdGggPCBlbGVtZW50LnNjcm9sbFdpZHRoO1xufVxuXG4vKipcbiAqIFRydW5jYXRlIHRoZSB0ZXh0IHRvIG9uZSBsaW5lLiBXaGVuIHRydW5jYXRlZCwgZGlzcGxheSB0aGUgZnVsbCB0ZXh0IGluIGEgdG9vbHRpcC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3JpdlRydW5jYXRlXScsXG4gIHN0eWxlVXJsczogWycuL3RydW5jYXRlLmNvbXBvbmVudC5jc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RydW5jYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtUb29sdGlwRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJ1bmNhdGVDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRha2UgbW9yZSBjb250cm9sXG4gICAgQFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IFRvb2x0aXBEaXJlY3RpdmUsXG4gICkge31cblxuICBASW5wdXQoKVxuICBtYXhUb29sdGlwV2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIGVudGVyKCkge1xuICAgIGlmIChzY3JvbGxlZCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5yaXZUb29sdGlwID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgICB0aGlzLnRvb2x0aXAucml2VG9vbHRpcE1heFdpZHRoID0gdGhpcy5tYXhUb29sdGlwV2lkdGg7XG4gICAgICB0aGlzLnRvb2x0aXAub25Nb3VzZUVudGVyKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIGxlYXZlKCkge1xuICAgIHRoaXMudG9vbHRpcC5vbk1vdXNlTGVhdmUoKTtcbiAgfVxuXG4gIC8vIEZvciB0aGUgYXV0by1jb21wbGV0ZSB0ZXh0Ym94LlxuICBzY3JvbGxJbnRvVmlldygpIHtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyhmYWxzZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
70
70
|
type: HostListener,
|
|
71
71
|
args: ['mouseleave']
|
|
72
72
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEyQixnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUtoRixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ3FCLEVBQWMsRUFDZCxjQUE4QjtRQUQ5QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBT25ELG9CQUFlLEdBQXFCLE1BQU0sQ0FBQztRQUczQyx1QkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQztRQUd4RCxnQ0FBMkIsR0FBNEIsWUFBWSxDQUFDO1FBR3BFLHlCQUFvQixHQUFXLEdBQUcsQ0FBQztJQWZoQyxDQUFDO0lBb0J3QixZQUFZO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtpQkFDdkQsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2lCQUNyQixlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3BELE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1lBQ3RFLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUUyQixZQUFZO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OzZHQTVEVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6Qjs4SEFRQyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTiwyQkFBMkI7c0JBRDFCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQU1zQixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBbUJFLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sdGlwQW5jaG9yZWRQb3NpdGlvbiwgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vdG9vbHRpcC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcml2VG9vbHRpcF0nLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICkge31cblxuICBASW5wdXQoKVxuICByaXZUb29sdGlwPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KClcbiAgcml2VG9vbHRpcFRoZW1lOiAnZGFyaycgfCAnbGlnaHQnID0gJ2RhcmsnO1xuXG4gIEBJbnB1dCgpXG4gIHJpdlRvb2x0aXBNYXhXaWR0aCA9ICdjYWxjKHZhcigtLWJhc2UtZ3JpZC1zaXplKSAqIDUwKSc7XG5cbiAgQElucHV0KClcbiAgcml2VG9vbHRpcFByZWZlcnJlZFBvc2l0aW9uOiBUb29sdGlwQW5jaG9yZWRQb3NpdGlvbiA9ICd0b3AtY2VudGVyJztcblxuICBASW5wdXQoKVxuICByaXZUb29sdGlwQ2xvc2VEZWxheTogbnVtYmVyID0gMTAwO1xuXG4gIHByaXZhdGUgdG9vbHRpcFJlZj86IENvbXBvbmVudFJlZjxUb29sdGlwQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBjbG9zZVRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VFbnRlcigpIHtcbiAgICBpZiAoIXRoaXMucml2VG9vbHRpcCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIHRoaXMuY2FuY2VsQ2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMuYXBwbGljYXRpb25SZWYuY29tcG9uZW50c1swXS5pbmplY3RvclxuICAgICAgICAuZ2V0KFZpZXdDb250YWluZXJSZWYpXG4gICAgICAgIC5jcmVhdGVDb21wb25lbnQoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgICB0b29sdGlwLmluc3RhbmNlLmFuY2hvciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UuY29udGVudCA9IHRoaXMucml2VG9vbHRpcDtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UudGhlbWUgPSB0aGlzLnJpdlRvb2x0aXBUaGVtZTtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UubWF4V2lkdGggPSB0aGlzLnJpdlRvb2x0aXBNYXhXaWR0aDtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2UucHJlZmVycmVkUG9zaXRpb24gPSB0aGlzLnJpdlRvb2x0aXBQcmVmZXJyZWRQb3NpdGlvbjtcbiAgICAgIHRvb2x0aXAuaW5zdGFuY2Uub25Nb3VzZUVudGVyLnN1YnNjcmliZSh0aGlzLmNhbmNlbENsb3NlLmJpbmQodGhpcykpO1xuICAgICAgdG9vbHRpcC5pbnN0YW5jZS5vbk1vdXNlTGVhdmUuc3Vic2NyaWJlKHRoaXMuaW5pdGlhdGVDbG9zZS5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHRvb2x0aXA7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmluaXRpYXRlQ2xvc2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhdGVDbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWF0ZUNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50b29sdGlwUmVmPy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYgPSB1bmRlZmluZWQ7XG4gICAgfSwgdGhpcy5yaXZUb29sdGlwQ2xvc2VEZWxheSk7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbENsb3NlKCkge1xuICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5jbG9zZVRpbWVvdXQpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,8 @@ import { DollarsPipe } from './format/pipes/dollars.pipe';
|
|
|
7
7
|
import { NumberPipe } from './format/pipes/number.pipe';
|
|
8
8
|
import { PercentagePipe } from './format/pipes/percentage.pipe';
|
|
9
9
|
import { SmallCurrencyPipe } from './format/pipes/small-currency.pipe';
|
|
10
|
+
import { SVGTextTruncateDirective } from './format/svg-text-truncate/svg-text-truncate.directive';
|
|
11
|
+
import { TruncateComponent } from './format/truncate/truncate.component';
|
|
10
12
|
import { IconComponent } from './icon/icon.component';
|
|
11
13
|
import { ButtonComponent } from './input/button/button.component';
|
|
12
14
|
import { CalendarComponent } from './input/calendar/calendar.component';
|
|
@@ -72,11 +74,13 @@ RivModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
|
72
74
|
SmallCurrencyPipe,
|
|
73
75
|
StackedColumnComponent,
|
|
74
76
|
StackedRowComponent,
|
|
77
|
+
SVGTextTruncateDirective,
|
|
75
78
|
TextToggleComponent,
|
|
76
79
|
TimeSeriesComponent,
|
|
77
80
|
TooltipComponent,
|
|
78
81
|
TooltipDirective,
|
|
79
82
|
TrendComponent,
|
|
83
|
+
TruncateComponent,
|
|
80
84
|
ZeroStateComponent], imports: [CommonModule], exports: [ButtonComponent,
|
|
81
85
|
CalloutComponent,
|
|
82
86
|
CalloutDirective,
|
|
@@ -107,11 +111,13 @@ RivModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
|
|
107
111
|
SmallCurrencyPipe,
|
|
108
112
|
StackedColumnComponent,
|
|
109
113
|
StackedRowComponent,
|
|
114
|
+
SVGTextTruncateDirective,
|
|
110
115
|
TextToggleComponent,
|
|
111
116
|
TimeSeriesComponent,
|
|
112
117
|
TooltipComponent,
|
|
113
118
|
TooltipDirective,
|
|
114
119
|
TrendComponent,
|
|
120
|
+
TruncateComponent,
|
|
115
121
|
ZeroStateComponent] });
|
|
116
122
|
RivModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, imports: [CommonModule] });
|
|
117
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RivModule, decorators: [{
|
|
@@ -149,11 +155,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
149
155
|
SmallCurrencyPipe,
|
|
150
156
|
StackedColumnComponent,
|
|
151
157
|
StackedRowComponent,
|
|
158
|
+
SVGTextTruncateDirective,
|
|
152
159
|
TextToggleComponent,
|
|
153
160
|
TimeSeriesComponent,
|
|
154
161
|
TooltipComponent,
|
|
155
162
|
TooltipDirective,
|
|
156
163
|
TrendComponent,
|
|
164
|
+
TruncateComponent,
|
|
157
165
|
ZeroStateComponent,
|
|
158
166
|
],
|
|
159
167
|
exports: [
|
|
@@ -187,14 +195,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
187
195
|
SmallCurrencyPipe,
|
|
188
196
|
StackedColumnComponent,
|
|
189
197
|
StackedRowComponent,
|
|
198
|
+
SVGTextTruncateDirective,
|
|
190
199
|
TextToggleComponent,
|
|
191
200
|
TimeSeriesComponent,
|
|
192
201
|
TooltipComponent,
|
|
193
202
|
TooltipDirective,
|
|
194
203
|
TrendComponent,
|
|
204
|
+
TruncateComponent,
|
|
195
205
|
ZeroStateComponent,
|
|
196
206
|
],
|
|
197
207
|
imports: [CommonModule],
|
|
198
208
|
}]
|
|
199
209
|
}] });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Jpdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdC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QUNuQixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29udGVudC10b2dnbGUvdGV4dC10b2dnbGUvdGV4dC10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IERheXNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF5cy5waXBlJztcbmltcG9ydCB7IERvbGxhcnNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZG9sbGFycy5waXBlJztcbmltcG9ydCB7IE51bWJlclBpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBQZXJjZW50YWdlUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3BlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBTbWFsbEN1cnJlbmN5UGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3NtYWxsLWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2lucHV0L2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2RhdGUvZGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvc2luZ2xlLXNlbGVjdC9zaW5nbGUtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQ292ZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWQvbG9hZGluZy1jb3Zlci9sb2FkaW5nLWNvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dE91dGxldENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LW91dGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxsb3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC9jYWxsb3V0L2NhbGxvdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhlbHBDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2hlbHAvaGVscC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9tb2RhbC90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlUm93Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvbnV0Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2RvbnV0L2RvbnV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGdW5uZWxDaGFydENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9mdW5uZWwtY2hhcnQvZnVubmVsLWNoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vaGlnaGxpZ2h0L2hpZ2hsaWdodC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGVnZW5kSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9sZWdlbmQtaXRlbS9sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0cmljQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL21ldHJpYy9tZXRyaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFN0YWNrZWRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vc3RhY2tlZC1jb2x1bW4vc3RhY2tlZC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFN0YWNrZWRSb3dDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vc3RhY2tlZC1yb3cvc3RhY2tlZC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFRpbWVTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vdGltZS1zZXJpZXMvdGltZS1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZW5kQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3RyZW5kL3RyZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBaZXJvU3RhdGVDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vemVyby1zdGF0ZS96ZXJvLXN0YXRlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBDYWxsb3V0Q29tcG9uZW50LFxuICAgIENhbGxvdXREaXJlY3RpdmUsXG4gICAgQ2FsbG91dE91dGxldENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZVJvd0NvbXBvbmVudCxcbiAgICBEYXRlQ29tcG9uZW50LFxuICAgIERhdGVQaXBlLFxuICAgIERhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBEYXlzUGlwZSxcbiAgICBEb2xsYXJzUGlwZSxcbiAgICBEb251dENvbXBvbmVudCxcbiAgICBGdW5uZWxDaGFydENvbXBvbmVudCxcbiAgICBIZWxwQ29tcG9uZW50LFxuICAgIEhpZ2hsaWdodENvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIElucHV0TGFiZWxDb21wb25lbnQsXG4gICAgTGVnZW5kSXRlbUNvbXBvbmVudCxcbiAgICBMaW5rQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvdmVyQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIFBlcmNlbnRhZ2VQaXBlLFxuICAgIFNpbmdsZVNlbGVjdENvbXBvbmVudCxcbiAgICBTbWFsbEN1cnJlbmN5UGlwZSxcbiAgICBTdGFja2VkQ29sdW1uQ29tcG9uZW50LFxuICAgIFN0YWNrZWRSb3dDb21wb25lbnQsXG4gICAgVGV4dFRvZ2dsZUNvbXBvbmVudCxcbiAgICBUaW1lU2VyaWVzQ29tcG9uZW50LFxuICAgIFRvb2x0aXBDb21wb25lbnQsXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBUcmVuZENvbXBvbmVudCxcbiAgICBaZXJvU3RhdGVDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FsbG91dENvbXBvbmVudCxcbiAgICBDYWxsb3V0RGlyZWN0aXZlLFxuICAgIENhbGxvdXRPdXRsZXRDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dDb21wb25lbnQsXG4gICAgRGF0ZUNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgRGF5c1BpcGUsXG4gICAgRG9sbGFyc1BpcGUsXG4gICAgRG9udXRDb21wb25lbnQsXG4gICAgRnVubmVsQ2hhcnRDb21wb25lbnQsXG4gICAgSGVscENvbXBvbmVudCxcbiAgICBIaWdobGlnaHRDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dExhYmVsQ29tcG9uZW50LFxuICAgIExlZ2VuZEl0ZW1Db21wb25lbnQsXG4gICAgTGlua0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb3ZlckNvbXBvbmVudCxcbiAgICBNZXRyaWNDb21wb25lbnQsXG4gICAgTnVtYmVyUGlwZSxcbiAgICBQZXJjZW50YWdlUGlwZSxcbiAgICBTaW5nbGVTZWxlY3RDb21wb25lbnQsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFRleHRUb2dnbGVDb21wb25lbnQsXG4gICAgVGltZVNlcmllc0NvbXBvbmVudCxcbiAgICBUb29sdGlwQ29tcG9uZW50LFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgVHJlbmRDb21wb25lbnQsXG4gICAgWmVyb1N0YXRlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUml2TW9kdWxlIHt9XG4iXX0=
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Jpdi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFC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a0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixRQUFRO3dCQUNSLGtCQUFrQjt3QkFDbEIsUUFBUTt3QkFDUixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dFRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY29udGVudC10b2dnbGUvdGV4dC10b2dnbGUvdGV4dC10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IERheXNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZGF5cy5waXBlJztcbmltcG9ydCB7IERvbGxhcnNQaXBlIH0gZnJvbSAnLi9mb3JtYXQvcGlwZXMvZG9sbGFycy5waXBlJztcbmltcG9ydCB7IE51bWJlclBpcGUgfSBmcm9tICcuL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBQZXJjZW50YWdlUGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3BlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBTbWFsbEN1cnJlbmN5UGlwZSB9IGZyb20gJy4vZm9ybWF0L3BpcGVzL3NtYWxsLWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHsgU1ZHVGV4dFRydW5jYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtYXQvc3ZnLXRleHQtdHJ1bmNhdGUvc3ZnLXRleHQtdHJ1bmNhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRydW5jYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtYXQvdHJ1bmNhdGUvdHJ1bmNhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVSYW5nZUNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC9kYXRlL2RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0TGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2lucHV0L3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0NvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkL2xvYWRpbmctY292ZXIvbG9hZGluZy1jb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZC9sb2FkaW5nL2xvYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGxvdXRPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2NhbGxvdXQvY2FsbG91dC1vdXRsZXQuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGxvdXRDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL2NhbGxvdXQvY2FsbG91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsbG91dERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwvY2FsbG91dC9jYWxsb3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIZWxwQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC9oZWxwL2hlbHAuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL21vZGFsL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vbW9kYWwvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uL2xpbmsvbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZVJvd0NvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb251dENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9kb251dC9kb251dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnVubmVsQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vZnVubmVsLWNoYXJ0L2Z1bm5lbC1jaGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcbmltcG9ydCB7IExlZ2VuZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Zpc3VhbGl6YXRpb24vbGVnZW5kLWl0ZW0vbGVnZW5kLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1ldHJpY0NvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi9tZXRyaWMvbWV0cmljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtY29sdW1uL3N0YWNrZWQtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFja2VkUm93Q29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3N0YWNrZWQtcm93L3N0YWNrZWQtcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lU2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVuZENvbXBvbmVudCB9IGZyb20gJy4vdmlzdWFsaXphdGlvbi90cmVuZC90cmVuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWmVyb1N0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWxpemF0aW9uL3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgQ2FsbG91dENvbXBvbmVudCxcbiAgICBDYWxsb3V0RGlyZWN0aXZlLFxuICAgIENhbGxvdXRPdXRsZXRDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dDb21wb25lbnQsXG4gICAgRGF0ZUNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQsXG4gICAgRGF5c1BpcGUsXG4gICAgRG9sbGFyc1BpcGUsXG4gICAgRG9udXRDb21wb25lbnQsXG4gICAgRnVubmVsQ2hhcnRDb21wb25lbnQsXG4gICAgSGVscENvbXBvbmVudCxcbiAgICBIaWdobGlnaHRDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dExhYmVsQ29tcG9uZW50LFxuICAgIExlZ2VuZEl0ZW1Db21wb25lbnQsXG4gICAgTGlua0NvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb3ZlckNvbXBvbmVudCxcbiAgICBNZXRyaWNDb21wb25lbnQsXG4gICAgTnVtYmVyUGlwZSxcbiAgICBQZXJjZW50YWdlUGlwZSxcbiAgICBTaW5nbGVTZWxlY3RDb21wb25lbnQsXG4gICAgU21hbGxDdXJyZW5jeVBpcGUsXG4gICAgU3RhY2tlZENvbHVtbkNvbXBvbmVudCxcbiAgICBTdGFja2VkUm93Q29tcG9uZW50LFxuICAgIFNWR1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcbiAgICBUZXh0VG9nZ2xlQ29tcG9uZW50LFxuICAgIFRpbWVTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxuICAgIFRyZW5kQ29tcG9uZW50LFxuICAgIFRydW5jYXRlQ29tcG9uZW50LFxuICAgIFplcm9TdGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDYWxsb3V0Q29tcG9uZW50LFxuICAgIENhbGxvdXREaXJlY3RpdmUsXG4gICAgQ2FsbG91dE91dGxldENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZVJvd0NvbXBvbmVudCxcbiAgICBEYXRlQ29tcG9uZW50LFxuICAgIERhdGVQaXBlLFxuICAgIERhdGVSYW5nZUNvbXBvbmVudCxcbiAgICBEYXlzUGlwZSxcbiAgICBEb2xsYXJzUGlwZSxcbiAgICBEb251dENvbXBvbmVudCxcbiAgICBGdW5uZWxDaGFydENvbXBvbmVudCxcbiAgICBIZWxwQ29tcG9uZW50LFxuICAgIEhpZ2hsaWdodENvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIElucHV0TGFiZWxDb21wb25lbnQsXG4gICAgTGVnZW5kSXRlbUNvbXBvbmVudCxcbiAgICBMaW5rQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvdmVyQ29tcG9uZW50LFxuICAgIE1ldHJpY0NvbXBvbmVudCxcbiAgICBOdW1iZXJQaXBlLFxuICAgIFBlcmNlbnRhZ2VQaXBlLFxuICAgIFNpbmdsZVNlbGVjdENvbXBvbmVudCxcbiAgICBTbWFsbEN1cnJlbmN5UGlwZSxcbiAgICBTdGFja2VkQ29sdW1uQ29tcG9uZW50LFxuICAgIFN0YWNrZWRSb3dDb21wb25lbnQsXG4gICAgU1ZHVGV4dFRydW5jYXRlRGlyZWN0aXZlLFxuICAgIFRleHRUb2dnbGVDb21wb25lbnQsXG4gICAgVGltZVNlcmllc0NvbXBvbmVudCxcbiAgICBUb29sdGlwQ29tcG9uZW50LFxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgVHJlbmRDb21wb25lbnQsXG4gICAgVHJ1bmNhdGVDb21wb25lbnQsXG4gICAgWmVyb1N0YXRlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUml2TW9kdWxlIHt9XG4iXX0=
|
|
@@ -6,9 +6,7 @@ import * as i2 from "../metric/metric.component";
|
|
|
6
6
|
import * as i3 from "../trend/trend.component";
|
|
7
7
|
export class FunnelChartComponent {
|
|
8
8
|
constructor() {
|
|
9
|
-
this.
|
|
10
|
-
this.values = [];
|
|
11
|
-
this.previousValues = [];
|
|
9
|
+
this.data = [];
|
|
12
10
|
this.isPreAggregated = false;
|
|
13
11
|
this.graphHeight = 200;
|
|
14
12
|
this.graphWidth = 1200;
|
|
@@ -19,6 +17,7 @@ export class FunnelChartComponent {
|
|
|
19
17
|
this.path = null;
|
|
20
18
|
this.gapWidth = 0;
|
|
21
19
|
this.sectionWidth = 0;
|
|
20
|
+
this.allZeroes = true;
|
|
22
21
|
}
|
|
23
22
|
ngOnChanges() {
|
|
24
23
|
this.calcValues();
|
|
@@ -28,15 +27,17 @@ export class FunnelChartComponent {
|
|
|
28
27
|
}
|
|
29
28
|
calcValues() {
|
|
30
29
|
this.aggregatedValues = this.isPreAggregated
|
|
31
|
-
? this.
|
|
32
|
-
: aggregateValues(this.
|
|
30
|
+
? this.data.map(d => d.value)
|
|
31
|
+
: aggregateValues(this.data.map(d => d.value));
|
|
32
|
+
this.allZeroes = Math.max(...this.aggregatedValues) === 0;
|
|
33
33
|
this.percentageSteps = calcPercentageSteps(this.aggregatedValues);
|
|
34
34
|
}
|
|
35
35
|
calcTrends() {
|
|
36
|
-
const previousValues = this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const previousValues = this.data.flatMap(d => d.previousValue !== null ? [d.previousValue] : []);
|
|
37
|
+
const aggregatedValues = this.isPreAggregated
|
|
38
|
+
? previousValues
|
|
39
|
+
: aggregateValues(previousValues);
|
|
40
|
+
const previousPercentageSteps = calcPercentageSteps(aggregatedValues);
|
|
40
41
|
this.trends = calcTrends(this.percentageSteps, previousPercentageSteps);
|
|
41
42
|
}
|
|
42
43
|
calcSpace() {
|
|
@@ -53,15 +54,11 @@ export class FunnelChartComponent {
|
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
56
|
FunnelChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunnelChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
-
FunnelChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FunnelChartComponent, selector: "riv-funnel", inputs: {
|
|
57
|
+
FunnelChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FunnelChartComponent, selector: "riv-funnel", inputs: { data: "data", isPreAggregated: "isPreAggregated", graphHeight: "graphHeight", graphWidth: "graphWidth", showConverted: "showConverted" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n label=\"placeholder\"\n value=\"0\"\n ></riv-metric>\n <!-- center each metric over vertical lines -->\n <riv-metric\n *ngFor=\"let value of aggregatedValues; let ix = index\"\n class=\"metric\"\n [label]=\"data[ix]?.label ?? ''\"\n [value]=\"value.toString()\"\n [style.left.px]=\"ix * sectionWidth + ix * gapWidth\"\n ></riv-metric>\n </div>\n\n <div class=\"chart\">\n <ng-container *ngFor=\"let step of percentageSteps; let ix = index\">\n <div class=\"vertical-line\"></div>\n\n <div>\n <div *ngIf=\"showConverted && !allZeroes\" class=\"step-info\">\n {{ step }}% converted\n <riv-trend\n *ngIf=\"trends[ix] != null\"\n [label]=\"trends[ix]! + '%'\"\n [value]=\"trends[ix]!\"\n ></riv-trend>\n </div>\n\n <!-- allocate space for the graph -->\n <div\n class=\"graph-placeholder\"\n [style.width.px]=\"sectionWidth\"\n [style.height.px]=\"graphHeight\"\n ></div>\n </div>\n </ng-container>\n\n <div class=\"vertical-line\"></div>\n\n <svg\n *ngIf=\"path\"\n class=\"graph\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"graphWidth\"\n [attr.height]=\"graphHeight\"\n >\n <linearGradient id=\"gradient\">\n <stop stop-color=\"var(--purp-30)\" offset=\"0%\" />\n <stop stop-color=\"var(--brand)\" offset=\"100%\" />\n </linearGradient>\n <path [attr.d]=\"path\" fill=\"url(#gradient)\"></path>\n </svg>\n </div>\n</div>\n", styles: [".funnel-chart{width:-moz-fit-content;width:fit-content}.header{position:relative;margin-left:var(--size-xlarge);margin-right:var(--size-xlarge)}.metric-placeholder{visibility:hidden}.metric{position:absolute;transform:translate(-50%);top:0;display:flex;flex-direction:column;align-items:center;gap:var(--size-xsmall);white-space:nowrap}.chart{position:relative;display:flex;justify-content:space-between;margin-top:var(--size-medium);margin-left:var(--size-xlarge);margin-right:var(--size-xlarge)}.step-info{display:flex;gap:var(--size-large);border:var(--border-width) solid var(--border-light-blend);border-radius:var(--size-xsmall);padding:var(--size-medium);width:-moz-fit-content;width:fit-content;align-items:center;color:var(--type-light-low-contrast);margin:var(--size-xsmall)}.vertical-line{width:var(--size-xxsmall);background:var(--surface-light-4);z-index:1}.graph-placeholder{margin-bottom:var(--size-xlarge)}.graph{position:absolute;bottom:var(--size-xlarge)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MetricComponent, selector: "riv-metric", inputs: ["label", "value", "card", "help"] }, { kind: "component", type: i3.TrendComponent, selector: "riv-trend", inputs: ["label", "value", "successCondition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
57
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FunnelChartComponent, decorators: [{
|
|
58
59
|
type: Component,
|
|
59
|
-
args: [{ selector: 'riv-funnel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n
|
|
60
|
-
}], propDecorators: {
|
|
61
|
-
type: Input
|
|
62
|
-
}], values: [{
|
|
63
|
-
type: Input
|
|
64
|
-
}], previousValues: [{
|
|
60
|
+
args: [{ selector: 'riv-funnel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n label=\"placeholder\"\n value=\"0\"\n ></riv-metric>\n <!-- center each metric over vertical lines -->\n <riv-metric\n *ngFor=\"let value of aggregatedValues; let ix = index\"\n class=\"metric\"\n [label]=\"data[ix]?.label ?? ''\"\n [value]=\"value.toString()\"\n [style.left.px]=\"ix * sectionWidth + ix * gapWidth\"\n ></riv-metric>\n </div>\n\n <div class=\"chart\">\n <ng-container *ngFor=\"let step of percentageSteps; let ix = index\">\n <div class=\"vertical-line\"></div>\n\n <div>\n <div *ngIf=\"showConverted && !allZeroes\" class=\"step-info\">\n {{ step }}% converted\n <riv-trend\n *ngIf=\"trends[ix] != null\"\n [label]=\"trends[ix]! + '%'\"\n [value]=\"trends[ix]!\"\n ></riv-trend>\n </div>\n\n <!-- allocate space for the graph -->\n <div\n class=\"graph-placeholder\"\n [style.width.px]=\"sectionWidth\"\n [style.height.px]=\"graphHeight\"\n ></div>\n </div>\n </ng-container>\n\n <div class=\"vertical-line\"></div>\n\n <svg\n *ngIf=\"path\"\n class=\"graph\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"graphWidth\"\n [attr.height]=\"graphHeight\"\n >\n <linearGradient id=\"gradient\">\n <stop stop-color=\"var(--purp-30)\" offset=\"0%\" />\n <stop stop-color=\"var(--brand)\" offset=\"100%\" />\n </linearGradient>\n <path [attr.d]=\"path\" fill=\"url(#gradient)\"></path>\n </svg>\n </div>\n</div>\n", styles: [".funnel-chart{width:-moz-fit-content;width:fit-content}.header{position:relative;margin-left:var(--size-xlarge);margin-right:var(--size-xlarge)}.metric-placeholder{visibility:hidden}.metric{position:absolute;transform:translate(-50%);top:0;display:flex;flex-direction:column;align-items:center;gap:var(--size-xsmall);white-space:nowrap}.chart{position:relative;display:flex;justify-content:space-between;margin-top:var(--size-medium);margin-left:var(--size-xlarge);margin-right:var(--size-xlarge)}.step-info{display:flex;gap:var(--size-large);border:var(--border-width) solid var(--border-light-blend);border-radius:var(--size-xsmall);padding:var(--size-medium);width:-moz-fit-content;width:fit-content;align-items:center;color:var(--type-light-low-contrast);margin:var(--size-xsmall)}.vertical-line{width:var(--size-xxsmall);background:var(--surface-light-4);z-index:1}.graph-placeholder{margin-bottom:var(--size-xlarge)}.graph{position:absolute;bottom:var(--size-xlarge)}\n"] }]
|
|
61
|
+
}], propDecorators: { data: [{
|
|
65
62
|
type: Input
|
|
66
63
|
}], isPreAggregated: [{
|
|
67
64
|
type: Input
|
|
@@ -78,18 +75,22 @@ export function aggregateValues(values) {
|
|
|
78
75
|
export function calcPercentageSteps(values) {
|
|
79
76
|
return values.flatMap((v, ix) => {
|
|
80
77
|
const next = values[ix + 1];
|
|
81
|
-
return next !== undefined
|
|
78
|
+
return next !== undefined
|
|
79
|
+
? v === 0
|
|
80
|
+
? 0
|
|
81
|
+
: [Math.round(100 * (next / v))]
|
|
82
|
+
: [];
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
85
|
export function calcTrends(values, previousValues) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
if (values.length !== previousValues.length) {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
return values.map((v, ix) => v - previousValues[ix]);
|
|
89
90
|
}
|
|
90
91
|
export function calcPoints(values, sectionWidth, height, gap) {
|
|
91
92
|
const divisor = Math.max(...values) / height;
|
|
92
|
-
const normalizedValues = values.map(v => height - Math.round(v / divisor));
|
|
93
|
+
const normalizedValues = values.map(v => height - (divisor === 0 ? 0 : Math.round(v / divisor)));
|
|
93
94
|
// plot the points along the top edge of the graph
|
|
94
95
|
return normalizedValues.slice(1).flatMap((v, ix) => [
|
|
95
96
|
// top left point of current section
|
|
@@ -100,4 +101,4 @@ export function calcPoints(values, sectionWidth, height, gap) {
|
|
|
100
101
|
[gap * (ix + 2) + sectionWidth * (ix + 1), v],
|
|
101
102
|
]);
|
|
102
103
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVubmVsLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Zpc3VhbGl6YXRpb24vZnVubmVsLWNoYXJ0L2Z1bm5lbC1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL2Z1bm5lbC1jaGFydC9mdW5uZWwtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBUWhDLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFRRSxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBR3RCLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFHdEIsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFHOUIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFHakMsZ0JBQVcsR0FBVyxHQUFHLENBQUM7UUFHMUIsZUFBVSxHQUFXLElBQUksQ0FBQztRQUcxQixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUU5QixxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDaEMsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFDL0IsU0FBSSxHQUFrQixJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixpQkFBWSxHQUFXLENBQUMsQ0FBQztLQWlEMUI7SUEvQ0MsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxV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RyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsd0NBQXdDO1FBQ3hDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsbUZBQW1GO1FBQ25GLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDOUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXJlYSB9IGZyb20gJ2QzLXNoYXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWZ1bm5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdW5uZWwtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mdW5uZWwtY2hhcnQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnVubmVsQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBsYWJlbHM6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KClcbiAgdmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHByZXZpb3VzVmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGlzUHJlQWdncmVnYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdyYXBoSGVpZ2h0OiBudW1iZXIgPSAyMDA7XG5cbiAgQElucHV0KClcbiAgZ3JhcGhXaWR0aDogbnVtYmVyID0gMTIwMDtcblxuICBASW5wdXQoKVxuICBzaG93Q29udmVydGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBhZ2dyZWdhdGVkVmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuICBwZXJjZW50YWdlU3RlcHM6IG51bWJlcltdID0gW107XG4gIHRyZW5kczogKG51bWJlciB8IG51bGwpW10gPSBbXTtcbiAgcGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGdhcFdpZHRoOiBudW1iZXIgPSAwO1xuICBzZWN0aW9uV2lkdGg6IG51bWJlciA9IDA7XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5jYWxjVmFsdWVzKCk7XG4gICAgdGhpcy5jYWxjVHJlbmRzKCk7XG4gICAgdGhpcy5jYWxjU3BhY2UoKTtcbiAgICB0aGlzLmNyZWF0ZVBhdGgoKTtcbiAgfVxuXG4gIGNhbGNWYWx1ZXMoKSB7XG4gICAgdGhpcy5hZ2dyZWdhdGVkVmFsdWVzID0gdGhpcy5pc1ByZUFnZ3JlZ2F0ZWRcbiAgICAgID8gdGhpcy52YWx1ZXNcbiAgICAgIDogYWdncmVnYXRlVmFsdWVzKHRoaXMudmFsdWVzKTtcblxuICAgIHRoaXMucGVyY2VudGFnZVN0ZXBzID0gY2FsY1BlcmNlbnRhZ2VTdGVwcyh0aGlzLmFnZ3JlZ2F0ZWRWYWx1ZXMpO1xuICB9XG5cbiAgY2FsY1RyZW5kcygpIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlcyA9IHRoaXMuaXNQcmVBZ2dyZWdhdGVkXG4gICAgICA/IHRoaXMucHJldmlvdXNWYWx1ZXNcbiAgICAgIDogYWdncmVnYXRlVmFsdWVzKHRoaXMucHJldmlvdXNWYWx1ZXMpO1xuXG4gICAgY29uc3QgcHJldmlvdXNQZXJjZW50YWdlU3RlcHMgPSBjYWxjUGVyY2VudGFnZVN0ZXBzKHByZXZpb3VzVmFsdWVzKTtcblxuICAgIHRoaXMudHJlbmRzID0gY2FsY1RyZW5kcyh0aGlzLnBlcmNlbnRhZ2VTdGVwcywgcHJldmlvdXNQZXJjZW50YWdlU3RlcHMpO1xuICB9XG5cbiAgY2FsY1NwYWNlKCkge1xuICAgIHRoaXMuZ2FwV2lkdGggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudmVydGljYWwtbGluZScpPy5jbGllbnRXaWR0aCA/PyAyO1xuICAgIGNvbnN0IHRvdGFsR2FwU3BhY2UgPSB0aGlzLnBlcmNlbnRhZ2VTdGVwcy5sZW5ndGggKiB0aGlzLmdhcFdpZHRoO1xuXG4gICAgdGhpcy5zZWN0aW9uV2lkdGggPSBNYXRoLnJvdW5kKFxuICAgICAgKHRoaXMuZ3JhcGhXaWR0aCAtIHRvdGFsR2FwU3BhY2UpIC8gKHRoaXMucGVyY2VudGFnZVN0ZXBzLmxlbmd0aCB8fCAxKSxcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlUGF0aCgpIHtcbiAgICBjb25zdCBwb2ludHMgPSBjYWxjUG9pbnRzKFxuICAgICAgdGhpcy5hZ2dyZWdhdGVkVmFsdWVzLFxuICAgICAgdGhpcy5zZWN0aW9uV2lkdGgsXG4gICAgICB0aGlzLmdyYXBoSGVpZ2h0LFxuICAgICAgdGhpcy5nYXBXaWR0aCxcbiAgICApO1xuXG4gICAgdGhpcy5wYXRoID0gYXJlYSgpXG4gICAgICAueCgoW3gsIF9dKSA9PiB4KVxuICAgICAgLnkxKChbXywgeV0pID0+IHkpXG4gICAgICAueTAodGhpcy5ncmFwaEhlaWdodCkocG9pbnRzKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWdncmVnYXRlVmFsdWVzKHZhbHVlczogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIHJldHVybiB2YWx1ZXMubWFwKFxuICAgICh2LCBpeCkgPT4gdiArIHZhbHVlcy5zbGljZShpeCArIDEpLnJlZHVjZSgoYWNjLCBuKSA9PiBhY2MgKyBuLCAwKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNQZXJjZW50YWdlU3RlcHModmFsdWVzOiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgcmV0dXJuIHZhbHVlcy5mbGF0TWFwKCh2LCBpeCkgPT4ge1xuICAgIGNvbnN0IG5leHQgPSB2YWx1ZXNbaXggKyAxXTtcbiAgICByZXR1cm4gbmV4dCAhPT0gdW5kZWZpbmVkID8gW01hdGgucm91bmQoMTAwICogKG5leHQgLyB2KSldIDogW107XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY1RyZW5kcyhcbiAgdmFsdWVzOiBudW1iZXJbXSxcbiAgcHJldmlvdXNWYWx1ZXM6IG51bWJlcltdLFxuKTogKG51bWJlciB8IG51bGwpW10ge1xuICByZXR1cm4gdmFsdWVzLm1hcCgodiwgaXgpID0+IHtcbiAgICBjb25zdCBuID0gcHJldmlvdXNWYWx1ZXNbaXhdO1xuICAgIHJldHVybiBuID8gdiAtIG4gOiBudWxsO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNQb2ludHMoXG4gIHZhbHVlczogbnVtYmVyW10sXG4gIHNlY3Rpb25XaWR0aDogbnVtYmVyLFxuICBoZWlnaHQ6IG51bWJlcixcbiAgZ2FwOiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXJdW10ge1xuICBjb25zdCBkaXZpc29yID0gTWF0aC5tYXgoLi4udmFsdWVzKSAvIGhlaWdodDtcbiAgY29uc3Qgbm9ybWFsaXplZFZhbHVlcyA9IHZhbHVlcy5tYXAodiA9PiBoZWlnaHQgLSBNYXRoLnJvdW5kKHYgLyBkaXZpc29yKSk7XG5cbiAgLy8gcGxvdCB0aGUgcG9pbnRzIGFsb25nIHRoZSB0b3AgZWRnZSBvZiB0aGUgZ3JhcGhcbiAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZXMuc2xpY2UoMSkuZmxhdE1hcCgodiwgaXgpID0+IFtcbiAgICAvLyB0b3AgbGVmdCBwb2ludCBvZiBjdXJyZW50IHNlY3Rpb25cbiAgICBbZ2FwICogKGl4ICsgMSkgKyBzZWN0aW9uV2lkdGggKiBpeCwgbm9ybWFsaXplZFZhbHVlc1tpeF1dLFxuICAgIC8vIGJvdHRvbSByaWdodCBwb2ludCBvZiBjdXJyZW50IHNlY3Rpb25cbiAgICBbZ2FwICogKGl4ICsgMSkgKyBzZWN0aW9uV2lkdGggKiAoaXggKyAxKSwgdl0sXG4gICAgLy8gdG9wIGxlZnQgcG9pbnQgb2YgbmV4dCBzZWN0aW9uLCByZXF1aXJlZCBmb3Igc21hbGwgc2VjdGlvbnMgdW5kZXIgdmVydGljYWwgbGluZXNcbiAgICBbZ2FwICogKGl4ICsgMikgKyBzZWN0aW9uV2lkdGggKiAoaXggKyAxKSwgdl0sXG4gIF0pO1xufVxuIiwiPGRpdiBjbGFzcz1cImZ1bm5lbC1jaGFydFwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgPCEtLSBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGhlYWRlciAtLT5cbiAgICA8cml2LW1ldHJpY1xuICAgICAgY2xhc3M9XCJtZXRyaWMtcGxhY2Vob2xkZXJcIlxuICAgICAgW2xhYmVsXT1cImxhYmVscy5sZW5ndGggPiAwID8gJ3BsYWNlaG9sZGVyJyA6ICcnXCJcbiAgICAgIHZhbHVlPVwiMFwiXG4gICAgPjwvcml2LW1ldHJpYz5cbiAgICA8IS0tIGNlbnRlciBlYWNoIG1ldHJpYyBvdmVyIHZlcnRpY2FsIGxpbmVzIC0tPlxuICAgIDxyaXYtbWV0cmljXG4gICAgICAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgYWdncmVnYXRlZFZhbHVlczsgbGV0IGl4ID0gaW5kZXhcIlxuICAgICAgY2xhc3M9XCJtZXRyaWNcIlxuICAgICAgW2xhYmVsXT1cImxhYmVsc1tpeF0/LnRvU3RyaW5nKCkgPz8gJydcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlLnRvU3RyaW5nKClcIlxuICAgICAgW3N0eWxlLmxlZnQucHhdPVwiaXggKiBzZWN0aW9uV2lkdGggKyBpeCAqIGdhcFdpZHRoXCJcbiAgICA+PC9yaXYtbWV0cmljPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2hhcnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIHBlcmNlbnRhZ2VTdGVwczsgbGV0IGl4ID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1saW5lXCI+PC9kaXY+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q29udmVydGVkXCIgY2xhc3M9XCJzdGVwLWluZm9cIj5cbiAgICAgICAgICB7eyBzdGVwIH19JSBjb252ZXJ0ZWRcbiAgICAgICAgICA8cml2LXRyZW5kXG4gICAgICAgICAgICAqbmdJZj1cInRyZW5kc1tpeF0gIT0gbnVsbFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwidHJlbmRzW2l4XSEgKyAnJSdcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInRyZW5kc1tpeF0hXCJcbiAgICAgICAgICA+PC9yaXYtdHJlbmQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBncmFwaCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ3JhcGgtcGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzZWN0aW9uV2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ3JhcGhIZWlnaHRcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1saW5lXCI+PC9kaXY+XG5cbiAgICA8c3ZnXG4gICAgICAqbmdJZj1cInBhdGhcIlxuICAgICAgY2xhc3M9XCJncmFwaFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImdyYXBoV2lkdGhcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImdyYXBoSGVpZ2h0XCJcbiAgICA+XG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJncmFkaWVudFwiPlxuICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwidmFyKC0tcHVycC0zMClcIiBvZmZzZXQ9XCIwJVwiIC8+XG4gICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCJ2YXIoLS1icmFuZClcIiBvZmZzZXQ9XCIxMDAlXCIgLz5cbiAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICA8cGF0aCBbYXR0ci5kXT1cInBhdGhcIiBmaWxsPVwidXJsKCNncmFkaWVudClcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVubmVsLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Zpc3VhbGl6YXRpb24vZnVubmVsLWNoYXJ0L2Z1bm5lbC1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL2Z1bm5lbC1jaGFydC9mdW5uZWwtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBY2hDLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFRRSxTQUFJLEdBQXNCLEVBQUUsQ0FBQztRQUc3QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdqQyxnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUcxQixlQUFVLEdBQVcsSUFBSSxDQUFDO1FBRzFCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTlCLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNoQyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBQ3RCLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsY0FBUyxHQUFZLElBQUksQ0FBQztLQXVEM0I7SUFyREMsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lB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LEdBQUcsTUFBTSxDQUFDO0lBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQzVELENBQUM7SUFFRixrREFBa0Q7SUFDbEQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbEQsb0NBQW9DO1FBQ3BDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsd0NBQXdDO1FBQ3hDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsbUZBQW1GO1FBQ25GLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDOUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXJlYSB9IGZyb20gJ2QzLXNoYXBlJztcblxuZXhwb3J0IHR5cGUgRnVubmVsQ2hhcnREYXRhID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xuICBwcmV2aW91c1ZhbHVlOiBudW1iZXIgfCBudWxsO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWZ1bm5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdW5uZWwtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mdW5uZWwtY2hhcnQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnVubmVsQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBkYXRhOiBGdW5uZWxDaGFydERhdGFbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGlzUHJlQWdncmVnYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdyYXBoSGVpZ2h0OiBudW1iZXIgPSAyMDA7XG5cbiAgQElucHV0KClcbiAgZ3JhcGhXaWR0aDogbnVtYmVyID0gMTIwMDtcblxuICBASW5wdXQoKVxuICBzaG93Q29udmVydGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBhZ2dyZWdhdGVkVmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuICBwZXJjZW50YWdlU3RlcHM6IG51bWJlcltdID0gW107XG4gIHRyZW5kczogbnVtYmVyW10gPSBbXTtcbiAgcGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGdhcFdpZHRoOiBudW1iZXIgPSAwO1xuICBzZWN0aW9uV2lkdGg6IG51bWJlciA9IDA7XG4gIGFsbFplcm9lczogYm9vbGVhbiA9IHRydWU7XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5jYWxjVmFsdWVzKCk7XG4gICAgdGhpcy5jYWxjVHJlbmRzKCk7XG4gICAgdGhpcy5jYWxjU3BhY2UoKTtcbiAgICB0aGlzLmNyZWF0ZVBhdGgoKTtcbiAgfVxuXG4gIGNhbGNWYWx1ZXMoKSB7XG4gICAgdGhpcy5hZ2dyZWdhdGVkVmFsdWVzID0gdGhpcy5pc1ByZUFnZ3JlZ2F0ZWRcbiAgICAgID8gdGhpcy5kYXRhLm1hcChkID0+IGQudmFsdWUpXG4gICAgICA6IGFnZ3JlZ2F0ZVZhbHVlcyh0aGlzLmRhdGEubWFwKGQgPT4gZC52YWx1ZSkpO1xuXG4gICAgdGhpcy5hbGxaZXJvZXMgPSBNYXRoLm1heCguLi50aGlzLmFnZ3JlZ2F0ZWRWYWx1ZXMpID09PSAwO1xuXG4gICAgdGhpcy5wZXJjZW50YWdlU3RlcHMgPSBjYWxjUGVyY2VudGFnZVN0ZXBzKHRoaXMuYWdncmVnYXRlZFZhbHVlcyk7XG4gIH1cblxuICBjYWxjVHJlbmRzKCkge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWVzID0gdGhpcy5kYXRhLmZsYXRNYXAoZCA9PlxuICAgICAgZC5wcmV2aW91c1ZhbHVlICE9PSBudWxsID8gW2QucHJldmlvdXNWYWx1ZV0gOiBbXSxcbiAgICApO1xuXG4gICAgY29uc3QgYWdncmVnYXRlZFZhbHVlcyA9IHRoaXMuaXNQcmVBZ2dyZWdhdGVkXG4gICAgICA/IHByZXZpb3VzVmFsdWVzXG4gICAgICA6IGFnZ3JlZ2F0ZVZhbHVlcyhwcmV2aW91c1ZhbHVlcyk7XG5cbiAgICBjb25zdCBwcmV2aW91c1BlcmNlbnRhZ2VTdGVwcyA9IGNhbGNQZXJjZW50YWdlU3RlcHMoYWdncmVnYXRlZFZhbHVlcyk7XG5cbiAgICB0aGlzLnRyZW5kcyA9IGNhbGNUcmVuZHModGhpcy5wZXJjZW50YWdlU3RlcHMsIHByZXZpb3VzUGVyY2VudGFnZVN0ZXBzKTtcbiAgfVxuXG4gIGNhbGNTcGFjZSgpIHtcbiAgICB0aGlzLmdhcFdpZHRoID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnZlcnRpY2FsLWxpbmUnKT8uY2xpZW50V2lkdGggPz8gMjtcbiAgICBjb25zdCB0b3RhbEdhcFNwYWNlID0gdGhpcy5wZXJjZW50YWdlU3RlcHMubGVuZ3RoICogdGhpcy5nYXBXaWR0aDtcblxuICAgIHRoaXMuc2VjdGlvbldpZHRoID0gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLmdyYXBoV2lkdGggLSB0b3RhbEdhcFNwYWNlKSAvICh0aGlzLnBlcmNlbnRhZ2VTdGVwcy5sZW5ndGggfHwgMSksXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVBhdGgoKSB7XG4gICAgY29uc3QgcG9pbnRzID0gY2FsY1BvaW50cyhcbiAgICAgIHRoaXMuYWdncmVnYXRlZFZhbHVlcyxcbiAgICAgIHRoaXMuc2VjdGlvbldpZHRoLFxuICAgICAgdGhpcy5ncmFwaEhlaWdodCxcbiAgICAgIHRoaXMuZ2FwV2lkdGgsXG4gICAgKTtcblxuICAgIHRoaXMucGF0aCA9IGFyZWEoKVxuICAgICAgLngoKFt4LCBfXSkgPT4geClcbiAgICAgIC55MSgoW18sIHldKSA9PiB5KVxuICAgICAgLnkwKHRoaXMuZ3JhcGhIZWlnaHQpKHBvaW50cyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZVZhbHVlcyh2YWx1ZXM6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICByZXR1cm4gdmFsdWVzLm1hcChcbiAgICAodiwgaXgpID0+IHYgKyB2YWx1ZXMuc2xpY2UoaXggKyAxKS5yZWR1Y2UoKGFjYywgbikgPT4gYWNjICsgbiwgMCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjUGVyY2VudGFnZVN0ZXBzKHZhbHVlczogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIHJldHVybiB2YWx1ZXMuZmxhdE1hcCgodiwgaXgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gdmFsdWVzW2l4ICsgMV07XG4gICAgcmV0dXJuIG5leHQgIT09IHVuZGVmaW5lZFxuICAgICAgPyB2ID09PSAwXG4gICAgICAgID8gMFxuICAgICAgICA6IFtNYXRoLnJvdW5kKDEwMCAqIChuZXh0IC8gdikpXVxuICAgICAgOiBbXTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjVHJlbmRzKFxuICB2YWx1ZXM6IG51bWJlcltdLFxuICBwcmV2aW91c1ZhbHVlczogbnVtYmVyW10sXG4pOiBudW1iZXJbXSB7XG4gIGlmICh2YWx1ZXMubGVuZ3RoICE9PSBwcmV2aW91c1ZhbHVlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5tYXAoKHYsIGl4KSA9PiB2IC0gcHJldmlvdXNWYWx1ZXNbaXhdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNQb2ludHMoXG4gIHZhbHVlczogbnVtYmVyW10sXG4gIHNlY3Rpb25XaWR0aDogbnVtYmVyLFxuICBoZWlnaHQ6IG51bWJlcixcbiAgZ2FwOiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXJdW10ge1xuICBjb25zdCBkaXZpc29yID0gTWF0aC5tYXgoLi4udmFsdWVzKSAvIGhlaWdodDtcbiAgY29uc3Qgbm9ybWFsaXplZFZhbHVlcyA9IHZhbHVlcy5tYXAoXG4gICAgdiA9PiBoZWlnaHQgLSAoZGl2aXNvciA9PT0gMCA/IDAgOiBNYXRoLnJvdW5kKHYgLyBkaXZpc29yKSksXG4gICk7XG5cbiAgLy8gcGxvdCB0aGUgcG9pbnRzIGFsb25nIHRoZSB0b3AgZWRnZSBvZiB0aGUgZ3JhcGhcbiAgcmV0dXJuIG5vcm1hbGl6ZWRWYWx1ZXMuc2xpY2UoMSkuZmxhdE1hcCgodiwgaXgpID0+IFtcbiAgICAvLyB0b3AgbGVmdCBwb2ludCBvZiBjdXJyZW50IHNlY3Rpb25cbiAgICBbZ2FwICogKGl4ICsgMSkgKyBzZWN0aW9uV2lkdGggKiBpeCwgbm9ybWFsaXplZFZhbHVlc1tpeF1dLFxuICAgIC8vIGJvdHRvbSByaWdodCBwb2ludCBvZiBjdXJyZW50IHNlY3Rpb25cbiAgICBbZ2FwICogKGl4ICsgMSkgKyBzZWN0aW9uV2lkdGggKiAoaXggKyAxKSwgdl0sXG4gICAgLy8gdG9wIGxlZnQgcG9pbnQgb2YgbmV4dCBzZWN0aW9uLCByZXF1aXJlZCBmb3Igc21hbGwgc2VjdGlvbnMgdW5kZXIgdmVydGljYWwgbGluZXNcbiAgICBbZ2FwICogKGl4ICsgMikgKyBzZWN0aW9uV2lkdGggKiAoaXggKyAxKSwgdl0sXG4gIF0pO1xufVxuIiwiPGRpdiBjbGFzcz1cImZ1bm5lbC1jaGFydFwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgPCEtLSBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGhlYWRlciAtLT5cbiAgICA8cml2LW1ldHJpY1xuICAgICAgY2xhc3M9XCJtZXRyaWMtcGxhY2Vob2xkZXJcIlxuICAgICAgbGFiZWw9XCJwbGFjZWhvbGRlclwiXG4gICAgICB2YWx1ZT1cIjBcIlxuICAgID48L3Jpdi1tZXRyaWM+XG4gICAgPCEtLSBjZW50ZXIgZWFjaCBtZXRyaWMgb3ZlciB2ZXJ0aWNhbCBsaW5lcyAtLT5cbiAgICA8cml2LW1ldHJpY1xuICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIGFnZ3JlZ2F0ZWRWYWx1ZXM7IGxldCBpeCA9IGluZGV4XCJcbiAgICAgIGNsYXNzPVwibWV0cmljXCJcbiAgICAgIFtsYWJlbF09XCJkYXRhW2l4XT8ubGFiZWwgPz8gJydcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlLnRvU3RyaW5nKClcIlxuICAgICAgW3N0eWxlLmxlZnQucHhdPVwiaXggKiBzZWN0aW9uV2lkdGggKyBpeCAqIGdhcFdpZHRoXCJcbiAgICA+PC9yaXYtbWV0cmljPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2hhcnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIHBlcmNlbnRhZ2VTdGVwczsgbGV0IGl4ID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1saW5lXCI+PC9kaXY+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q29udmVydGVkICYmICFhbGxaZXJvZXNcIiBjbGFzcz1cInN0ZXAtaW5mb1wiPlxuICAgICAgICAgIHt7IHN0ZXAgfX0lIGNvbnZlcnRlZFxuICAgICAgICAgIDxyaXYtdHJlbmRcbiAgICAgICAgICAgICpuZ0lmPVwidHJlbmRzW2l4XSAhPSBudWxsXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ0cmVuZHNbaXhdISArICclJ1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwidHJlbmRzW2l4XSFcIlxuICAgICAgICAgID48L3Jpdi10cmVuZD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGdyYXBoIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJncmFwaC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNlY3Rpb25XaWR0aFwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJncmFwaEhlaWdodFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWxpbmVcIj48L2Rpdj5cblxuICAgIDxzdmdcbiAgICAgICpuZ0lmPVwicGF0aFwiXG4gICAgICBjbGFzcz1cImdyYXBoXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgW2F0dHIud2lkdGhdPVwiZ3JhcGhXaWR0aFwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiZ3JhcGhIZWlnaHRcIlxuICAgID5cbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImdyYWRpZW50XCI+XG4gICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCJ2YXIoLS1wdXJwLTMwKVwiIG9mZnNldD1cIjAlXCIgLz5cbiAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cInZhcigtLWJyYW5kKVwiIG9mZnNldD1cIjEwMCVcIiAvPlxuICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgIDxwYXRoIFthdHRyLmRdPVwicGF0aFwiIGZpbGw9XCJ1cmwoI2dyYWRpZW50KVwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|