@hestia-earth/ui-components 0.31.14 → 0.31.16

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.
@@ -5,13 +5,20 @@ export declare enum Level {
5
5
  error = "ERROR"
6
6
  }
7
7
  export declare const levels: Level[];
8
+ interface ILineData {
9
+ timestamp: string;
10
+ logger: string;
11
+ message: string;
12
+ level: Level;
13
+ }
8
14
  export interface ILine {
9
15
  code: string;
10
- data: any;
16
+ data: ILineData;
11
17
  class: string;
12
18
  level: Level;
13
19
  }
14
20
  export declare const parseData: (data: any) => ILine;
15
- export declare const parseLines: (text: any) => ILine[];
16
- export declare const parseMessage: (message?: string) => {};
21
+ export declare const parseLines: <T>(text: any) => ILine[];
22
+ export declare const parseMessage: <T>(message?: string) => T;
17
23
  export declare const logToCsv: (lines: ILine[]) => string;
24
+ export {};
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, InjectionToken, inject, model, computed, output, signal, effect, ChangeDetectionStrategy, Component as Component$1, NgZone, ElementRef, Input, Directive, input, Pipe, viewChild, HostBinding, ViewEncapsulation, HostListener, EventEmitter as EventEmitter$1, Output, ContentChild, DestroyRef, NgModule, ViewChild, viewChildren, ChangeDetectorRef, forwardRef, ContentChildren } from '@angular/core';
3
- import { toSignal, toObservable, outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { toSignal, toObservable, outputFromObservable, takeUntilDestroyed, rxResource } from '@angular/core/rxjs-interop';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
6
6
  import { NgTemplateOutlet, NgClass, DecimalPipe, KeyValuePipe, CommonModule, DatePipe, JsonPipe, AsyncPipe, NgSwitch, NgSwitchCase, NgIf, NgFor, SlicePipe } from '@angular/common';
@@ -15,7 +15,7 @@ import get from 'lodash.get';
15
15
  import { SCHEMA_VERSION, SchemaType, NodeType, TermTermType, productTermTermType, nestedSearchableKeys, EmissionMethodTier, isExpandable, sortKeysByType, isTypeNode, BlankNodesKey, impactAssessmentTermTermType, measurementTermTermType, emissionTermTermType, inputTermTermType, CycleFunctionalUnit, NonBlankNodesKey, jsonldPath, SiteSiteType, isTypeValid, typeToSchemaType, managementTermTermType } from '@hestia-earth/schema';
16
16
  import merge from 'lodash.merge';
17
17
  import Chart, { Chart as Chart$1 } from 'chart.js';
18
- import { toPrecision, isEmpty, unique, monthsBefore, toDashCase, isUndefined, toComma, isNumber, keyToLabel, isEqual as isEqual$2, diffInDays } from '@hestia-earth/utils';
18
+ import { toPrecision, isEmpty, unique, monthsBefore, toDashCase, isUndefined, toComma, isNumber, keyToLabel, isEqual as isEqual$2, sum, diffInDays } from '@hestia-earth/utils';
19
19
  import Gradient from 'javascript-color-gradient';
20
20
  import { ShadeGenerator } from 'shade-generator/dist/shadeGenerator';
21
21
  import { select, selectAll } from 'd3-selection';
@@ -7581,6 +7581,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
7581
7581
  args: [{ selector: 'he-node-logs-file', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, NgbTooltip, FaIconComponent, ClipboardComponent, KeyValuePipe], template: "<div class=\"is-relative\">\n <div class=\"copy-clipboard\">\n <div class=\"field has-addons\">\n @if (showFilters()) {\n <div class=\"control\">\n <input\n class=\"input is-secondary is-small\"\n [ngModel]=\"modelFilter()\"\n id=\"modelFilter\"\n (input)=\"modelFilter.set($event.target.value)\"\n placeholder=\"Filter by Method / Model\" />\n </div>\n <div class=\"control\">\n <input\n class=\"input is-secondary is-small\"\n [ngModel]=\"termFilter()\"\n id=\"termFilter\"\n (input)=\"termFilter.set($event.target.value)\"\n placeholder=\"Filter by Term\" />\n </div>\n <div class=\"control\">\n <div class=\"select is-secondary is-small\">\n <select [ngModel]=\"selectedLevel()\" (change)=\"selectedLevel.set($event.target.value)\" id=\"selectedLevel\">\n @for (level of Level | keyvalue; track level) {\n <option [value]=\"level.value\">{{ level.value }}</option>\n }\n </select>\n </div>\n </div>\n }\n <div class=\"control\">\n <button\n class=\"button is-small\"\n (click)=\"showFilters.set(!showFilters())\"\n [ngbTooltip]=\"showFilters() ? 'Hide filters' : 'Show filters'\"\n placement=\"bottom\"\n container=\"body\">\n <fa-icon [icon]=\"faFilter\" />\n </button>\n </div>\n <div class=\"control\">\n <he-clipboard\n clipboardClass=\"button is-secondary is-small\"\n [value]=\"nodeLog()\"\n [hideText]=\"true\"\n [icon]=\"farClone\"\n size=\"lg\"\n rotate=\"180\"></he-clipboard>\n </div>\n <div class=\"control\">\n <a class=\"button is-info is-small\" target=\"_blank\" [href]=\"csvContent()\" [download]=\"csvFilename()\">\n <fa-icon [icon]=\"faDownload\" />\n </a>\n </div>\n </div>\n </div>\n\n <pre class=\"pl-3 pt-3 ml-3\">\n @for (line of nodeLogLines(); track line) {\n <code class=\"is-block {{line.class}}\">{{line.data.timestamp}} {{('[' + line.data.level + ']:').padEnd(9, ' ')}} {{line.data.message}}</code>\n }\n </pre>\n</div>\n", styles: [":host{display:block}pre{background-color:inherit;color:inherit;min-height:38px;max-height:500px;font-size:0}pre>code{font-size:.875rem;line-height:20px}\n"] }]
7582
7582
  }] });
7583
7583
 
7584
+ class NodeLogsTimeComponent {
7585
+ constructor() {
7586
+ this.nodeService = inject(HeNodeService);
7587
+ this.node = input.required();
7588
+ this.showMemoryUsage = input(true);
7589
+ this.nodeLogsResource = rxResource({
7590
+ request: () => ({ node: this.node() }),
7591
+ loader: ({ request: { node } }) => this.nodeService.getLog$({
7592
+ ...node,
7593
+ dataState: DataState.recalculated
7594
+ })
7595
+ });
7596
+ this.logs = computed(() => this.nodeLogsResource.isLoading()
7597
+ ? []
7598
+ : parseLines(this.nodeLogsResource.value())
7599
+ .filter(({ data }) => data.message.includes('memory_used'))
7600
+ .map(({ data }) => parseMessage$1(data.message))
7601
+ .map(data => ({
7602
+ ...data,
7603
+ time: +data.time
7604
+ })));
7605
+ this.totalTime = computed(() => Math.round(sum(this.logs().map(log => +log.time)) / 1000));
7606
+ this.sorting = {
7607
+ sortBy: 'time',
7608
+ sortOrder: 'desc'
7609
+ };
7610
+ }
7611
+ toggleSort(sortBy) {
7612
+ const sortOrder = this.sorting.sortOrder === 'asc' ? 'desc' : 'asc';
7613
+ this.sorting.sortBy = sortBy;
7614
+ this.sorting.sortOrder = sortOrder;
7615
+ }
7616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NodeLogsTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NodeLogsTimeComponent, isStandalone: true, selector: "he-node-logs-time", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, showMemoryUsage: { classPropertyName: "showMemoryUsage", publicName: "showMemoryUsage", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"table-container data-table-container\">\n <table class=\"table is-fullwidth\">\n <thead>\n <tr>\n <th>\n <div class=\"is-nowrap\">\n <span>Model ID</span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'model_id' }\" />\n </div>\n </th>\n <th>\n <div class=\"is-nowrap\">\n <span>Model Value</span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'model_value' }\" />\n </div>\n </th>\n <th>\n <div class=\"is-nowrap\">\n <span>Time (ms)</span>\n <span class=\"has-text-secondary\" [ngbTooltip]=\"'Total calculation time: ' + totalTime() + 's'\">\n <svg-icon name=\"far-question-circle\" />\n </span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'time' }\" />\n </div>\n </th>\n @if (showMemoryUsage()) {\n <th>\n <div class=\"is-nowrap\">\n <span>Memory Usage (MB)</span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'memory_used' }\" />\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (nodeLogsResource.isLoading()) {\n <tr>\n <td colspan=\"4\">\n <he-skeleton-text [width]=\"70\" />\n </td>\n </tr>\n <tr>\n <td colspan=\"4\">\n <he-skeleton-text [width]=\"70\" />\n </td>\n </tr>\n }\n @for (log of logs() | sortBy: sorting.sortBy : sorting.sortOrder; track logIndex; let logIndex = $index) {\n <tr>\n <td>\n <span class=\"ellipsis\">{{ log.model_model }}</span>\n </td>\n <td>\n <span class=\"ellipsis\">{{ log.model_value }}</span>\n </td>\n <td>\n <span>{{ +log.time | number: '1.0-2' }}</span>\n </td>\n @if (showMemoryUsage()) {\n <td>\n <span>{{ log.memory_used }}</span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n<ng-template #sortColumn let-column=\"column\">\n <a class=\"is-p-1\" (click)=\"toggleSort(column)\">\n @if (sorting.sortBy === column) {\n @if (sorting.sortOrder === 'asc') {\n <svg-icon name=\"sort-up\" />\n } @else {\n <svg-icon name=\"sort-down\" />\n }\n } @else {\n <svg-icon name=\"sort\" />\n }\n </a>\n</ng-template>\n", styles: ["span{word-break:break-all}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "svgClass", "class", "viewBox", "svgAriaLabel", "onSVGLoaded", "svgStyle"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: SortByPipe, name: "sortBy" }, { kind: "component", type: SkeletonTextComponent, selector: "he-skeleton-text", inputs: ["animated", "width", "height"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7618
+ }
7619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NodeLogsTimeComponent, decorators: [{
7620
+ type: Component$1,
7621
+ args: [{ selector: 'he-node-logs-time', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, DecimalPipe, SvgIconComponent, NgbTooltip, SortByPipe, SkeletonTextComponent], template: "<div class=\"table-container data-table-container\">\n <table class=\"table is-fullwidth\">\n <thead>\n <tr>\n <th>\n <div class=\"is-nowrap\">\n <span>Model ID</span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'model_id' }\" />\n </div>\n </th>\n <th>\n <div class=\"is-nowrap\">\n <span>Model Value</span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'model_value' }\" />\n </div>\n </th>\n <th>\n <div class=\"is-nowrap\">\n <span>Time (ms)</span>\n <span class=\"has-text-secondary\" [ngbTooltip]=\"'Total calculation time: ' + totalTime() + 's'\">\n <svg-icon name=\"far-question-circle\" />\n </span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'time' }\" />\n </div>\n </th>\n @if (showMemoryUsage()) {\n <th>\n <div class=\"is-nowrap\">\n <span>Memory Usage (MB)</span>\n <ng-container *ngTemplateOutlet=\"sortColumn; context: { column: 'memory_used' }\" />\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (nodeLogsResource.isLoading()) {\n <tr>\n <td colspan=\"4\">\n <he-skeleton-text [width]=\"70\" />\n </td>\n </tr>\n <tr>\n <td colspan=\"4\">\n <he-skeleton-text [width]=\"70\" />\n </td>\n </tr>\n }\n @for (log of logs() | sortBy: sorting.sortBy : sorting.sortOrder; track logIndex; let logIndex = $index) {\n <tr>\n <td>\n <span class=\"ellipsis\">{{ log.model_model }}</span>\n </td>\n <td>\n <span class=\"ellipsis\">{{ log.model_value }}</span>\n </td>\n <td>\n <span>{{ +log.time | number: '1.0-2' }}</span>\n </td>\n @if (showMemoryUsage()) {\n <td>\n <span>{{ log.memory_used }}</span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n<ng-template #sortColumn let-column=\"column\">\n <a class=\"is-p-1\" (click)=\"toggleSort(column)\">\n @if (sorting.sortBy === column) {\n @if (sorting.sortOrder === 'asc') {\n <svg-icon name=\"sort-up\" />\n } @else {\n <svg-icon name=\"sort-down\" />\n }\n } @else {\n <svg-icon name=\"sort\" />\n }\n </a>\n</ng-template>\n", styles: ["span{word-break:break-all}\n"] }]
7622
+ }] });
7623
+
7584
7624
  class NodeMissingLookupFactorsComponent {
7585
7625
  constructor() {
7586
7626
  this.nodeService = inject(HeNodeService);
@@ -7999,7 +8039,7 @@ const dataPathLabel = (dataPath = '') => parseDataPath(dataPath)
7999
8039
  .pop()?.label;
8000
8040
  const glossaryTypeLink = (type, text = termTypeLabel(type)) => externalLink(`${glossaryBaseUrl()}?termType=${type}`, text);
8001
8041
  const termLink = ({ id, name }) => externalLink(`${baseUrl()}/term/${id}`, name || id);
8002
- const dateFormatMessage = `should follow the ISO 8601 date format, e.g. ${code(2000)}, or ${code('2000-12')}, or ${code('2000-12-30')}`;
8042
+ const dateFormatMessage = `Should follow the ISO 8601 date format, e.g. ${code(2000)}, or ${code('2000-12')}, or ${code('2000-12-30')}, and in some cases an optional time. Please refer to the schema for more details.`;
8003
8043
  const modelLink = (term, model) => `
8004
8044
  <a href="${pathToApiDocsPath(model['@id'], term['@id'])}" target="_blank">
8005
8045
  <span class="pr-1">${model.name}</span>
@@ -8065,6 +8105,7 @@ const customErrorMessage = {
8065
8105
  ? `This ${code('termType')} is not allowed here.`
8066
8106
  : 'Should not be used in this case.',
8067
8107
  'should match pattern "^\\d{13}$"': () => `should be composed of 13 numbers`,
8108
+ 'not a valid date': () => dateFormatMessage,
8068
8109
  'should match pattern "^[0-9]{4}(-[0-9]{2})?(-[0-9]{2})?$"': () => dateFormatMessage,
8069
8110
  'should match pattern "^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?$"': () => dateFormatMessage,
8070
8111
  'should match pattern "^([0-9]{4}|-)(-[0-9]{2})?(-[0-9]{2})?([T][0-2][0-9]:[0-5][0-9]:[0-5][0-9]((+|-)[0-1][0-9]:[0-5][0-9])?)?$"': () => dateFormatMessage,
@@ -8443,7 +8484,7 @@ const customErrorMessage = {
8443
8484
  'invalid water salinity': ({ params }) => `The water type ${params?.current} is not consistent with the Water salinity you specified.
8444
8485
  Make sure the Water salinity value is correct and either fix it or update the water type accordingly.`,
8445
8486
  'must add substrate inputs': () => 'The substrate must be specified when a substrate-based protected cropping system has been added.',
8446
- 'should not be equal to cycleDuration for crop': ({ params }) => `For crop production Cycles, siteDuration must represent the period from harvest of the previous crop to harvest of the current crop.
8487
+ 'should not be equal to cycleDuration for crop': ({ params }) => `For temporary crop production Cycles, siteDuration must represent the period from harvest of the previous crop to harvest of the current crop.
8447
8488
  Here, you have stated that ${schemaLink('Cycle#cycleDuration', 'cycleDuration')} represents the period from
8448
8489
  ${code(params?.current)} to harvest of the current crop, and set ${schemaLink('Cycle#cycleDuration', 'cycleDuration')} as equal to ${schemaLink('Cycle#siteDuration', 'siteDuration')}.
8449
8490
  Please check the affected fields for errors.`,
@@ -8457,7 +8498,10 @@ const customErrorMessage = {
8457
8498
  'must be below maximum cycleDuration': ({ params }) => `The maximum duration for this crop production cycle is ${params.limit} days,
8458
8499
  but the calculated duration from the end date and start date provided is ${params.current}.`,
8459
8500
  'should add the term pastureGrass': () => `For Cycles with ${code('siteType=permanent pasture')} we recommend specifying the type(s) of ${code('Pasture grass')} grown.
8460
- This is particularly important for ruminants and will allow for a more accurate estimate of the amount of grass grazed.`
8501
+ This is particularly important for ruminants and will allow for a more accurate estimate of the amount of grass grazed.`,
8502
+ 'should add the fields for a relative cycle': ({ params }) => `We strongly recommend setting ${params?.expected
8503
+ ?.map((param) => code(param))
8504
+ .join('and')} on all other sites for any uploads with a ${code('relative')} functional unit. This will allow calculation of land occupation and land transformation.`
8461
8505
  };
8462
8506
  const requiredPropertyError = (message, error) => {
8463
8507
  const field = message.split("'")[1].replace("'", '');
@@ -9954,6 +9998,10 @@ class FilesErrorSummaryComponent {
9954
9998
  this.summaries = computed(() => sortSummaries(this.summaryData(), this.resolvedByIndex()));
9955
9999
  this.selectedIndex = signal(undefined);
9956
10000
  this.selectedIndex$ = toObservable(this.selectedIndex);
10001
+ /**
10002
+ * Index of the error that is currently being focused on.
10003
+ */
10004
+ this.focusIndex = output();
9957
10005
  this.resolvedErrors = toSignal(combineLatest([this.itemData$, this.selectedIndex$]).pipe(distinctUntilChangedDeep(), filter(([items]) => items?.length > 0), map(([items, selectedIndex]) => items
9958
10006
  .filter(item => (typeof selectedIndex === 'undefined' ? item.resolved : selectedIndex !== item.summary.index))
9959
10007
  .flatMap(item => item.summary.errors)), startWith([])));
@@ -9974,12 +10022,13 @@ class FilesErrorSummaryComponent {
9974
10022
  toggleSummary(summary) {
9975
10023
  const index = this.isSelected(summary) ? undefined : summary.index;
9976
10024
  this.selectedIndex.set(index);
10025
+ this.focusIndex.emit(index);
9977
10026
  }
9978
10027
  isSelected({ index }) {
9979
10028
  return this.selectedIndex() === index;
9980
10029
  }
9981
10030
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: FilesErrorSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9982
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: FilesErrorSummaryComponent, isStandalone: true, selector: "he-files-error-summary", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, showErrorsOnAutogenerated: { classPropertyName: "showErrorsOnAutogenerated", publicName: "showErrorsOnAutogenerated", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resolvedErrorsChange: "resolvedErrorsChange", unresolvedIndexesChange: "unresolvedIndexesChange" }, viewQueries: [{ propertyName: "items", predicate: FilesErrorSummaryItemComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (summaries().length) {\n <div class=\"table-container\">\n <table class=\"table is-fullwidth is-striped\">\n <tbody>\n @for (summary of summaries(); track summary.index) {\n <tr>\n <he-files-error-summary-item\n class=\"is-block is-p-2 pointer\"\n [summary]=\"summary\"\n [class.is-selected]=\"isSelected(summary)\"\n (click)=\"toggleSummary(summary)\" />\n </tr>\n }\n </tbody>\n </table>\n </div>\n}\n", styles: [".table.is-striped tbody tr:nth-child(2n){background-color:#fff}.table.is-striped tbody tr:nth-child(odd){background-color:#fefaf0!important}.table tbody tr:last-child td{border-bottom-width:thin}he-files-error-summary-item{border:2px solid transparent;border-radius:3px}he-files-error-summary-item.is-selected{border-color:#ffce38;background:#fefcf7}\n"], dependencies: [{ kind: "component", type: FilesErrorSummaryItemComponent, selector: "he-files-error-summary-item", inputs: ["summary", "resolved"], outputs: ["resolvedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10031
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: FilesErrorSummaryComponent, isStandalone: true, selector: "he-files-error-summary", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: true, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: true, transformFunction: null }, showErrorsOnAutogenerated: { classPropertyName: "showErrorsOnAutogenerated", publicName: "showErrorsOnAutogenerated", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusIndex: "focusIndex", resolvedErrorsChange: "resolvedErrorsChange", unresolvedIndexesChange: "unresolvedIndexesChange" }, viewQueries: [{ propertyName: "items", predicate: FilesErrorSummaryItemComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (summaries().length) {\n <div class=\"table-container\">\n <table class=\"table is-fullwidth is-striped\">\n <tbody>\n @for (summary of summaries(); track summary.index) {\n <tr>\n <he-files-error-summary-item\n class=\"is-block is-p-2 pointer\"\n [summary]=\"summary\"\n [class.is-selected]=\"isSelected(summary)\"\n (click)=\"toggleSummary(summary)\" />\n </tr>\n }\n </tbody>\n </table>\n </div>\n}\n", styles: [".table.is-striped tbody tr:nth-child(2n){background-color:#fff}.table.is-striped tbody tr:nth-child(odd){background-color:#fefaf0!important}.table tbody tr:last-child td{border-bottom-width:thin}he-files-error-summary-item{border:2px solid transparent;border-radius:3px}he-files-error-summary-item.is-selected{border-color:#ffce38;background:#fefcf7}\n"], dependencies: [{ kind: "component", type: FilesErrorSummaryItemComponent, selector: "he-files-error-summary-item", inputs: ["summary", "resolved"], outputs: ["resolvedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9983
10032
  }
9984
10033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: FilesErrorSummaryComponent, decorators: [{
9985
10034
  type: Component$1,
@@ -12380,5 +12429,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
12380
12429
  * Generated bundle index. Do not edit.
12381
12430
  */
12382
12431
 
12383
- export { ARRAY_DELIMITER, ApplyPurePipe, BarChartComponent, BibliographiesSearchConfirmComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, CapitalizePipe, ChartComponent, ChartConfigurationDirective, ClickOutsideDirective, ClipboardComponent, CollapsibleBoxComponent, ColorPalette, CompoundDirective, CompoundPipe, CycleNodesKeyGroup, CyclesCompletenessComponent, CyclesEmissionsChartComponent, CyclesFunctionalUnitMeasureComponent, CyclesNodesComponent, CyclesNodesTimelineComponent, CyclesResultComponent, DataTableComponent, DefaultPipe, DeltaColour, DrawerContainerComponent, EllipsisPipe, EngineModelsStageComponent, EngineModelsStageDeepComponent, EngineModelsStageDeepService, EngineModelsVersionLinkComponent, EngineOrchestratorEditComponent, EngineRequirementsFormComponent, FileSizePipe, FilesErrorSummaryComponent, FilesFormComponent, FilesFormEditableComponent, FilesUploadErrorsComponent, FilterComponent, FilterHasOptionsPipe, GetPipe, GlossaryMigrationFormat, HE_API_BASE_URL, HE_CALCULATIONS_BASE_URL, HE_MAP_LOADED, HeAuthService, HeCommonService, HeEngineService, HeGlossaryService, HeMendeleyService, HeNodeCsvService, HeNodeService, HeNodeStoreService, HeSchemaService, HeSearchService, HeSvgIconsModule, HeToastService, ImpactAssessmentsGraphComponent, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, IsArrayPipe, IsObjectPipe, IssueConfirmComponent, KeyToLabelPipe, KeysPipe, Level, LineChartComponent, LinkKeyValueComponent, LogStatus, MAX_RESULTS, MapsDrawingComponent, MapsDrawingConfirmComponent, MendeleySearchResult, MobileShellComponent, NavigationMenuComponent, NoExtPipe, NodeCsvExportConfirmComponent, NodeCsvSelectHeadersComponent, NodeElementDirective, NodeIconComponent, NodeKeyState, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeMissingLookupFactorsComponent, NodeRecommendationsComponent, NodeValueDetailsComponent, OPTION_GROUP_TOKEN, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, RelatedNodeResult, RemoveMarkdownPipe, Repository, ResizedDirective, ResizedEvent, ResponsiveService, SELECT_OPTION_TOKEN, SELECT_TOKEN, SchemaInfoComponent, SchemaVersionLinkComponent, SearchExtendComponent, SelectComponent, SelectOptionComponent, SelectOptionGroupComponent, ShelfDialogComponent, ShellComponent, SitesManagementChartComponent, SitesMapsComponent, SitesNodesComponent, SkeletonTextComponent, SocialTagsComponent, SortByPipe, SortSelectComponent, TagsInputDirective, Template, TermsPropertyContentComponent, TermsSubClassOfContentComponent, TermsUnitsDescriptionComponent, ThousandSuffixesPipe, TimesPipe, ToastComponent, ToggleOptionDirective, UncapitalizePipe, addPolygonToFeature, afterBarDrawPlugin, allCountriesQuery, arrayValue, availableProperties, baseApiUrl, baseUrl, bottom, buildSummary, bytesSize, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, capitalize, changelogUrl, clustererImage, code, compoundToHtml, computeKeys, computeTerms, contactUsEmail, contactUsLink, coordinatesToPoint, copyObject, countriesQuery, createMarker, cropsQuery, d3ellipse, d3wrap, dataPathLabel, dataPathToKey, defaultBarDrawSettings, defaultFeature, defaultLabel, defaultLollipopSettings, defaultSuggestionType, definitionToSchemaType, distinctUntilChangedDeep, ellipsis, engineGitBaseUrl, engineGitUrl, errorHasError, errorHasWarning, errorText, evaluateSuccess, externalLink, fillColor, fillStyle, filterBlankNode$1 as filterBlankNode, filterError, filterParams, findConfigModels, findMatchingModel, findModels, findNodeModel, findOrchestratorModel, findProperty, findPropertyById, flatFilterData, flatFilterNode, formatCustomErrorMessage, formatDate, formatError, formatPropertyError, formatter, getColor, getDatesBetween, gitBranch, gitHome, gitlabRawUrl, glossaryBaseUrl, glossaryLink, groupChanged, groupLogsByModel, groupLogsByTerm, groupNodesByTerm, groupdLogsByKey, grouppedKeys, grouppedValueKeys, handleAPIError, hasError, hasLeafWithValue, hasValidationError, hasWarning, ignoreKeys$1 as ignoreKeys, initialFilterState, isAddPropertyEnabled, isChrome, isDateBetween, isEqual, isExternal, isMethodModelAllowed, isMigrationError, isMissingOneOfError, isMissingPropertyError, isNonNodeModelKey, isSchemaIri, isScrolledBelow, isState, isTermTypeAllowed, isValidKey, keyToDataPath, levels, linkTypeEnabled, listColor, listColorContinuous, loadMapApi, localStorageSignal, locationQuery, logToCsv$1 as logToCsv, logValueArray, logsKey, lollipopChartPlugin, lookupUrl, mapFilterData, mapsUrl, markerIcon, markerPie, matchAggregatedQuery, matchAggregatedValidatedQuery, matchBoolPrefixQuery, matchCountry, matchExactQuery, matchGlobalRegion, matchId, matchNameNormalized, matchNestedKey, matchPhrasePrefixQuery, matchPhraseQuery, matchPrimaryProductQuery, matchQuery, matchRegex, matchRegion, matchTermType, matchType, maxAreaSize, measurementValue, mergeDataWithHeaders, methodTierOrder, migrationErrorMessage, migrationsUrl, missingNodeErrors, modelCount, modelKeyParams, modelParams, models, multiMatchQuery, nestedProperty, nestingEnabled, nestingTypeEnabled, nodeAvailableProperties, nodeColours$1 as nodeColours, nodeId, nodeLink, nodeLogsUrl, nodeType, nodeTypeDataState, nodeUrl, nodeVersion, numberGte, parentKey, parentProperty, parseData, parseDataPath, parseLines, parseMessage$1 as parseMessage, parseNewValue, pathToApiDocsPath, pluralize, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonToMap, polygonsFromFeature, populateWithTrackIdsFilterData, primaryProduct, productsQuery, propertyError, propertyId, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, repeat, reportIssueLink, reportIssueUrl, safeJSONParse, safeJSONStringify, schemaBaseUrl, schemaDataBaseUrl, schemaLink, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchFilterData, searchableTypes, siblingProperty, singleProperty, siteTooBig, sortProperties, sortedDates, strokeColor, strokeStyle, suggestMatchQuery, suggestQuery, takeAfterViewInit, termLocation, termLocationName, termProperties, termTypeLabel, toThousands, typeToNewProperty, typeaheadFocus, uncapitalize, uniqueDatesBetween, updateProperties, valueTypeToDefault, waitFor, wildcardQuery };
12432
+ export { ARRAY_DELIMITER, ApplyPurePipe, BarChartComponent, BibliographiesSearchConfirmComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, CapitalizePipe, ChartComponent, ChartConfigurationDirective, ClickOutsideDirective, ClipboardComponent, CollapsibleBoxComponent, ColorPalette, CompoundDirective, CompoundPipe, CycleNodesKeyGroup, CyclesCompletenessComponent, CyclesEmissionsChartComponent, CyclesFunctionalUnitMeasureComponent, CyclesNodesComponent, CyclesNodesTimelineComponent, CyclesResultComponent, DataTableComponent, DefaultPipe, DeltaColour, DrawerContainerComponent, EllipsisPipe, EngineModelsStageComponent, EngineModelsStageDeepComponent, EngineModelsStageDeepService, EngineModelsVersionLinkComponent, EngineOrchestratorEditComponent, EngineRequirementsFormComponent, FileSizePipe, FilesErrorSummaryComponent, FilesFormComponent, FilesFormEditableComponent, FilesUploadErrorsComponent, FilterComponent, FilterHasOptionsPipe, GetPipe, GlossaryMigrationFormat, HE_API_BASE_URL, HE_CALCULATIONS_BASE_URL, HE_MAP_LOADED, HeAuthService, HeCommonService, HeEngineService, HeGlossaryService, HeMendeleyService, HeNodeCsvService, HeNodeService, HeNodeStoreService, HeSchemaService, HeSearchService, HeSvgIconsModule, HeToastService, ImpactAssessmentsGraphComponent, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, IsArrayPipe, IsObjectPipe, IssueConfirmComponent, KeyToLabelPipe, KeysPipe, Level, LineChartComponent, LinkKeyValueComponent, LogStatus, MAX_RESULTS, MapsDrawingComponent, MapsDrawingConfirmComponent, MendeleySearchResult, MobileShellComponent, NavigationMenuComponent, NoExtPipe, NodeCsvExportConfirmComponent, NodeCsvSelectHeadersComponent, NodeElementDirective, NodeIconComponent, NodeKeyState, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeLogsTimeComponent, NodeMissingLookupFactorsComponent, NodeRecommendationsComponent, NodeValueDetailsComponent, OPTION_GROUP_TOKEN, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, RelatedNodeResult, RemoveMarkdownPipe, Repository, ResizedDirective, ResizedEvent, ResponsiveService, SELECT_OPTION_TOKEN, SELECT_TOKEN, SchemaInfoComponent, SchemaVersionLinkComponent, SearchExtendComponent, SelectComponent, SelectOptionComponent, SelectOptionGroupComponent, ShelfDialogComponent, ShellComponent, SitesManagementChartComponent, SitesMapsComponent, SitesNodesComponent, SkeletonTextComponent, SocialTagsComponent, SortByPipe, SortSelectComponent, TagsInputDirective, Template, TermsPropertyContentComponent, TermsSubClassOfContentComponent, TermsUnitsDescriptionComponent, ThousandSuffixesPipe, TimesPipe, ToastComponent, ToggleOptionDirective, UncapitalizePipe, addPolygonToFeature, afterBarDrawPlugin, allCountriesQuery, arrayValue, availableProperties, baseApiUrl, baseUrl, bottom, buildSummary, bytesSize, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, capitalize, changelogUrl, clustererImage, code, compoundToHtml, computeKeys, computeTerms, contactUsEmail, contactUsLink, coordinatesToPoint, copyObject, countriesQuery, createMarker, cropsQuery, d3ellipse, d3wrap, dataPathLabel, dataPathToKey, defaultBarDrawSettings, defaultFeature, defaultLabel, defaultLollipopSettings, defaultSuggestionType, definitionToSchemaType, distinctUntilChangedDeep, ellipsis, engineGitBaseUrl, engineGitUrl, errorHasError, errorHasWarning, errorText, evaluateSuccess, externalLink, fillColor, fillStyle, filterBlankNode$1 as filterBlankNode, filterError, filterParams, findConfigModels, findMatchingModel, findModels, findNodeModel, findOrchestratorModel, findProperty, findPropertyById, flatFilterData, flatFilterNode, formatCustomErrorMessage, formatDate, formatError, formatPropertyError, formatter, getColor, getDatesBetween, gitBranch, gitHome, gitlabRawUrl, glossaryBaseUrl, glossaryLink, groupChanged, groupLogsByModel, groupLogsByTerm, groupNodesByTerm, groupdLogsByKey, grouppedKeys, grouppedValueKeys, handleAPIError, hasError, hasLeafWithValue, hasValidationError, hasWarning, ignoreKeys$1 as ignoreKeys, initialFilterState, isAddPropertyEnabled, isChrome, isDateBetween, isEqual, isExternal, isMethodModelAllowed, isMigrationError, isMissingOneOfError, isMissingPropertyError, isNonNodeModelKey, isSchemaIri, isScrolledBelow, isState, isTermTypeAllowed, isValidKey, keyToDataPath, levels, linkTypeEnabled, listColor, listColorContinuous, loadMapApi, localStorageSignal, locationQuery, logToCsv$1 as logToCsv, logValueArray, logsKey, lollipopChartPlugin, lookupUrl, mapFilterData, mapsUrl, markerIcon, markerPie, matchAggregatedQuery, matchAggregatedValidatedQuery, matchBoolPrefixQuery, matchCountry, matchExactQuery, matchGlobalRegion, matchId, matchNameNormalized, matchNestedKey, matchPhrasePrefixQuery, matchPhraseQuery, matchPrimaryProductQuery, matchQuery, matchRegex, matchRegion, matchTermType, matchType, maxAreaSize, measurementValue, mergeDataWithHeaders, methodTierOrder, migrationErrorMessage, migrationsUrl, missingNodeErrors, modelCount, modelKeyParams, modelParams, models, multiMatchQuery, nestedProperty, nestingEnabled, nestingTypeEnabled, nodeAvailableProperties, nodeColours$1 as nodeColours, nodeId, nodeLink, nodeLogsUrl, nodeType, nodeTypeDataState, nodeUrl, nodeVersion, numberGte, parentKey, parentProperty, parseData, parseDataPath, parseLines, parseMessage$1 as parseMessage, parseNewValue, pathToApiDocsPath, pluralize, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonToMap, polygonsFromFeature, populateWithTrackIdsFilterData, primaryProduct, productsQuery, propertyError, propertyId, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, repeat, reportIssueLink, reportIssueUrl, safeJSONParse, safeJSONStringify, schemaBaseUrl, schemaDataBaseUrl, schemaLink, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchFilterData, searchableTypes, siblingProperty, singleProperty, siteTooBig, sortProperties, sortedDates, strokeColor, strokeStyle, suggestMatchQuery, suggestQuery, takeAfterViewInit, termLocation, termLocationName, termProperties, termTypeLabel, toThousands, typeToNewProperty, typeaheadFocus, uncapitalize, uniqueDatesBetween, updateProperties, valueTypeToDefault, waitFor, wildcardQuery };
12384
12433
  //# sourceMappingURL=hestia-earth-ui-components.mjs.map