@hestia-earth/ui-components 0.9.8 → 0.10.1

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 (33) hide show
  1. package/common/blank-node-state/blank-node-state.component.d.ts +11 -10
  2. package/common/d3-utils.d.ts +1 -1
  3. package/common/link-key-value/link-key-value.component.d.ts +3 -1
  4. package/cycles/cycles-activity-logs/cycles-activity-logs.component.d.ts +9 -8
  5. package/cycles/cycles-completeness/cycles-completeness.component.d.ts +1 -0
  6. package/cycles/cycles-emissions-logs/cycles-emissions-logs.component.d.ts +9 -8
  7. package/cycles/cycles-practices-logs/cycles-practices-logs.component.d.ts +9 -8
  8. package/engine/engine.service.d.ts +1 -1
  9. package/esm2020/common/blank-node-state/blank-node-state.component.mjs +6 -4
  10. package/esm2020/common/d3-utils.mjs +3 -3
  11. package/esm2020/common/link-key-value/link-key-value.component.mjs +9 -7
  12. package/esm2020/cycles/cycles-activity/cycles-activity.component.mjs +1 -1
  13. package/esm2020/cycles/cycles-completeness/cycles-completeness.component.mjs +7 -4
  14. package/esm2020/cycles/cycles-emissions/cycles-emissions.component.mjs +1 -1
  15. package/esm2020/cycles/cycles-practices/cycles-practices.component.mjs +1 -1
  16. package/esm2020/cycles/cycles-practices-timeline/cycles-practices-timeline.component.mjs +1 -1
  17. package/esm2020/engine/engine.service.mjs +2 -2
  18. package/esm2020/files/files-error.model.mjs +8 -5
  19. package/esm2020/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +18 -16
  20. package/esm2020/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +1 -1
  21. package/esm2020/node/node-logs-file/node-logs-file.component.mjs +3 -3
  22. package/esm2020/node/node-logs-models/node-logs-models.model.mjs +32 -10
  23. package/esm2020/node/node-value-details/node-value-details.component.mjs +3 -3
  24. package/esm2020/sites/sites-measurements/sites-measurements.component.mjs +1 -1
  25. package/esm2020/terms/terms.model.mjs +3 -3
  26. package/fesm2015/hestia-earth-ui-components.mjs +92 -58
  27. package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
  28. package/fesm2020/hestia-earth-ui-components.mjs +92 -58
  29. package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
  30. package/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.d.ts +1 -0
  31. package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +5 -5
  32. package/package.json +12 -7
  33. package/sites/sites-measurements-logs/sites-measurements-logs.component.d.ts +5 -5
@@ -9,20 +9,21 @@ export declare class BlankNodeStateComponent {
9
9
  private nodeType?;
10
10
  private dataKey?;
11
11
  private key?;
12
- node?: blankNode;
12
+ protected node?: blankNode;
13
13
  /**
14
14
  * Force override state.
15
15
  */
16
- state?: NodeKeyState;
17
- NodeKeyState: typeof NodeKeyState;
16
+ protected state?: NodeKeyState;
17
+ protected linkClass?: string;
18
+ protected NodeKeyState: typeof NodeKeyState;
18
19
  constructor(aggregationEngineService: HeAggregationEngineService, engineService: HeEngineService);
19
- get show(): boolean;
20
- is(state: NodeKeyState): any;
21
- get stars(): number[];
22
- get showLink(): boolean;
20
+ protected get show(): boolean;
21
+ protected is(state: NodeKeyState): any;
22
+ protected get stars(): number[];
23
+ protected get showLink(): boolean;
23
24
  private get aggregatedModelParams();
24
- get aggregatedModel$(): import("rxjs").Observable<import("../../engine/aggregation-engine.service").IAggregationModel>;
25
- get engineModel$(): import("rxjs").Observable<import("../../engine/engine.service").IModel>;
25
+ protected get aggregatedModel$(): import("rxjs").Observable<import("../../engine/aggregation-engine.service").IAggregationModel>;
26
+ protected get engineModel$(): import("rxjs").Observable<import("../../engine/engine.service").IModel>;
26
27
  static ɵfac: i0.ɵɵFactoryDeclaration<BlankNodeStateComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<BlankNodeStateComponent, "he-blank-node-state", never, { "dataState": "dataState"; "nodeType": "nodeType"; "dataKey": "dataKey"; "key": "key"; "node": "node"; "state": "state"; }, {}, never, never, false>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<BlankNodeStateComponent, "he-blank-node-state", never, { "dataState": "dataState"; "nodeType": "nodeType"; "dataKey": "dataKey"; "key": "key"; "node": "node"; "state": "state"; "linkClass": "linkClass"; }, {}, never, never, false>;
28
29
  }
@@ -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;
@@ -6,15 +6,17 @@ export declare class LinkKeyValueComponent {
6
6
  dataKey?: string;
7
7
  key?: string;
8
8
  defaultValue?: any;
9
+ isExpandable: (val: any) => boolean;
10
+ valueLink: (value: any) => string;
9
11
  get isInlineBlock(): boolean;
10
12
  baseUrl: string;
11
13
  toString: (value: any) => any;
12
14
  get type(): any;
13
15
  get value(): any;
14
16
  get valueString(): any;
15
- get valueLink(): string;
16
17
  get isArray(): boolean;
17
18
  get isUndefined(): boolean;
19
+ isBlankNode(value: any): boolean;
18
20
  static ɵfac: i0.ɵɵFactoryDeclaration<LinkKeyValueComponent, never>;
19
21
  static ɵcmp: i0.ɵɵComponentDeclaration<LinkKeyValueComponent, "he-link-key-value", never, { "node": "node"; "nodeType": "nodeType"; "dataKey": "dataKey"; "key": "key"; "defaultValue": "defaultValue"; }, {}, never, never, false>;
20
22
  }
@@ -18,26 +18,28 @@ export declare class CyclesActivityLogsComponent {
18
18
  dataState: DataState;
19
19
  description?: string;
20
20
  treatment?: string;
21
- site?: import("@hestia-earth/schema").Site;
22
- otherSites?: import("@hestia-earth/schema").Site[];
23
- siteDuration?: number;
24
- otherSitesDuration?: number[];
25
- harvestedArea?: number;
26
- defaultSource?: import("@hestia-earth/schema").Source;
27
21
  endDate?: string;
28
22
  startDate?: string;
29
23
  startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
30
24
  cycleDuration?: number;
25
+ site?: import("@hestia-earth/schema").Site;
26
+ otherSites?: import("@hestia-earth/schema").Site[];
27
+ siteDuration?: number;
28
+ otherSitesDuration?: number[];
31
29
  functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
32
30
  functionalUnitDetails?: string;
33
31
  numberOfCycles?: number;
34
32
  numberOfReplications?: number;
35
- dataCompleteness?: import("@hestia-earth/schema").Completeness;
33
+ harvestedArea?: number;
34
+ defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
35
+ defaultSource?: import("@hestia-earth/schema").Source;
36
+ completeness?: import("@hestia-earth/schema").Completeness;
36
37
  inputs?: import("@hestia-earth/schema").Input[];
37
38
  emissions?: import("@hestia-earth/schema").Emission[];
38
39
  products?: import("@hestia-earth/schema").Product[];
39
40
  practices?: import("@hestia-earth/schema").Practice[];
40
41
  transformations?: import("@hestia-earth/schema").Transformation[];
42
+ dataPrivate?: boolean;
41
43
  originalId?: string;
42
44
  schemaVersion?: string;
43
45
  added?: string[];
@@ -47,7 +49,6 @@ export declare class CyclesActivityLogsComponent {
47
49
  aggregated?: boolean;
48
50
  aggregatedVersion?: string;
49
51
  aggregatedQualityScore?: number;
50
- dataPrivate?: boolean;
51
52
  '@context': string | (string | import("@hestia-earth/schema").IContext)[];
52
53
  '@id': string;
53
54
  name: string;
@@ -7,6 +7,7 @@ export declare class CyclesCompletenessComponent {
7
7
  baseUrl: string;
8
8
  defaultLabel: (node?: any) => any;
9
9
  keyToLabel: (key: string) => string;
10
+ getCompleteness: (cycle: any) => any;
10
11
  trackById(_index: number, item: ICycleJSONLD): string;
11
12
  get completenessKeys(): string[];
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<CyclesCompletenessComponent, never>;
@@ -20,26 +20,28 @@ export declare class CyclesEmissionsLogsComponent implements OnInit {
20
20
  dataState: DataState;
21
21
  description?: string;
22
22
  treatment?: string;
23
- site?: import("@hestia-earth/schema").Site;
24
- otherSites?: import("@hestia-earth/schema").Site[];
25
- siteDuration?: number;
26
- otherSitesDuration?: number[];
27
- harvestedArea?: number;
28
- defaultSource?: import("@hestia-earth/schema").Source;
29
23
  endDate?: string;
30
24
  startDate?: string;
31
25
  startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
32
26
  cycleDuration?: number;
27
+ site?: import("@hestia-earth/schema").Site;
28
+ otherSites?: import("@hestia-earth/schema").Site[];
29
+ siteDuration?: number;
30
+ otherSitesDuration?: number[];
33
31
  functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
34
32
  functionalUnitDetails?: string;
35
33
  numberOfCycles?: number;
36
34
  numberOfReplications?: number;
37
- dataCompleteness?: import("@hestia-earth/schema").Completeness;
35
+ harvestedArea?: number;
36
+ defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
37
+ defaultSource?: import("@hestia-earth/schema").Source;
38
+ completeness?: import("@hestia-earth/schema").Completeness;
38
39
  inputs?: import("@hestia-earth/schema").Input[];
39
40
  emissions?: Emission[];
40
41
  products?: import("@hestia-earth/schema").Product[];
41
42
  practices?: import("@hestia-earth/schema").Practice[];
42
43
  transformations?: import("@hestia-earth/schema").Transformation[];
44
+ dataPrivate?: boolean;
43
45
  originalId?: string;
44
46
  schemaVersion?: string;
45
47
  added?: string[];
@@ -49,7 +51,6 @@ export declare class CyclesEmissionsLogsComponent implements OnInit {
49
51
  aggregated?: boolean;
50
52
  aggregatedVersion?: string;
51
53
  aggregatedQualityScore?: number;
52
- dataPrivate?: boolean;
53
54
  '@context': string | (string | import("@hestia-earth/schema").IContext)[];
54
55
  '@id': string;
55
56
  name: string;
@@ -13,26 +13,28 @@ export declare class CyclesPracticesLogsComponent {
13
13
  dataState: DataState;
14
14
  description?: string;
15
15
  treatment?: string;
16
- site?: import("@hestia-earth/schema").Site;
17
- otherSites?: import("@hestia-earth/schema").Site[];
18
- siteDuration?: number;
19
- otherSitesDuration?: number[];
20
- harvestedArea?: number;
21
- defaultSource?: import("@hestia-earth/schema").Source;
22
16
  endDate?: string;
23
17
  startDate?: string;
24
18
  startDateDefinition?: import("@hestia-earth/schema").CycleStartDateDefinition;
25
19
  cycleDuration?: number;
20
+ site?: import("@hestia-earth/schema").Site;
21
+ otherSites?: import("@hestia-earth/schema").Site[];
22
+ siteDuration?: number;
23
+ otherSitesDuration?: number[];
26
24
  functionalUnit?: import("@hestia-earth/schema").CycleFunctionalUnit;
27
25
  functionalUnitDetails?: string;
28
26
  numberOfCycles?: number;
29
27
  numberOfReplications?: number;
30
- dataCompleteness?: import("@hestia-earth/schema").Completeness;
28
+ harvestedArea?: number;
29
+ defaultMethodClassification?: import("@hestia-earth/schema").CycleDefaultMethodClassification;
30
+ defaultSource?: import("@hestia-earth/schema").Source;
31
+ completeness?: import("@hestia-earth/schema").Completeness;
31
32
  inputs?: import("@hestia-earth/schema").Input[];
32
33
  emissions?: import("@hestia-earth/schema").Emission[];
33
34
  products?: import("@hestia-earth/schema").Product[];
34
35
  practices?: Practice[];
35
36
  transformations?: import("@hestia-earth/schema").Transformation[];
37
+ dataPrivate?: boolean;
36
38
  originalId?: string;
37
39
  schemaVersion?: string;
38
40
  added?: string[];
@@ -42,7 +44,6 @@ export declare class CyclesPracticesLogsComponent {
42
44
  aggregated?: boolean;
43
45
  aggregatedVersion?: string;
44
46
  aggregatedQualityScore?: number;
45
- dataPrivate?: boolean;
46
47
  '@context': string | (string | import("@hestia-earth/schema").IContext)[];
47
48
  '@id': string;
48
49
  name: string;
@@ -112,7 +112,7 @@ export declare class HeEngineService {
112
112
  getRequirements$(params: ICalculationsRequirementsParams): Observable<JSONLD<NodeType>>;
113
113
  getRequirements(params: ICalculationsRequirementsParams): Promise<JSONLD<NodeType>>;
114
114
  getTermIds$(params: ICalculationsRequirementsParams): Observable<string[]>;
115
- getTermIds(params: ICalculationsRequirementsParams): Promise<string[]>;
115
+ getTermIds(params: ICalculationsRequirementsParams): Promise<any[] | string[]>;
116
116
  orchestratorConfigUrl(type?: NodeType): string;
117
117
  ochestratorConfig(type: NodeType): Promise<IOrchestratorConfig>;
118
118
  static ɵfac: i0.ɵɵFactoryDeclaration<HeEngineService, never>;
@@ -34,7 +34,7 @@ export class BlankNodeStateComponent {
34
34
  : [];
35
35
  }
36
36
  get showLink() {
37
- return !!this.dataKey;
37
+ return !!this.dataKey && ['term', 'value'].includes(this.key);
38
38
  }
39
39
  get aggregatedModelParams() {
40
40
  return filterParams({
@@ -50,10 +50,10 @@ export class BlankNodeStateComponent {
50
50
  }
51
51
  }
52
52
  BlankNodeStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BlankNodeStateComponent, deps: [{ token: i1.HeAggregationEngineService }, { token: i2.HeEngineService }], target: i0.ɵɵFactoryTarget.Component });
53
- BlankNodeStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: { dataState: "dataState", nodeType: "nodeType", dataKey: "dataKey", key: "key", node: "node", state: "state" }, ngImport: i0, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "directive", type: i5.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
53
+ BlankNodeStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: BlankNodeStateComponent, selector: "he-blank-node-state", inputs: { dataState: "dataState", nodeType: "nodeType", dataKey: "dataKey", key: "key", node: "node", state: "state", linkClass: "linkClass" }, ngImport: i0, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [ngClass]=\"linkClass\"\n [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "directive", type: i5.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: BlankNodeStateComponent, decorators: [{
55
55
  type: Component,
56
- args: [{ selector: 'he-blank-node-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"] }]
56
+ args: [{ selector: 'he-blank-node-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"show\">\n <ng-container *bindOnce=\"node\">\n <span *ngFor=\"let star of stars\">*</span>\n <span *ngIf=\"stars.length === 0 || is(NodeKeyState.unchanged)\">\u2020</span>\n\n <ng-container *ngIf=\"showLink\">\n <!-- <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.aggregated)\">\n <ng-container *ngIf=\"aggregatedModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span> -->\n\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.added); else showUpdated\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #showUpdated>\n <span class=\"ml-2\" *ngIf=\"is(NodeKeyState.updated)\">\n <ng-container *ngIf=\"engineModel$ | async as model\">\n <ng-container *ngTemplateOutlet=\"docsLink; context: {$implicit: model}\"></ng-container>\n </ng-container>\n </span>\n</ng-template>\n\n<ng-template #docsLink let-model>\n <a [ngClass]=\"linkClass\"\n [href]=\"model.apiDocsPath || model.docPath || model.path\" target=\"_blank\"\n (click)=\"$event.stopPropagation()\"\n >\n <span>Docs</span>\n <fa-icon class=\"ml-2\" icon=\"external-link-alt\" size=\"sm\"></fa-icon>\n </a>\n</ng-template>\n", styles: [":host{display:inline-block}\n"] }]
57
57
  }], ctorParameters: function () { return [{ type: i1.HeAggregationEngineService }, { type: i2.HeEngineService }]; }, propDecorators: { dataState: [{
58
58
  type: Input
59
59
  }], nodeType: [{
@@ -66,5 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
66
66
  type: Input
67
67
  }], state: [{
68
68
  type: Input
69
+ }], linkClass: [{
70
+ type: Input
69
71
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLOUMsT0FBTyxFQUFFLFlBQVksRUFBYSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sdUJBQXVCO0lBbUJsQyxZQUNVLHdCQUFvRCxFQUNwRCxhQUE4QjtRQUQ5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTRCO1FBQ3BELGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUpqQyxpQkFBWSxHQUFHLFlBQVksQ0FBQztJQUsvQixDQUFDO0lBRUwsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVNLEVBQUUsQ0FBQyxLQUFtQjtRQUMzQixPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUNyQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdEQUFnRDtvQkFDbkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNMLENBQUMsQ0FBQyxFQUFFLENBQ0g7SUFDTCxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVkscUJBQXFCO1FBQy9CLE9BQU8sWUFBWSxDQUFDO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDOztvSEFqRVUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsbUxDZnBDLHM3Q0FxQ0E7MkZEdEJhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTTsrSUFJdkMsU0FBUztzQkFEaEIsS0FBSztnQkFHRSxRQUFRO3NCQURmLEtBQUs7Z0JBR0UsT0FBTztzQkFEZCxLQUFLO2dCQUdFLEdBQUc7c0JBRFYsS0FBSztnQkFHQyxJQUFJO3NCQURWLEtBQUs7Z0JBTUMsS0FBSztzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBIZUFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZSB9IGZyb20gJy4uLy4uL2VuZ2luZS9hZ2dyZWdhdGlvbi1lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZUVuZ2luZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUtleVN0YXRlLCBibGFua05vZGUsIGlzU3RhdGUgfSBmcm9tICcuLi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGZpbHRlclBhcmFtcyB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtYmxhbmstbm9kZS1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuICBASW5wdXQoKVxuICBwcml2YXRlIG5vZGVUeXBlPzogTm9kZVR5cGU7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YUtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBrZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlPzogYmxhbmtOb2RlO1xuICAvKipcbiAgICogRm9yY2Ugb3ZlcnJpZGUgc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhdGU/OiBOb2RlS2V5U3RhdGU7XG5cbiAgcHVibGljIE5vZGVLZXlTdGF0ZSA9IE5vZGVLZXlTdGF0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZTogSGVBZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmdpbmVTZXJ2aWNlOiBIZUVuZ2luZVNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgZ2V0IHNob3coKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlICE9PSBEYXRhU3RhdGUub3JpZ2luYWw7XG4gIH1cblxuICBwdWJsaWMgaXMoc3RhdGU6IE5vZGVLZXlTdGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICAvLyBmb3JjaW5nIHN0YXRlXG4gICAgICAhIXRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZSA9PT0gc3RhdGVcbiAgICApIHx8IGlzU3RhdGUodGhpcy5ub2RlLCB0aGlzLmtleSwgc3RhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGFycygpIHtcbiAgICByZXR1cm4gdGhpcy5pcyhOb2RlS2V5U3RhdGUuZGVsZXRlZClcbiAgICAgID8gWzAsIDEsIDIsIDNdXG4gICAgICA6IHRoaXMuaXMoTm9kZUtleVN0YXRlLnVwZGF0ZWQpXG4gICAgICA/IFswLCAxXVxuICAgICAgOiB0aGlzLmlzKE5vZGVLZXlTdGF0ZS5hZ2dyZWdhdGVkKSAvLyBoYW5kbGUgaGVyZSBiZWNhdXNlIGFnZ3JlZ2F0ZWQgY2FuIGJlIHVwZGF0ZWRcbiAgICAgID8gWzAsIDEsIDJdXG4gICAgICA6IHRoaXMuaXMoTm9kZUtleVN0YXRlLmFkZGVkKVxuICAgICAgPyBbMF1cbiAgICAgIDogW11cbiAgICAgIDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd0xpbmsoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5kYXRhS2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYWdncmVnYXRlZE1vZGVsUGFyYW1zKCkge1xuICAgIHJldHVybiBmaWx0ZXJQYXJhbXMoe1xuICAgICAgdHlwZTogdGhpcy5ub2RlVHlwZSxcbiAgICAgIGRhdGFQYXRoOiBbdGhpcy5kYXRhS2V5LCB0aGlzLmtleV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBhZ2dyZWdhdGVkTW9kZWwkKCkge1xuICAgIHJldHVybiB0aGlzLmFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZS5tb2RlbCQodGhpcy5hZ2dyZWdhdGVkTW9kZWxQYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmdpbmVNb2RlbCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5naW5lU2VydmljZS5ub2RlTW9kZWwkKHRoaXMubm9kZSwgdGhpcy5rZXkpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1wiPlxuICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cIm5vZGVcIj5cbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgc3RhciBvZiBzdGFyc1wiPio8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJzdGFycy5sZW5ndGggPT09IDAgfHwgaXMoTm9kZUtleVN0YXRlLnVuY2hhbmdlZClcIj7igKA8L3NwYW4+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0xpbmtcIj5cbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtbC0yXCIgKm5nSWY9XCJpcyhOb2RlS2V5U3RhdGUuYWdncmVnYXRlZClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFnZ3JlZ2F0ZWRNb2RlbCQgfCBhc3luYyBhcyBtb2RlbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkb2NzTGluazsgY29udGV4dDogeyRpbXBsaWNpdDogbW9kZWx9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zcGFuPiAtLT5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJtbC0yXCIgKm5nSWY9XCJpcyhOb2RlS2V5U3RhdGUuYWRkZWQpOyBlbHNlIHNob3dVcGRhdGVkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbmdpbmVNb2RlbCQgfCBhc3luYyBhcyBtb2RlbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkb2NzTGluazsgY29udGV4dDogeyRpbXBsaWNpdDogbW9kZWx9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3Nob3dVcGRhdGVkPlxuICA8c3BhbiBjbGFzcz1cIm1sLTJcIiAqbmdJZj1cImlzKE5vZGVLZXlTdGF0ZS51cGRhdGVkKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbmdpbmVNb2RlbCQgfCBhc3luYyBhcyBtb2RlbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRvY3NMaW5rOyBjb250ZXh0OiB7JGltcGxpY2l0OiBtb2RlbH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkb2NzTGluayBsZXQtbW9kZWw+XG4gIDxhIFtocmVmXT1cIm1vZGVsLmFwaURvY3NQYXRoIHx8IG1vZGVsLmRvY1BhdGggfHwgbW9kZWwucGF0aFwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8c3Bhbj5Eb2NzPC9zcGFuPlxuICAgIDxmYS1pY29uIGNsYXNzPVwibWwtMlwiIGljb249XCJleHRlcm5hbC1saW5rLWFsdFwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLOUMsT0FBTyxFQUFFLFlBQVksRUFBYSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUNVLHdCQUFvRCxFQUNwRCxhQUE4QjtRQUQ5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTRCO1FBQ3BELGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUo5QixpQkFBWSxHQUFHLFlBQVksQ0FBQztJQUtsQyxDQUFDO0lBRUwsSUFBYyxJQUFJO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7SUFFUyxFQUFFLENBQUMsS0FBbUI7UUFDOUIsT0FBTztRQUNMLGdCQUFnQjtRQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FDckMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFjLEtBQUs7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDUixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsZ0RBQWdEO29CQUNuRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO3dCQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FDSDtJQUNMLENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFZLHFCQUFxQjtRQUMvQixPQUFPLFlBQVksQ0FBQztZQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDbkIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDN0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQWMsZ0JBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7b0hBbkVVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJNQ2ZwQyxtOUNBc0NBOzJGRHZCYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07K0lBSXZDLFNBQVM7c0JBRGhCLEtBQUs7Z0JBR0UsUUFBUTtzQkFEZixLQUFLO2dCQUdFLE9BQU87c0JBRGQsS0FBSztnQkFHRSxHQUFHO3NCQURWLEtBQUs7Z0JBR0ksSUFBSTtzQkFEYixLQUFLO2dCQU1JLEtBQUs7c0JBRGQsS0FBSztnQkFHSSxTQUFTO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBIZUFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZSB9IGZyb20gJy4uLy4uL2VuZ2luZS9hZ2dyZWdhdGlvbi1lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZUVuZ2luZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUtleVN0YXRlLCBibGFua05vZGUsIGlzU3RhdGUgfSBmcm9tICcuLi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGZpbHRlclBhcmFtcyB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtYmxhbmstbm9kZS1zdGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuICBASW5wdXQoKVxuICBwcml2YXRlIG5vZGVUeXBlPzogTm9kZVR5cGU7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZGF0YUtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBrZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBub2RlPzogYmxhbmtOb2RlO1xuICAvKipcbiAgICogRm9yY2Ugb3ZlcnJpZGUgc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgc3RhdGU/OiBOb2RlS2V5U3RhdGU7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBsaW5rQ2xhc3M/OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIE5vZGVLZXlTdGF0ZSA9IE5vZGVLZXlTdGF0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZTogSGVBZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmdpbmVTZXJ2aWNlOiBIZUVuZ2luZVNlcnZpY2VcbiAgKSB7IH1cblxuICBwcm90ZWN0ZWQgZ2V0IHNob3coKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlICE9PSBEYXRhU3RhdGUub3JpZ2luYWw7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXMoc3RhdGU6IE5vZGVLZXlTdGF0ZSkge1xuICAgIHJldHVybiAoXG4gICAgICAvLyBmb3JjaW5nIHN0YXRlXG4gICAgICAhIXRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZSA9PT0gc3RhdGVcbiAgICApIHx8IGlzU3RhdGUodGhpcy5ub2RlLCB0aGlzLmtleSwgc3RhdGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzdGFycygpIHtcbiAgICByZXR1cm4gdGhpcy5pcyhOb2RlS2V5U3RhdGUuZGVsZXRlZClcbiAgICAgID8gWzAsIDEsIDIsIDNdXG4gICAgICA6IHRoaXMuaXMoTm9kZUtleVN0YXRlLnVwZGF0ZWQpXG4gICAgICA/IFswLCAxXVxuICAgICAgOiB0aGlzLmlzKE5vZGVLZXlTdGF0ZS5hZ2dyZWdhdGVkKSAvLyBoYW5kbGUgaGVyZSBiZWNhdXNlIGFnZ3JlZ2F0ZWQgY2FuIGJlIHVwZGF0ZWRcbiAgICAgID8gWzAsIDEsIDJdXG4gICAgICA6IHRoaXMuaXMoTm9kZUtleVN0YXRlLmFkZGVkKVxuICAgICAgPyBbMF1cbiAgICAgIDogW11cbiAgICAgIDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc2hvd0xpbmsoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5kYXRhS2V5ICYmIFsndGVybScsICd2YWx1ZSddLmluY2x1ZGVzKHRoaXMua2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGFnZ3JlZ2F0ZWRNb2RlbFBhcmFtcygpIHtcbiAgICByZXR1cm4gZmlsdGVyUGFyYW1zKHtcbiAgICAgIHR5cGU6IHRoaXMubm9kZVR5cGUsXG4gICAgICBkYXRhUGF0aDogW3RoaXMuZGF0YUtleSwgdGhpcy5rZXldLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJylcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgYWdncmVnYXRlZE1vZGVsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5hZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2UubW9kZWwkKHRoaXMuYWdncmVnYXRlZE1vZGVsUGFyYW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZW5naW5lTW9kZWwkKCkge1xuICAgIHJldHVybiB0aGlzLmVuZ2luZVNlcnZpY2Uubm9kZU1vZGVsJCh0aGlzLm5vZGUsIHRoaXMua2V5KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dcIj5cbiAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJub2RlXCI+XG4gICAgPHNwYW4gKm5nRm9yPVwibGV0IHN0YXIgb2Ygc3RhcnNcIj4qPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwic3RhcnMubGVuZ3RoID09PSAwIHx8IGlzKE5vZGVLZXlTdGF0ZS51bmNoYW5nZWQpXCI+4oCgPC9zcGFuPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dMaW5rXCI+XG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtMlwiICpuZ0lmPVwiaXMoTm9kZUtleVN0YXRlLmFnZ3JlZ2F0ZWQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZ2dyZWdhdGVkTW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG9jc0xpbms7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG1vZGVsfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj4gLS0+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiICpuZ0lmPVwiaXMoTm9kZUtleVN0YXRlLmFkZGVkKTsgZWxzZSBzaG93VXBkYXRlZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5naW5lTW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG9jc0xpbms7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG1vZGVsfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzaG93VXBkYXRlZD5cbiAgPHNwYW4gY2xhc3M9XCJtbC0yXCIgKm5nSWY9XCJpcyhOb2RlS2V5U3RhdGUudXBkYXRlZClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5naW5lTW9kZWwkIHwgYXN5bmMgYXMgbW9kZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkb2NzTGluazsgY29udGV4dDogeyRpbXBsaWNpdDogbW9kZWx9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZG9jc0xpbmsgbGV0LW1vZGVsPlxuICA8YSBbbmdDbGFzc109XCJsaW5rQ2xhc3NcIlxuICAgIFtocmVmXT1cIm1vZGVsLmFwaURvY3NQYXRoIHx8IG1vZGVsLmRvY1BhdGggfHwgbW9kZWwucGF0aFwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8c3Bhbj5Eb2NzPC9zcGFuPlxuICAgIDxmYS1pY29uIGNsYXNzPVwibWwtMlwiIGljb249XCJleHRlcm5hbC1saW5rLWFsdFwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -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==
@@ -9,7 +9,7 @@ import * as i2 from "../bind-once.directive";
9
9
  import * as i3 from "../blank-node-state/blank-node-state.component";
10
10
  import * as i4 from "../precision.pipe";
11
11
  const valueLink = (value) => isExpandable(value) && value['@id'] ? [baseUrl(), value['@type'].toLowerCase(), value['@id']].join('/') : null;
12
- const valueLinkRef = (value, href) => href ? `<a href="${href}">${value.name || value['@id']}</a>` : null;
12
+ const valueLinkRef = (value, href) => href ? `<a class="is-dark" href="${href}">${value.name || value['@id']}</a>` : null;
13
13
  const valueValue = (value) => Array.isArray(value) ? value.map(valueValue).join(', ') : toPrecision(value);
14
14
  const stringMapper = {
15
15
  undefined: () => '',
@@ -28,6 +28,8 @@ const toString = (value) => typeof value in stringMapper ? stringMapper[typeof v
28
28
  export class LinkKeyValueComponent {
29
29
  constructor() {
30
30
  this.defaultValue = '';
31
+ this.isExpandable = isExpandable;
32
+ this.valueLink = valueLink;
31
33
  this.baseUrl = baseUrl();
32
34
  this.toString = toString;
33
35
  }
@@ -43,21 +45,21 @@ export class LinkKeyValueComponent {
43
45
  get valueString() {
44
46
  return toString(this.value);
45
47
  }
46
- get valueLink() {
47
- return valueLink(this.value);
48
- }
49
48
  get isArray() {
50
49
  return Array.isArray(this.value) && this.value.length > 1;
51
50
  }
52
51
  get isUndefined() {
53
52
  return isUndefined(this.value);
54
53
  }
54
+ isBlankNode(value) {
55
+ return isExpandable(value) && 'term' in value;
56
+ }
55
57
  }
56
58
  LinkKeyValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: LinkKeyValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- LinkKeyValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: LinkKeyValueComponent, selector: "he-link-key-value", inputs: { node: "node", nodeType: "nodeType", dataKey: "dataKey", key: "key", defaultValue: "defaultValue" }, host: { properties: { "class.is-inline-block": "this.isInlineBlock" } }, ngImport: i0, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"has-text-white is-underlined\" [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n\n <ng-container *ngIf=\"isArray; else singleValue\">\n <div class=\"array-container pl-2\">\n <p *ngFor=\"let v of value\" [innerHtml]=\"toString(v) | precision:3\"></p>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block pr-1\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"\n ></he-blank-node-state>\n</ng-template>\n\n<ng-template #showDefault>\n <span>{{defaultValue}}</span>\n</ng-template>\n", styles: [":host{display:block}:host ::ng-deep a,:host a{color:#fff!important;text-decoration:underline!important}.array-container{max-height:100px;overflow-y:auto}\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.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "component", type: i3.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "pipe", type: i4.PrecisionPipe, name: "precision" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
+ LinkKeyValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: LinkKeyValueComponent, selector: "he-link-key-value", inputs: { node: "node", nodeType: "nodeType", dataKey: "dataKey", key: "key", defaultValue: "defaultValue" }, host: { properties: { "class.is-inline-block": "this.isInlineBlock" } }, ngImport: i0, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n\n <ng-container *ngIf=\"isArray; else singleValue\">\n <div class=\"array-container pl-2\">\n <ng-container *ngFor=\"let v of value\">\n <ng-template #stringValue>\n <p [innerHtml]=\"toString(v) | precision:3\"></p>\n </ng-template>\n <ng-container *ngIf=\"isBlankNode(v); stringValue\">\n <div>\n <a class=\"is-dark\" href=\"valueLink(v.term)\">{{v.term.name || v.term['@id']}}</a>\n <span class=\"pr-2\">:</span>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"toString(v.value) | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"v\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"value\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n</ng-template>\n\n<ng-template #showDefault>\n <span>{{defaultValue}}</span>\n</ng-template>\n", styles: [":host{display:block}:host a.has-text-white:hover,:host a.has-text-white.is-hovered{text-decoration:underline}.array-container{max-height:100px;overflow-y:auto}\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.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "component", type: i3.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state", "linkClass"] }, { kind: "pipe", type: i4.PrecisionPipe, name: "precision" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
58
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: LinkKeyValueComponent, decorators: [{
59
61
  type: Component,
60
- args: [{ selector: 'he-link-key-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"has-text-white is-underlined\" [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n\n <ng-container *ngIf=\"isArray; else singleValue\">\n <div class=\"array-container pl-2\">\n <p *ngFor=\"let v of value\" [innerHtml]=\"toString(v) | precision:3\"></p>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block pr-1\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"\n ></he-blank-node-state>\n</ng-template>\n\n<ng-template #showDefault>\n <span>{{defaultValue}}</span>\n</ng-template>\n", styles: [":host{display:block}:host ::ng-deep a,:host a{color:#fff!important;text-decoration:underline!important}.array-container{max-height:100px;overflow-y:auto}\n"] }]
62
+ args: [{ selector: 'he-link-key-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!isUndefined; else showDefault\">\n <ng-container *bindOnce=\"node\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key\" target=\"_blank\"><b>{{key}}</b></a>\n <span class=\"pr-2\">:</span>\n\n <ng-container *ngIf=\"isArray; else singleValue\">\n <div class=\"array-container pl-2\">\n <ng-container *ngFor=\"let v of value\">\n <ng-template #stringValue>\n <p [innerHtml]=\"toString(v) | precision:3\"></p>\n </ng-template>\n <ng-container *ngIf=\"isBlankNode(v); stringValue\">\n <div>\n <a class=\"is-dark\" href=\"valueLink(v.term)\">{{v.term.name || v.term['@id']}}</a>\n <span class=\"pr-2\">:</span>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"toString(v.value) | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"v\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"value\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #singleValue>\n <div class=\"is-inline-block is-nowrap\" [innerHtml]=\"valueString | precision:3\"></div>\n\n <he-blank-node-state class=\"pl-1\"\n [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\" linkClass=\"is-dark\"\n ></he-blank-node-state>\n</ng-template>\n\n<ng-template #showDefault>\n <span>{{defaultValue}}</span>\n</ng-template>\n", styles: [":host{display:block}:host a.has-text-white:hover,:host a.has-text-white.is-hovered{text-decoration:underline}.array-container{max-height:100px;overflow-y:auto}\n"] }]
61
63
  }], propDecorators: { node: [{
62
64
  type: Input
63
65
  }], nodeType: [{
@@ -72,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
72
74
  type: HostBinding,
73
75
  args: ['class.is-inline-block']
74
76
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1rZXktdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9saW5rLWtleS12YWx1ZS9saW5rLWtleS12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2xpbmsta2V5LXZhbHVlL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFFN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBRW5DLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDL0IsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFakgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQUUsSUFBYSxFQUFFLEVBQUUsQ0FDakQsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFdEUsTUFBTSxV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Q0FBQzs7a0hBMUNVLHFCQUFxQjtzR0FBckIscUJBQXFCLGdQQ3pDbEMsdTJCQXdCQTsyRkRpQmEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl4QyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxHQUFHO3NCQURULEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFJRixhQUFhO3NCQURoQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFeHBhbmRhYmxlLCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGlzVW5kZWZpbmVkLCB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcblxuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgdmFsdWVMaW5rID0gKHZhbHVlOiBhbnkpID0+XG4gIGlzRXhwYW5kYWJsZSh2YWx1ZSkgJiYgdmFsdWVbJ0BpZCddID8gW2Jhc2VVcmwoKSwgdmFsdWVbJ0B0eXBlJ10udG9Mb3dlckNhc2UoKSwgdmFsdWVbJ0BpZCddXS5qb2luKCcvJykgOiBudWxsO1xuXG5jb25zdCB2YWx1ZUxpbmtSZWYgPSAodmFsdWU6IGFueSwgaHJlZj86IHN0cmluZykgPT5cbiAgaHJlZiA/IGA8YSBocmVmPVwiJHtocmVmfVwiPiR7dmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ119PC9hPmAgOiBudWxsO1xuXG5jb25zdCB2YWx1ZVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKHZhbHVlVmFsdWUpLmpvaW4oJywgJykgOiB0b1ByZWNpc2lvbih2YWx1ZSk7XG5cbmNvbnN0IHN0cmluZ01hcHBlcjoge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiBzdHJpbmc7XG59ID0ge1xuICB1bmRlZmluZWQ6ICgpID0+ICcnLFxuICBibGFua05vZGU6IHZhbHVlID0+XG4gICAgJ3Rlcm0nIGluIHZhbHVlXG4gICAgICA/IGAke3ZhbHVlTGlua1JlZih2YWx1ZS50ZXJtLCB2YWx1ZUxpbmsodmFsdWUudGVybSkpfSR7J3ZhbHVlJyBpbiB2YWx1ZSA/IGA6ICR7dmFsdWVWYWx1ZSh2YWx1ZS52YWx1ZSl9YCA6ICcnfWBcbiAgICAgIDogdmFsdWVMaW5rUmVmKHZhbHVlLCB2YWx1ZUxpbmsodmFsdWUpKSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlWydAaWQnXSxcbiAgb2JqZWN0OiB2YWx1ZSA9PlxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCh0b1N0cmluZykuam9pbignLCAnKVxuICAgICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgID8gdmFsdWUudG9KU09OKClcbiAgICAgIDogaXNFeHBhbmRhYmxlKHZhbHVlKVxuICAgICAgPyBzdHJpbmdNYXBwZXIuYmxhbmtOb2RlKHZhbHVlKVxuICAgICAgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMilcbn07XG5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHR5cGVvZiB2YWx1ZSBpbiBzdHJpbmdNYXBwZXIgPyBzdHJpbmdNYXBwZXJbdHlwZW9mIHZhbHVlXSh2YWx1ZSkgOiB2YWx1ZS50b1N0cmluZygpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1saW5rLWtleS12YWx1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLWtleS12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpbmtLZXlWYWx1ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlVHlwZT86IE5vZGVUeXBlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGRlZmF1bHRWYWx1ZT86IGFueSA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtaW5saW5lLWJsb2NrJylcbiAgZ2V0IGlzSW5saW5lQmxvY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNBcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgdG9TdHJpbmcgPSB0b1N0cmluZztcblxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVsnQHR5cGUnXSB8fCB0aGlzLm5vZGUudHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLm5vZGUsIHRoaXMua2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUxpbmsoKSB7XG4gICAgcmV0dXJuIHZhbHVlTGluayh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBcnJheSgpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVW5kZWZpbmVkKCkge1xuICAgIHJldHVybiBpc1VuZGVmaW5lZCh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1VuZGVmaW5lZDsgZWxzZSBzaG93RGVmYXVsdFwiPlxuICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cIm5vZGVcIj5cbiAgICA8YSBjbGFzcz1cImhhcy10ZXh0LXdoaXRlIGlzLXVuZGVybGluZWRcIiBbaHJlZl09XCJiYXNlVXJsICsgJy9zY2hlbWEvJyArIHR5cGUgKyAnIycgKyBrZXlcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj57e2tleX19PC9iPjwvYT5cbiAgICA8c3BhbiBjbGFzcz1cInByLTJcIj46PC9zcGFuPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXk7IGVsc2Ugc2luZ2xlVmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcnJheS1jb250YWluZXIgcGwtMlwiPlxuICAgICAgICA8cCAqbmdGb3I9XCJsZXQgdiBvZiB2YWx1ZVwiIFtpbm5lckh0bWxdPVwidG9TdHJpbmcodikgfCBwcmVjaXNpb246M1wiPjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZVZhbHVlPlxuICA8ZGl2IGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIHByLTFcIiBbaW5uZXJIdG1sXT1cInZhbHVlU3RyaW5nIHwgcHJlY2lzaW9uOjNcIj48L2Rpdj5cblxuICA8aGUtYmxhbmstbm9kZS1zdGF0ZVxuICAgIFtub2RlXT1cIm5vZGVcIiBbbm9kZVR5cGVdPVwibm9kZVR5cGVcIiBbZGF0YUtleV09XCJkYXRhS2V5XCIgW2tleV09XCJrZXlcIlxuICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93RGVmYXVsdD5cbiAgPHNwYW4+e3tkZWZhdWx0VmFsdWV9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1rZXktdmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9saW5rLWtleS12YWx1ZS9saW5rLWtleS12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2xpbmsta2V5LXZhbHVlL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFFN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBRW5DLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDL0IsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFakgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQUUsSUFBYSxFQUFFLEVBQUUsQ0FDakQsSUFBSSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUV0RixNQUFN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QUMsS0FBVTtRQUMzQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ2hELENBQUM7O2tIQTdDVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixnUEN6Q2xDLCtqREF1Q0E7MkZERWEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl4QyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxHQUFHO3NCQURULEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPRixhQUFhO3NCQURoQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFeHBhbmRhYmxlLCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGlzVW5kZWZpbmVkLCB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcblxuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgdmFsdWVMaW5rID0gKHZhbHVlOiBhbnkpID0+XG4gIGlzRXhwYW5kYWJsZSh2YWx1ZSkgJiYgdmFsdWVbJ0BpZCddID8gW2Jhc2VVcmwoKSwgdmFsdWVbJ0B0eXBlJ10udG9Mb3dlckNhc2UoKSwgdmFsdWVbJ0BpZCddXS5qb2luKCcvJykgOiBudWxsO1xuXG5jb25zdCB2YWx1ZUxpbmtSZWYgPSAodmFsdWU6IGFueSwgaHJlZj86IHN0cmluZykgPT5cbiAgaHJlZiA/IGA8YSBjbGFzcz1cImlzLWRhcmtcIiBocmVmPVwiJHtocmVmfVwiPiR7dmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ119PC9hPmAgOiBudWxsO1xuXG5jb25zdCB2YWx1ZVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKHZhbHVlVmFsdWUpLmpvaW4oJywgJykgOiB0b1ByZWNpc2lvbih2YWx1ZSk7XG5cbmNvbnN0IHN0cmluZ01hcHBlcjoge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlPzogYW55KSA9PiBzdHJpbmc7XG59ID0ge1xuICB1bmRlZmluZWQ6ICgpID0+ICcnLFxuICBibGFua05vZGU6IHZhbHVlID0+XG4gICAgJ3Rlcm0nIGluIHZhbHVlXG4gICAgICA/IGAke3ZhbHVlTGlua1JlZih2YWx1ZS50ZXJtLCB2YWx1ZUxpbmsodmFsdWUudGVybSkpfSR7J3ZhbHVlJyBpbiB2YWx1ZSA/IGA6ICR7dmFsdWVWYWx1ZSh2YWx1ZS52YWx1ZSl9YCA6ICcnfWBcbiAgICAgIDogdmFsdWVMaW5rUmVmKHZhbHVlLCB2YWx1ZUxpbmsodmFsdWUpKSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlWydAaWQnXSxcbiAgb2JqZWN0OiB2YWx1ZSA9PlxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCh0b1N0cmluZykuam9pbignLCAnKVxuICAgICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgID8gdmFsdWUudG9KU09OKClcbiAgICAgIDogaXNFeHBhbmRhYmxlKHZhbHVlKVxuICAgICAgPyBzdHJpbmdNYXBwZXIuYmxhbmtOb2RlKHZhbHVlKVxuICAgICAgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMilcbn07XG5cbmNvbnN0IHRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHR5cGVvZiB2YWx1ZSBpbiBzdHJpbmdNYXBwZXIgPyBzdHJpbmdNYXBwZXJbdHlwZW9mIHZhbHVlXSh2YWx1ZSkgOiB2YWx1ZS50b1N0cmluZygpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1saW5rLWtleS12YWx1ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLWtleS12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpbmtLZXlWYWx1ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlVHlwZT86IE5vZGVUeXBlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YUtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGtleT86IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGRlZmF1bHRWYWx1ZT86IGFueSA9ICcnO1xuXG4gIHB1YmxpYyBpc0V4cGFuZGFibGUgPSBpc0V4cGFuZGFibGU7XG4gIHB1YmxpYyB2YWx1ZUxpbmsgPSB2YWx1ZUxpbms7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1pbmxpbmUtYmxvY2snKVxuICBnZXQgaXNJbmxpbmVCbG9jaygpIHtcbiAgICByZXR1cm4gdGhpcy5pc0FycmF5O1xuICB9XG5cbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyB0b1N0cmluZyA9IHRvU3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlWydAdHlwZSddIHx8IHRoaXMubm9kZS50eXBlO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMubm9kZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZVN0cmluZygpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQXJyYXkoKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1VuZGVmaW5lZCgpIHtcbiAgICByZXR1cm4gaXNVbmRlZmluZWQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNCbGFua05vZGUodmFsdWU6IGFueSkge1xuICAgIHJldHVybiBpc0V4cGFuZGFibGUodmFsdWUpICYmICd0ZXJtJyBpbiB2YWx1ZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1VuZGVmaW5lZDsgZWxzZSBzaG93RGVmYXVsdFwiPlxuICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cIm5vZGVcIj5cbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiBbaHJlZl09XCJiYXNlVXJsICsgJy9zY2hlbWEvJyArIHR5cGUgKyAnIycgKyBrZXlcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj57e2tleX19PC9iPjwvYT5cbiAgICA8c3BhbiBjbGFzcz1cInByLTJcIj46PC9zcGFuPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXk7IGVsc2Ugc2luZ2xlVmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcnJheS1jb250YWluZXIgcGwtMlwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2IG9mIHZhbHVlXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdHJpbmdWYWx1ZT5cbiAgICAgICAgICAgIDxwIFtpbm5lckh0bWxdPVwidG9TdHJpbmcodikgfCBwcmVjaXNpb246M1wiPjwvcD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0JsYW5rTm9kZSh2KTsgc3RyaW5nVmFsdWVcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIGhyZWY9XCJ2YWx1ZUxpbmsodi50ZXJtKVwiPnt7di50ZXJtLm5hbWUgfHwgdi50ZXJtWydAaWQnXX19PC9hPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTJcIj46PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIGlzLW5vd3JhcFwiIFtpbm5lckh0bWxdPVwidG9TdHJpbmcodi52YWx1ZSkgfCBwcmVjaXNpb246M1wiPjwvZGl2PlxuXG4gICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwicGwtMVwiXG4gICAgICAgICAgICAgICAgW25vZGVdPVwidlwiIFtub2RlVHlwZV09XCJub2RlVHlwZVwiIFtkYXRhS2V5XT1cImRhdGFLZXlcIiBrZXk9XCJ2YWx1ZVwiIGxpbmtDbGFzcz1cImlzLWRhcmtcIlxuICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVmFsdWU+XG4gIDxkaXYgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgaXMtbm93cmFwXCIgW2lubmVySHRtbF09XCJ2YWx1ZVN0cmluZyB8IHByZWNpc2lvbjozXCI+PC9kaXY+XG5cbiAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJwbC0xXCJcbiAgICBbbm9kZV09XCJub2RlXCIgW25vZGVUeXBlXT1cIm5vZGVUeXBlXCIgW2RhdGFLZXldPVwiZGF0YUtleVwiIFtrZXldPVwia2V5XCIgbGlua0NsYXNzPVwiaXMtZGFya1wiXG4gID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dEZWZhdWx0PlxuICA8c3Bhbj57e2RlZmF1bHRWYWx1ZX19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -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"] }, { 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"] }, { 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"] }]