@hestia-earth/ui-components 0.9.4 → 0.9.6
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/common/d3-utils.d.ts +11 -0
- package/common/index.d.ts +1 -0
- package/engine/aggregation-engine.service.d.ts +1 -23
- package/esm2020/common/compound.mjs +15 -6
- package/esm2020/common/d3-utils.mjs +46 -0
- package/esm2020/common/index.mjs +2 -1
- package/esm2020/engine/aggregation-engine.service.mjs +2 -28
- package/esm2020/files/files-form.model.mjs +2 -2
- package/esm2020/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +845 -0
- package/esm2020/impact-assessments/impact-assessments.module.mjs +7 -3
- package/esm2020/impact-assessments/index.mjs +2 -1
- package/fesm2015/hestia-earth-ui-components.mjs +859 -37
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +893 -35
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.d.ts +73 -0
- package/impact-assessments/impact-assessments.module.d.ts +11 -10
- package/impact-assessments/index.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Selection } from 'd3';
|
|
2
|
+
export declare const d3ellipse: <Datum>(selection: Selection<SVGTextElement, Datum, any, any>, maxWidth: number, ellipsisStr?: string) => void;
|
|
3
|
+
export declare const d3wrap: <Datum>(t: Selection<SVGTextElement, Datum, any, any>, { maxWidth, maxLines, words, nHeight, lHeight, vcentre, ownLineWord }: {
|
|
4
|
+
maxWidth: number;
|
|
5
|
+
maxLines: number;
|
|
6
|
+
words: string[];
|
|
7
|
+
nHeight: number;
|
|
8
|
+
lHeight: number;
|
|
9
|
+
vcentre?: boolean;
|
|
10
|
+
ownLineWord?: string;
|
|
11
|
+
}) => void;
|
package/common/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { NodeType
|
|
2
|
+
import { NodeType } from '@hestia-earth/schema';
|
|
3
3
|
import { HeNodeService } from '../node/node.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare const lookups: Readonly<{
|
|
@@ -19,24 +19,12 @@ export interface IAggregationModel {
|
|
|
19
19
|
dataPath: string;
|
|
20
20
|
'@id'?: string;
|
|
21
21
|
}
|
|
22
|
-
export interface ILookups {
|
|
23
|
-
crop: any[];
|
|
24
|
-
cropYield: any[];
|
|
25
|
-
}
|
|
26
|
-
export interface ITriggerCountryParams {
|
|
27
|
-
country: Term;
|
|
28
|
-
product: Product;
|
|
29
|
-
'@type'?: NodeType;
|
|
30
|
-
}
|
|
31
22
|
export declare class HeAggregationEngineService {
|
|
32
23
|
protected http: HttpClient;
|
|
33
24
|
protected nodeService: HeNodeService;
|
|
34
25
|
private modelsLoading;
|
|
35
26
|
private modelsLoaded;
|
|
36
27
|
private _models;
|
|
37
|
-
private lookupsLoading;
|
|
38
|
-
private lookupsLoaded;
|
|
39
|
-
private _lookups;
|
|
40
28
|
constructor(http: HttpClient, nodeService: HeNodeService);
|
|
41
29
|
private init;
|
|
42
30
|
private loadModels;
|
|
@@ -44,16 +32,6 @@ export declare class HeAggregationEngineService {
|
|
|
44
32
|
models(): Promise<IAggregationModel[]>;
|
|
45
33
|
model$(model: Partial<IAggregationModel>): import("rxjs").Observable<IAggregationModel>;
|
|
46
34
|
model(model: Partial<IAggregationModel>): Promise<IAggregationModel>;
|
|
47
|
-
private loadLookup;
|
|
48
|
-
private loadLookups;
|
|
49
|
-
get lookups$(): import("rxjs").Observable<{
|
|
50
|
-
cropYield: any[];
|
|
51
|
-
crop: any[];
|
|
52
|
-
}>;
|
|
53
|
-
lookups(): Promise<{
|
|
54
|
-
cropYield: any[];
|
|
55
|
-
crop: any[];
|
|
56
|
-
}>;
|
|
57
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeAggregationEngineService, never>;
|
|
58
36
|
static ɵprov: i0.ɵɵInjectableDeclaration<HeAggregationEngineService>;
|
|
59
37
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
const ignoreCompounds = (value) => [
|
|
2
|
+
value.startsWith('GWP'),
|
|
3
|
+
value.startsWith('PM')
|
|
4
|
+
].some(Boolean);
|
|
1
5
|
/**
|
|
2
6
|
* Handles <sup> and <sub> html tags for compounds.
|
|
3
7
|
*
|
|
@@ -5,10 +9,15 @@
|
|
|
5
9
|
* @returns HTML version with subscript and superscript tags.
|
|
6
10
|
*/
|
|
7
11
|
export const compoundToHtml = (value) => typeof value === 'string'
|
|
8
|
-
? (value
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
? ignoreCompounds(value)
|
|
13
|
+
? value
|
|
14
|
+
: (value || '')
|
|
15
|
+
.replace(/([A-Z]+[\d]+)([\d]{1}[\-\+])/g, '$1<sup>$2</sup>')
|
|
16
|
+
.replace(/([A-Z]+)([\d]{1})([\-\+])/g, '$1<sub>$2</sub><sup>$3</sup>')
|
|
17
|
+
.replace(/([A-LN-Za-ln-z])(\d+)/g, '$1<sub>$2</sub>')
|
|
18
|
+
.replace(/([O])([x])/g, '$1<sub>$2</sub>')
|
|
19
|
+
// handle m3
|
|
20
|
+
.replace(/([m])([\d]{1})\s/g, '$1<sup>$2</sup>')
|
|
21
|
+
.replace(/([m])([\d]{1})$/g, '$1<sup>$2</sup>')
|
|
13
22
|
: value;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbXBvdW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQztJQUN6QyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUN2QixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztDQUN2QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVoQjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQzNDLE9BQU8sS0FBSyxLQUFLLFFBQVE7SUFDdkIsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUFDLEtBQUs7UUFDUCxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2FBQ1osT0FBTyxDQUFDLCtCQUErQixFQUFFLGlCQUFpQixDQUFDO2FBQzNELE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSw4QkFBOEIsQ0FBQzthQUNyRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLENBQUM7YUFDcEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztZQUMxQyxZQUFZO2FBQ1gsT0FBTyxDQUFDLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDO2FBQy9DLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQztJQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaWdub3JlQ29tcG91bmRzID0gKHZhbHVlOiBzdHJpbmcpID0+IFtcbiAgdmFsdWUuc3RhcnRzV2l0aCgnR1dQJyksXG4gIHZhbHVlLnN0YXJ0c1dpdGgoJ1BNJylcbl0uc29tZShCb29sZWFuKTtcblxuLyoqXG4gKiBIYW5kbGVzIDxzdXA+IGFuZCA8c3ViPiBodG1sIHRhZ3MgZm9yIGNvbXBvdW5kcy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGNvbXBvdW5kIGFzIGEgc3RyaW5nIChlLmcuIE5PMylcbiAqIEByZXR1cm5zIEhUTUwgdmVyc2lvbiB3aXRoIHN1YnNjcmlwdCBhbmQgc3VwZXJzY3JpcHQgdGFncy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBvdW5kVG9IdG1sID0gKHZhbHVlOiBhbnkpID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICA/IGlnbm9yZUNvbXBvdW5kcyh2YWx1ZSlcbiAgICA/IHZhbHVlXG4gICAgOiAodmFsdWUgfHwgJycpXG4gICAgICAucmVwbGFjZSgvKFtBLVpdK1tcXGRdKykoW1xcZF17MX1bXFwtXFwrXSkvZywgJyQxPHN1cD4kMjwvc3VwPicpXG4gICAgICAucmVwbGFjZSgvKFtBLVpdKykoW1xcZF17MX0pKFtcXC1cXCtdKS9nLCAnJDE8c3ViPiQyPC9zdWI+PHN1cD4kMzwvc3VwPicpXG4gICAgICAucmVwbGFjZSgvKFtBLUxOLVphLWxuLXpdKShcXGQrKS9nLCAnJDE8c3ViPiQyPC9zdWI+JylcbiAgICAgIC5yZXBsYWNlKC8oW09dKShbeF0pL2csICckMTxzdWI+JDI8L3N1Yj4nKVxuICAgICAgLy8gaGFuZGxlIG0zXG4gICAgICAucmVwbGFjZSgvKFttXSkoW1xcZF17MX0pXFxzL2csICckMTxzdXA+JDI8L3N1cD4nKVxuICAgICAgLnJlcGxhY2UoLyhbbV0pKFtcXGRdezF9KSQvZywgJyQxPHN1cD4kMjwvc3VwPicpXG4gICAgOiB2YWx1ZTtcbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as d3 from 'd3';
|
|
2
|
+
export const d3ellipse = (selection, maxWidth, ellipsisStr = '...') => {
|
|
3
|
+
selection.each(function () {
|
|
4
|
+
const t = d3.select(this);
|
|
5
|
+
if (t.node().getComputedTextLength() > maxWidth) {
|
|
6
|
+
const chars = t.text().split('');
|
|
7
|
+
const line = [];
|
|
8
|
+
do {
|
|
9
|
+
line.push(chars.shift());
|
|
10
|
+
t.text(line.join('') + ellipsisStr);
|
|
11
|
+
} while (t.node().getComputedTextLength() <= maxWidth);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
const shouldBreakLine = (overflows, isMultiWordLine, isOwnLineWord, isUnderLineLimit) => ((overflows && isMultiWordLine) || isOwnLineWord) && isUnderLineLimit;
|
|
16
|
+
export const d3wrap = (t, { maxWidth, maxLines, words, nHeight, lHeight, vcentre = false, ownLineWord = '' }) => {
|
|
17
|
+
words = words.reverse();
|
|
18
|
+
const y = t.attr('y');
|
|
19
|
+
const x = t.attr('x');
|
|
20
|
+
let lineNumber = 1;
|
|
21
|
+
let word;
|
|
22
|
+
let line = [];
|
|
23
|
+
let tspan = t.text(null).append('tspan').attr('x', x).attr('y', y);
|
|
24
|
+
while ((word = words.pop()) && lineNumber <= maxLines) {
|
|
25
|
+
line.push(word);
|
|
26
|
+
tspan.text(line.join(' '));
|
|
27
|
+
// TODO: hyphenate words that are too long
|
|
28
|
+
if (shouldBreakLine(tspan.node().getComputedTextLength() > maxWidth, line.length > 1, word === ownLineWord, lineNumber < maxLines)) {
|
|
29
|
+
line.pop();
|
|
30
|
+
tspan.text(line.join(' '));
|
|
31
|
+
line = [word];
|
|
32
|
+
tspan = t
|
|
33
|
+
.append('tspan')
|
|
34
|
+
.attr('x', x)
|
|
35
|
+
.attr('y', y)
|
|
36
|
+
.attr('dy', lineNumber++ * lHeight + 'px')
|
|
37
|
+
.text(word);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
d3ellipse(tspan, maxWidth, '... ' + ownLineWord);
|
|
41
|
+
if (vcentre) {
|
|
42
|
+
const yOffset = nHeight / 2 - (t.selectAll('tspan').size() - 1) * (lHeight / 2);
|
|
43
|
+
t.selectAll('tspan').attr('y', yOffset);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2QzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixTQUFxRCxFQUNyRCxRQUFnQixFQUNoQixXQUFXLEdBQUcsS0FBSyxFQUNuQixFQUFFO0lBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNiLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxRQUFRLEVBQUU7WUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsR0FBRztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7YUFDckMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsSUFBSSxRQUFRLEVBQUU7U0FDeEQ7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQ3RCLFNBQWtCLEVBQ2xCLGVBQXdCLEVBQ3hCLGFBQXNCLEVBQ3RCLGdCQUF5QixFQUN6QixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FDcEIsQ0FBNkMsRUFDN0MsRUFDRSxRQUFRLEVBQ1IsUUFBUSxFQUNSLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE9BQU8sR0FBRyxLQUFLLEVBQ2YsV0FBVyxHQUFHLEVBQUUsRUFTakIsRUFDRCxFQUFFO0lBQ0YsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksSUFBSSxDQUFDO0lBQ1QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksVUFBVSxJQUFJLFFBQVEsRUFBRTtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTNCLDBDQUEwQztRQUMxQyxJQUNFLGVBQWUsQ0FDYixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxRQUFRLEVBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNmLElBQUksS0FBSyxXQUFXLEVBQ3BCLFVBQVUsR0FBRyxRQUFRLENBQ3RCLEVBQ0Q7WUFDQSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNkLEtBQUssR0FBRyxDQUFDO2lCQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ1osSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDZjtLQUNGO0lBQ0QsU0FBUyxDQUFRLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBRXhELElBQUksT0FBTyxFQUFFO1FBQ1gsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3pDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuXG5leHBvcnQgY29uc3QgZDNlbGxpcHNlID0gPERhdHVtPihcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIERhdHVtLCBhbnksIGFueT4sXG4gIG1heFdpZHRoOiBudW1iZXIsXG4gIGVsbGlwc2lzU3RyID0gJy4uLidcbikgPT4ge1xuICBzZWxlY3Rpb24uZWFjaChmdW5jdGlvbigpIHtcbiAgICBjb25zdCB0ID0gZDMuc2VsZWN0KHRoaXMpO1xuICAgIGlmICh0Lm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA+IG1heFdpZHRoKSB7XG4gICAgICBjb25zdCBjaGFycyA9IHQudGV4dCgpLnNwbGl0KCcnKTtcbiAgICAgIGNvbnN0IGxpbmUgPSBbXTtcbiAgICAgIGRvIHtcbiAgICAgICAgbGluZS5wdXNoKGNoYXJzLnNoaWZ0KCkpO1xuICAgICAgICB0LnRleHQobGluZS5qb2luKCcnKSArIGVsbGlwc2lzU3RyKTtcbiAgICAgIH0gd2hpbGUgKHQubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpIDw9IG1heFdpZHRoKTtcbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3Qgc2hvdWxkQnJlYWtMaW5lID0gKFxuICBvdmVyZmxvd3M6IGJvb2xlYW4sXG4gIGlzTXVsdGlXb3JkTGluZTogYm9vbGVhbixcbiAgaXNPd25MaW5lV29yZDogYm9vbGVhbixcbiAgaXNVbmRlckxpbmVMaW1pdDogYm9vbGVhblxuKSA9PiAoKG92ZXJmbG93cyAmJiBpc011bHRpV29yZExpbmUpIHx8IGlzT3duTGluZVdvcmQpICYmIGlzVW5kZXJMaW5lTGltaXQ7XG5cbmV4cG9ydCBjb25zdCBkM3dyYXAgPSA8RGF0dW0+KFxuICB0OiBTZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIERhdHVtLCBhbnksIGFueT4sXG4gIHtcbiAgICBtYXhXaWR0aCxcbiAgICBtYXhMaW5lcyxcbiAgICB3b3JkcyxcbiAgICBuSGVpZ2h0LFxuICAgIGxIZWlnaHQsXG4gICAgdmNlbnRyZSA9IGZhbHNlLFxuICAgIG93bkxpbmVXb3JkID0gJydcbiAgfToge1xuICAgIG1heFdpZHRoOiBudW1iZXI7XG4gICAgbWF4TGluZXM6IG51bWJlcjtcbiAgICB3b3Jkczogc3RyaW5nW107XG4gICAgbkhlaWdodDogbnVtYmVyO1xuICAgIGxIZWlnaHQ6IG51bWJlcjtcbiAgICB2Y2VudHJlPzogYm9vbGVhbjtcbiAgICBvd25MaW5lV29yZD86IHN0cmluZztcbiAgfVxuKSA9PiB7XG4gIHdvcmRzID0gd29yZHMucmV2ZXJzZSgpO1xuICBjb25zdCB5ID0gdC5hdHRyKCd5Jyk7XG4gIGNvbnN0IHggPSB0LmF0dHIoJ3gnKTtcbiAgbGV0IGxpbmVOdW1iZXIgPSAxO1xuICBsZXQgd29yZDtcbiAgbGV0IGxpbmUgPSBbXTtcbiAgbGV0IHRzcGFuID0gdC50ZXh0KG51bGwpLmFwcGVuZCgndHNwYW4nKS5hdHRyKCd4JywgeCkuYXR0cigneScsIHkpO1xuXG4gIHdoaWxlICgod29yZCA9IHdvcmRzLnBvcCgpKSAmJiBsaW5lTnVtYmVyIDw9IG1heExpbmVzKSB7XG4gICAgbGluZS5wdXNoKHdvcmQpO1xuICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuXG4gICAgLy8gVE9ETzogaHlwaGVuYXRlIHdvcmRzIHRoYXQgYXJlIHRvbyBsb25nXG4gICAgaWYgKFxuICAgICAgc2hvdWxkQnJlYWtMaW5lKFxuICAgICAgICB0c3Bhbi5ub2RlKCkuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPiBtYXhXaWR0aCxcbiAgICAgICAgbGluZS5sZW5ndGggPiAxLFxuICAgICAgICB3b3JkID09PSBvd25MaW5lV29yZCxcbiAgICAgICAgbGluZU51bWJlciA8IG1heExpbmVzXG4gICAgICApXG4gICAgKSB7XG4gICAgICBsaW5lLnBvcCgpO1xuICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oJyAnKSk7XG4gICAgICBsaW5lID0gW3dvcmRdO1xuICAgICAgdHNwYW4gPSB0XG4gICAgICAgIC5hcHBlbmQoJ3RzcGFuJylcbiAgICAgICAgLmF0dHIoJ3gnLCB4KVxuICAgICAgICAuYXR0cigneScsIHkpXG4gICAgICAgIC5hdHRyKCdkeScsIGxpbmVOdW1iZXIrKyAqIGxIZWlnaHQgKyAncHgnKVxuICAgICAgICAudGV4dCh3b3JkKTtcbiAgICB9XG4gIH1cbiAgZDNlbGxpcHNlPERhdHVtPih0c3BhbiwgbWF4V2lkdGgsICcuLi4gJyArIG93bkxpbmVXb3JkKTtcblxuICBpZiAodmNlbnRyZSkge1xuICAgIGNvbnN0IHlPZmZzZXQgPSBuSGVpZ2h0IC8gMiAtICh0LnNlbGVjdEFsbCgndHNwYW4nKS5zaXplKCkgLSAxKSAqIChsSGVpZ2h0IC8gMik7XG4gICAgdC5zZWxlY3RBbGwoJ3RzcGFuJykuYXR0cigneScsIHlPZmZzZXQpO1xuICB9XG59O1xuIl19
|
package/esm2020/common/index.mjs
CHANGED
|
@@ -3,6 +3,7 @@ export * from './common.module';
|
|
|
3
3
|
export * from './common.service';
|
|
4
4
|
export * from './compound';
|
|
5
5
|
export * from './toast.service';
|
|
6
|
+
export * from './d3-utils';
|
|
6
7
|
export * from './delta-utils';
|
|
7
8
|
export * from './logs-utils';
|
|
8
9
|
export * from './maps-utils';
|
|
@@ -39,4 +40,4 @@ export { PrecisionPipe } from './precision.pipe';
|
|
|
39
40
|
export { TagsInputDirective } from './tags-input.directive';
|
|
40
41
|
export { TimesPipe } from './times.pipe';
|
|
41
42
|
export { SortByPipe } from './sort-by.pipe';
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDNUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21tb24ubGlnaHQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG91bmQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZDMtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWx0YS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ3MtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1cmFsaXplJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UvYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UuY29tcG9uZW50JztcbmV4cG9ydCB7IEJsYW5rTm9kZVZhbHVlRGVsdGFDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtdmFsdWUtZGVsdGEvYmxhbmstbm9kZS12YWx1ZS1kZWx0YS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2xpcGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgSXNzdWVDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9pc3N1ZS1jb25maXJtL2lzc3VlLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IExpbmtLZXlWYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4vbGluay1rZXktdmFsdWUvbGluay1rZXktdmFsdWUuY29tcG9uZW50JztcbmV4cG9ydCB7IE1hcHNEcmF3aW5nQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vbWFwcy1kcmF3aW5nLWNvbmZpcm0vbWFwcy1kcmF3aW5nLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUG9wb3ZlckNvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29uZmlybS9wb3BvdmVyLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFNjaGVtYVZlcnNpb25MaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlbWEtdmVyc2lvbi1saW5rL3NjaGVtYS12ZXJzaW9uLWxpbmsuY29tcG9uZW50JztcbmV4cG9ydCB7IFNrZWxldG9uVGV4dENvbXBvbmVudCB9IGZyb20gJy4vc2tlbGV0b24tdGV4dC9za2VsZXRvbi10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBTb2NpYWxUYWdzQ29tcG9uZW50IH0gZnJvbSAnLi9zb2NpYWwtdGFncy9zb2NpYWwtdGFncy5jb21wb25lbnQnO1xuZXhwb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBVbml0Q29udmVydGVyQ29tcG9uZW50IH0gZnJvbSAnLi91bml0LWNvbnZlcnRlci91bml0LWNvbnZlcnRlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQmluZE9uY2VEaXJlY3RpdmUgfSBmcm9tICcuL2JpbmQtb25jZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBDb21wb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG91bmQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IENvbXBvdW5kUGlwZSB9IGZyb20gJy4vY29tcG91bmQucGlwZSc7XG5leHBvcnQgeyBEZWZhdWx0UGlwZSB9IGZyb20gJy4vZGVmYXVsdC5waXBlJztcbmV4cG9ydCB7IEVsbGlwc2lzUGlwZSB9IGZyb20gJy4vZWxsaXBzaXMucGlwZSc7XG5leHBvcnQgeyBHZXRQaXBlIH0gZnJvbSAnLi9nZXQucGlwZSc7XG5leHBvcnQgeyBJc0FycmF5UGlwZSB9IGZyb20gJy4vaXMtYXJyYXkucGlwZSc7XG5leHBvcnQgeyBJc09iamVjdFBpcGUgfSBmcm9tICcuL2lzLW9iamVjdC5waXBlJztcbmV4cG9ydCB7IEtleVRvTGFiZWxQaXBlIH0gZnJvbSAnLi9rZXktdG8tbGFiZWwucGlwZSc7XG5leHBvcnQgeyBLZXlzUGlwZSB9IGZyb20gJy4va2V5cy5waXBlJztcbmV4cG9ydCB7IFBsdXJhbGl6ZVBpcGUgfSBmcm9tICcuL3BsdXJhbGl6ZS5waXBlJztcbmV4cG9ydCB7IFByZWNpc2lvblBpcGUgfSBmcm9tICcuL3ByZWNpc2lvbi5waXBlJztcbmV4cG9ydCB7IFRhZ3NJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vdGFncy1pbnB1dC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgVGltZXNQaXBlIH0gZnJvbSAnLi90aW1lcy5waXBlJztcbmV4cG9ydCB7IFNvcnRCeVBpcGUgfSBmcm9tICcuL3NvcnQtYnkucGlwZSc7XG4iXX0=
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { of, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { catchError, map, take } from 'rxjs/operators';
|
|
4
|
-
import { TermTermType } from '@hestia-earth/schema';
|
|
5
|
-
import * as csvtojson from 'csvtojson';
|
|
6
4
|
import { gitBranch, gitHome, gitRawBaseUrl } from '../common/utils';
|
|
7
5
|
import * as i0 from "@angular/core";
|
|
8
6
|
import * as i1 from "@angular/common/http";
|
|
@@ -20,9 +18,6 @@ export class HeAggregationEngineService {
|
|
|
20
18
|
this.modelsLoading = false;
|
|
21
19
|
this.modelsLoaded = false;
|
|
22
20
|
this._models = new ReplaySubject(1);
|
|
23
|
-
this.lookupsLoading = false;
|
|
24
|
-
this.lookupsLoaded = false;
|
|
25
|
-
this._lookups = new ReplaySubject(1);
|
|
26
21
|
this.init();
|
|
27
22
|
}
|
|
28
23
|
async init() {
|
|
@@ -53,27 +48,6 @@ export class HeAggregationEngineService {
|
|
|
53
48
|
model(model) {
|
|
54
49
|
return this.model$(model).pipe(take(1)).toPromise();
|
|
55
50
|
}
|
|
56
|
-
async loadLookup(filename) {
|
|
57
|
-
const data = await this.nodeService.downloadLookup(filename);
|
|
58
|
-
return csvtojson({ delimiter: 'auto' }).fromString(data);
|
|
59
|
-
}
|
|
60
|
-
loadLookups() {
|
|
61
|
-
return forkJoin({
|
|
62
|
-
cropYield: from(this.loadLookup(lookups.cropYield)),
|
|
63
|
-
crop: from(this.loadLookup(TermTermType.crop))
|
|
64
|
-
}).pipe(map(values => {
|
|
65
|
-
this._lookups.next(values);
|
|
66
|
-
this.lookupsLoading = false;
|
|
67
|
-
this.lookupsLoaded = true;
|
|
68
|
-
return values;
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
71
|
-
get lookups$() {
|
|
72
|
-
return this.lookupsLoading || this.lookupsLoaded ? this._lookups.asObservable() : this.loadLookups();
|
|
73
|
-
}
|
|
74
|
-
lookups() {
|
|
75
|
-
return this.lookups$.pipe(take(1)).toPromise();
|
|
76
|
-
}
|
|
77
51
|
}
|
|
78
52
|
HeAggregationEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1.HttpClient }, { token: i2.HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
53
|
HeAggregationEngineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: HeAggregationEngineService, providedIn: 'root' });
|
|
@@ -83,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
83
57
|
providedIn: 'root'
|
|
84
58
|
}]
|
|
85
59
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeNodeService }]; } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2FnZ3JlZ2F0aW9uLWVuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFFcEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLHFDQUFxQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQ2xGLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsYUFBYSxvQ0FBb0MsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUV2RixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuQyxTQUFTLEVBQUUsaURBQWlEO0lBQzVELGtCQUFrQixFQUFFLCtCQUErQjtDQUNwRCxDQUFDLENBQUM7QUF1QkgsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQyxZQUNZLElBQWdCLEVBQ2hCLFdBQTBCO1FBRDFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFOOUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsWUFBTyxHQUFHLElBQUksYUFBYSxDQUFzQixDQUFDLENBQUMsQ0FBQztRQU0xRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUk7UUFDaEIsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBeUIsR0FBRyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQy9FLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUE0QixDQUFDLENBQUMsRUFDN0QsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RFLEdBQUcsSUFBSTtnQkFDUCxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLE9BQU8sRUFBRTthQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQVksT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25HLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWlDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFpQztRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7O3VIQWpEVSwwQkFBMEI7MkhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzJGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgb2YsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2l0QnJhbmNoLCBnaXRIb21lLCBnaXRSYXdCYXNlVXJsIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgZ2l0VXJsID0gKCkgPT4gYCR7Z2l0SG9tZX0vaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZS8tL2Jsb2IvJHtnaXRCcmFuY2goKX1gO1xuY29uc3QgcmF3VXJsID0gKCkgPT4gYCR7Z2l0UmF3QmFzZVVybH0vaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZS8tL3Jhdy8ke2dpdEJyYW5jaCgpfWA7XG5cbmV4cG9ydCBjb25zdCBsb29rdXBzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGNyb3BZaWVsZDogJ3JlZ2lvbi1jcm9wLWNyb3BHcm91cGluZ0Zhb3N0YXRQcm9kdWN0aW9uLXlpZWxkJyxcbiAgY3JvcEdyb3VwaW5nQ29sdW1uOiAnY3JvcEdyb3VwaW5nRmFvc3RhdFByb2R1Y3Rpb24nXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBJQWdncmVnYXRpb25Nb2RlbCB7XG4gIHR5cGU6IE5vZGVUeXBlO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgaW1wbGVtZW50YXRpb24gKGNvZGUpIG9mIHRoZSBtb2RlbC5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZGVsLlxuICAgKi9cbiAgZG9jUGF0aDogc3RyaW5nO1xuICBkYXRhUGF0aDogc3RyaW5nO1xuICAnQGlkJz86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElBZ2dyZWdhdGlvbk1vZGVsTGlua3Mge1xuICBsaW5rczogSUFnZ3JlZ2F0aW9uTW9kZWxbXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVBZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2Uge1xuICBwcml2YXRlIG1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbW9kZWxzID0gbmV3IFJlcGxheVN1YmplY3Q8SUFnZ3JlZ2F0aW9uTW9kZWxbXT4oMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIG5vZGVTZXJ2aWNlOiBIZU5vZGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZE1vZGVscygpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWxzKCkge1xuICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SUFnZ3JlZ2F0aW9uTW9kZWxMaW5rcz4oYCR7cmF3VXJsKCl9L21vZGVsLWxpbmtzLmpzb25gKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih7IGxpbmtzOiBbXSB9IGFzIElBZ2dyZWdhdGlvbk1vZGVsTGlua3MpKSxcbiAgICAgIG1hcCgoeyBsaW5rcyB9KSA9PiB7XG4gICAgICAgIHRoaXMuX21vZGVscy5uZXh0KGxpbmtzLm1hcCgoeyBwYXRoOiBtb2RlbFBhdGgsIGRvY1BhdGgsIC4uLmxpbmsgfSkgPT4gKHtcbiAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgIHBhdGg6IGAke2dpdFVybCgpfS8ke21vZGVsUGF0aH1gLFxuICAgICAgICAgIGRvY1BhdGg6IGAke2dpdFVybCgpfS8ke2RvY1BhdGh9YFxuICAgICAgICB9KSkpO1xuICAgICAgICB0aGlzLm1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2RlbHNMb2FkZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbGlua3M7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBtb2RlbHMkKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsc0xvYWRpbmcgfHwgdGhpcy5tb2RlbHNMb2FkZWQgPyB0aGlzLl9tb2RlbHMuYXNPYnNlcnZhYmxlKCkgOiB0aGlzLmxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGVsJChtb2RlbDogUGFydGlhbDxJQWdncmVnYXRpb25Nb2RlbD4pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHMkLnBpcGUoXG4gICAgICBtYXAobW9kZWxzID0+IG1vZGVscy5maW5kKG0gPT4gT2JqZWN0LmVudHJpZXMobW9kZWwpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0+IHZhbHVlID09PSBtW2tleV0pKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1vZGVsKG1vZGVsOiBQYXJ0aWFsPElBZ2dyZWdhdGlvbk1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVsJChtb2RlbCkucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
|