@hestia-earth/ui-components 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule, Directive, Input, Pipe, Component, InjectionToken, Inject, ViewChild, EventEmitter, Output, HostListener, HostBinding } from '@angular/core';
2
+ import { Injectable, NgModule, Component, Input, HostBinding, Directive, Pipe, InjectionToken, Inject, ViewChild, EventEmitter, Output, HostListener } from '@angular/core';
3
3
  import * as i3 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1$4 from '@angular/forms';
@@ -8,23 +8,23 @@ import * as i4 from '@angular/router';
8
8
  import { RouterModule } from '@angular/router';
9
9
  import * as i10 from '@ng-bootstrap/ng-bootstrap';
10
10
  import { NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';
11
- import * as i1$2 from '@angular/google-maps';
11
+ import * as i1$3 from '@angular/google-maps';
12
12
  import { GoogleMap, GoogleMapsModule } from '@angular/google-maps';
13
13
  import * as i1 from '@fortawesome/angular-fontawesome';
14
14
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
15
15
  import { faClone, faCircle, faIdBadge } from '@fortawesome/free-regular-svg-icons';
16
16
  import { faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faClipboard, faClipboardList, faClone as faClone$1, faComments, faDownload, faDrawPolygon, faEdit, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faPlus, faPlusCircle, faSearch, faSeedling, faSpellCheck, faSpinner, faTimes, faUser } from '@fortawesome/free-solid-svg-icons';
17
+ import * as i1$1 from '@angular/platform-browser';
18
+ import { ReplaySubject, of, forkJoin, from, zip } from 'rxjs';
17
19
  import { getColor } from 'random-material-color';
18
20
  import { EmissionMethodTier, NodeType, isExpandable, TermTermType, nestedSearchableKeys, SchemaType, SCHEMA_VERSION, sortKeysByType, CycleFunctionalUnit, SiteSiteType, isTypeValid, isTypeNode, typeToSchemaType } from '@hestia-earth/schema';
19
21
  import { fileToExt, nodeTypeToParam, DataState, SupportedExtensions } from '@hestia-earth/api';
20
22
  import { unique, isEmpty, isUndefined, isNumber, toPrecision, isBoolean, ConvertUnits, converters, convertValue, isEqual, diffInDays } from '@hestia-earth/utils';
21
- import { of, ReplaySubject, forkJoin, from, zip } from 'rxjs';
23
+ import * as pluralize from 'pluralize';
22
24
  import { catchError, map, take, mergeMap, debounceTime, distinctUntilChanged, tap, switchMap, reduce, filter, distinct, toArray, mergeAll, groupBy } from 'rxjs/operators';
23
25
  import { __rest, __awaiter } from 'tslib';
24
26
  import * as csvtojson from 'csvtojson';
25
- import * as i1$1 from '@angular/common/http';
26
- import * as i1$3 from '@angular/platform-browser';
27
- import * as pluralize from 'pluralize';
27
+ import * as i1$2 from '@angular/common/http';
28
28
  import BulmaTagsInput from '@hestia-earth/bulma-tagsinput';
29
29
  import { json2csvAsync } from 'json-2-csv';
30
30
  import * as i6 from '@angular/cdk/drag-drop';
@@ -85,6 +85,148 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
85
85
  }]
86
86
  }], ctorParameters: function () { return [{ type: i1.FaIconLibrary }]; } });
87
87
 
88
+ class SocialTagsComponent {
89
+ constructor(meta) {
90
+ this.meta = meta;
91
+ this.config = {};
92
+ this.classes = 'is-hidden';
93
+ }
94
+ ngOnInit() {
95
+ this.meta.addTag({ charset: 'UTF-8' });
96
+ const config = Object.assign({ 'og:url': window.location.href.split('?')[0] }, this.config);
97
+ Object.keys(config).map(name => {
98
+ const content = config[name];
99
+ this.meta.updateTag({ name, content });
100
+ if (name === 'og:description') {
101
+ this.meta.updateTag({ name: 'description', content });
102
+ }
103
+ });
104
+ }
105
+ }
106
+ SocialTagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SocialTagsComponent, deps: [{ token: i1$1.Meta }], target: i0.ɵɵFactoryTarget.Component });
107
+ SocialTagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SocialTagsComponent, selector: "he-social-tags", inputs: { config: "config" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<span></span>\n", styles: [""] });
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SocialTagsComponent, decorators: [{
109
+ type: Component,
110
+ args: [{
111
+ selector: 'he-social-tags',
112
+ templateUrl: './social-tags.component.html',
113
+ styleUrls: ['./social-tags.component.scss']
114
+ }]
115
+ }], ctorParameters: function () { return [{ type: i1$1.Meta }]; }, propDecorators: { config: [{
116
+ type: Input
117
+ }], classes: [{
118
+ type: HostBinding,
119
+ args: ['class']
120
+ }] } });
121
+
122
+ let toastId = 0;
123
+ class HeToastService {
124
+ constructor() {
125
+ this.toasts = new ReplaySubject(1);
126
+ }
127
+ success(message, duration = 3000) {
128
+ this.toasts.next({
129
+ id: ++toastId,
130
+ message,
131
+ duration,
132
+ color: 'success',
133
+ showRawMessage: true
134
+ });
135
+ }
136
+ error(message, showRawMessage = true, duration = 3000) {
137
+ this.toasts.next({
138
+ id: ++toastId,
139
+ message: (`${message}` || '').trim(),
140
+ duration,
141
+ color: 'danger',
142
+ showRawMessage
143
+ });
144
+ }
145
+ }
146
+ HeToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
147
+ HeToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, providedIn: 'root' });
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, decorators: [{
149
+ type: Injectable,
150
+ args: [{
151
+ providedIn: 'root'
152
+ }]
153
+ }] });
154
+
155
+ class ToastComponent {
156
+ constructor(toastService) {
157
+ this.toastService = toastService;
158
+ this.subscriptions = [];
159
+ this.toasts = [];
160
+ }
161
+ ngOnInit() {
162
+ this.subscriptions.push(this.toastService.toasts.subscribe(toast => this.add(toast)));
163
+ }
164
+ ngOnDestroy() {
165
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
166
+ }
167
+ add(toast) {
168
+ this.toasts.push(toast);
169
+ if (toast.duration) {
170
+ toast.timeout = setTimeout(() => this.dismiss(toast), toast.duration);
171
+ }
172
+ }
173
+ dismiss(toast) {
174
+ this.toasts.splice(this.toasts.findIndex(val => val.id === toast.id), 1);
175
+ }
176
+ }
177
+ ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, deps: [{ token: HeToastService }], target: i0.ɵɵFactoryTarget.Component });
178
+ ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToastComponent, selector: "he-toast", ngImport: i0, template: "<div class=\"mb-3 columns is-centered is-vcentered\">\n <div class=\"notification is-{{toast.color}}\" role=\"alert\" *ngFor=\"let toast of toasts\">\n <button class=\"delete\" aria-label=\"delete\" (click)=\"dismiss(toast)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <strong [ngSwitch]=\"toast.color\">\n <ng-container *ngSwitchCase=\"'danger'\">\n <ng-container [ngSwitch]=\"toast.message\">\n <span *ngSwitchCase=\"'Unauthorized'\">You are not allowed to perform this action.</span>\n <span *ngSwitchCase=\"'form-invalid'\">Please fix all the errors on this page.</span>\n <span *ngSwitchCase=\"'users-email-already-taken'\">Email already taken.</span>\n <span *ngSwitchCase=\"'users-auth-already-taken'\">Account already connected.</span>\n <span *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </ng-container>\n </strong>\n </div>\n</div>\n", styles: [":host{bottom:0;position:fixed;width:100%}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, decorators: [{
180
+ type: Component,
181
+ args: [{
182
+ selector: 'he-toast',
183
+ templateUrl: './toast.component.html',
184
+ styleUrls: ['./toast.component.scss']
185
+ }]
186
+ }], ctorParameters: function () { return [{ type: HeToastService }]; } });
187
+
188
+ /* eslint-disable @angular-eslint/directive-selector */
189
+ class BindOnceDirective {
190
+ constructor(templateRef, viewContainerRef) {
191
+ this.embeddedViewRef = viewContainerRef.createEmbeddedView(templateRef);
192
+ this.embeddedViewRef.detach();
193
+ }
194
+ ngOnChanges() {
195
+ this.embeddedViewRef.detectChanges();
196
+ }
197
+ }
198
+ BindOnceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BindOnceDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
199
+ BindOnceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: BindOnceDirective, selector: "[bindOnce]", inputs: { bindOnce: "bindOnce" }, usesOnChanges: true, ngImport: i0 });
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BindOnceDirective, decorators: [{
201
+ type: Directive,
202
+ args: [{
203
+ selector: '[bindOnce]'
204
+ }]
205
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { bindOnce: [{
206
+ type: Input
207
+ }] } });
208
+
209
+ const shouldDefault = {
210
+ string: (value) => !value,
211
+ number: (value) => !value && value !== 0,
212
+ boolean: (value) => !value,
213
+ object: (value) => !value || !Object.keys(value).length,
214
+ undefined: () => true
215
+ };
216
+ class DefaultPipe {
217
+ transform(value, defaultValue) {
218
+ return shouldDefault[typeof value](value) ? defaultValue : value;
219
+ }
220
+ }
221
+ DefaultPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DefaultPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
222
+ DefaultPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DefaultPipe, name: "default" });
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DefaultPipe, decorators: [{
224
+ type: Pipe,
225
+ args: [{
226
+ name: 'default'
227
+ }]
228
+ }] });
229
+
88
230
  const get$4 = require('lodash.get');
89
231
  const gitHome = 'https://gitlab.com/hestia-earth';
90
232
  const gitRawBaseUrl = 'https://glcdn.githack.com/hestia-earth';
@@ -96,7 +238,6 @@ const baseUrl = () => window.location.origin.includes('localhost') ?
96
238
  window.location.origin :
97
239
  'https://www.hestia.earth';
98
240
  const isExternal = () => baseUrl() !== window.location.origin;
99
- ;
100
241
  const parseErrorStatus = (error) => ((error === null || error === void 0 ? void 0 : error.statusText) || '').toLowerCase().replace(/\s/g, '-');
101
242
  const parseErrorMessage = (error) => get$4(error, 'error.error', get$4(error, 'error.message', get$4(error, 'error', get$4(error, 'message', error))));
102
243
  const handleAPIError = (error) => {
@@ -271,155 +412,20 @@ const filenameWithoutExt = (filename = '') => {
271
412
  return file.endsWith('.') ? file.substring(0, file.length - 1) : file;
272
413
  };
273
414
 
274
- const SUCCESS_CRITERION_MAX_DELTA_PERCENT = 5;
275
- const WARNING_CRITERION_MAX_DELTA_PERCENT = 20;
276
- var DeltaColour;
277
- (function (DeltaColour) {
278
- DeltaColour["Success"] = "success";
279
- DeltaColour["Warning"] = "warning";
280
- DeltaColour["Danger"] = "danger";
281
- })(DeltaColour || (DeltaColour = {}));
282
- var DeltaDisplayType;
283
- (function (DeltaDisplayType) {
284
- DeltaDisplayType["absolute"] = "absolute";
285
- DeltaDisplayType["percent"] = "percent";
286
- })(DeltaDisplayType || (DeltaDisplayType = {}));
287
- const deltaPerType = {
288
- [DeltaDisplayType.absolute]: (value, original) => value - original,
289
- [DeltaDisplayType.percent]: (value, original) => ((value - original) / original) * 100
290
- };
291
- const roundValue = (value) => +`${value}`.substring(0, 10);
292
- const delta = (value, originalValue, displayType = DeltaDisplayType.percent, mapping) => {
293
- const vvalue = roundValue(propertyValue$1(value));
294
- const voriginalValue = roundValue(propertyValue$1(originalValue));
295
- const deltaFuncs = Object.assign(Object.assign({}, deltaPerType), mapping);
296
- const diff = vvalue === voriginalValue ? 0 : deltaFuncs[displayType](vvalue, voriginalValue);
297
- return Number.isFinite(diff) ? (diff === -0 ? 0 : diff) : 0;
298
- };
299
- var PercentDeltaConditions;
300
- (function (PercentDeltaConditions) {
301
- PercentDeltaConditions["recalculated0"] = "recalculated should be 0";
302
- PercentDeltaConditions["original0"] = "original is 0";
303
- })(PercentDeltaConditions || (PercentDeltaConditions = {}));
304
- const calculatePercentDeltaConditions = {
305
- [PercentDeltaConditions.recalculated0]: (original, recalculated) => original > 0 && recalculated === 0,
306
- [PercentDeltaConditions.original0]: (original, recalculated) => original === 0 && recalculated > 0
307
- };
308
- const calculatePercentDeltaResult = {
309
- [PercentDeltaConditions.recalculated0]: (original, recalculated) => (recalculated - original) / (original + 1),
310
- // Always considered an error so deliberately exceed SUCCESS_CRITERION_MAX_DELTA_PERCENT
311
- [PercentDeltaConditions.original0]: (original, recalculated) => Math.sign(recalculated - original),
312
- default: (original, recalculated) => (recalculated - original) / original
313
- };
314
- const calculatePercentDelta = (recalculated, original) => {
315
- const matchingCondition = Object.values(PercentDeltaConditions).find((value) => calculatePercentDeltaConditions[value](original, recalculated)) || 'default';
316
- return calculatePercentDeltaResult[matchingCondition](original, recalculated) * 100;
317
- };
318
- const customDeltaFuncs = {
319
- [DeltaDisplayType.percent]: calculatePercentDelta
320
- };
321
- const evaluateSuccess = (deltaValue) => Math.abs(deltaValue) < SUCCESS_CRITERION_MAX_DELTA_PERCENT
322
- ? DeltaColour.Success
323
- : Math.abs(deltaValue) < WARNING_CRITERION_MAX_DELTA_PERCENT
324
- ? DeltaColour.Warning
325
- : DeltaColour.Danger;
326
-
327
- /* eslint-disable @angular-eslint/directive-selector */
328
- class BindOnceDirective {
329
- constructor(templateRef, viewContainerRef) {
330
- this.embeddedViewRef = viewContainerRef.createEmbeddedView(templateRef);
331
- this.embeddedViewRef.detach();
332
- }
333
- ngOnChanges() {
334
- this.embeddedViewRef.detectChanges();
335
- }
336
- }
337
- BindOnceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BindOnceDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
338
- BindOnceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: BindOnceDirective, selector: "[bindOnce]", inputs: { bindOnce: "bindOnce" }, usesOnChanges: true, ngImport: i0 });
339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BindOnceDirective, decorators: [{
340
- type: Directive,
341
- args: [{
342
- selector: '[bindOnce]'
343
- }]
344
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { bindOnce: [{
345
- type: Input
346
- }] } });
347
-
348
- class PrecisionPipe {
349
- transform(value, precision) {
350
- return isUndefined(value) ?
351
- null : (isNumber(value) ?
352
- `${toPrecision(parseFloat(`${value}`), parseInt(`${precision}`, 10))}`.replace(/\.00$/, '') :
353
- value);
415
+ class EllipsisPipe {
416
+ transform(value, maxLength) {
417
+ return ellipsis(`${value}`, maxLength);
354
418
  }
355
419
  }
356
- PrecisionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PrecisionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
357
- PrecisionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PrecisionPipe, name: "precision" });
358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PrecisionPipe, decorators: [{
420
+ EllipsisPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EllipsisPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
421
+ EllipsisPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EllipsisPipe, name: "ellipsis" });
422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EllipsisPipe, decorators: [{
359
423
  type: Pipe,
360
424
  args: [{
361
- name: 'precision'
425
+ name: 'ellipsis'
362
426
  }]
363
427
  }] });
364
428
 
365
- class BlankNodeValueDeltaComponent {
366
- constructor() {
367
- this.displayType = DeltaDisplayType.percent;
368
- this.DeltaDisplayType = DeltaDisplayType;
369
- }
370
- get hide() {
371
- return emptyValue(this.value) || emptyValue(this.originalValue);
372
- }
373
- get delta() {
374
- return delta(this.value, this.originalValue, this.displayType, customDeltaFuncs);
375
- }
376
- get color() {
377
- return this.displayType === DeltaDisplayType.percent ? evaluateSuccess(this.delta) : '';
378
- }
379
- }
380
- BlankNodeValueDeltaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeValueDeltaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
381
- BlankNodeValueDeltaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BlankNodeValueDeltaComponent, selector: "he-blank-node-value-delta", inputs: { value: "value", originalValue: "originalValue", displayType: "displayType" }, ngImport: i0, template: "<small [class.is-hidden]=\"hide\">\n <span class=\"has-text-{{color}}\">\n <span *ngIf=\"delta > 0\">+</span>\n <ng-container [ngSwitch]=\"displayType\">\n <ng-container *ngSwitchCase=\"DeltaDisplayType.absolute\">\n <span *bindOnce=\"delta\">{{delta | precision:3}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"DeltaDisplayType.percent\">\n <span *bindOnce=\"delta\">{{delta | number:'1.0-2'}}</span>\n <span>%</span>\n </ng-container>\n </ng-container>\n </span>\n</small>\n", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }], pipes: { "precision": PrecisionPipe, "number": i3.DecimalPipe } });
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeValueDeltaComponent, decorators: [{
383
- type: Component,
384
- args: [{
385
- selector: 'he-blank-node-value-delta',
386
- templateUrl: './blank-node-value-delta.component.html',
387
- styleUrls: ['./blank-node-value-delta.component.scss']
388
- }]
389
- }], propDecorators: { value: [{
390
- type: Input
391
- }], originalValue: [{
392
- type: Input
393
- }], displayType: [{
394
- type: Input
395
- }] } });
396
-
397
- class BlankNodeDiffsComponent {
398
- constructor() {
399
- this.originalValues = [];
400
- this.recalculatedValues = [];
401
- this.propertyValue = propertyValue$1;
402
- this.values = [];
403
- }
404
- ngOnInit() {
405
- this.values = formatDiffValues(this.originalValues, this.recalculatedValues);
406
- }
407
- }
408
- BlankNodeDiffsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeDiffsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
409
- BlankNodeDiffsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BlankNodeDiffsComponent, selector: "he-blank-node-diffs", inputs: { originalValues: "originalValues", recalculatedValues: "recalculatedValues" }, ngImport: i0, template: "<div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-3\" *bindOnce=\"values\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th>Original</th>\n <th>Recalculated</th>\n <th>Difference</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let value of values\"\n [class.has-background-light]=\"!!value.original && value.original !== value.recalculated\"\n >\n <td class=\"width-auto\" [attr.title]=\"value.term.name\">\n <ng-container *ngTemplateOutlet=\"termLink; context: {$implicit: value.term}\"></ng-container>\n </td>\n <td>\n <span>{{value.original === undefined ? '-' : value.original}}</span>\n </td>\n <td>\n <span>{{value.recalculated === undefined ? '-' : value.recalculated}}</span>\n </td>\n <td class=\"is-nowrap\">\n <he-blank-node-value-delta\n [value]=\"value.recalculated\"\n [originalValue]=\"value.original\"\n ></he-blank-node-value-delta>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<ng-template #termLink let-term>\n <a [routerLink]=\"['/', 'term', term['@id']]\" target=\"_blank\">\n <span class=\"is-nowrap has-text-ellipsis\">{{term.name}}</span>\n </a>\n</ng-template>\n", styles: ["table.data-table th:first-child,table.data-table td:first-child{width:auto}\n"], components: [{ type: BlankNodeValueDeltaComponent, selector: "he-blank-node-value-delta", inputs: ["value", "originalValue", "displayType"] }], directives: [{ type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }] });
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeDiffsComponent, decorators: [{
411
- type: Component,
412
- args: [{
413
- selector: 'he-blank-node-diffs',
414
- templateUrl: './blank-node-diffs.component.html',
415
- styleUrls: ['./blank-node-diffs.component.scss']
416
- }]
417
- }], propDecorators: { originalValues: [{
418
- type: Input
419
- }], recalculatedValues: [{
420
- type: Input
421
- }] } });
422
-
423
429
  const termProperties = (term) => Object.keys(term).filter(key => !isExpandable(term[key]) && ![
424
430
  'pinned', 'expanded', 'extended', 'selected', 'loading',
425
431
  '_score', '@type', '@id', '@context', 'createdAt',
@@ -602,6 +608,232 @@ const sortOrder = [
602
608
  TermTermType.standardsLabels
603
609
  ];
604
610
 
611
+ class KeyToLabelPipe {
612
+ transform(value) {
613
+ // using termTypeLabel here which defaults to `keyToLabel` function
614
+ return termTypeLabel(value);
615
+ }
616
+ }
617
+ KeyToLabelPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyToLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
618
+ KeyToLabelPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyToLabelPipe, name: "keyToLabel" });
619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyToLabelPipe, decorators: [{
620
+ type: Pipe,
621
+ args: [{
622
+ name: 'keyToLabel'
623
+ }]
624
+ }] });
625
+
626
+ class KeysPipe {
627
+ transform(value, sort = false) {
628
+ const keys = Object.keys(value).map(key => ({ key, value: value[key] }));
629
+ if (sort) {
630
+ keys.sort((a, b) => a.key.localeCompare(b.key));
631
+ }
632
+ return keys;
633
+ }
634
+ }
635
+ KeysPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
636
+ KeysPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeysPipe, name: "keys" });
637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeysPipe, decorators: [{
638
+ type: Pipe,
639
+ args: [{
640
+ name: 'keys'
641
+ }]
642
+ }] });
643
+
644
+ class PluralizePipe {
645
+ transform(value, times = 0) {
646
+ return pluralize(value, times);
647
+ }
648
+ }
649
+ PluralizePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PluralizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
650
+ PluralizePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PluralizePipe, name: "pluralize" });
651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PluralizePipe, decorators: [{
652
+ type: Pipe,
653
+ args: [{
654
+ name: 'pluralize'
655
+ }]
656
+ }] });
657
+
658
+ class PrecisionPipe {
659
+ transform(value, precision) {
660
+ return isUndefined(value) ?
661
+ null : (isNumber(value) ?
662
+ `${toPrecision(parseFloat(`${value}`), parseInt(`${precision}`, 10))}`.replace(/\.00$/, '') :
663
+ value);
664
+ }
665
+ }
666
+ PrecisionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PrecisionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
667
+ PrecisionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PrecisionPipe, name: "precision" });
668
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PrecisionPipe, decorators: [{
669
+ type: Pipe,
670
+ args: [{
671
+ name: 'precision'
672
+ }]
673
+ }] });
674
+
675
+ const components$7 = [
676
+ SocialTagsComponent,
677
+ ToastComponent,
678
+ BindOnceDirective,
679
+ DefaultPipe,
680
+ EllipsisPipe,
681
+ KeysPipe,
682
+ PluralizePipe,
683
+ KeyToLabelPipe,
684
+ PrecisionPipe
685
+ ];
686
+ class HeCommonLightModule {
687
+ }
688
+ HeCommonLightModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonLightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
689
+ HeCommonLightModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonLightModule, declarations: [SocialTagsComponent,
690
+ ToastComponent,
691
+ BindOnceDirective,
692
+ DefaultPipe,
693
+ EllipsisPipe,
694
+ KeysPipe,
695
+ PluralizePipe,
696
+ KeyToLabelPipe,
697
+ PrecisionPipe], imports: [CommonModule, FormsModule, RouterModule,
698
+ HeFontawesomeModule], exports: [HeFontawesomeModule, SocialTagsComponent,
699
+ ToastComponent,
700
+ BindOnceDirective,
701
+ DefaultPipe,
702
+ EllipsisPipe,
703
+ KeysPipe,
704
+ PluralizePipe,
705
+ KeyToLabelPipe,
706
+ PrecisionPipe] });
707
+ HeCommonLightModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonLightModule, imports: [[
708
+ CommonModule, FormsModule, RouterModule,
709
+ HeFontawesomeModule
710
+ ], HeFontawesomeModule] });
711
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonLightModule, decorators: [{
712
+ type: NgModule,
713
+ args: [{
714
+ declarations: components$7,
715
+ exports: [
716
+ HeFontawesomeModule,
717
+ ...components$7
718
+ ],
719
+ imports: [
720
+ CommonModule, FormsModule, RouterModule,
721
+ HeFontawesomeModule
722
+ ]
723
+ }]
724
+ }] });
725
+
726
+ const SUCCESS_CRITERION_MAX_DELTA_PERCENT = 5;
727
+ const WARNING_CRITERION_MAX_DELTA_PERCENT = 20;
728
+ var DeltaColour;
729
+ (function (DeltaColour) {
730
+ DeltaColour["Success"] = "success";
731
+ DeltaColour["Warning"] = "warning";
732
+ DeltaColour["Danger"] = "danger";
733
+ })(DeltaColour || (DeltaColour = {}));
734
+ var DeltaDisplayType;
735
+ (function (DeltaDisplayType) {
736
+ DeltaDisplayType["absolute"] = "absolute";
737
+ DeltaDisplayType["percent"] = "percent";
738
+ })(DeltaDisplayType || (DeltaDisplayType = {}));
739
+ const deltaPerType = {
740
+ [DeltaDisplayType.absolute]: (value, original) => value - original,
741
+ [DeltaDisplayType.percent]: (value, original) => ((value - original) / original) * 100
742
+ };
743
+ const roundValue = (value) => +`${value}`.substring(0, 10);
744
+ const delta = (value, originalValue, displayType = DeltaDisplayType.percent, mapping) => {
745
+ const vvalue = roundValue(propertyValue$1(value));
746
+ const voriginalValue = roundValue(propertyValue$1(originalValue));
747
+ const deltaFuncs = Object.assign(Object.assign({}, deltaPerType), mapping);
748
+ const diff = vvalue === voriginalValue ? 0 : deltaFuncs[displayType](vvalue, voriginalValue);
749
+ return Number.isFinite(diff) ? (diff === -0 ? 0 : diff) : 0;
750
+ };
751
+ var PercentDeltaConditions;
752
+ (function (PercentDeltaConditions) {
753
+ PercentDeltaConditions["recalculated0"] = "recalculated should be 0";
754
+ PercentDeltaConditions["original0"] = "original is 0";
755
+ })(PercentDeltaConditions || (PercentDeltaConditions = {}));
756
+ const calculatePercentDeltaConditions = {
757
+ [PercentDeltaConditions.recalculated0]: (original, recalculated) => original > 0 && recalculated === 0,
758
+ [PercentDeltaConditions.original0]: (original, recalculated) => original === 0 && recalculated > 0
759
+ };
760
+ const calculatePercentDeltaResult = {
761
+ [PercentDeltaConditions.recalculated0]: (original, recalculated) => (recalculated - original) / (original + 1),
762
+ // Always considered an error so deliberately exceed SUCCESS_CRITERION_MAX_DELTA_PERCENT
763
+ [PercentDeltaConditions.original0]: (original, recalculated) => Math.sign(recalculated - original),
764
+ default: (original, recalculated) => (recalculated - original) / original
765
+ };
766
+ const calculatePercentDelta = (recalculated, original) => {
767
+ const matchingCondition = Object.values(PercentDeltaConditions).find((value) => calculatePercentDeltaConditions[value](original, recalculated)) || 'default';
768
+ return calculatePercentDeltaResult[matchingCondition](original, recalculated) * 100;
769
+ };
770
+ const customDeltaFuncs = {
771
+ [DeltaDisplayType.percent]: calculatePercentDelta
772
+ };
773
+ const evaluateSuccess = (deltaValue) => Math.abs(deltaValue) < SUCCESS_CRITERION_MAX_DELTA_PERCENT
774
+ ? DeltaColour.Success
775
+ : Math.abs(deltaValue) < WARNING_CRITERION_MAX_DELTA_PERCENT
776
+ ? DeltaColour.Warning
777
+ : DeltaColour.Danger;
778
+
779
+ class BlankNodeValueDeltaComponent {
780
+ constructor() {
781
+ this.displayType = DeltaDisplayType.percent;
782
+ this.DeltaDisplayType = DeltaDisplayType;
783
+ }
784
+ get hide() {
785
+ return emptyValue(this.value) || emptyValue(this.originalValue);
786
+ }
787
+ get delta() {
788
+ return delta(this.value, this.originalValue, this.displayType, customDeltaFuncs);
789
+ }
790
+ get color() {
791
+ return this.displayType === DeltaDisplayType.percent ? evaluateSuccess(this.delta) : '';
792
+ }
793
+ }
794
+ BlankNodeValueDeltaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeValueDeltaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
795
+ BlankNodeValueDeltaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BlankNodeValueDeltaComponent, selector: "he-blank-node-value-delta", inputs: { value: "value", originalValue: "originalValue", displayType: "displayType" }, ngImport: i0, template: "<small [class.is-hidden]=\"hide\">\n <span class=\"has-text-{{color}}\">\n <span *ngIf=\"delta > 0\">+</span>\n <ng-container [ngSwitch]=\"displayType\">\n <ng-container *ngSwitchCase=\"DeltaDisplayType.absolute\">\n <span *bindOnce=\"delta\">{{delta | precision:3}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"DeltaDisplayType.percent\">\n <span *bindOnce=\"delta\">{{delta | number:'1.0-2'}}</span>\n <span>%</span>\n </ng-container>\n </ng-container>\n </span>\n</small>\n", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }], pipes: { "precision": PrecisionPipe, "number": i3.DecimalPipe } });
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeValueDeltaComponent, decorators: [{
797
+ type: Component,
798
+ args: [{
799
+ selector: 'he-blank-node-value-delta',
800
+ templateUrl: './blank-node-value-delta.component.html',
801
+ styleUrls: ['./blank-node-value-delta.component.scss']
802
+ }]
803
+ }], propDecorators: { value: [{
804
+ type: Input
805
+ }], originalValue: [{
806
+ type: Input
807
+ }], displayType: [{
808
+ type: Input
809
+ }] } });
810
+
811
+ class BlankNodeDiffsComponent {
812
+ constructor() {
813
+ this.originalValues = [];
814
+ this.recalculatedValues = [];
815
+ this.propertyValue = propertyValue$1;
816
+ this.values = [];
817
+ }
818
+ ngOnInit() {
819
+ this.values = formatDiffValues(this.originalValues, this.recalculatedValues);
820
+ }
821
+ }
822
+ BlankNodeDiffsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeDiffsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
823
+ BlankNodeDiffsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: BlankNodeDiffsComponent, selector: "he-blank-node-diffs", inputs: { originalValues: "originalValues", recalculatedValues: "recalculatedValues" }, ngImport: i0, template: "<div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-3\" *bindOnce=\"values\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th>Original</th>\n <th>Recalculated</th>\n <th>Difference</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let value of values\"\n [class.has-background-light]=\"!!value.original && value.original !== value.recalculated\"\n >\n <td class=\"width-auto\" [attr.title]=\"value.term.name\">\n <ng-container *ngTemplateOutlet=\"termLink; context: {$implicit: value.term}\"></ng-container>\n </td>\n <td>\n <span>{{value.original === undefined ? '-' : value.original}}</span>\n </td>\n <td>\n <span>{{value.recalculated === undefined ? '-' : value.recalculated}}</span>\n </td>\n <td class=\"is-nowrap\">\n <he-blank-node-value-delta\n [value]=\"value.recalculated\"\n [originalValue]=\"value.original\"\n ></he-blank-node-value-delta>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<ng-template #termLink let-term>\n <a [routerLink]=\"['/', 'term', term['@id']]\" target=\"_blank\">\n <span class=\"is-nowrap has-text-ellipsis\">{{term.name}}</span>\n </a>\n</ng-template>\n", styles: ["table.data-table th:first-child,table.data-table td:first-child{width:auto}\n"], components: [{ type: BlankNodeValueDeltaComponent, selector: "he-blank-node-value-delta", inputs: ["value", "originalValue", "displayType"] }], directives: [{ type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }] });
824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BlankNodeDiffsComponent, decorators: [{
825
+ type: Component,
826
+ args: [{
827
+ selector: 'he-blank-node-diffs',
828
+ templateUrl: './blank-node-diffs.component.html',
829
+ styleUrls: ['./blank-node-diffs.component.scss']
830
+ }]
831
+ }], propDecorators: { originalValues: [{
832
+ type: Input
833
+ }], recalculatedValues: [{
834
+ type: Input
835
+ }] } });
836
+
605
837
  const HE_API_BASE_URL = new InjectionToken('HE_API_BASE_URL');
606
838
  class HeCommonService {
607
839
  constructor(_apiBaseUrl) {
@@ -724,14 +956,14 @@ class HeNodeService {
724
956
  });
725
957
  }
726
958
  }
727
- HeNodeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeNodeService, deps: [{ token: i1$1.HttpClient }, { token: HeAuthService }, { token: HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable });
959
+ HeNodeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeNodeService, deps: [{ token: i1$2.HttpClient }, { token: HeAuthService }, { token: HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable });
728
960
  HeNodeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeNodeService, providedIn: 'root' });
729
961
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeNodeService, decorators: [{
730
962
  type: Injectable,
731
963
  args: [{
732
964
  providedIn: 'root'
733
965
  }]
734
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: HeAuthService }, { type: HeCommonService }]; } });
966
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: HeAuthService }, { type: HeCommonService }]; } });
735
967
 
736
968
  const gitUrl$1 = () => `${gitHome}/hestia-aggregation-engine/-/blob/${gitBranch()}`;
737
969
  const rawUrl$1 = () => `${gitRawBaseUrl}/hestia-aggregation-engine/-/raw/${gitBranch()}`;
@@ -804,14 +1036,14 @@ class HeAggregationEngineService {
804
1036
  return this.lookups$.pipe(take(1)).toPromise();
805
1037
  }
806
1038
  }
807
- HeAggregationEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1$1.HttpClient }, { token: HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable });
1039
+ HeAggregationEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1$2.HttpClient }, { token: HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable });
808
1040
  HeAggregationEngineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, providedIn: 'root' });
809
1041
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, decorators: [{
810
1042
  type: Injectable,
811
1043
  args: [{
812
1044
  providedIn: 'root'
813
1045
  }]
814
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: HeNodeService }]; } });
1046
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: HeNodeService }]; } });
815
1047
 
816
1048
  const HE_ORCHESTRATOR_BASE_URL = new InjectionToken('HE_ORCHESTRATOR_BASE_URL');
817
1049
  const gitUrl = () => `${gitHome}/hestia-engine-models/-/blob/${gitBranch()}`;
@@ -870,7 +1102,7 @@ class HeEngineService {
870
1102
  }).toPromise();
871
1103
  }
872
1104
  }
873
- HeEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, deps: [{ token: HE_ORCHESTRATOR_BASE_URL }, { token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
1105
+ HeEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, deps: [{ token: HE_ORCHESTRATOR_BASE_URL }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
874
1106
  HeEngineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, providedIn: 'root' });
875
1107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, decorators: [{
876
1108
  type: Injectable,
@@ -880,7 +1112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
880
1112
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
881
1113
  type: Inject,
882
1114
  args: [HE_ORCHESTRATOR_BASE_URL]
883
- }] }, { type: i1$1.HttpClient }]; } });
1115
+ }] }, { type: i1$2.HttpClient }]; } });
884
1116
 
885
1117
  var NodeKeyState;
886
1118
  (function (NodeKeyState) {
@@ -1255,7 +1487,7 @@ class MapsDrawingConfirmComponent {
1255
1487
  }
1256
1488
  }
1257
1489
  MapsDrawingConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapsDrawingConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1258
- MapsDrawingConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MapsDrawingConfirmComponent, selector: "he-maps-drawing-confirm", inputs: { value: "value", modes: "modes", center: "center", zoom: "zoom" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<div class=\"modal is-large is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Draw on Map</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(value)\"></button>\n </header>\n <section class=\"modal-card-body p-0\">\n <google-map\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n [options]=\"options\"\n ></google-map>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\">\n <span>Confirm</span>\n </button>\n <button class=\"button\" (click)=\"closed.next(value)\">\n <span>Close</span>\n </button>\n <button class=\"button is-danger is-outlined\" (click)=\"clear()\">\n <fa-icon class=\"mr-2\" icon=\"times\"></fa-icon>\n <span>Clear</span>\n </button>\n </footer>\n </div>\n</div>\n", styles: ["google-map{display:block;height:100%;max-height:calc(100vh - 146px);min-height:500px}\n"], components: [{ type: i1$2.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
1490
+ MapsDrawingConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MapsDrawingConfirmComponent, selector: "he-maps-drawing-confirm", inputs: { value: "value", modes: "modes", center: "center", zoom: "zoom" }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<div class=\"modal is-large is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Draw on Map</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(value)\"></button>\n </header>\n <section class=\"modal-card-body p-0\">\n <google-map\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n [options]=\"options\"\n ></google-map>\n </section>\n <footer class=\"modal-card-foot\">\n <button class=\"button is-primary\" (click)=\"confirm()\">\n <span>Confirm</span>\n </button>\n <button class=\"button\" (click)=\"closed.next(value)\">\n <span>Close</span>\n </button>\n <button class=\"button is-danger is-outlined\" (click)=\"clear()\">\n <fa-icon class=\"mr-2\" icon=\"times\"></fa-icon>\n <span>Clear</span>\n </button>\n </footer>\n </div>\n</div>\n", styles: ["google-map{display:block;height:100%;max-height:calc(100vh - 146px);min-height:500px}\n"], components: [{ type: i1$3.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }, { type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
1259
1491
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapsDrawingConfirmComponent, decorators: [{
1260
1492
  type: Component,
1261
1493
  args: [{
@@ -1421,124 +1653,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1421
1653
  args: ['style.height']
1422
1654
  }] } });
1423
1655
 
1424
- class SocialTagsComponent {
1425
- constructor(meta) {
1426
- this.meta = meta;
1427
- this.config = {};
1428
- this.classes = 'is-hidden';
1429
- }
1430
- ngOnInit() {
1431
- this.meta.addTag({ charset: 'UTF-8' });
1432
- const config = Object.assign({ 'og:url': window.location.href.split('?')[0] }, this.config);
1433
- Object.keys(config).map(name => {
1434
- const content = config[name];
1435
- this.meta.updateTag({ name, content });
1436
- if (name === 'og:description') {
1437
- this.meta.updateTag({ name: 'description', content });
1438
- }
1439
- });
1440
- }
1441
- }
1442
- SocialTagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SocialTagsComponent, deps: [{ token: i1$3.Meta }], target: i0.ɵɵFactoryTarget.Component });
1443
- SocialTagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SocialTagsComponent, selector: "he-social-tags", inputs: { config: "config" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<span></span>\n", styles: [""] });
1444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SocialTagsComponent, decorators: [{
1445
- type: Component,
1446
- args: [{
1447
- selector: 'he-social-tags',
1448
- templateUrl: './social-tags.component.html',
1449
- styleUrls: ['./social-tags.component.scss']
1450
- }]
1451
- }], ctorParameters: function () { return [{ type: i1$3.Meta }]; }, propDecorators: { config: [{
1452
- type: Input
1453
- }], classes: [{
1454
- type: HostBinding,
1455
- args: ['class']
1456
- }] } });
1457
-
1458
- let toastId = 0;
1459
- class HeToastService {
1460
- constructor() {
1461
- this.toasts = new ReplaySubject(1);
1462
- }
1463
- success(message, duration = 3000) {
1464
- this.toasts.next({
1465
- id: ++toastId,
1466
- message,
1467
- duration,
1468
- color: 'success',
1469
- showRawMessage: true
1470
- });
1471
- }
1472
- error(message, showRawMessage = true, duration = 3000) {
1473
- this.toasts.next({
1474
- id: ++toastId,
1475
- message: (`${message}` || '').trim(),
1476
- duration,
1477
- color: 'danger',
1478
- showRawMessage
1479
- });
1480
- }
1481
- }
1482
- HeToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1483
- HeToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, providedIn: 'root' });
1484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeToastService, decorators: [{
1485
- type: Injectable,
1486
- args: [{
1487
- providedIn: 'root'
1488
- }]
1489
- }] });
1490
-
1491
- class ToastComponent {
1492
- constructor(toastService) {
1493
- this.toastService = toastService;
1494
- this.subscriptions = [];
1495
- this.toasts = [];
1496
- }
1497
- ngOnInit() {
1498
- this.subscriptions.push(this.toastService.toasts.subscribe(toast => this.add(toast)));
1499
- }
1500
- ngOnDestroy() {
1501
- this.subscriptions.forEach(subscription => subscription.unsubscribe());
1502
- }
1503
- add(toast) {
1504
- this.toasts.push(toast);
1505
- if (toast.duration) {
1506
- toast.timeout = setTimeout(() => this.dismiss(toast), toast.duration);
1507
- }
1508
- }
1509
- dismiss(toast) {
1510
- this.toasts.splice(this.toasts.findIndex(val => val.id === toast.id), 1);
1511
- }
1512
- }
1513
- ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, deps: [{ token: HeToastService }], target: i0.ɵɵFactoryTarget.Component });
1514
- ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToastComponent, selector: "he-toast", ngImport: i0, template: "<div class=\"mb-3 columns is-centered is-vcentered\">\n <div class=\"notification is-{{toast.color}}\" role=\"alert\" *ngFor=\"let toast of toasts\">\n <button class=\"delete\" aria-label=\"delete\" (click)=\"dismiss(toast)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <strong [ngSwitch]=\"toast.color\">\n <ng-container *ngSwitchCase=\"'danger'\">\n <ng-container [ngSwitch]=\"toast.message\">\n <span *ngSwitchCase=\"'Unauthorized'\">You are not allowed to perform this action.</span>\n <span *ngSwitchCase=\"'form-invalid'\">Please fix all the errors on this page.</span>\n <span *ngSwitchCase=\"'users-email-already-taken'\">Email already taken.</span>\n <span *ngSwitchCase=\"'users-auth-already-taken'\">Account already connected.</span>\n <span *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <span *ngIf=\"toast.showRawMessage\">{{toast.message}}</span>\n <span [class.is-hidden]=\"toast.showRawMessage\">An unknown error occurred. Please try again later.</span>\n </ng-container>\n </strong>\n </div>\n</div>\n", styles: [":host{bottom:0;position:fixed;width:100%}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1515
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToastComponent, decorators: [{
1516
- type: Component,
1517
- args: [{
1518
- selector: 'he-toast',
1519
- templateUrl: './toast.component.html',
1520
- styleUrls: ['./toast.component.scss']
1521
- }]
1522
- }], ctorParameters: function () { return [{ type: HeToastService }]; } });
1523
-
1524
- class KeysPipe {
1525
- transform(value, sort = false) {
1526
- const keys = Object.keys(value).map(key => ({ key, value: value[key] }));
1527
- if (sort) {
1528
- keys.sort((a, b) => a.key.localeCompare(b.key));
1529
- }
1530
- return keys;
1531
- }
1532
- }
1533
- KeysPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1534
- KeysPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeysPipe, name: "keys" });
1535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeysPipe, decorators: [{
1536
- type: Pipe,
1537
- args: [{
1538
- name: 'keys'
1539
- }]
1540
- }] });
1541
-
1542
1656
  const parsePropertyValue = (value) => isNumber(value) ? +value : (isBoolean(value) ? value.toString() === 'true' : value);
1543
1657
  const parseResult = (value) => isNaN(value) ? '' : `${value}`.replace(',', '.');
1544
1658
  class UnitConverterComponent {
@@ -1631,41 +1745,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1631
1745
  args: ['document:click', ['$event']]
1632
1746
  }] } });
1633
1747
 
1634
- const shouldDefault = {
1635
- string: (value) => !value,
1636
- number: (value) => !value && value !== 0,
1637
- boolean: (value) => !value,
1638
- object: (value) => !value || !Object.keys(value).length,
1639
- undefined: () => true
1640
- };
1641
- class DefaultPipe {
1642
- transform(value, defaultValue) {
1643
- return shouldDefault[typeof value](value) ? defaultValue : value;
1644
- }
1645
- }
1646
- DefaultPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DefaultPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1647
- DefaultPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DefaultPipe, name: "default" });
1648
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DefaultPipe, decorators: [{
1649
- type: Pipe,
1650
- args: [{
1651
- name: 'default'
1652
- }]
1653
- }] });
1654
-
1655
- class EllipsisPipe {
1656
- transform(value, maxLength) {
1657
- return ellipsis(`${value}`, maxLength);
1658
- }
1659
- }
1660
- EllipsisPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EllipsisPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1661
- EllipsisPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EllipsisPipe, name: "ellipsis" });
1662
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EllipsisPipe, decorators: [{
1663
- type: Pipe,
1664
- args: [{
1665
- name: 'ellipsis'
1666
- }]
1667
- }] });
1668
-
1669
1748
  const get$3 = require('lodash.get');
1670
1749
  class GetPipe {
1671
1750
  transform(value, key, defaultValue = '') {
@@ -1681,35 +1760,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1681
1760
  }]
1682
1761
  }] });
1683
1762
 
1684
- class KeyToLabelPipe {
1685
- transform(value) {
1686
- // using termTypeLabel here which defaults to `keyToLabel` function
1687
- return termTypeLabel(value);
1688
- }
1689
- }
1690
- KeyToLabelPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyToLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1691
- KeyToLabelPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyToLabelPipe, name: "keyToLabel" });
1692
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KeyToLabelPipe, decorators: [{
1693
- type: Pipe,
1694
- args: [{
1695
- name: 'keyToLabel'
1696
- }]
1697
- }] });
1698
-
1699
- class PluralizePipe {
1700
- transform(value, times = 0) {
1701
- return pluralize(value, times);
1702
- }
1703
- }
1704
- PluralizePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PluralizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1705
- PluralizePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PluralizePipe, name: "pluralize" });
1706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PluralizePipe, decorators: [{
1707
- type: Pipe,
1708
- args: [{
1709
- name: 'pluralize'
1710
- }]
1711
- }] });
1712
-
1713
1763
  const restrictToType = {
1714
1764
  number: val => parseFloat(val) === +val ? val : false
1715
1765
  };
@@ -1808,18 +1858,9 @@ const components$6 = [
1808
1858
  UnitConverterComponent,
1809
1859
  BlankNodeDiffsComponent,
1810
1860
  TimesPipe,
1811
- ToastComponent,
1812
1861
  ClickOutsideDirective,
1813
- KeysPipe,
1814
- PrecisionPipe,
1815
- SocialTagsComponent,
1816
- DefaultPipe,
1817
1862
  SkeletonTextComponent,
1818
- PluralizePipe,
1819
- KeyToLabelPipe,
1820
- BindOnceDirective,
1821
- GetPipe,
1822
- EllipsisPipe
1863
+ GetPipe
1823
1864
  ];
1824
1865
  class HeCommonModule {
1825
1866
  }
@@ -1837,23 +1878,14 @@ HeCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
1837
1878
  UnitConverterComponent,
1838
1879
  BlankNodeDiffsComponent,
1839
1880
  TimesPipe,
1840
- ToastComponent,
1841
1881
  ClickOutsideDirective,
1842
- KeysPipe,
1843
- PrecisionPipe,
1844
- SocialTagsComponent,
1845
- DefaultPipe,
1846
1882
  SkeletonTextComponent,
1847
- PluralizePipe,
1848
- KeyToLabelPipe,
1849
- BindOnceDirective,
1850
- GetPipe,
1851
- EllipsisPipe], imports: [CommonModule, FormsModule, RouterModule,
1883
+ GetPipe], imports: [CommonModule, FormsModule, RouterModule,
1852
1884
  NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1853
1885
  GoogleMapsModule,
1854
- HeFontawesomeModule], exports: [NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1886
+ HeCommonLightModule], exports: [NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1855
1887
  GoogleMapsModule,
1856
- HeFontawesomeModule, ClipboardComponent,
1888
+ HeCommonLightModule, ClipboardComponent,
1857
1889
  PopoverComponent,
1858
1890
  PopoverConfirmComponent,
1859
1891
  TagsInputDirective,
@@ -1866,26 +1898,17 @@ HeCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
1866
1898
  UnitConverterComponent,
1867
1899
  BlankNodeDiffsComponent,
1868
1900
  TimesPipe,
1869
- ToastComponent,
1870
1901
  ClickOutsideDirective,
1871
- KeysPipe,
1872
- PrecisionPipe,
1873
- SocialTagsComponent,
1874
- DefaultPipe,
1875
1902
  SkeletonTextComponent,
1876
- PluralizePipe,
1877
- KeyToLabelPipe,
1878
- BindOnceDirective,
1879
- GetPipe,
1880
- EllipsisPipe] });
1903
+ GetPipe] });
1881
1904
  HeCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonModule, imports: [[
1882
1905
  CommonModule, FormsModule, RouterModule,
1883
1906
  NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1884
1907
  GoogleMapsModule,
1885
- HeFontawesomeModule
1908
+ HeCommonLightModule
1886
1909
  ], NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1887
1910
  GoogleMapsModule,
1888
- HeFontawesomeModule] });
1911
+ HeCommonLightModule] });
1889
1912
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCommonModule, decorators: [{
1890
1913
  type: NgModule,
1891
1914
  args: [{
@@ -1893,14 +1916,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1893
1916
  exports: [
1894
1917
  NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1895
1918
  GoogleMapsModule,
1896
- HeFontawesomeModule,
1919
+ HeCommonLightModule,
1897
1920
  ...components$6
1898
1921
  ],
1899
1922
  imports: [
1900
1923
  CommonModule, FormsModule, RouterModule,
1901
1924
  NgbTypeaheadModule, NgbTooltipModule, NgbPopoverModule,
1902
1925
  GoogleMapsModule,
1903
- HeFontawesomeModule
1926
+ HeCommonLightModule
1904
1927
  ]
1905
1928
  }]
1906
1929
  }] });
@@ -1926,14 +1949,14 @@ class HeMendeleyService {
1926
1949
  return this.http.get(`${this.path}/${id}`).toPromise().catch(handleAPIError);
1927
1950
  }
1928
1951
  }
1929
- HeMendeleyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeMendeleyService, deps: [{ token: i1$1.HttpClient }, { token: HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable });
1952
+ HeMendeleyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeMendeleyService, deps: [{ token: i1$2.HttpClient }, { token: HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable });
1930
1953
  HeMendeleyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeMendeleyService, providedIn: 'root' });
1931
1954
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeMendeleyService, decorators: [{
1932
1955
  type: Injectable,
1933
1956
  args: [{
1934
1957
  providedIn: 'root'
1935
1958
  }]
1936
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: HeCommonService }]; } });
1959
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: HeCommonService }]; } });
1937
1960
 
1938
1961
  const searchableTypes = [
1939
1962
  NodeType.Cycle,
@@ -2219,14 +2242,14 @@ class HeSearchService {
2219
2242
  type: SchemaType.Bibliography }, source.bibliography) })))));
2220
2243
  }
2221
2244
  }
2222
- HeSearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSearchService, deps: [{ token: i1$1.HttpClient }, { token: HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable });
2245
+ HeSearchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSearchService, deps: [{ token: i1$2.HttpClient }, { token: HeCommonService }], target: i0.ɵɵFactoryTarget.Injectable });
2223
2246
  HeSearchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSearchService, providedIn: 'root' });
2224
2247
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSearchService, decorators: [{
2225
2248
  type: Injectable,
2226
2249
  args: [{
2227
2250
  providedIn: 'root'
2228
2251
  }]
2229
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: HeCommonService }]; } });
2252
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: HeCommonService }]; } });
2230
2253
 
2231
2254
  class BibliographiesSearchConfirmComponent {
2232
2255
  constructor(formBuilder, mendeleyService, searchService) {
@@ -2538,14 +2561,14 @@ class HeSchemaService {
2538
2561
  }
2539
2562
  ;
2540
2563
  }
2541
- HeSchemaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSchemaService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2564
+ HeSchemaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSchemaService, deps: [{ token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2542
2565
  HeSchemaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSchemaService, providedIn: 'root' });
2543
2566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeSchemaService, decorators: [{
2544
2567
  type: Injectable,
2545
2568
  args: [{
2546
2569
  providedIn: 'root'
2547
2570
  }]
2548
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
2571
+ }], ctorParameters: function () { return [{ type: i1$2.HttpClient }]; } });
2549
2572
 
2550
2573
  const headerGroup = (header) => {
2551
2574
  const parts = header.split('.');
@@ -2686,7 +2709,7 @@ class NodeCsvExportConfirmComponent {
2686
2709
  return fileToExt(this.filename, this.extension);
2687
2710
  }
2688
2711
  }
2689
- NodeCsvExportConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvExportConfirmComponent, deps: [{ token: i1$3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2712
+ NodeCsvExportConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvExportConfirmComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2690
2713
  NodeCsvExportConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: { nodes: "nodes", filename: "filename", headerKeys: "headerKeys", extension: "extension", isUpload: "isUpload" }, outputs: { closed: "closed" }, ngImport: i0, template: "<div class=\"modal is-active\">\n <div class=\"modal-background\"></div>\n <div class=\"modal-card\">\n <header class=\"modal-card-head\">\n <p class=\"modal-card-title\">Export as CSV</p>\n <button class=\"delete\" aria-label=\"close\" (click)=\"closed.next(true)\"></button>\n </header>\n <section class=\"modal-card-body\">\n <div class=\"notification is-info\" role=\"alert\" *ngIf=\"isUpload\">\n <span>After Download, you can edit and</span>\n <a class=\"px-1\" routerLink=\"../\">upload the CSV file</a>\n <span>to submit your content on the Hestia platform, and your draft will remain unchanged.</span>\n\n <p>\n <span>Alternatively, you can import the CSV file right back by clicking on the \"Import from CSV\" button and selecting the exported file.</span>\n </p>\n </div>\n\n <ng-container *ngIf=\"!isUpload && includedNodes.length > 1\">\n <p class=\"mb-2\">\n <b>{{includedNodes.length}}</b>\n <span class=\"px-1\">Nodes will be included in your download.</span>\n <a (click)=\"showIncludeNodes = !showIncludeNodes\">\n <ng-container *ngIf=\"!showIncludeNodes\">Show list</ng-container>\n <ng-container *ngIf=\"showIncludeNodes\">Hide list</ng-container>\n </a>\n </p>\n\n <div class=\"table-container\" *ngIf=\"showIncludeNodes\">\n <table class=\"table is-fullwidth is-hoverable mb-0\">\n <thead class=\"has-background-black\">\n <tr>\n <th>\n <span class=\"has-text-white\">@type</span>\n </th>\n <th>\n <span class=\"has-text-white\">@id</span>\n </th>\n <th>\n <span class=\"has-text-white\">Name</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of includedNodes\">\n <td>\n <span *bindOnce=\"node\">{{node.node['@type']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node['@id']}}</span>\n </td>\n <td>\n <span *bindOnce=\"node\">{{node.node.name}}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </ng-container>\n\n <he-node-csv-select-headers [class.is-hidden]=\"isUpload\"\n [csv]=\"csvData\" [keys]=\"headerKeys\" [includeDefaultCSV]=\"isUpload\"\n (headersChanged)=\"headersUpdated($event)\"\n ></he-node-csv-select-headers>\n </section>\n <footer class=\"modal-card-foot\">\n <a class=\"button is-success\" target=\"_blank\"\n [attr.disabled]=\"csvContent ? null : true\"\n [href]=\"csvContent\"\n [attr.download]=\"csvContent ? downloadFilename : null\"\n (click)=\"closed.next(true)\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download CSV</span>\n </a>\n <button class=\"button\" (click)=\"closed.next(true)\">\n <span>Cancel</span>\n </button>\n </footer>\n </div>\n</div>\n", styles: [""], components: [{ type: NodeCsvSelectHeadersComponent, selector: "he-node-csv-select-headers", inputs: ["csv", "keys", "includeDefaultCSV"], outputs: ["headersChanged"] }, { type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }] });
2691
2714
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeCsvExportConfirmComponent, decorators: [{
2692
2715
  type: Component,
@@ -2695,7 +2718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2695
2718
  templateUrl: './node-csv-export-confirm.component.html',
2696
2719
  styleUrls: ['./node-csv-export-confirm.component.scss']
2697
2720
  }]
2698
- }], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }]; }, propDecorators: { nodes: [{
2721
+ }], ctorParameters: function () { return [{ type: i1$1.DomSanitizer }]; }, propDecorators: { nodes: [{
2699
2722
  type: Input
2700
2723
  }], filename: [{
2701
2724
  type: Input
@@ -2866,7 +2889,7 @@ class NodeLogsFileComponent {
2866
2889
  (!this.termFilter || code.toLocaleLowerCase().includes(`term=${this.termFilter.toLowerCase()}`)));
2867
2890
  }
2868
2891
  }
2869
- NodeLogsFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeLogsFileComponent, deps: [{ token: i1$3.DomSanitizer }, { token: HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
2892
+ NodeLogsFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeLogsFileComponent, deps: [{ token: i1$1.DomSanitizer }, { token: HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
2870
2893
  NodeLogsFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NodeLogsFileComponent, selector: "he-node-logs-file", inputs: { node: "node", dataState: "dataState" }, ngImport: i0, template: "<div class=\"is-relative\">\n <div class=\"copy-clipboard\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <he-clipboard clipboardClass=\"button is-link is-small\"\n [value]=\"nodeLog | async\" [hideText]=\"true\" [icon]=\"['far', 'clone']\" size=\"lg\" rotate=\"180\"\n ></he-clipboard>\n </div>\n <ng-container *ngIf=\"showFilters\">\n <div class=\"control\">\n <input class=\"input is-link is-small\"\n [(ngModel)]=\"modelFilter\" id=\"modelFilter\"\n (input)=\"applyFilters()\"\n placeholder=\"Filter by Method / Model\"\n >\n </div>\n <div class=\"control\">\n <input class=\"input is-link is-small\"\n [(ngModel)]=\"termFilter\" id=\"termFilter\"\n (input)=\"applyFilters()\"\n placeholder=\"Filter by Term\"\n >\n </div>\n <div class=\"control\">\n <div class=\"select is-link is-small\">\n <select (change)=\"applyFilters()\"\n [(ngModel)]=\"selectedLevel\" id=\"selectedLevel\"\n >\n <option *ngFor=\"let level of Level | keys\" [value]=\"level.value\">{{level.value}}</option>\n </select>\n </div>\n </div>\n </ng-container>\n <div class=\"control\">\n <button class=\"button is-small\" (click)=\"showFilters = !showFilters\"\n [ngbTooltip]=\"showFilters ? 'Hide filters' : 'Show filters'\" placement=\"bottom\" container=\"body\"\n >\n <fa-icon icon=\"filter\"></fa-icon>\n </button>\n </div>\n <div class=\"control pl-3\">\n <a class=\"button is-dark is-outlined is-small\" target=\"_blank\"\n [href]=\"csvContent\"\n [download]=\"fileToExt(node!['@id'], 'csv')\"\n >\n <fa-icon class=\"mr-2\" icon=\"download\"></fa-icon>\n <span>Download (CSV)</span>\n </a>\n </div>\n </div>\n </div>\n\n <pre class=\"pl-3 pt-3 ml-3\"><code class=\"is-block {{line.class}}\" *ngFor=\"let line of nodeLogLines\">{{line.data.timestamp}} {{('[' + line.data.level + ']:').padEnd(9, ' ')}} {{line.data.message}}</code></pre>\n</div>\n", styles: [":host{display:block}pre{background-color:inherit;color:inherit;min-height:38px;max-height:500px}\n"], components: [{ type: ClipboardComponent, selector: "he-clipboard", inputs: ["value", "disabled", "hideText", "icon", "size", "rotate", "clipboardClass"] }, { type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "async": i3.AsyncPipe, "keys": KeysPipe } });
2871
2894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: NodeLogsFileComponent, decorators: [{
2872
2895
  type: Component,
@@ -2875,7 +2898,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2875
2898
  templateUrl: './node-logs-file.component.html',
2876
2899
  styleUrls: ['./node-logs-file.component.scss']
2877
2900
  }]
2878
- }], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }, { type: HeNodeService }]; }, propDecorators: { node: [{
2901
+ }], ctorParameters: function () { return [{ type: i1$1.DomSanitizer }, { type: HeNodeService }]; }, propDecorators: { node: [{
2879
2902
  type: Input
2880
2903
  }], dataState: [{
2881
2904
  type: Input
@@ -4606,7 +4629,7 @@ class SitesMapsComponent {
4606
4629
  }
4607
4630
  }
4608
4631
  SitesMapsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SitesMapsComponent, deps: [{ token: HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
4609
- SitesMapsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SitesMapsComponent, selector: "he-sites-maps", inputs: { loadPolygons: "loadPolygons", sites: "sites", nodes: "nodes", center: "center", zoom: "zoom", showNotice: "showNotice" }, viewQueries: [{ propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<google-map *ngIf=\"googleLoaded\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n></google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation\">\n <span>No precise location data</span>\n</div>\n", styles: [":host{display:block;height:100%;position:relative;width:100%}.no-location{background-color:#0000004d;left:0;height:100%;position:absolute;top:0;width:100%;z-index:9}.no-location>span{display:inline-block;margin-top:12%}\n"], components: [{ type: i1$2.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4632
+ SitesMapsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SitesMapsComponent, selector: "he-sites-maps", inputs: { loadPolygons: "loadPolygons", sites: "sites", nodes: "nodes", center: "center", zoom: "zoom", showNotice: "showNotice" }, viewQueries: [{ propertyName: "map", first: true, predicate: GoogleMap, descendants: true }], ngImport: i0, template: "<google-map *ngIf=\"googleLoaded\"\n height=\"100%\"\n width=\"100%\"\n [zoom]=\"zoom\"\n [center]=\"center\"\n></google-map>\n\n<p *ngIf=\"showNotice\" class=\"mt-2 is-italic is-size-7\">The information provided might not be complete</p>\n\n<div class=\"no-location has-text-center has-text-light\" *ngIf=\"showNoLocation\">\n <span>No precise location data</span>\n</div>\n", styles: [":host{display:block;height:100%;position:relative;width:100%}.no-location{background-color:#0000004d;left:0;height:100%;position:absolute;top:0;width:100%;z-index:9}.no-location>span{display:inline-block;margin-top:12%}\n"], components: [{ type: i1$3.GoogleMap, selector: "google-map", inputs: ["height", "width", "center", "zoom", "options", "mapTypeId"], outputs: ["authFailure", "boundsChanged", "centerChanged", "mapClick", "mapDblclick", "mapDrag", "mapDragend", "mapDragstart", "headingChanged", "idle", "maptypeidChanged", "mapMousemove", "mapMouseout", "mapMouseover", "projectionChanged", "mapRightclick", "tilesloaded", "tiltChanged", "zoomChanged"], exportAs: ["googleMap"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4610
4633
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SitesMapsComponent, decorators: [{
4611
4634
  type: Component,
4612
4635
  args: [{
@@ -5367,7 +5390,7 @@ class ImpactAssessmentsIndicatorBreakdownChartComponent {
5367
5390
  });
5368
5391
  }
5369
5392
  }
5370
- ImpactAssessmentsIndicatorBreakdownChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [{ token: i1$3.DomSanitizer }, { token: HeSearchService }, { token: HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
5393
+ ImpactAssessmentsIndicatorBreakdownChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [{ token: i1$1.DomSanitizer }, { token: HeSearchService }, { token: HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
5371
5394
  ImpactAssessmentsIndicatorBreakdownChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: "impactAssessment", indicators: "indicators" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"loading || !terms?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Indicator</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}} ({{term.units}})</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a class=\"button is-dark is-outlined is-small\" [href]=\"csvContent\" [download]=\"id + '-logs.csv'\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download All (CSV)</span>\n </a>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <p *ngIf=\"noData\" class=\"has-text-centered\">No breakdown available for {{selectedTerm?.name}}.</p>\n <div class=\"chart-container h-100\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"loading\">\n <div class=\"has-text-center py-3\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n</ng-container>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], directives: [{ type: i1$4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
5372
5395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, decorators: [{
5373
5396
  type: Component,
@@ -5376,7 +5399,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
5376
5399
  templateUrl: './impact-assessments-indicator-breakdown-chart.component.html',
5377
5400
  styleUrls: ['./impact-assessments-indicator-breakdown-chart.component.scss']
5378
5401
  }]
5379
- }], ctorParameters: function () { return [{ type: i1$3.DomSanitizer }, { type: HeSearchService }, { type: HeNodeService }]; }, propDecorators: { chartRef: [{
5402
+ }], ctorParameters: function () { return [{ type: i1$1.DomSanitizer }, { type: HeSearchService }, { type: HeNodeService }]; }, propDecorators: { chartRef: [{
5380
5403
  type: ViewChild,
5381
5404
  args: ['chart']
5382
5405
  }], impactAssessment: [{
@@ -5869,5 +5892,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
5869
5892
  * Generated bundle index. Do not edit.
5870
5893
  */
5871
5894
 
5872
- export { ARRAY_DELIMITER, BibliographiesSearchConfirmComponent, BindOnceDirective, BlankNodeDiffsComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, ClickOutsideDirective, ClipboardComponent, CyclesActivityComponent, CyclesActivityLogsComponent, CyclesCompletenessComponent, CyclesEmissionsChartComponent, CyclesEmissionsComponent, CyclesEmissionsLogsComponent, CyclesFunctionalUnitMeasureComponent, CyclesResultComponent, CyclesSuggestFormComponent, DefaultPipe, DeltaColour, DeltaDisplayType, DiffsDisplayType, EllipsisPipe, FilesFormComponent, GetPipe, HE_API_BASE_URL, HE_ORCHESTRATOR_BASE_URL, HeAggregationEngineService, HeAuthService, HeBibliographiesModule, HeCommonModule, HeCommonService, HeCyclesModule, HeEngineService, HeFilesModule, HeFontawesomeModule, HeImpactAssessmentsModule, HeMendeleyService, HeNodeCsvService, HeNodeModule, HeNodeService, HeSchemaService, HeSearchModule, HeSearchService, HeSitesModule, HeToastService, HeUsersService, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, ImpactAssessmentsProductsLogsComponent, KeyToLabelPipe, KeysPipe, Level, LinkKeyValueComponent, MAX_RESULTS, MapsDrawingConfirmComponent, MendeleySearchResult, NodeCsvExportConfirmComponent, NodeCsvSelectHeadersComponent, NodeDiffsComponent, NodeIconComponent, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeMissingLookupFactorsComponent, NodeValueDetailsComponent, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, SchemaVersionLinkComponent, SitesMapsComponent, SitesMeasurementsComponent, SitesMeasurementsLogsComponent, SkeletonTextComponent, SocialTagsComponent, TagsInputDirective, TimesPipe, ToastComponent, UnitConverterComponent, addPolygonToFeature, allCountriesQuery, arrayValue, availableProperties, baseUrl, bottom, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, calculatePercentDelta, clustererImage, code, coordinatesToPoint, countriesQuery, createMarker, cropsQuery, customDeltaFuncs, dataPathToKey, dataValue, defaultFeature, defaultLabel, defaultSuggestionType, definitionToSchemaType, delta, deserializeSearchFilters, ellipsis, emptyValue, errorHasError, errorHasWarning, errorText, evaluateSuccess, filenameWithoutExt, fillColor, fillStyle, filterError, filterParams, findConfigModels, findProperty, findPropertyById, formatCustomErrorMessage, formatDiffValues, formatError, formatLinkNodesSuggestions, formatPropertyError, formatSuggestion, gitBranch, gitHome, gitRawBaseUrl, groupChanged, groupNodesByTerm, grouppedKeys, grouppedValueKeys, handleAPIError, hasError, hasWarning, isAddPropertyEnabled, isChrome, isExternal, isMissingOneOfError, isMissingPropertyError, isSchemaIri, isScrolledBelow, itemColor, keyToDataPath, keyToLabel, levels, linkTypeEnabled, listColor, locationQuery, lookupUrl, lookups, mapsUrl, markerIcon, markerPie, matchAggregatedQuery, matchBoolPrefixQuery, matchCountry, matchExactQuery, matchGlobalRegion, matchNameNormalized, matchNestedKey, matchPhrasePrefixQuery, matchPhraseQuery, matchQuery, matchRegex, matchRegion, matchTermType, matchType, maxAreaSize, measurementValue, missingNodeErrorMessage, missingNodeErrors, multiMatchQuery, nestedProperty, nestingEnabled, nestingTypeEnabled, nodeAvailableProperties, nodeLink, nodeLogsUrl, nodeUrl, numberGte, parentKey, parentProperty, parseData, parseDataPath, parseLines, parseMessage, parseNewValue, pathToApiDocsPath, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonsFromFeature, primaryProduct, propertyError, propertyId, propertyValue$1 as propertyValue, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, repeat, roundValue, safeJSONParse, safeJSONStringify, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchQuery, searchResultsFields, searchableTypes, serializeSearchFilters, siblingProperty, singleProperty, siteTooBig, sortOrder, sortProperties, strokeColor, strokeStyle, suggestMatchQuery, suggestQuery, termChildToParent, termLocation, termLocationName, termProperties, termTypeGroups, termTypeLabel, termTypeLookupUrl, toCsv$1 as toCsv, toDashCase, typeToNewProperty, updateProperties, valueTypeToDefault, waitFor, wildcardQuery, worldRegion };
5895
+ export { ARRAY_DELIMITER, BibliographiesSearchConfirmComponent, BindOnceDirective, BlankNodeDiffsComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, ClickOutsideDirective, ClipboardComponent, CyclesActivityComponent, CyclesActivityLogsComponent, CyclesCompletenessComponent, CyclesEmissionsChartComponent, CyclesEmissionsComponent, CyclesEmissionsLogsComponent, CyclesFunctionalUnitMeasureComponent, CyclesResultComponent, CyclesSuggestFormComponent, DefaultPipe, DeltaColour, DeltaDisplayType, DiffsDisplayType, EllipsisPipe, FilesFormComponent, GetPipe, HE_API_BASE_URL, HE_ORCHESTRATOR_BASE_URL, HeAggregationEngineService, HeAuthService, HeBibliographiesModule, HeCommonLightModule, HeCommonModule, HeCommonService, HeCyclesModule, HeEngineService, HeFilesModule, HeFontawesomeModule, HeImpactAssessmentsModule, HeMendeleyService, HeNodeCsvService, HeNodeModule, HeNodeService, HeSchemaService, HeSearchModule, HeSearchService, HeSitesModule, HeToastService, HeUsersService, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, ImpactAssessmentsProductsLogsComponent, KeyToLabelPipe, KeysPipe, Level, LinkKeyValueComponent, MAX_RESULTS, MapsDrawingConfirmComponent, MendeleySearchResult, NodeCsvExportConfirmComponent, NodeCsvSelectHeadersComponent, NodeDiffsComponent, NodeIconComponent, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeMissingLookupFactorsComponent, NodeValueDetailsComponent, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, SchemaVersionLinkComponent, SitesMapsComponent, SitesMeasurementsComponent, SitesMeasurementsLogsComponent, SkeletonTextComponent, SocialTagsComponent, TagsInputDirective, TimesPipe, ToastComponent, UnitConverterComponent, addPolygonToFeature, allCountriesQuery, arrayValue, availableProperties, baseUrl, bottom, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, calculatePercentDelta, clustererImage, code, coordinatesToPoint, countriesQuery, createMarker, cropsQuery, customDeltaFuncs, dataPathToKey, dataValue, defaultFeature, defaultLabel, defaultSuggestionType, definitionToSchemaType, delta, deserializeSearchFilters, ellipsis, emptyValue, errorHasError, errorHasWarning, errorText, evaluateSuccess, filenameWithoutExt, fillColor, fillStyle, filterError, filterParams, findConfigModels, findProperty, findPropertyById, formatCustomErrorMessage, formatDiffValues, formatError, formatLinkNodesSuggestions, formatPropertyError, formatSuggestion, gitBranch, gitHome, gitRawBaseUrl, groupChanged, groupNodesByTerm, grouppedKeys, grouppedValueKeys, handleAPIError, hasError, hasWarning, isAddPropertyEnabled, isChrome, isExternal, isMissingOneOfError, isMissingPropertyError, isSchemaIri, isScrolledBelow, itemColor, keyToDataPath, keyToLabel, levels, linkTypeEnabled, listColor, locationQuery, lookupUrl, lookups, mapsUrl, markerIcon, markerPie, matchAggregatedQuery, matchBoolPrefixQuery, matchCountry, matchExactQuery, matchGlobalRegion, matchNameNormalized, matchNestedKey, matchPhrasePrefixQuery, matchPhraseQuery, matchQuery, matchRegex, matchRegion, matchTermType, matchType, maxAreaSize, measurementValue, missingNodeErrorMessage, missingNodeErrors, multiMatchQuery, nestedProperty, nestingEnabled, nestingTypeEnabled, nodeAvailableProperties, nodeLink, nodeLogsUrl, nodeUrl, numberGte, parentKey, parentProperty, parseData, parseDataPath, parseLines, parseMessage, parseNewValue, pathToApiDocsPath, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonsFromFeature, primaryProduct, propertyError, propertyId, propertyValue$1 as propertyValue, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, repeat, roundValue, safeJSONParse, safeJSONStringify, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchQuery, searchResultsFields, searchableTypes, serializeSearchFilters, siblingProperty, singleProperty, siteTooBig, sortOrder, sortProperties, strokeColor, strokeStyle, suggestMatchQuery, suggestQuery, termChildToParent, termLocation, termLocationName, termProperties, termTypeGroups, termTypeLabel, termTypeLookupUrl, toCsv$1 as toCsv, toDashCase, typeToNewProperty, updateProperties, valueTypeToDefault, waitFor, wildcardQuery, worldRegion };
5873
5896
  //# sourceMappingURL=hestia-earth-ui-components.js.map