@hestia-earth/ui-components 0.10.0 → 0.10.2

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.
Files changed (34) hide show
  1. package/common/color.d.ts +8 -0
  2. package/common/d3-utils.d.ts +1 -1
  3. package/common/index.d.ts +1 -0
  4. package/common/utils.d.ts +0 -2
  5. package/esm2020/common/color.mjs +72 -0
  6. package/esm2020/common/d3-utils.mjs +3 -3
  7. package/esm2020/common/index.mjs +2 -1
  8. package/esm2020/common/utils.mjs +1 -4
  9. package/esm2020/cycles/cycles-activity/cycles-activity.component.mjs +1 -1
  10. package/esm2020/cycles/cycles-completeness/cycles-completeness.component.mjs +1 -1
  11. package/esm2020/cycles/cycles-emissions/cycles-emissions.component.mjs +1 -1
  12. package/esm2020/cycles/cycles-emissions-chart/cycles-emissions-chart.component.mjs +4 -3
  13. package/esm2020/cycles/cycles-practices/cycles-practices.component.mjs +1 -1
  14. package/esm2020/cycles/cycles-result/cycles-result.component.mjs +4 -3
  15. package/esm2020/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.mjs +1 -1
  16. package/esm2020/files/files-error.model.mjs +12 -2
  17. package/esm2020/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +18 -16
  18. package/esm2020/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +6 -6
  19. package/esm2020/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.mjs +4 -3
  20. package/esm2020/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +1 -1
  21. package/esm2020/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +1 -1
  22. package/esm2020/node/node-link/node-link.component.mjs +5 -3
  23. package/esm2020/node/node-logs-models/node-logs-models.component.mjs +15 -14
  24. package/esm2020/node/node-logs-models/node-logs-models.model.mjs +1 -1
  25. package/esm2020/sites/sites-measurements/sites-measurements.component.mjs +1 -1
  26. package/fesm2015/hestia-earth-ui-components.mjs +127 -44
  27. package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
  28. package/fesm2020/hestia-earth-ui-components.mjs +127 -44
  29. package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
  30. package/files/files-error.model.d.ts +1 -1
  31. package/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.d.ts +1 -0
  32. package/node/node-link/node-link.component.d.ts +7 -6
  33. package/package.json +8 -2
  34. package/styles.scss +4 -0
@@ -0,0 +1,8 @@
1
+ export declare enum ColorPalette {
2
+ categorial = 0,
3
+ continuous = 1,
4
+ divergent = 2
5
+ }
6
+ export declare const getColor: (index: number, scheme?: ColorPalette) => string;
7
+ export declare const listColor: <T>(_v: T, index: number) => string;
8
+ export declare const listColorContinuous: <T>(_v: T, index: number) => string;
@@ -1,4 +1,4 @@
1
- import { Selection } from 'd3';
1
+ import { Selection } from 'd3-selection';
2
2
  export declare const d3ellipse: <Datum>(selection: Selection<SVGTextElement, Datum, any, any>, maxWidth: number, ellipsisStr?: string) => void;
3
3
  export declare const d3wrap: <Datum>(t: Selection<SVGTextElement, Datum, any, any>, { maxWidth, maxLines, words, nHeight, lHeight, vcentre, ownLineWord }: {
4
4
  maxWidth: number;
package/common/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './color';
1
2
  export * from './common.light.module';
2
3
  export * from './common.module';
3
4
  export * from './common.service';
package/common/utils.d.ts CHANGED
@@ -24,8 +24,6 @@ export declare const mapsUrl: (location?: {
24
24
  name?: string;
25
25
  }) => string;
26
26
  export declare const defaultLabel: (node?: any) => any;
27
- export declare const itemColor: (index: number) => any;
28
- export declare const listColor: <T>(_v: T, index: number) => string;
29
27
  export declare const repeat: (times?: number) => number[];
30
28
  export declare const filenameWithoutExt: (filename?: string) => string;
31
29
  export declare const copyObject: (data?: any) => any;
@@ -0,0 +1,72 @@
1
+ import Gradient from 'javascript-color-gradient';
2
+ import ShadeGenerator from 'shade-generator';
3
+ export var ColorPalette;
4
+ (function (ColorPalette) {
5
+ ColorPalette[ColorPalette["categorial"] = 0] = "categorial";
6
+ ColorPalette[ColorPalette["continuous"] = 1] = "continuous";
7
+ ColorPalette[ColorPalette["divergent"] = 2] = "divergent";
8
+ })(ColorPalette || (ColorPalette = {}));
9
+ const palette = Object.freeze({
10
+ [ColorPalette.categorial]: [
11
+ '#193957',
12
+ '#FFC000',
13
+ '#249DA5',
14
+ '#DC7033',
15
+ '#349B3E',
16
+ '#CCA76D',
17
+ '#6394CE',
18
+ '#9AB04C',
19
+ '#8B50A7',
20
+ '#8A5402'
21
+ ],
22
+ [ColorPalette.continuous]: [
23
+ '#193957',
24
+ '#1D586F',
25
+ '#207788',
26
+ '#498F78',
27
+ '#7FA55B',
28
+ '#B0B43B',
29
+ '#DDBB19',
30
+ '#FFC514',
31
+ '#FDD866',
32
+ '#FCEBB8'
33
+ ],
34
+ [ColorPalette.divergent]: [
35
+ '#193957',
36
+ '#1D6176',
37
+ '#228A96',
38
+ '#58B3B5',
39
+ '#ACD6CF',
40
+ '#FCEBB8',
41
+ '#FCE18F',
42
+ '#FDD763',
43
+ '#FECC34',
44
+ '#FFC000'
45
+ ]
46
+ });
47
+ const getGradients = (...colours) => new Gradient()
48
+ .setColorGradient(...colours)
49
+ .setMidpoint(10)
50
+ .getColors();
51
+ const getColorGradient = (index, colors) => {
52
+ const start = colors[index % colors.length];
53
+ const end = colors[index % colors.length + 1];
54
+ const gradientIndex = Math.ceil(index / colors.length);
55
+ return getGradients(start, end)[gradientIndex];
56
+ };
57
+ const getColorShade = (index, colors) => {
58
+ const color = colors[index % colors.length];
59
+ const shade = `${Math.abs(100 - Math.ceil(index / colors.length) * 10)}`;
60
+ return ShadeGenerator.hue(color).shade(shade).hex();
61
+ };
62
+ export const getColor = (index, scheme = ColorPalette.categorial) => {
63
+ const colors = palette[scheme];
64
+ return index < colors.length ?
65
+ colors[index]
66
+ : scheme === ColorPalette.categorial
67
+ ? getColorShade(index, colors)
68
+ : getColorGradient(index, colors);
69
+ };
70
+ export const listColor = (_v, index) => getColor(index);
71
+ export const listColorContinuous = (_v, index) => getColor(index, ColorPalette.continuous);
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIsMkRBQVUsQ0FBQTtJQUNWLDJEQUFVLENBQUE7SUFDVix5REFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCO0FBRUQsTUFBTSxPQUFPLEdBRVQsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUN6QixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUN6QixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7SUFDRCxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN4QixTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO1FBQ1QsU0FBUztRQUNULFNBQVM7UUFDVCxTQUFTO0tBQ1Y7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsT0FBaUIsRUFBWSxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUU7S0FDcEUsZ0JBQWdCLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDNUIsV0FBVyxDQUFDLEVBQUUsQ0FBQztLQUNmLFNBQVMsRUFBRSxDQUFDO0FBRWYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFnQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2RCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDakQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO0lBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLE1BQU0sS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekUsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFZLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRTtJQUMxRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsT0FBTyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDYixDQUFDLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxVQUFVO1lBQ2xDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUM5QixDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFJLEVBQUssRUFBRSxLQUFhLEVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFJLEVBQUssRUFBRSxLQUFhLEVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdyYWRpZW50IGZyb20gJ2phdmFzY3JpcHQtY29sb3ItZ3JhZGllbnQnO1xuaW1wb3J0IFNoYWRlR2VuZXJhdG9yIGZyb20gJ3NoYWRlLWdlbmVyYXRvcic7XG5cbmV4cG9ydCBlbnVtIENvbG9yUGFsZXR0ZSB7XG4gIGNhdGVnb3JpYWwsXG4gIGNvbnRpbnVvdXMsXG4gIGRpdmVyZ2VudFxufVxuXG5jb25zdCBwYWxldHRlOiB7XG4gIFtwYWxldHRlIGluIENvbG9yUGFsZXR0ZV06IHN0cmluZ1tdO1xufSA9IE9iamVjdC5mcmVlemUoe1xuICBbQ29sb3JQYWxldHRlLmNhdGVnb3JpYWxdOiBbXG4gICAgJyMxOTM5NTcnLFxuICAgICcjRkZDMDAwJyxcbiAgICAnIzI0OURBNScsXG4gICAgJyNEQzcwMzMnLFxuICAgICcjMzQ5QjNFJyxcbiAgICAnI0NDQTc2RCcsXG4gICAgJyM2Mzk0Q0UnLFxuICAgICcjOUFCMDRDJyxcbiAgICAnIzhCNTBBNycsXG4gICAgJyM4QTU0MDInXG4gIF0sXG4gIFtDb2xvclBhbGV0dGUuY29udGludW91c106IFtcbiAgICAnIzE5Mzk1NycsXG4gICAgJyMxRDU4NkYnLFxuICAgICcjMjA3Nzg4JyxcbiAgICAnIzQ5OEY3OCcsXG4gICAgJyM3RkE1NUInLFxuICAgICcjQjBCNDNCJyxcbiAgICAnI0REQkIxOScsXG4gICAgJyNGRkM1MTQnLFxuICAgICcjRkREODY2JyxcbiAgICAnI0ZDRUJCOCdcbiAgXSxcbiAgW0NvbG9yUGFsZXR0ZS5kaXZlcmdlbnRdOiBbXG4gICAgJyMxOTM5NTcnLFxuICAgICcjMUQ2MTc2JyxcbiAgICAnIzIyOEE5NicsXG4gICAgJyM1OEIzQjUnLFxuICAgICcjQUNENkNGJyxcbiAgICAnI0ZDRUJCOCcsXG4gICAgJyNGQ0UxOEYnLFxuICAgICcjRkRENzYzJyxcbiAgICAnI0ZFQ0MzNCcsXG4gICAgJyNGRkMwMDAnXG4gIF1cbn0pO1xuXG5jb25zdCBnZXRHcmFkaWVudHMgPSAoLi4uY29sb3Vyczogc3RyaW5nW10pOiBzdHJpbmdbXSA9PiBuZXcgR3JhZGllbnQoKVxuICAuc2V0Q29sb3JHcmFkaWVudCguLi5jb2xvdXJzKVxuICAuc2V0TWlkcG9pbnQoMTApXG4gIC5nZXRDb2xvcnMoKTtcblxuY29uc3QgZ2V0Q29sb3JHcmFkaWVudCA9IChpbmRleDogbnVtYmVyLCBjb2xvcnM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gY29sb3JzW2luZGV4ICUgY29sb3JzLmxlbmd0aF07XG4gIGNvbnN0IGVuZCA9IGNvbG9yc1tpbmRleCAlIGNvbG9ycy5sZW5ndGggKyAxXTtcbiAgY29uc3QgZ3JhZGllbnRJbmRleCA9IE1hdGguY2VpbChpbmRleCAvIGNvbG9ycy5sZW5ndGgpO1xuICByZXR1cm4gZ2V0R3JhZGllbnRzKHN0YXJ0LCBlbmQpW2dyYWRpZW50SW5kZXhdO1xufTtcblxuY29uc3QgZ2V0Q29sb3JTaGFkZSA9IChpbmRleDogbnVtYmVyLCBjb2xvcnM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IGNvbG9yID0gY29sb3JzW2luZGV4ICUgY29sb3JzLmxlbmd0aF07XG4gIGNvbnN0IHNoYWRlID0gYCR7TWF0aC5hYnMoMTAwIC0gTWF0aC5jZWlsKGluZGV4IC8gY29sb3JzLmxlbmd0aCkgKiAxMCl9YDtcbiAgcmV0dXJuIFNoYWRlR2VuZXJhdG9yLmh1ZShjb2xvcikuc2hhZGUoc2hhZGUgYXMgYW55KS5oZXgoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xvciA9IChpbmRleDogbnVtYmVyLCBzY2hlbWUgPSBDb2xvclBhbGV0dGUuY2F0ZWdvcmlhbCkgPT4ge1xuICBjb25zdCBjb2xvcnMgPSBwYWxldHRlW3NjaGVtZV07XG4gIHJldHVybiBpbmRleCA8IGNvbG9ycy5sZW5ndGggP1xuICAgIGNvbG9yc1tpbmRleF1cbiAgICA6IHNjaGVtZSA9PT0gQ29sb3JQYWxldHRlLmNhdGVnb3JpYWxcbiAgICAgID8gZ2V0Q29sb3JTaGFkZShpbmRleCwgY29sb3JzKVxuICAgICAgOiBnZXRDb2xvckdyYWRpZW50KGluZGV4LCBjb2xvcnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpc3RDb2xvciA9IDxUPihfdjogVCwgaW5kZXg6IG51bWJlcik6IHN0cmluZyA9PiBnZXRDb2xvcihpbmRleCk7XG5cbmV4cG9ydCBjb25zdCBsaXN0Q29sb3JDb250aW51b3VzID0gPFQ+KF92OiBULCBpbmRleDogbnVtYmVyKTogc3RyaW5nID0+IGdldENvbG9yKGluZGV4LCBDb2xvclBhbGV0dGUuY29udGludW91cyk7XG4iXX0=
@@ -1,7 +1,7 @@
1
- import * as d3 from 'd3';
1
+ import { select as d3Select } from 'd3-selection';
2
2
  export const d3ellipse = (selection, maxWidth, ellipsisStr = '...') => {
3
3
  selection.each(function () {
4
- const t = d3.select(this);
4
+ const t = d3Select(this);
5
5
  if (t.node().getComputedTextLength() > maxWidth) {
6
6
  const chars = t.text().split('');
7
7
  const line = [];
@@ -43,4 +43,4 @@ export const d3wrap = (t, { maxWidth, maxLines, words, nHeight, lHeight, vcentre
43
43
  t.selectAll('tspan').attr('y', yOffset);
44
44
  }
45
45
  };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2QzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixTQUFxRCxFQUNyRCxRQUFnQixFQUNoQixXQUFXLEdBQUcsS0FBSyxFQUNuQixFQUFFO0lBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNiLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxRQUFRLEVBQUU7WUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsR0FBRztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7YUFDckMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsSUFBSSxRQUFRLEVBQUU7U0FDeEQ7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQ3RCLFNBQWtCLEVBQ2xCLGVBQXdCLEVBQ3hCLGFBQXNCLEVBQ3RCLGdCQUF5QixFQUN6QixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxlQUFlLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FDcEIsQ0FBNkMsRUFDN0MsRUFDRSxRQUFRLEVBQ1IsUUFBUSxFQUNSLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE9BQU8sR0FBRyxLQUFLLEVBQ2YsV0FBVyxHQUFHLEVBQUUsRUFTakIsRUFDRCxFQUFFO0lBQ0YsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksSUFBSSxDQUFDO0lBQ1QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksVUFBVSxJQUFJLFFBQVEsRUFBRTtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTNCLDBDQUEwQztRQUMxQyxJQUNFLGVBQWUsQ0FDYixLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxRQUFRLEVBQy9DLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNmLElBQUksS0FBSyxXQUFXLEVBQ3BCLFVBQVUsR0FBRyxRQUFRLENBQ3RCLEVBQ0Q7WUFDQSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNkLEtBQUssR0FBRyxDQUFDO2lCQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ1osSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ1osSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDZjtLQUNGO0lBQ0QsU0FBUyxDQUFRLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBRXhELElBQUksT0FBTyxFQUFFO1FBQ1gsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3pDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuXG5leHBvcnQgY29uc3QgZDNlbGxpcHNlID0gPERhdHVtPihcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIERhdHVtLCBhbnksIGFueT4sXG4gIG1heFdpZHRoOiBudW1iZXIsXG4gIGVsbGlwc2lzU3RyID0gJy4uLidcbikgPT4ge1xuICBzZWxlY3Rpb24uZWFjaChmdW5jdGlvbigpIHtcbiAgICBjb25zdCB0ID0gZDMuc2VsZWN0KHRoaXMpO1xuICAgIGlmICh0Lm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA+IG1heFdpZHRoKSB7XG4gICAgICBjb25zdCBjaGFycyA9IHQudGV4dCgpLnNwbGl0KCcnKTtcbiAgICAgIGNvbnN0IGxpbmUgPSBbXTtcbiAgICAgIGRvIHtcbiAgICAgICAgbGluZS5wdXNoKGNoYXJzLnNoaWZ0KCkpO1xuICAgICAgICB0LnRleHQobGluZS5qb2luKCcnKSArIGVsbGlwc2lzU3RyKTtcbiAgICAgIH0gd2hpbGUgKHQubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpIDw9IG1heFdpZHRoKTtcbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3Qgc2hvdWxkQnJlYWtMaW5lID0gKFxuICBvdmVyZmxvd3M6IGJvb2xlYW4sXG4gIGlzTXVsdGlXb3JkTGluZTogYm9vbGVhbixcbiAgaXNPd25MaW5lV29yZDogYm9vbGVhbixcbiAgaXNVbmRlckxpbmVMaW1pdDogYm9vbGVhblxuKSA9PiAoKG92ZXJmbG93cyAmJiBpc011bHRpV29yZExpbmUpIHx8IGlzT3duTGluZVdvcmQpICYmIGlzVW5kZXJMaW5lTGltaXQ7XG5cbmV4cG9ydCBjb25zdCBkM3dyYXAgPSA8RGF0dW0+KFxuICB0OiBTZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIERhdHVtLCBhbnksIGFueT4sXG4gIHtcbiAgICBtYXhXaWR0aCxcbiAgICBtYXhMaW5lcyxcbiAgICB3b3JkcyxcbiAgICBuSGVpZ2h0LFxuICAgIGxIZWlnaHQsXG4gICAgdmNlbnRyZSA9IGZhbHNlLFxuICAgIG93bkxpbmVXb3JkID0gJydcbiAgfToge1xuICAgIG1heFdpZHRoOiBudW1iZXI7XG4gICAgbWF4TGluZXM6IG51bWJlcjtcbiAgICB3b3Jkczogc3RyaW5nW107XG4gICAgbkhlaWdodDogbnVtYmVyO1xuICAgIGxIZWlnaHQ6IG51bWJlcjtcbiAgICB2Y2VudHJlPzogYm9vbGVhbjtcbiAgICBvd25MaW5lV29yZD86IHN0cmluZztcbiAgfVxuKSA9PiB7XG4gIHdvcmRzID0gd29yZHMucmV2ZXJzZSgpO1xuICBjb25zdCB5ID0gdC5hdHRyKCd5Jyk7XG4gIGNvbnN0IHggPSB0LmF0dHIoJ3gnKTtcbiAgbGV0IGxpbmVOdW1iZXIgPSAxO1xuICBsZXQgd29yZDtcbiAgbGV0IGxpbmUgPSBbXTtcbiAgbGV0IHRzcGFuID0gdC50ZXh0KG51bGwpLmFwcGVuZCgndHNwYW4nKS5hdHRyKCd4JywgeCkuYXR0cigneScsIHkpO1xuXG4gIHdoaWxlICgod29yZCA9IHdvcmRzLnBvcCgpKSAmJiBsaW5lTnVtYmVyIDw9IG1heExpbmVzKSB7XG4gICAgbGluZS5wdXNoKHdvcmQpO1xuICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuXG4gICAgLy8gVE9ETzogaHlwaGVuYXRlIHdvcmRzIHRoYXQgYXJlIHRvbyBsb25nXG4gICAgaWYgKFxuICAgICAgc2hvdWxkQnJlYWtMaW5lKFxuICAgICAgICB0c3Bhbi5ub2RlKCkuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPiBtYXhXaWR0aCxcbiAgICAgICAgbGluZS5sZW5ndGggPiAxLFxuICAgICAgICB3b3JkID09PSBvd25MaW5lV29yZCxcbiAgICAgICAgbGluZU51bWJlciA8IG1heExpbmVzXG4gICAgICApXG4gICAgKSB7XG4gICAgICBsaW5lLnBvcCgpO1xuICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oJyAnKSk7XG4gICAgICBsaW5lID0gW3dvcmRdO1xuICAgICAgdHNwYW4gPSB0XG4gICAgICAgIC5hcHBlbmQoJ3RzcGFuJylcbiAgICAgICAgLmF0dHIoJ3gnLCB4KVxuICAgICAgICAuYXR0cigneScsIHkpXG4gICAgICAgIC5hdHRyKCdkeScsIGxpbmVOdW1iZXIrKyAqIGxIZWlnaHQgKyAncHgnKVxuICAgICAgICAudGV4dCh3b3JkKTtcbiAgICB9XG4gIH1cbiAgZDNlbGxpcHNlPERhdHVtPih0c3BhbiwgbWF4V2lkdGgsICcuLi4gJyArIG93bkxpbmVXb3JkKTtcblxuICBpZiAodmNlbnRyZSkge1xuICAgIGNvbnN0IHlPZmZzZXQgPSBuSGVpZ2h0IC8gMiAtICh0LnNlbGVjdEFsbCgndHNwYW4nKS5zaXplKCkgLSAxKSAqIChsSGVpZ2h0IC8gMik7XG4gICAgdC5zZWxlY3RBbGwoJ3RzcGFuJykuYXR0cigneScsIHlPZmZzZXQpO1xuICB9XG59O1xuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2QzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxNQUFNLElBQUksUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixTQUFxRCxFQUNyRCxRQUFnQixFQUNoQixXQUFXLEdBQUcsS0FBSyxFQUNuQixFQUFFO0lBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNiLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLFFBQVEsRUFBRTtZQUMvQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixHQUFHO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQzthQUNyQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLFFBQVEsRUFBRTtTQUN4RDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsU0FBa0IsRUFDbEIsZUFBd0IsRUFDeEIsYUFBc0IsRUFDdEIsZ0JBQXlCLEVBQ3pCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLGVBQWUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUNwQixDQUE2QyxFQUM3QyxFQUNFLFFBQVEsRUFDUixRQUFRLEVBQ1IsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsT0FBTyxHQUFHLEtBQUssRUFDZixXQUFXLEdBQUcsRUFBRSxFQVNqQixFQUNELEVBQUU7SUFDRixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxJQUFJLENBQUM7SUFDVCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkUsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxVQUFVLElBQUksUUFBUSxFQUFFO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0IsMENBQTBDO1FBQzFDLElBQ0UsZUFBZSxDQUNiLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLFFBQVEsRUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2YsSUFBSSxLQUFLLFdBQVcsRUFDcEIsVUFBVSxHQUFHLFFBQVEsQ0FDdEIsRUFDRDtZQUNBLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsS0FBSyxHQUFHLENBQUM7aUJBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQztpQkFDZixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDWixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDWixJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNmO0tBQ0Y7SUFDRCxTQUFTLENBQVEsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFFeEQsSUFBSSxPQUFPLEVBQUU7UUFDWCxNQUFNLE9BQU8sR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb24sIHNlbGVjdCBhcyBkM1NlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBkM2VsbGlwc2UgPSA8RGF0dW0+KFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbjxTVkdUZXh0RWxlbWVudCwgRGF0dW0sIGFueSwgYW55PixcbiAgbWF4V2lkdGg6IG51bWJlcixcbiAgZWxsaXBzaXNTdHIgPSAnLi4uJ1xuKSA9PiB7XG4gIHNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHQgPSBkM1NlbGVjdCh0aGlzKTtcbiAgICBpZiAodC5ub2RlKCkuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPiBtYXhXaWR0aCkge1xuICAgICAgY29uc3QgY2hhcnMgPSB0LnRleHQoKS5zcGxpdCgnJyk7XG4gICAgICBjb25zdCBsaW5lID0gW107XG4gICAgICBkbyB7XG4gICAgICAgIGxpbmUucHVzaChjaGFycy5zaGlmdCgpKTtcbiAgICAgICAgdC50ZXh0KGxpbmUuam9pbignJykgKyBlbGxpcHNpc1N0cik7XG4gICAgICB9IHdoaWxlICh0Lm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA8PSBtYXhXaWR0aCk7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHNob3VsZEJyZWFrTGluZSA9IChcbiAgb3ZlcmZsb3dzOiBib29sZWFuLFxuICBpc011bHRpV29yZExpbmU6IGJvb2xlYW4sXG4gIGlzT3duTGluZVdvcmQ6IGJvb2xlYW4sXG4gIGlzVW5kZXJMaW5lTGltaXQ6IGJvb2xlYW5cbikgPT4gKChvdmVyZmxvd3MgJiYgaXNNdWx0aVdvcmRMaW5lKSB8fCBpc093bkxpbmVXb3JkKSAmJiBpc1VuZGVyTGluZUxpbWl0O1xuXG5leHBvcnQgY29uc3QgZDN3cmFwID0gPERhdHVtPihcbiAgdDogU2VsZWN0aW9uPFNWR1RleHRFbGVtZW50LCBEYXR1bSwgYW55LCBhbnk+LFxuICB7XG4gICAgbWF4V2lkdGgsXG4gICAgbWF4TGluZXMsXG4gICAgd29yZHMsXG4gICAgbkhlaWdodCxcbiAgICBsSGVpZ2h0LFxuICAgIHZjZW50cmUgPSBmYWxzZSxcbiAgICBvd25MaW5lV29yZCA9ICcnXG4gIH06IHtcbiAgICBtYXhXaWR0aDogbnVtYmVyO1xuICAgIG1heExpbmVzOiBudW1iZXI7XG4gICAgd29yZHM6IHN0cmluZ1tdO1xuICAgIG5IZWlnaHQ6IG51bWJlcjtcbiAgICBsSGVpZ2h0OiBudW1iZXI7XG4gICAgdmNlbnRyZT86IGJvb2xlYW47XG4gICAgb3duTGluZVdvcmQ/OiBzdHJpbmc7XG4gIH1cbikgPT4ge1xuICB3b3JkcyA9IHdvcmRzLnJldmVyc2UoKTtcbiAgY29uc3QgeSA9IHQuYXR0cigneScpO1xuICBjb25zdCB4ID0gdC5hdHRyKCd4Jyk7XG4gIGxldCBsaW5lTnVtYmVyID0gMTtcbiAgbGV0IHdvcmQ7XG4gIGxldCBsaW5lID0gW107XG4gIGxldCB0c3BhbiA9IHQudGV4dChudWxsKS5hcHBlbmQoJ3RzcGFuJykuYXR0cigneCcsIHgpLmF0dHIoJ3knLCB5KTtcblxuICB3aGlsZSAoKHdvcmQgPSB3b3Jkcy5wb3AoKSkgJiYgbGluZU51bWJlciA8PSBtYXhMaW5lcykge1xuICAgIGxpbmUucHVzaCh3b3JkKTtcbiAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcblxuICAgIC8vIFRPRE86IGh5cGhlbmF0ZSB3b3JkcyB0aGF0IGFyZSB0b28gbG9uZ1xuICAgIGlmIChcbiAgICAgIHNob3VsZEJyZWFrTGluZShcbiAgICAgICAgdHNwYW4ubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpID4gbWF4V2lkdGgsXG4gICAgICAgIGxpbmUubGVuZ3RoID4gMSxcbiAgICAgICAgd29yZCA9PT0gb3duTGluZVdvcmQsXG4gICAgICAgIGxpbmVOdW1iZXIgPCBtYXhMaW5lc1xuICAgICAgKVxuICAgICkge1xuICAgICAgbGluZS5wb3AoKTtcbiAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgbGluZSA9IFt3b3JkXTtcbiAgICAgIHRzcGFuID0gdFxuICAgICAgICAuYXBwZW5kKCd0c3BhbicpXG4gICAgICAgIC5hdHRyKCd4JywgeClcbiAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAuYXR0cignZHknLCBsaW5lTnVtYmVyKysgKiBsSGVpZ2h0ICsgJ3B4JylcbiAgICAgICAgLnRleHQod29yZCk7XG4gICAgfVxuICB9XG4gIGQzZWxsaXBzZTxEYXR1bT4odHNwYW4sIG1heFdpZHRoLCAnLi4uICcgKyBvd25MaW5lV29yZCk7XG5cbiAgaWYgKHZjZW50cmUpIHtcbiAgICBjb25zdCB5T2Zmc2V0ID0gbkhlaWdodCAvIDIgLSAodC5zZWxlY3RBbGwoJ3RzcGFuJykuc2l6ZSgpIC0gMSkgKiAobEhlaWdodCAvIDIpO1xuICAgIHQuc2VsZWN0QWxsKCd0c3BhbicpLmF0dHIoJ3knLCB5T2Zmc2V0KTtcbiAgfVxufTtcbiJdfQ==
@@ -1,3 +1,4 @@
1
+ export * from './color';
1
2
  export * from './common.light.module';
2
3
  export * from './common.module';
3
4
  export * from './common.service';
@@ -41,4 +42,4 @@ export { PrecisionPipe } from './precision.pipe';
41
42
  export { TagsInputDirective } from './tags-input.directive';
42
43
  export { TimesPipe } from './times.pipe';
43
44
  export { SortByPipe } from './sort-by.pipe';
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDNUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9uLmxpZ2h0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvdW5kJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2QzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVsdGEtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwcy11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdXJhbGl6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHsgQmxhbmtOb2RlU3RhdGVDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQmxhbmtOb2RlU3RhdGVOb3RpY2VDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtc3RhdGUtbm90aWNlL2JsYW5rLW5vZGUtc3RhdGUtbm90aWNlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVWYWx1ZURlbHRhQ29tcG9uZW50IH0gZnJvbSAnLi9ibGFuay1ub2RlLXZhbHVlLWRlbHRhL2JsYW5rLW5vZGUtdmFsdWUtZGVsdGEuY29tcG9uZW50JztcbmV4cG9ydCB7IENsaXBib2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2xpcGJvYXJkL2NsaXBib2FyZC5jb21wb25lbnQnO1xuZXhwb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCB7IElzc3VlQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vaXNzdWUtY29uZmlybS9pc3N1ZS1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBMaW5rS2V5VmFsdWVDb21wb25lbnQgfSBmcm9tICcuL2xpbmsta2V5LXZhbHVlL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBNYXBzRHJhd2luZ0NvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL21hcHMtZHJhd2luZy1jb25maXJtL21hcHMtZHJhd2luZy1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNvbmZpcm0vcG9wb3Zlci1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTY2hlbWFWZXJzaW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4vc2NoZW1hLXZlcnNpb24tbGluay9zY2hlbWEtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa2VsZXRvblRleHRDb21wb25lbnQgfSBmcm9tICcuL3NrZWxldG9uLXRleHQvc2tlbGV0b24tdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU29jaWFsVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vc29jaWFsLXRhZ3Mvc29jaWFsLXRhZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi90b2FzdC90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgVW5pdENvbnZlcnRlckNvbXBvbmVudCB9IGZyb20gJy4vdW5pdC1jb252ZXJ0ZXIvdW5pdC1jb252ZXJ0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IEFwcGx5UHVyZVBpcGUgfSBmcm9tICcuL2FwcGx5LXB1cmUucGlwZSc7XG5leHBvcnQgeyBCaW5kT25jZURpcmVjdGl2ZSB9IGZyb20gJy4vYmluZC1vbmNlLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcbmV4cG9ydCB7IENvbXBvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb3VuZC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ29tcG91bmRQaXBlIH0gZnJvbSAnLi9jb21wb3VuZC5waXBlJztcbmV4cG9ydCB7IERlZmF1bHRQaXBlIH0gZnJvbSAnLi9kZWZhdWx0LnBpcGUnO1xuZXhwb3J0IHsgRWxsaXBzaXNQaXBlIH0gZnJvbSAnLi9lbGxpcHNpcy5waXBlJztcbmV4cG9ydCB7IEdldFBpcGUgfSBmcm9tICcuL2dldC5waXBlJztcbmV4cG9ydCB7IElzQXJyYXlQaXBlIH0gZnJvbSAnLi9pcy1hcnJheS5waXBlJztcbmV4cG9ydCB7IElzT2JqZWN0UGlwZSB9IGZyb20gJy4vaXMtb2JqZWN0LnBpcGUnO1xuZXhwb3J0IHsgS2V5VG9MYWJlbFBpcGUgfSBmcm9tICcuL2tleS10by1sYWJlbC5waXBlJztcbmV4cG9ydCB7IEtleXNQaXBlIH0gZnJvbSAnLi9rZXlzLnBpcGUnO1xuZXhwb3J0IHsgUGx1cmFsaXplUGlwZSB9IGZyb20gJy4vcGx1cmFsaXplLnBpcGUnO1xuZXhwb3J0IHsgUHJlY2lzaW9uUGlwZSB9IGZyb20gJy4vcHJlY2lzaW9uLnBpcGUnO1xuZXhwb3J0IHsgVGFnc0lucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi90YWdzLWlucHV0LmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBUaW1lc1BpcGUgfSBmcm9tICcuL3RpbWVzLnBpcGUnO1xuZXhwb3J0IHsgU29ydEJ5UGlwZSB9IGZyb20gJy4vc29ydC1ieS5waXBlJztcbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDNUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sb3InO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24ubGlnaHQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG91bmQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZDMtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWx0YS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ3MtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1cmFsaXplJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UvYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UuY29tcG9uZW50JztcbmV4cG9ydCB7IEJsYW5rTm9kZVZhbHVlRGVsdGFDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtdmFsdWUtZGVsdGEvYmxhbmstbm9kZS12YWx1ZS1kZWx0YS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2xpcGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jbGlwYm9hcmQvY2xpcGJvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgSXNzdWVDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9pc3N1ZS1jb25maXJtL2lzc3VlLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IExpbmtLZXlWYWx1ZUNvbXBvbmVudCB9IGZyb20gJy4vbGluay1rZXktdmFsdWUvbGluay1rZXktdmFsdWUuY29tcG9uZW50JztcbmV4cG9ydCB7IE1hcHNEcmF3aW5nQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vbWFwcy1kcmF3aW5nLWNvbmZpcm0vbWFwcy1kcmF3aW5nLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUG9wb3ZlckNvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29uZmlybS9wb3BvdmVyLWNvbmZpcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFNjaGVtYVZlcnNpb25MaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlbWEtdmVyc2lvbi1saW5rL3NjaGVtYS12ZXJzaW9uLWxpbmsuY29tcG9uZW50JztcbmV4cG9ydCB7IFNrZWxldG9uVGV4dENvbXBvbmVudCB9IGZyb20gJy4vc2tlbGV0b24tdGV4dC9za2VsZXRvbi10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBTb2NpYWxUYWdzQ29tcG9uZW50IH0gZnJvbSAnLi9zb2NpYWwtdGFncy9zb2NpYWwtdGFncy5jb21wb25lbnQnO1xuZXhwb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBVbml0Q29udmVydGVyQ29tcG9uZW50IH0gZnJvbSAnLi91bml0LWNvbnZlcnRlci91bml0LWNvbnZlcnRlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQXBwbHlQdXJlUGlwZSB9IGZyb20gJy4vYXBwbHktcHVyZS5waXBlJztcbmV4cG9ydCB7IEJpbmRPbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9iaW5kLW9uY2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4vY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ29tcG91bmREaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvdW5kLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBDb21wb3VuZFBpcGUgfSBmcm9tICcuL2NvbXBvdW5kLnBpcGUnO1xuZXhwb3J0IHsgRGVmYXVsdFBpcGUgfSBmcm9tICcuL2RlZmF1bHQucGlwZSc7XG5leHBvcnQgeyBFbGxpcHNpc1BpcGUgfSBmcm9tICcuL2VsbGlwc2lzLnBpcGUnO1xuZXhwb3J0IHsgR2V0UGlwZSB9IGZyb20gJy4vZ2V0LnBpcGUnO1xuZXhwb3J0IHsgSXNBcnJheVBpcGUgfSBmcm9tICcuL2lzLWFycmF5LnBpcGUnO1xuZXhwb3J0IHsgSXNPYmplY3RQaXBlIH0gZnJvbSAnLi9pcy1vYmplY3QucGlwZSc7XG5leHBvcnQgeyBLZXlUb0xhYmVsUGlwZSB9IGZyb20gJy4va2V5LXRvLWxhYmVsLnBpcGUnO1xuZXhwb3J0IHsgS2V5c1BpcGUgfSBmcm9tICcuL2tleXMucGlwZSc7XG5leHBvcnQgeyBQbHVyYWxpemVQaXBlIH0gZnJvbSAnLi9wbHVyYWxpemUucGlwZSc7XG5leHBvcnQgeyBQcmVjaXNpb25QaXBlIH0gZnJvbSAnLi9wcmVjaXNpb24ucGlwZSc7XG5leHBvcnQgeyBUYWdzSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL3RhZ3MtaW5wdXQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFRpbWVzUGlwZSB9IGZyb20gJy4vdGltZXMucGlwZSc7XG5leHBvcnQgeyBTb3J0QnlQaXBlIH0gZnJvbSAnLi9zb3J0LWJ5LnBpcGUnO1xuIl19
@@ -1,5 +1,4 @@
1
1
  import get from 'lodash.get';
2
- import { getColor } from 'random-material-color';
3
2
  import { SchemaType } from '@hestia-earth/schema';
4
3
  import { fileToExt } from '@hestia-earth/api';
5
4
  export const gitHome = 'https://gitlab.com/hestia-earth';
@@ -71,8 +70,6 @@ const nodeDefaultLabel = {
71
70
  [SchemaType.Transformation]: ({ term: { name } }) => name
72
71
  };
73
72
  export const defaultLabel = (node) => node ? (node['@type'] in nodeDefaultLabel ? nodeDefaultLabel[node['@type']](node) : node.name) || node['@id'] || node.id : '';
74
- export const itemColor = (index) => getColor({ text: `${index}` });
75
- export const listColor = (_v, index) => itemColor(index);
76
73
  export const repeat = (times = 0) => (Array.from(Array(times), Math.random));
77
74
  export const filenameWithoutExt = (filename = '') => {
78
75
  const file = fileToExt(filename, '');
@@ -96,4 +93,4 @@ export var Template;
96
93
  Template["bug"] = "bug";
97
94
  Template["feature"] = "feature";
98
95
  })(Template || (Template = {}));
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUF3QyxVQUFVLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDeEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxpQ0FBaUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcscUNBQXFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUU5RyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsOEJBQThCLENBQUMsQ0FBQztJQUNoQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLDBCQUEw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QVEsUUFHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IHsgZ2V0Q29sb3IgfSBmcm9tICdyYW5kb20tbWF0ZXJpYWwtY29sb3InO1xuaW1wb3J0IHsgSVNpdGVKU09OTEQsIElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBTY2hlbWFUeXBlLCBUcmFuc2Zvcm1hdGlvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGZpbGVUb0V4dCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcblxuZXhwb3J0IGNvbnN0IGdpdEhvbWUgPSAnaHR0cHM6Ly9naXRsYWIuY29tL2hlc3RpYS1lYXJ0aCc7XG5leHBvcnQgY29uc3QgZ2l0UmF3QmFzZVVybCA9ICdodHRwczovL2dsLmdpdGhhY2suY29tL2hlc3RpYS1lYXJ0aCc7XG5leHBvcnQgY29uc3QgZ2l0QnJhbmNoID0gKCkgPT4gWydkZXYnLCAnc3RhZ2luZyddLnNvbWUoZW52ID0+IGJhc2VVcmwoKS5pbmNsdWRlcyhlbnYpKSA/ICdkZXZlbG9wJyA6ICdtYXN0ZXInO1xuXG5leHBvcnQgY29uc3QgaXNDaHJvbWUgPSAoKSA9PiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmNsdWRlcygnQ2hyb21lJyk7XG5cbmV4cG9ydCBjb25zdCBiYXNlVXJsID0gKCkgPT5cbiAgd2luZG93LmxvY2F0aW9uLm9yaWdpbj8uaW5jbHVkZXMoJ2xvY2FsaG9zdCcpID9cbiAgICAnaHR0cHM6Ly93d3ctZGV2Lmhlc3RpYS5lYXJ0aCcgOlxuICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4/LmluY2x1ZGVzKCdoZXN0aWEuZWFydGgnKSA/XG4gICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luIDpcbiAgICAgICdodHRwczovL3d3dy5oZXN0aWEuZWFydGgnO1xuXG5leHBvcnQgY29uc3QgaXNFeHRlcm5hbCA9ICgpID0+IGJhc2VVcmwoKSAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblxuY29uc3QgcGFyc2VFcnJvclN0YXR1cyA9IChlcnJvcjogYW55KSA9PiAoZXJyb3I/LnN0YXR1c1RleHQgfHwgJycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICctJyk7XG5cbmNvbnN0IHBhcnNlRXJyb3JNZXNzYWdlID0gKGVycm9yOiBhbnkpID0+XG4gIGdldChlcnJvciwgJ2Vycm9yLmVycm9yJywgZ2V0KGVycm9yLCAnZXJyb3IubWVzc2FnZScsIGdldChlcnJvciwgJ2Vycm9yJywgZ2V0KGVycm9yLCAnbWVzc2FnZScsIGVycm9yKSkpKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUFQSUVycm9yID0gKGVycm9yOiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBlcnJvciA9IHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgfVxuICBjYXRjaCAoXykgeyB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGVycm9yVGV4dCA9IChlcnJvcjogYW55KTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgY29uc3QgZXJyID0gcGFyc2VFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICByZXR1cm4gcGFyc2VFcnJvclN0YXR1cyhlcnIpIHx8IGVycjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJQYXJhbXMgPSAob2JqOiBhbnkpID0+IHtcbiAgY29uc3QgcmVzOiB7XG4gICAgW3g6IHN0cmluZ106IHN0cmluZztcbiAgfSA9IHt9O1xuICBPYmplY3Qua2V5cyhvYmopLnNvcnQoKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBvYmpba2V5XTtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXNba2V5XSA9IGAke3ZhbHVlfWA7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCB3YWl0Rm9yID0gKHZhcmlhYmxlOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PlxuICBnZXQod2luZG93LCB2YXJpYWJsZSwgZmFsc2UpID8gY2FsbGJhY2soKSA6IHNldFRpbWVvdXQoKCkgPT4gd2FpdEZvcih2YXJpYWJsZSwgY2FsbGJhY2spLCAxMDApO1xuXG5leHBvcnQgY29uc3QgYm90dG9tID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG5leHBvcnQgY29uc3QgaXNTY3JvbGxlZEJlbG93ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBlbGVtZW50ID8gd2luZG93LnNjcm9sbFkgPiBib3R0b20oZWxlbWVudCkgOiBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvRWwgPSAoaWQ6IHN0cmluZywgcmV0cmllcyA9IDApID0+IHtcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gIHNldFRpbWVvdXQoKCkgPT4gZWwgPyBlbC5zY3JvbGxJbnRvVmlldygpIDogKHJldHJpZXMgPCAxMCA/IHNjcm9sbFRvRWwoaWQsIHJldHJpZXMgKyAxKSA6IG51bGwpLCAxMDApO1xufTtcblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvcCA9ICgpID0+IHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcblxuZXhwb3J0IGNvbnN0IHNhZmVKU09OUGFyc2UgPSA8VD4odmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHZhbHVlKSBhcyBUIDogdmFsdWU7XG4gIH1cbiAgY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzYWZlSlNPTlN0cmluZ2lmeSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5cbmV4cG9ydCBjb25zdCBhcnJheVZhbHVlID0gKHZhbHVlczogYW55W10sIGlzQXZlcmFnZTogYm9vbGVhbikgPT5cbiAgKHZhbHVlcyB8fCBbXSkucmVkdWNlKChwcmV2OiBudW1iZXIsIGN1cnIpID0+IHByZXYgKyBwYXJzZUZsb2F0KGAke2N1cnJ9YCksIDApIC8gKGlzQXZlcmFnZSA/IHZhbHVlcy5sZW5ndGggOiAxKTtcblxuZXhwb3J0IGNvbnN0IGVsbGlwc2lzID0gKHRleHQgPSAnJywgbWF4bGVuZ3RoID0gMjApID0+XG4gIHRleHQubGVuZ3RoID4gbWF4bGVuZ3RoID8gYCR7dGV4dC5zdWJzdHJpbmcoMCwgbWF4bGVuZ3RoKX0uLi5gIDogdGV4dDtcblxuY29uc3QgbWFwc1F1ZXJ5ID0gJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9zZWFyY2gvP2FwaT0xJnF1ZXJ5PSc7XG5cbmV4cG9ydCBjb25zdCBtYXBzVXJsID0gKGxvY2F0aW9uPzogeyBsYXQ/OiBudW1iZXI7IGxuZz86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9KSA9PlxuICBsb2NhdGlvbiA/IChcbiAgICBsb2NhdGlvbi5sYXQgJiYgbG9jYXRpb24ubG5nID9cbiAgICAgIGAke21hcHNRdWVyeX0ke2xvY2F0aW9uLmxhdH0sJHtsb2NhdGlvbi5sbmd9YCA6XG4gICAgICAobG9jYXRpb24ubmFtZSA/IGAke21hcHNRdWVyeX0ke2VuY29kZVVSSShsb2NhdGlvbi5uYW1lKX1gIDogdW5kZWZpbmVkKVxuICApIDogdW5kZWZpbmVkO1xuXG5jb25zdCBub2RlRGVmYXVsdExhYmVsOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGVdPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xufSA9IHtcbiAgW1NjaGVtYVR5cGUuSW1wYWN0QXNzZXNzbWVudF06ICh7IG5hbWUsIGNvdW50cnksIGVuZERhdGUsIHByb2R1Y3QgfTogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gICAgbmFtZSA/IG5hbWUucmVwbGFjZShgJHtwcm9kdWN0Py5uYW1lfSwgYCwgJycpIDogW1xuICAgICAgcHJvZHVjdD8ubmFtZSxcbiAgICAgIGNvdW50cnk/Lm5hbWUsXG4gICAgICBlbmREYXRlXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKSxcbiAgW1NjaGVtYVR5cGUuU2l0ZV06ICh7IG5hbWUsIGRlc2NyaXB0aW9uIH06IElTaXRlSlNPTkxEKSA9PiBuYW1lIHx8IGRlc2NyaXB0aW9uISxcbiAgW1NjaGVtYVR5cGUuVHJhbnNmb3JtYXRpb25dOiAoeyB0ZXJtOiB7IG5hbWUgfSB9OiBUcmFuc2Zvcm1hdGlvbikgPT4gbmFtZVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMYWJlbCA9IChub2RlPzogYW55KSA9PlxuICBub2RlID8gKFxuICAgIG5vZGVbJ0B0eXBlJ10gaW4gbm9kZURlZmF1bHRMYWJlbCA/IG5vZGVEZWZhdWx0TGFiZWxbbm9kZVsnQHR5cGUnXV0obm9kZSkgOiBub2RlLm5hbWVcbiAgKSB8fCBub2RlWydAaWQnXSB8fCBub2RlLmlkIDogJyc7XG5cbmV4cG9ydCBjb25zdCBpdGVtQ29sb3IgPSAoaW5kZXg6IG51bWJlcikgPT4gZ2V0Q29sb3IoeyB0ZXh0OiBgJHtpbmRleH1gIH0pO1xuXG5leHBvcnQgY29uc3QgbGlzdENvbG9yID0gPFQ+KF92OiBULCBpbmRleDogbnVtYmVyKTogc3RyaW5nID0+IGl0ZW1Db2xvcihpbmRleCk7XG5cbmV4cG9ydCBjb25zdCByZXBlYXQgPSAodGltZXMgPSAwKSA9PiAoQXJyYXkuZnJvbShBcnJheSh0aW1lcyksIE1hdGgucmFuZG9tKSk7XG5cbmV4cG9ydCBjb25zdCBmaWxlbmFtZVdpdGhvdXRFeHQgPSAoZmlsZW5hbWUgPSAnJykgPT4ge1xuICBjb25zdCBmaWxlID0gZmlsZVRvRXh0KGZpbGVuYW1lLCAnJyk7XG4gIC8vIHJlbW92ZSBsYXN0IC5cbiAgcmV0dXJuIGZpbGUuZW5kc1dpdGgoJy4nKSA/IGZpbGUuc3Vic3RyaW5nKDAsIGZpbGUubGVuZ3RoIC0gMSkgOiBmaWxlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlPYmplY3QgPSAoZGF0YT86IGFueSkgPT4gZGF0YSA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpIDogbnVsbDtcblxuZXhwb3J0IGNvbnN0IGlzRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKTtcblxuZXhwb3J0IGVudW0gUmVwb3NpdG9yeSB7XG4gIGZyb250ZW5kID0gJ2hlc3RpYS1mcm9udC1lbmQnLFxuICBnbG9zc2FyeSA9ICdoZXN0aWEtZ2xvc3NhcnknLFxuICBtb2RlbHMgPSAnaGVzdGlhLWVuZ2luZS1tb2RlbHMnLFxuICBvcmNoZXN0cmF0b3IgPSAnaGVzdGlhLWVuZ2luZS1vcmNoZXN0cmF0b3InLFxuICBhZ2dyZWdhdGlvbiA9ICdoZXN0aWEtYWdncmVnYXRpb24tZW5naW5lJyxcbiAgY29tbXVuaXR5ID0gJ2hlc3RpYS1jb21tdW5pdHktZWRpdGlvbicsXG4gIHBvb3JlbmVtZWNrID0gJ2hlc3RpYS1jb252ZXJ0LXBvb3JlLW5lbWVjZWsnXG59XG5cbmV4cG9ydCBlbnVtIFRlbXBsYXRlIHtcbiAgYnVnID0gJ2J1ZycsXG4gIGZlYXR1cmUgPSAnZmVhdHVyZSdcbn1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQXdDLFVBQVUsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGlDQUFpQyxDQUFDO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxxQ0FBcUMsQ0FBQztBQUNuRSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3Qyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsMEJBQTBCLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcs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TSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFekYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRW5GLE1BQU0sQ0FBTixJQUFZLFVBUVg7QUFSRCxXQUFZLFVBQVU7SUFDcEIsMkNBQTZCLENBQUE7SUFDN0IsMENBQTRCLENBQUE7SUFDNUIsNkNBQStCLENBQUE7SUFDL0IseURBQTJDLENBQUE7SUFDM0MsdURBQXlDLENBQUE7SUFDekMsb0RBQXNDLENBQUE7SUFDdEMsMERBQTRDLENBQUE7QUFDOUMsQ0FBQyxFQVJXLFVBQVUsS0FBVixVQUFVLFFBUXJCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFHWDtBQUhELFdBQVksUUFBUTtJQUNsQix1QkFBVyxDQUFBO0lBQ1gsK0JBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCB7IElTaXRlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgU2NoZW1hVHlwZSwgVHJhbnNmb3JtYXRpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBmaWxlVG9FeHQgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5cbmV4cG9ydCBjb25zdCBnaXRIb21lID0gJ2h0dHBzOi8vZ2l0bGFiLmNvbS9oZXN0aWEtZWFydGgnO1xuZXhwb3J0IGNvbnN0IGdpdFJhd0Jhc2VVcmwgPSAnaHR0cHM6Ly9nbC5naXRoYWNrLmNvbS9oZXN0aWEtZWFydGgnO1xuZXhwb3J0IGNvbnN0IGdpdEJyYW5jaCA9ICgpID0+IFsnZGV2JywgJ3N0YWdpbmcnXS5zb21lKGVudiA9PiBiYXNlVXJsKCkuaW5jbHVkZXMoZW52KSkgPyAnZGV2ZWxvcCcgOiAnbWFzdGVyJztcblxuZXhwb3J0IGNvbnN0IGlzQ2hyb21lID0gKCkgPT4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0Nocm9tZScpO1xuXG5leHBvcnQgY29uc3QgYmFzZVVybCA9ICgpID0+XG4gIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4/LmluY2x1ZGVzKCdsb2NhbGhvc3QnKSA/XG4gICAgJ2h0dHBzOi8vd3d3LWRldi5oZXN0aWEuZWFydGgnIDpcbiAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luPy5pbmNsdWRlcygnaGVzdGlhLmVhcnRoJykgP1xuICAgICAgd2luZG93LmxvY2F0aW9uLm9yaWdpbiA6XG4gICAgICAnaHR0cHM6Ly93d3cuaGVzdGlhLmVhcnRoJztcblxuZXhwb3J0IGNvbnN0IGlzRXh0ZXJuYWwgPSAoKSA9PiBiYXNlVXJsKCkgIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG5cbmNvbnN0IHBhcnNlRXJyb3JTdGF0dXMgPSAoZXJyb3I6IGFueSkgPT4gKGVycm9yPy5zdGF0dXNUZXh0IHx8ICcnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccy9nLCAnLScpO1xuXG5jb25zdCBwYXJzZUVycm9yTWVzc2FnZSA9IChlcnJvcjogYW55KSA9PlxuICBnZXQoZXJyb3IsICdlcnJvci5lcnJvcicsIGdldChlcnJvciwgJ2Vycm9yLm1lc3NhZ2UnLCBnZXQoZXJyb3IsICdlcnJvcicsIGdldChlcnJvciwgJ21lc3NhZ2UnLCBlcnJvcikpKSk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVBUElFcnJvciA9IChlcnJvcjogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgZXJyb3IgPSBwYXJzZUVycm9yTWVzc2FnZShlcnJvcik7XG4gIH1cbiAgY2F0Y2ggKF8pIHsgfVxuICB0aHJvdyBlcnJvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBlcnJvclRleHQgPSAoZXJyb3I6IGFueSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGNvbnN0IGVyciA9IHBhcnNlRXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgcmV0dXJuIHBhcnNlRXJyb3JTdGF0dXMoZXJyKSB8fCBlcnI7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyUGFyYW1zID0gKG9iajogYW55KSA9PiB7XG4gIGNvbnN0IHJlczoge1xuICAgIFt4OiBzdHJpbmddOiBzdHJpbmc7XG4gIH0gPSB7fTtcbiAgT2JqZWN0LmtleXMob2JqKS5zb3J0KCkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmVzW2tleV0gPSBgJHt2YWx1ZX1gO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3Qgd2FpdEZvciA9ICh2YXJpYWJsZTogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCkgPT5cbiAgZ2V0KHdpbmRvdywgdmFyaWFibGUsIGZhbHNlKSA/IGNhbGxiYWNrKCkgOiBzZXRUaW1lb3V0KCgpID0+IHdhaXRGb3IodmFyaWFibGUsIGNhbGxiYWNrKSwgMTAwKTtcblxuZXhwb3J0IGNvbnN0IGJvdHRvbSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuZXhwb3J0IGNvbnN0IGlzU2Nyb2xsZWRCZWxvdyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gZWxlbWVudCA/IHdpbmRvdy5zY3JvbGxZID4gYm90dG9tKGVsZW1lbnQpIDogZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb0VsID0gKGlkOiBzdHJpbmcsIHJldHJpZXMgPSAwKSA9PiB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICBzZXRUaW1lb3V0KCgpID0+IGVsID8gZWwuc2Nyb2xsSW50b1ZpZXcoKSA6IChyZXRyaWVzIDwgMTAgPyBzY3JvbGxUb0VsKGlkLCByZXRyaWVzICsgMSkgOiBudWxsKSwgMTAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbmV4cG9ydCBjb25zdCBzYWZlSlNPTlBhcnNlID0gPFQ+KHZhbHVlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IGFueSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgVCA6IHZhbHVlO1xuICB9XG4gIGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2FmZUpTT05TdHJpbmdpZnkgPSAodmFsdWU6IHN0cmluZykgPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXG5leHBvcnQgY29uc3QgYXJyYXlWYWx1ZSA9ICh2YWx1ZXM6IGFueVtdLCBpc0F2ZXJhZ2U6IGJvb2xlYW4pID0+XG4gICh2YWx1ZXMgfHwgW10pLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyKSA9PiBwcmV2ICsgcGFyc2VGbG9hdChgJHtjdXJyfWApLCAwKSAvIChpc0F2ZXJhZ2UgPyB2YWx1ZXMubGVuZ3RoIDogMSk7XG5cbmV4cG9ydCBjb25zdCBlbGxpcHNpcyA9ICh0ZXh0ID0gJycsIG1heGxlbmd0aCA9IDIwKSA9PlxuICB0ZXh0Lmxlbmd0aCA+IG1heGxlbmd0aCA/IGAke3RleHQuc3Vic3RyaW5nKDAsIG1heGxlbmd0aCl9Li4uYCA6IHRleHQ7XG5cbmNvbnN0IG1hcHNRdWVyeSA9ICdodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvc2VhcmNoLz9hcGk9MSZxdWVyeT0nO1xuXG5leHBvcnQgY29uc3QgbWFwc1VybCA9IChsb2NhdGlvbj86IHsgbGF0PzogbnVtYmVyOyBsbmc/OiBudW1iZXI7IG5hbWU/OiBzdHJpbmcgfSkgPT5cbiAgbG9jYXRpb24gPyAoXG4gICAgbG9jYXRpb24ubGF0ICYmIGxvY2F0aW9uLmxuZyA/XG4gICAgICBgJHttYXBzUXVlcnl9JHtsb2NhdGlvbi5sYXR9LCR7bG9jYXRpb24ubG5nfWAgOlxuICAgICAgKGxvY2F0aW9uLm5hbWUgPyBgJHttYXBzUXVlcnl9JHtlbmNvZGVVUkkobG9jYXRpb24ubmFtZSl9YCA6IHVuZGVmaW5lZClcbiAgKSA6IHVuZGVmaW5lZDtcblxuY29uc3Qgbm9kZURlZmF1bHRMYWJlbDoge1xuICBbdHlwZSBpbiBTY2hlbWFUeXBlXT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbn0gPSB7XG4gIFtTY2hlbWFUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiAoeyBuYW1lLCBjb3VudHJ5LCBlbmREYXRlLCBwcm9kdWN0IH06IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSA9PlxuICAgIG5hbWUgPyBuYW1lLnJlcGxhY2UoYCR7cHJvZHVjdD8ubmFtZX0sIGAsICcnKSA6IFtcbiAgICAgIHByb2R1Y3Q/Lm5hbWUsXG4gICAgICBjb3VudHJ5Py5uYW1lLFxuICAgICAgZW5kRGF0ZVxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJywgJyksXG4gIFtTY2hlbWFUeXBlLlNpdGVdOiAoeyBuYW1lLCBkZXNjcmlwdGlvbiB9OiBJU2l0ZUpTT05MRCkgPT4gbmFtZSB8fCBkZXNjcmlwdGlvbiEsXG4gIFtTY2hlbWFUeXBlLlRyYW5zZm9ybWF0aW9uXTogKHsgdGVybTogeyBuYW1lIH0gfTogVHJhbnNmb3JtYXRpb24pID0+IG5hbWVcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGFiZWwgPSAobm9kZT86IGFueSkgPT5cbiAgbm9kZSA/IChcbiAgICBub2RlWydAdHlwZSddIGluIG5vZGVEZWZhdWx0TGFiZWwgPyBub2RlRGVmYXVsdExhYmVsW25vZGVbJ0B0eXBlJ11dKG5vZGUpIDogbm9kZS5uYW1lXG4gICkgfHwgbm9kZVsnQGlkJ10gfHwgbm9kZS5pZCA6ICcnO1xuXG5leHBvcnQgY29uc3QgcmVwZWF0ID0gKHRpbWVzID0gMCkgPT4gKEFycmF5LmZyb20oQXJyYXkodGltZXMpLCBNYXRoLnJhbmRvbSkpO1xuXG5leHBvcnQgY29uc3QgZmlsZW5hbWVXaXRob3V0RXh0ID0gKGZpbGVuYW1lID0gJycpID0+IHtcbiAgY29uc3QgZmlsZSA9IGZpbGVUb0V4dChmaWxlbmFtZSwgJycpO1xuICAvLyByZW1vdmUgbGFzdCAuXG4gIHJldHVybiBmaWxlLmVuZHNXaXRoKCcuJykgPyBmaWxlLnN1YnN0cmluZygwLCBmaWxlLmxlbmd0aCAtIDEpIDogZmlsZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5T2JqZWN0ID0gKGRhdGE/OiBhbnkpID0+IGRhdGEgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKSA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBpc0VxdWFsID0gKGE6IGFueSwgYjogYW55KSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYik7XG5cbmV4cG9ydCBlbnVtIFJlcG9zaXRvcnkge1xuICBmcm9udGVuZCA9ICdoZXN0aWEtZnJvbnQtZW5kJyxcbiAgZ2xvc3NhcnkgPSAnaGVzdGlhLWdsb3NzYXJ5JyxcbiAgbW9kZWxzID0gJ2hlc3RpYS1lbmdpbmUtbW9kZWxzJyxcbiAgb3JjaGVzdHJhdG9yID0gJ2hlc3RpYS1lbmdpbmUtb3JjaGVzdHJhdG9yJyxcbiAgYWdncmVnYXRpb24gPSAnaGVzdGlhLWFnZ3JlZ2F0aW9uLWVuZ2luZScsXG4gIGNvbW11bml0eSA9ICdoZXN0aWEtY29tbXVuaXR5LWVkaXRpb24nLFxuICBwb29yZW5lbWVjayA9ICdoZXN0aWEtY29udmVydC1wb29yZS1uZW1lY2VrJ1xufVxuXG5leHBvcnQgZW51bSBUZW1wbGF0ZSB7XG4gIGJ1ZyA9ICdidWcnLFxuICBmZWF0dXJlID0gJ2ZlYXR1cmUnXG59XG4iXX0=
@@ -83,7 +83,7 @@ export class CyclesActivityComponent {
83
83
  }
84
84
  }
85
85
  CyclesActivityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
86
- CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\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: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
86
+ CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\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: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink", "linkClass"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, decorators: [{
88
88
  type: Component,
89
89
  args: [{ selector: 'he-cycles-activity', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"] }]
@@ -30,7 +30,7 @@ export class CyclesCompletenessComponent {
30
30
  }
31
31
  }
32
32
  CyclesCompletenessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesCompletenessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- CyclesCompletenessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesCompletenessComponent, selector: "he-cycles-completeness", inputs: { cycles: "cycles", dataState: "dataState" }, ngImport: i0, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{getCompleteness(cycle)[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n", styles: [""], 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.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i3.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i4.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i5.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
+ CyclesCompletenessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesCompletenessComponent, selector: "he-cycles-completeness", inputs: { cycles: "cycles", dataState: "dataState" }, ngImport: i0, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{getCompleteness(cycle)[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n", styles: [""], 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.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i3.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i4.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i5.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink", "linkClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesCompletenessComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{ selector: 'he-cycles-completeness', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{getCompleteness(cycle)[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"getCompleteness(cycle)\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n" }]
@@ -96,7 +96,7 @@ export class CyclesEmissionsComponent {
96
96
  }
97
97
  }
98
98
  CyclesEmissionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesEmissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
- CyclesEmissionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesEmissionsComponent, selector: "he-cycles-emissions", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && hasEmissions\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\" *ngIf=\"cycles.length > 1 || !isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"cycles.length > 1\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"hasEmissions; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th [class.is-hidden]=\"isTransformation\"></th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th\n [class.has-border-right]=\"!lastGroup\"\n [attr.colspan]=\"item.value.emissions.length\"\n >{{item.key | keyToLabel}}</th>\n </ng-container>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\" [class.is-hidden]=\"isTransformation\"></th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span [innerHtml]=\"emission.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </ng-container>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\" [class.is-hidden]=\"isTransformation\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n [attr.title]=\"emission.value.term.units\"\n [innerHtml]=\"emission.value.term.units | compound\"\n ></th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\" [class.is-hidden]=\"isTransformation\">\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <td class=\"is-nowrap\" *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n >\n <span *ngIf=\"emission.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value, emission.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"emission.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-emissions-chart *ngIf=\"selectedView === View.chart && cycles.length > 1\"\n [cycles]=\"cycles\"\n></he-cycles-emissions-chart>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-emissions-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [originalValues]=\"originalValues[selectedIndex]?.emissions\"\n [recalculatedValues]=\"cycles[selectedIndex]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\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: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesEmissionsChartComponent, selector: "he-cycles-emissions-chart", inputs: ["cycles"] }, { kind: "component", type: i12.CyclesEmissionsLogsComponent, selector: "he-cycles-emissions-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { kind: "component", type: i13.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.KeyToLabelPipe, name: "keyToLabel" }, { kind: "pipe", type: i18.PrecisionPipe, name: "precision" }] });
99
+ CyclesEmissionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesEmissionsComponent, selector: "he-cycles-emissions", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && hasEmissions\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\" *ngIf=\"cycles.length > 1 || !isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"cycles.length > 1\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"hasEmissions; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th [class.is-hidden]=\"isTransformation\"></th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th\n [class.has-border-right]=\"!lastGroup\"\n [attr.colspan]=\"item.value.emissions.length\"\n >{{item.key | keyToLabel}}</th>\n </ng-container>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\" [class.is-hidden]=\"isTransformation\"></th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span [innerHtml]=\"emission.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </ng-container>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\" [class.is-hidden]=\"isTransformation\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n [attr.title]=\"emission.value.term.units\"\n [innerHtml]=\"emission.value.term.units | compound\"\n ></th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\" [class.is-hidden]=\"isTransformation\">\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <td class=\"is-nowrap\" *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n >\n <span *ngIf=\"emission.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value, emission.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"emission.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-emissions-chart *ngIf=\"selectedView === View.chart && cycles.length > 1\"\n [cycles]=\"cycles\"\n></he-cycles-emissions-chart>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-emissions-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [originalValues]=\"originalValues[selectedIndex]?.emissions\"\n [recalculatedValues]=\"cycles[selectedIndex]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\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: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink", "linkClass"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesEmissionsChartComponent, selector: "he-cycles-emissions-chart", inputs: ["cycles"] }, { kind: "component", type: i12.CyclesEmissionsLogsComponent, selector: "he-cycles-emissions-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { kind: "component", type: i13.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.KeyToLabelPipe, name: "keyToLabel" }, { kind: "pipe", type: i18.PrecisionPipe, name: "precision" }] });
100
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesEmissionsComponent, decorators: [{
101
101
  type: Component,
102
102
  args: [{ selector: 'he-cycles-emissions', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && hasEmissions\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\" *ngIf=\"cycles.length > 1 || !isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"cycles.length > 1\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"hasEmissions; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th [class.is-hidden]=\"isTransformation\"></th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th\n [class.has-border-right]=\"!lastGroup\"\n [attr.colspan]=\"item.value.emissions.length\"\n >{{item.key | keyToLabel}}</th>\n </ng-container>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\" [class.is-hidden]=\"isTransformation\"></th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span [innerHtml]=\"emission.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </ng-container>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\" [class.is-hidden]=\"isTransformation\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <th *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n [attr.title]=\"emission.value.term.units\"\n [innerHtml]=\"emission.value.term.units | compound\"\n ></th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\" [class.is-hidden]=\"isTransformation\">\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <ng-container *ngFor=\"let item of emissions; let lastGroup = last\">\n <td class=\"is-nowrap\" *ngFor=\"let emission of item.value.emissions; let lastEmission = last\"\n [class.has-border-right]=\"lastEmission && !lastGroup\"\n >\n <span *ngIf=\"emission.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value, emission.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"emission.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-emissions-chart *ngIf=\"selectedView === View.chart && cycles.length > 1\"\n [cycles]=\"cycles\"\n></he-cycles-emissions-chart>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-emissions-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [originalValues]=\"originalValues[selectedIndex]?.emissions\"\n [recalculatedValues]=\"cycles[selectedIndex]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"] }]