@hestia-earth/ui-components 0.41.53 → 0.41.55

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.
@@ -13,7 +13,7 @@ import { SCHEMA_VERSION, SchemaType, NodeType, TermTermType, productTermTermType
13
13
  import Gradient from 'javascript-color-gradient';
14
14
  import { ShadeGenerator } from 'shade-generator/dist/shadeGenerator';
15
15
  import { select, selectAll } from 'd3-selection';
16
- import { isEmpty, unique, monthsBefore, toPrecision, isNumber, isUndefined, toComma, duration, keyToLabel, ellipsis as ellipsis$1, sum, getPercentileValue, isEqual as isEqual$2, max, toDashCase, diffInDays, min } from '@hestia-earth/utils';
16
+ import { isEmpty, unique, monthsBefore, toPrecision, isNumber, isUndefined, toComma, duration, keyToLabel, sum, min, max, mean, median, ellipsis as ellipsis$1, getPercentileValue, isEqual as isEqual$2, toDashCase, diffInDays } from '@hestia-earth/utils';
17
17
  import { json2csv } from 'json-2-csv';
18
18
  import { propertyValue as propertyValue$1, emptyValue } from '@hestia-earth/utils/dist/term';
19
19
  import { getDefaultModelId, getModelGroup, loadResourceKey, isInSystemBoundary } from '@hestia-earth/glossary';
@@ -5432,6 +5432,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
5432
5432
  }]
5433
5433
  }] });
5434
5434
 
5435
+ class SumPipe {
5436
+ constructor() {
5437
+ this.transform = sum;
5438
+ }
5439
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5440
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: SumPipe, isStandalone: true, name: "sum" }); }
5441
+ }
5442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SumPipe, decorators: [{
5443
+ type: Pipe,
5444
+ args: [{
5445
+ name: 'sum'
5446
+ }]
5447
+ }] });
5448
+ class MinPipe {
5449
+ constructor() {
5450
+ this.transform = min;
5451
+ }
5452
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MinPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5453
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: MinPipe, isStandalone: true, name: "min" }); }
5454
+ }
5455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MinPipe, decorators: [{
5456
+ type: Pipe,
5457
+ args: [{
5458
+ name: 'min'
5459
+ }]
5460
+ }] });
5461
+ class MaxPipe {
5462
+ constructor() {
5463
+ this.transform = max;
5464
+ }
5465
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MaxPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5466
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: MaxPipe, isStandalone: true, name: "max" }); }
5467
+ }
5468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MaxPipe, decorators: [{
5469
+ type: Pipe,
5470
+ args: [{
5471
+ name: 'max'
5472
+ }]
5473
+ }] });
5474
+ class MeanPipe {
5475
+ constructor() {
5476
+ this.transform = mean;
5477
+ }
5478
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MeanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5479
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: MeanPipe, isStandalone: true, name: "mean" }); }
5480
+ }
5481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MeanPipe, decorators: [{
5482
+ type: Pipe,
5483
+ args: [{
5484
+ name: 'mean'
5485
+ }]
5486
+ }] });
5487
+ class MedianPipe {
5488
+ constructor() {
5489
+ this.transform = median;
5490
+ }
5491
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MedianPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
5492
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: MedianPipe, isStandalone: true, name: "median" }); }
5493
+ }
5494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MedianPipe, decorators: [{
5495
+ type: Pipe,
5496
+ args: [{
5497
+ name: 'median'
5498
+ }]
5499
+ }] });
5500
+
5435
5501
  class SortSelectComponent {
5436
5502
  constructor() {
5437
5503
  this.sortOptions = input.required(...(ngDevMode ? [{ debugName: "sortOptions" }] : []));
@@ -5998,10 +6064,17 @@ const drawText = (ctx, { text, font, fillStyle, placement, xPos, yPos, maxWidth
5998
6064
  ctx.fillText(text, xPos, yPos, maxWidth);
5999
6065
  }
6000
6066
  };
6067
+ const calculateNextData = (currentData, newData, hasExistingData) => isUndefined(newData)
6068
+ ? currentData
6069
+ : hasExistingData
6070
+ ? typeof newData === 'number' && typeof currentData === 'number'
6071
+ ? currentData + newData
6072
+ : newData
6073
+ : newData;
6001
6074
  const afterBarDrawPlugin = settings => ({
6002
6075
  id: ['afterBarDrawPlugin', settings?.placement].filter(Boolean).join('-'),
6003
6076
  afterDatasetsDraw: (chart) => {
6004
- if (!chart.data.datasets?.length) {
6077
+ if (!chart.data.datasets?.length || !chart.data.labels?.length) {
6005
6078
  return;
6006
6079
  }
6007
6080
  const { placement, xPosFn, yPosFn, colorFn, textFn, maxWidth, font, emptyValueLabel } = {
@@ -6010,31 +6083,55 @@ const afterBarDrawPlugin = settings => ({
6010
6083
  };
6011
6084
  const { ctx, width, height } = chart;
6012
6085
  ctx.save();
6013
- const meta = chart.getDatasetMeta(0);
6014
- const dataset = chart.data.datasets[0];
6015
- const elements = meta.data;
6016
- elements
6017
- .filter(element => !element.skip)
6018
- .forEach((element, index) => {
6019
- const { x, y, base } = element;
6020
- const label = chart.data.labels?.[index] ?? '';
6021
- const data = dataset.data[index];
6022
- // use min/max as both negative values would inverse the positions
6023
- const anchorX = placement === 'left' ? Math.min(base, x) : Math.max(base, x);
6024
- const xPos = xPosFn(anchorX, index, width, chart, data, placement);
6025
- const yPos = yPosFn(y, index, height, chart, data, placement);
6026
- const text = isUndefined(data) ? emptyValueLabel : textFn({ label, data }, index, chart);
6027
- text &&
6086
+ const getStackItems = (index) => chart.data.datasets
6087
+ .map((dataset, dsIndex) => ({ dataset, meta: chart.getDatasetMeta(dsIndex) }))
6088
+ .filter(({ meta }) => !meta.hidden)
6089
+ .map(({ dataset, meta }) => ({
6090
+ element: meta.data[index],
6091
+ dataVal: dataset.data[index]
6092
+ }))
6093
+ .filter(({ element }) => element && !element.skip);
6094
+ const aggregateStackItems = (stackItems) => stackItems.reduce((acc, { element, dataVal }) => ({
6095
+ finalData: calculateNextData(acc.finalData, dataVal, acc.hasData),
6096
+ hasData: acc.hasData || !isUndefined(dataVal),
6097
+ minX: Math.min(acc.minX, element.base, element.x),
6098
+ maxX: Math.max(acc.maxX, element.base, element.x),
6099
+ lastVisibleElement: element
6100
+ }), {
6101
+ finalData: undefined,
6102
+ hasData: false,
6103
+ minX: Infinity,
6104
+ maxX: -Infinity,
6105
+ lastVisibleElement: stackItems[0].element
6106
+ });
6107
+ const getLabel = (index) => chart.data.labels?.[index] ?? '';
6108
+ const getXPos = (anchorX, index, dataToPass) => xPosFn(anchorX, index, width, chart, dataToPass, placement);
6109
+ const getYPos = (y, index, dataToPass) => yPosFn(y, index, height, chart, dataToPass, placement);
6110
+ const getAnchorX = (minX, maxX) => (placement === 'left' ? minX : maxX);
6111
+ const processIndex = (index) => {
6112
+ const stackItems = getStackItems(index);
6113
+ if (!stackItems.length) {
6114
+ return;
6115
+ }
6116
+ const { finalData, hasData, minX, maxX, lastVisibleElement } = aggregateStackItems(stackItems);
6117
+ const dataToPass = hasData ? finalData : undefined;
6118
+ const text = !hasData
6119
+ ? emptyValueLabel
6120
+ : textFn({ label: getLabel(index), data: dataToPass }, index, chart);
6121
+ if (text) {
6028
6122
  drawText(ctx, {
6029
6123
  text,
6030
- font,
6031
- fillStyle: colorFn(element.options, index, chart, data),
6032
- placement,
6033
- xPos,
6034
- yPos,
6035
- maxWidth
6124
+ font: font,
6125
+ fillStyle: colorFn(lastVisibleElement.options, index, chart, dataToPass),
6126
+ placement: placement,
6127
+ xPos: getXPos(getAnchorX(minX, maxX), index, dataToPass),
6128
+ yPos: getYPos(lastVisibleElement.y, index, dataToPass),
6129
+ maxWidth: maxWidth
6036
6130
  });
6037
- });
6131
+ }
6132
+ };
6133
+ const indices = Array.from({ length: chart.data.labels.length }, (_, i) => i);
6134
+ indices.forEach(processIndex);
6038
6135
  ctx.restore();
6039
6136
  }
6040
6137
  });
@@ -6699,7 +6796,7 @@ const datasetCenter = (chart, index) => {
6699
6796
  return (right + left) / 2;
6700
6797
  };
6701
6798
  const itemColor = (item) => item.backgroundColor || item.borderColor || item.color;
6702
- const tooltipFn = ({ label, selectedLabel, units, values, maxLabelLength }) => `
6799
+ const tooltipFn = ({ label, selectedLabel, units, values }) => `
6703
6800
  <div class="is-flex is-flex-direction-column is-overflow-y-auto" style="max-height:400px">
6704
6801
  <div class="is-hidden-tablet is-p-1 has-text-centered has-text-secondary has-text-weight-bold is-size-7 with-border-secondary-accent" style="border-bottom-width:1px">${label}</div>
6705
6802
  <div class="is-flex is-justify-content-center is-align-items-flex-start">
@@ -6709,15 +6806,19 @@ const tooltipFn = ({ label, selectedLabel, units, values, maxLabelLength }) => `
6709
6806
  ${values
6710
6807
  .map(value => `
6711
6808
  <div class="is-flex is-flex-direction-column is-align-self-stretch w-100">
6712
- <div class="is-flex is-align-items-center is-gap-4 is-p-1 has-text-grey-dark is-size-7">
6713
- <div class="is-radius-3" style="width:12px;height:12px;background:${itemColor(value)}"></div>
6714
- <span class="${value.label === selectedLabel ? 'has-text-weight-bold' : ''}">${ellipsis$1(value.label, maxLabelLength)}</span>
6809
+ <div class="is-flex is-align-items-center is-gap-4 is-p-1 has-text-grey-dark is-size-7" style="height:21px">
6810
+ <div class="is-flex-shrink-0 is-radius-3" style="width:12px;height:12px;background:${itemColor(value)}"></div>
6811
+ <div class="is-flex-grow-1">
6812
+ <span class="has-text-ellipsis is-ellipsis-1 ${value.label === selectedLabel ? 'has-text-weight-bold' : ''}">${value.label}</span>
6813
+ </div>
6715
6814
  </div>
6716
6815
  ${((value.label === selectedLabel ? value.includedItems : []) || [])
6717
6816
  .map(included => `
6718
- <div class="is-flex is-align-items-center is-gap-4 is-p-1 is-pl-4 has-text-grey-dark is-size-7">
6719
- <div class="is-radius-3" style="width:8px;height:8px;background:${itemColor(included)}"></div>
6720
- <span>${ellipsis$1(included.label, maxLabelLength - 10)}</span>
6817
+ <div class="is-flex is-align-items-center is-gap-4 is-p-1 is-pl-4 has-text-grey-dark is-size-7" style="height:21px">
6818
+ <div class="is-flex-shrink-0 is-radius-3" style="width:8px;height:8px;background:${itemColor(included)}"></div>
6819
+ <div class="is-flex-grow-1">
6820
+ <span class="has-text-ellipsis is-ellipsis-1">${included.label}</span>
6821
+ </div>
6721
6822
  </div>
6722
6823
  `)
6723
6824
  .join('')}
@@ -6725,21 +6826,21 @@ const tooltipFn = ({ label, selectedLabel, units, values, maxLabelLength }) => `
6725
6826
  `.trim())
6726
6827
  .join('')}
6727
6828
 
6728
- <div class="is-align-self-stretch has-text-right is-p-1 has-text-grey-dark is-size-7 with-border-secondary-accent" style="border-top-width:1px">Total</div>
6829
+ <div class="is-align-self-stretch has-text-right is-p-1 has-text-secondary has-text-weight-semibold is-size-7 with-border-secondary-accent" style="border-top-width:1px">Total</div>
6729
6830
  </div>
6730
6831
  <div class="is-flex is-flex-direction-column is-align-items-center is-align-self-stretch h-100 is-pl-1">
6731
- <div class="is-align-self-stretch is-p-1 has-text-secondary has-text-weight-bold is-size-7 with-border-secondary-accent" style="border-bottom-width:1px">${units}</div>
6832
+ <div class="is-align-self-stretch is-p-1 has-text-secondary has-text-weight-bold is-size-7 with-border-secondary-accent" style="border-bottom-width:1px">${units || '&nbsp;'}</div>
6732
6833
 
6733
6834
  ${values
6734
6835
  .map(value => `
6735
6836
  <div class="is-flex is-flex-direction-column is-align-self-stretch">
6736
- <div class="is-flex is-align-items-center is-gap-4 is-p-1 has-text-grey-dark is-size-7">
6737
- <span class="${value.label === selectedLabel ? 'has-text-weight-bold' : ''}">${transform(value.value) || 0}</span>
6837
+ <div class="is-flex is-align-items-center is-gap-4 is-p-1 has-text-grey-dark is-size-7" style="height:21px">
6838
+ <span class="${value.label === selectedLabel ? 'has-text-weight-bold' : ''}">${transform(value.value) || '-'}</span>
6738
6839
  </div>
6739
6840
  ${((value.label === selectedLabel ? value.includedItems : []) || [])
6740
6841
  .map(included => `
6741
- <div class="is-flex is-align-items-center is-gap-4 is-p-1 has-text-grey-dark is-size-7">
6742
- <span>${transform(included.value) || 0}</span>
6842
+ <div class="is-flex is-align-items-center is-gap-4 is-p-1 has-text-grey-dark is-size-7" style="height:21px">
6843
+ <span>${transform(included.value) || '-'}</span>
6743
6844
  </div>
6744
6845
  `)
6745
6846
  .join('')}
@@ -6854,7 +6955,13 @@ class ContributionChartComponent {
6854
6955
  }
6855
6956
  }
6856
6957
  },
6857
- plugins: [backgroundHoverPlugin({ threshold: hoverHeight })]
6958
+ plugins: [
6959
+ backgroundHoverPlugin({ threshold: hoverHeight }),
6960
+ afterBarDrawPlugin({
6961
+ placement: 'right',
6962
+ textFn: ({ data }) => (isUndefined(data) ? 'No data' : '')
6963
+ })
6964
+ ]
6858
6965
  }), ...(ngDevMode ? [{ debugName: "defaultConfig" }] : []));
6859
6966
  this.dataConfig = computed(() => ({
6860
6967
  datasets: this.displayData().map(item => ({
@@ -6880,8 +6987,7 @@ class ContributionChartComponent {
6880
6987
  label: this.labels()[index],
6881
6988
  units: this.label(),
6882
6989
  values: dataAtIndex(this.displayData(), index),
6883
- selectedLabel: this.displayData()?.[datasetIndex]?.label,
6884
- maxLabelLength: this.responsiveService.isMobile() ? 30 : 50
6990
+ selectedLabel: this.displayData()?.[datasetIndex]?.label
6885
6991
  }, datasetCenter(chart, index), element.y, {
6886
6992
  tooltipClass: 'is-large has-background-white shadow-3 is-p-1',
6887
6993
  container: 'body'
@@ -6900,11 +7006,11 @@ class ContributionChartComponent {
6900
7006
  return downloadFile(this.csvContent(), `${title}-contribution.csv`);
6901
7007
  }
6902
7008
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ContributionChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6903
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ContributionChartComponent, isStandalone: true, selector: "he-contribution-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, showExportButton: { classPropertyName: "showExportButton", publicName: "showExportButton", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ChartComponent, descendants: true, isSignal: true }, { propertyName: "tooltip", first: true, predicate: ChartTooltipComponent, descendants: true, isSignal: true }], exportAs: ["contributionChart"], ngImport: i0, template: "<div [class.chart-area-border]=\"showLegend()\">\n <he-chart\n [data]=\"dataConfig()\"\n [config]=\"configuration()\"\n [showExportButton]=\"showExportButton()\"\n [style.height.px]=\"chartHeight()\">\n <he-chart-tooltip [tooltipFn]=\"tooltipFn\" />\n </he-chart>\n</div>\n\n@if (showLegend()) {\n <he-bar-chart-legend [data]=\"displayData()\" />\n}\n", styles: [":host{display:block}he-chart{height:400px}he-bar-chart-legend ::ng-deep .breakdown-legend--color{border-radius:3px}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config", "showExportButton"], exportAs: ["chart"] }, { kind: "component", type: ChartTooltipComponent, selector: "he-chart-tooltip", inputs: ["tooltipFn"], exportAs: ["chartTooltip"] }, { kind: "component", type: BarChartLegendComponent, selector: "he-bar-chart-legend", inputs: ["data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7009
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ContributionChartComponent, isStandalone: true, selector: "he-contribution-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, showExportButton: { classPropertyName: "showExportButton", publicName: "showExportButton", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ChartComponent, descendants: true, isSignal: true }, { propertyName: "tooltip", first: true, predicate: ChartTooltipComponent, descendants: true, isSignal: true }], exportAs: ["contributionChart"], ngImport: i0, template: "<div class=\"is-relative\" [class.chart-area-border]=\"showLegend()\">\n <he-chart\n [data]=\"dataConfig()\"\n [config]=\"configuration()\"\n [showExportButton]=\"showExportButton()\"\n [style.height.px]=\"chartHeight()\">\n <he-chart-tooltip [tooltipFn]=\"tooltipFn\" />\n </he-chart>\n\n @if (!data()?.length) {\n <div class=\"is-absolute w-100 h-100 | no-data\">\n <div class=\"is-flex is-justify-content-center is-align-items-center w-100 h-100\">\n <span class=\"is-size-7\">No contribution available.</span>\n </div>\n </div>\n }\n</div>\n\n@if (showLegend()) {\n <he-bar-chart-legend [data]=\"displayData()\" />\n}\n", styles: [":host{display:block}he-chart{height:400px}he-bar-chart-legend ::ng-deep .breakdown-legend--color{border-radius:3px}.no-data{top:0;background-color:#0000004d}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config", "showExportButton"], exportAs: ["chart"] }, { kind: "component", type: ChartTooltipComponent, selector: "he-chart-tooltip", inputs: ["tooltipFn"], exportAs: ["chartTooltip"] }, { kind: "component", type: BarChartLegendComponent, selector: "he-bar-chart-legend", inputs: ["data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6904
7010
  }
6905
7011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ContributionChartComponent, decorators: [{
6906
7012
  type: Component$1,
6907
- args: [{ selector: 'he-contribution-chart', exportAs: 'contributionChart', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ChartComponent, ChartTooltipComponent, BarChartLegendComponent], template: "<div [class.chart-area-border]=\"showLegend()\">\n <he-chart\n [data]=\"dataConfig()\"\n [config]=\"configuration()\"\n [showExportButton]=\"showExportButton()\"\n [style.height.px]=\"chartHeight()\">\n <he-chart-tooltip [tooltipFn]=\"tooltipFn\" />\n </he-chart>\n</div>\n\n@if (showLegend()) {\n <he-bar-chart-legend [data]=\"displayData()\" />\n}\n", styles: [":host{display:block}he-chart{height:400px}he-bar-chart-legend ::ng-deep .breakdown-legend--color{border-radius:3px}\n"] }]
7013
+ args: [{ selector: 'he-contribution-chart', exportAs: 'contributionChart', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ChartComponent, ChartTooltipComponent, BarChartLegendComponent], template: "<div class=\"is-relative\" [class.chart-area-border]=\"showLegend()\">\n <he-chart\n [data]=\"dataConfig()\"\n [config]=\"configuration()\"\n [showExportButton]=\"showExportButton()\"\n [style.height.px]=\"chartHeight()\">\n <he-chart-tooltip [tooltipFn]=\"tooltipFn\" />\n </he-chart>\n\n @if (!data()?.length) {\n <div class=\"is-absolute w-100 h-100 | no-data\">\n <div class=\"is-flex is-justify-content-center is-align-items-center w-100 h-100\">\n <span class=\"is-size-7\">No contribution available.</span>\n </div>\n </div>\n }\n</div>\n\n@if (showLegend()) {\n <he-bar-chart-legend [data]=\"displayData()\" />\n}\n", styles: [":host{display:block}he-chart{height:400px}he-bar-chart-legend ::ng-deep .breakdown-legend--color{border-radius:3px}.no-data{top:0;background-color:#0000004d}\n"] }]
6908
7014
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], showExportButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showExportButton", required: false }] }], showLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLegend", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], category: [{ type: i0.Input, args: [{ isSignal: true, alias: "category", required: false }] }], chart: [{ type: i0.ViewChild, args: [i0.forwardRef(() => ChartComponent), { isSignal: true }] }], tooltip: [{ type: i0.ViewChild, args: [i0.forwardRef(() => ChartTooltipComponent), { isSignal: true }] }] } });
6909
7015
 
6910
7016
  const colors = {
@@ -7263,6 +7369,27 @@ const keysFromLog = (impactAssessment, log) => {
7263
7369
  const contributionIndex = (isEmission ? emission : impact).toString();
7264
7370
  return { contributionKey, contributionIndex };
7265
7371
  };
7372
+ /**
7373
+ * Re-create the simplified version of the contributions loaded in the Data Explorer.
7374
+ *
7375
+ * @param impactAssessment
7376
+ * @param contributions
7377
+ * @returns
7378
+ */
7379
+ const simplifyContributions = (impactAssessment, contributions) => Object.entries(contributions).reduce((prev, [key, contribution]) => {
7380
+ const indicators = impactAssessment[key];
7381
+ indicators.forEach((indicator, index) => {
7382
+ const id = indicator.term['@id'];
7383
+ Object.entries(contribution?.[index] || {}).forEach(([termId, data]) => {
7384
+ Object.entries(data).forEach(([modelId, value]) => {
7385
+ prev[termId] = prev[termId] || {};
7386
+ prev[termId][modelId] = prev[termId][modelId] || {};
7387
+ prev[termId][modelId][id] = (prev[termId][modelId][id] || 0) + value;
7388
+ });
7389
+ });
7390
+ });
7391
+ return prev;
7392
+ }, {});
7266
7393
  class HeNodeService {
7267
7394
  constructor() {
7268
7395
  this.http = inject(HttpClient);
@@ -14563,18 +14690,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
14563
14690
  const impactValue = (impact, values) => (values[impact['@id']]?.nodes[0] || { value: 0 }).value;
14564
14691
  const impactName = (impact, index) => `${index + 1}. ${defaultLabel(impact)}`;
14565
14692
  const termAllowed$1 = (filterTermTypes = [], term) => !filterTermTypes?.length || (filterTermTypes || []).includes(term?.termType);
14566
- const impactContribution = (indicators, contributions, indicatorTerm, selectedTerm, selectedMethod) => {
14567
- // find all the indicators that have contribution factor
14568
- const filterdIndicators = indicators
14569
- .map((indicator, index) => ({
14570
- indicator,
14571
- index,
14572
- contribution: contributions?.[index]?.[selectedTerm['@id']]?.[selectedMethod?.['@id']] || 0
14573
- }))
14574
- .filter(({ indicator, contribution }) => indicator.term['@id'] === indicatorTerm['@id'] && contribution !== 0);
14575
- const value = sum(filterdIndicators.map(({ contribution }) => contribution));
14576
- return value || null;
14577
- };
14578
14693
  class ImpactAssessmentsIndicatorsChartComponent {
14579
14694
  constructor() {
14580
14695
  this.nodeStoreService = inject(HeNodeStoreService);
@@ -14590,26 +14705,21 @@ class ImpactAssessmentsIndicatorsChartComponent {
14590
14705
  this.impactAssessments = computed(() => this.nodeStoreService.findByState(NodeType.ImpactAssessment, DataState.recalculated), ...(ngDevMode ? [{ debugName: "impactAssessments" }] : []));
14591
14706
  this.contributionsResource = rxResource({
14592
14707
  params: () => ({ impactAssessments: this.impactAssessments() }),
14593
- stream: ({ params: { impactAssessments } }) => from(impactAssessments).pipe(mergeMap(impactAssessment => this.nodeService
14594
- .getContributions$(impactAssessment)
14595
- .pipe(map(contributions => ({ impactAssessment, contributions })))), reduce((prev, curr) => {
14708
+ stream: ({ params: { impactAssessments } }) => from(impactAssessments).pipe(mergeMap(impactAssessment => this.nodeService.getContributions$(impactAssessment).pipe(map(contributions => ({
14709
+ impactAssessment,
14710
+ contributions: simplifyContributions(impactAssessment, contributions)
14711
+ })))), reduce((prev, curr) => {
14596
14712
  prev[curr.impactAssessment['@id']] = curr.contributions;
14597
14713
  return prev;
14598
14714
  }, {}))
14599
14715
  });
14600
14716
  this.contributionsPerImpactAssessment = computed(() => this.contributionsResource.value() ?? {}, ...(ngDevMode ? [{ debugName: "contributionsPerImpactAssessment" }] : []));
14601
- this.contributionKey = computed(() => this.key() === 'impacts'
14602
- ? 'emissionsResourceUse'
14603
- : this.key() === 'endpoints'
14604
- ? 'impacts'
14605
- : null, ...(ngDevMode ? [{ debugName: "contributionKey" }] : []));
14606
- this.contributionTerms = computed(() => unique(this.contributionKey()
14607
- ? this.impactAssessments()
14608
- .flatMap(impact => impact[this.contributionKey()].map(v => v.term))
14609
- .filter(Boolean)
14610
- : []), ...(ngDevMode ? [{ debugName: "contributionTerms" }] : []));
14611
- this.enableContributions = computed(() => this.contributionKey() &&
14612
- Object.values(this.contributionsPerImpactAssessment())?.length === this.impactAssessments()?.length, ...(ngDevMode ? [{ debugName: "enableContributions" }] : []));
14717
+ this.termsMap = computed(() => this.impactAssessments()
14718
+ .flatMap(impact => [...impact.emissionsResourceUse, ...impact.impacts])
14719
+ .reduce((prev, curr) => {
14720
+ prev[curr.term['@id']] = curr.term;
14721
+ return prev;
14722
+ }, {}), ...(ngDevMode ? [{ debugName: "termsMap" }] : []));
14613
14723
  this.indicatorPerImpactAssessment = computed(() => groupNodesByTerm(this.impactAssessments(), this.key()), ...(ngDevMode ? [{ debugName: "indicatorPerImpactAssessment" }] : []));
14614
14724
  this.terms = computed(() => Object.values(this.indicatorPerImpactAssessment() ?? {})
14615
14725
  .filter(({ term, values }) => termAllowed$1(this.filterTermTypes(), term) &&
@@ -14630,14 +14740,18 @@ class ImpactAssessmentsIndicatorsChartComponent {
14630
14740
  this.methods = computed(() => unique(this.termToMethods()[this.selectedTerm()?.['@id']]), ...(ngDevMode ? [{ debugName: "methods" }] : []));
14631
14741
  this.selectedMethod = computed(() => this.methods().find(term => term['@id'] == this.selectedMethodId()), ...(ngDevMode ? [{ debugName: "selectedMethod" }] : []));
14632
14742
  this.groupedValues = computed(() => this.indicatorPerImpactAssessment()?.[this.selectedTerm()?.name]?.values || {}, ...(ngDevMode ? [{ debugName: "groupedValues" }] : []));
14633
- this.contributionData = computed(() => {
14634
- return this.contributionTerms().map((term, index) => ({
14635
- id: term['@id'],
14636
- label: term.name,
14637
- values: this.impactAssessments().map(impact => impactContribution(impact[this.contributionKey()], this.contributionsPerImpactAssessment()[impact['@id']][this.contributionKey()], term, this.selectedTerm(), this.selectedMethod())),
14638
- color: listColor(term, index)
14639
- }));
14640
- }, ...(ngDevMode ? [{ debugName: "contributionData" }] : []));
14743
+ this.selectedContributionData = computed(() => Object.fromEntries(Object.entries(this.contributionsPerImpactAssessment()).map(([id, contributions]) => [
14744
+ id,
14745
+ contributions?.[this.selectedTermId()]?.[this.selectedMethodId()] || {}
14746
+ ])), ...(ngDevMode ? [{ debugName: "selectedContributionData" }] : []));
14747
+ this.contributionTerms = computed(() => unique(Object.values(this.selectedContributionData()).flatMap(v => Object.keys(v))), ...(ngDevMode ? [{ debugName: "contributionTerms" }] : []));
14748
+ this.enableContributions = computed(() => Object.values(this.contributionsPerImpactAssessment())?.length === this.impactAssessments()?.length, ...(ngDevMode ? [{ debugName: "enableContributions" }] : []));
14749
+ this.contributionData = computed(() => this.contributionTerms().map((term, index) => ({
14750
+ id: term,
14751
+ label: this.termsMap()[term]?.name || term,
14752
+ values: this.impactAssessments().map(impact => this.selectedContributionData()[impact['@id']][term]),
14753
+ color: listColor(term, index)
14754
+ })), ...(ngDevMode ? [{ debugName: "contributionData" }] : []));
14641
14755
  this.chartData = computed(() => this.enableContributions()
14642
14756
  ? this.contributionData()
14643
14757
  .filter(({ values }) => !values.every(v => !v))
@@ -15526,5 +15640,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
15526
15640
  * Generated bundle index. Do not edit.
15527
15641
  */
15528
15642
 
15529
- export { ARRAY_DELIMITER, ApplyPurePipe, BarChartComponent, BibliographiesSearchConfirmComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, CapitalizePipe, ChartComponent, ChartConfigurationDirective, ChartExportButtonComponent, ChartTooltipComponent, ClickOutsideDirective, ClipboardComponent, CollapsibleBoxComponent, CollapsibleBoxStyle, ColorPalette, CompoundDirective, CompoundPipe, ContributionChartComponent, ControlValueAccessor, CycleNodesKeyGroup, CyclesCompletenessComponent, CyclesEmissionsCategoryService, CyclesEmissionsChartComponent, CyclesFunctionalUnitMeasureComponent, CyclesMetadataComponent, CyclesNodesComponent, CyclesNodesTimelineComponent, CyclesResultComponent, DataTableComponent, DefaultPipe, DeltaColour, DistributionChartComponent, DrawerContainerComponent, DurationPipe, EllipsisPipe, EngineModelsLinkComponent, EngineModelsLookupInfoComponent, EngineModelsStageComponent, EngineModelsStageDeepComponent, EngineModelsStageDeepService, EngineModelsVersionInfoComponent, EngineModelsVersionLinkComponent, EngineOrchestratorEditComponent, EngineRequirementsFormComponent, FileSizePipe, FileUploadErrorKeys, FilesErrorSummaryComponent, FilesFormComponent, FilesFormEditableComponent, FilesUploadErrorsComponent, FilterAccordionComponent, GUIDE_ENABLED, GetPipe, GlossaryMigrationFormat, GuideOverlayComponent, HESvgIconComponent, HE_API_BASE_URL, HE_CALCULATIONS_BASE_URL, HE_MAP_LOADED, HeAuthService, HeCommonService, HeEngineService, HeGlossaryService, HeMendeleyService, HeNodeCsvService, HeNodeService, HeNodeStoreService, HeSchemaService, HeSearchService, HeToastService, HorizontalBarChartComponent, HorizontalButtonsGroupComponent, ImpactAssessmentsGraphComponent, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, IsArrayPipe, IsObjectPipe, IssueConfirmComponent, KeyToLabelPipe, Level, LineChartComponent, LinkKeyValueComponent, LogStatus, LongPressDirective, MAX_RESULTS, MapsDrawingComponent, MapsDrawingConfirmComponent, MendeleySearchResult, MobileShellComponent, NavigationMenuComponent, NoExtPipe, NodeAggregatedComponent, NodeAggregatedInfoComponent, NodeAggregatedQualityScoreComponent, NodeCsvExportConfirmComponent, NodeCsvPreviewComponent, NodeCsvSelectHeadersComponent, NodeIconComponent, NodeJsonldComponent, NodeJsonldSchemaComponent, NodeKeyState, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeLogsTimeComponent, NodeMissingLookupFactorsComponent, NodeQualityScore, NodeRecommendationsComponent, NodeSelectComponent, NodeValueDetailsComponent, PipelineStagesProgressComponent, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, RelatedNodeResult, RemoveMarkdownPipe, RepeatPipe, Repository, ResizedDirective, ResizedEvent, ResponsiveService, SchemaInfoComponent, SchemaVersionLinkComponent, SearchExtendComponent, ShelfDialogComponent, ShellComponent, SitesManagementChartComponent, SitesMapsComponent, SitesNodesComponent, SkeletonTextComponent, SocialTagsComponent, SortByPipe, SortSelectComponent, TagsInputDirective, Template, TermsPropertyContentComponent, TermsSubClassOfContentComponent, TermsUnitsDescriptionComponent, ThousandSuffixesPipe, ThousandsPipe, TimesPipe, ToastComponent, UncapitalizePipe, addPolygonToFeature, afterBarDrawPlugin, allCountriesQuery, allGroups, allOptions, availableProperties, axisHoverPlugin, backgroundHoverPlugin, baseApiUrl, baseUrl, bottom, buildSummary, bytesSize, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, capitalize, changelogUrl, clustererImage, code, colorToRgba, compoundToHtml, computeKeys, computeTerms, contactUsEmail, contactUsLink, convertToSvg, coordinatesToPoint, copyObject, countGroupVisibleNodes, countriesQuery, createMarker, cropsQuery, d3ellipse, d3wrap, dataPathLabel, dataPathToKey, dataVersionHeader, dataVersionHeaderKey, defaultFeature, defaultLabel, defaultSuggestionType, defaultSvgIconSize, defaultTicksFont, definitionToSchemaType, distinctUntilChangedDeep, downloadFile, downloadPng, downloadSvg, ellipsis, engineGitBaseUrl, engineGitUrl, errorHasError, errorHasWarning, errorText, evaluateSuccess, exportAsSVG, exportFormats, externalLink, externalNodeLink, 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, groupsLogsByFields, guideModelUrl, guideNamespace, guidePageId, handleAPIError, handleGuideEvent, hasError, hasValidationError, hasWarning, hexToRgba, iconSizes, icons, ignoreKeys$2 as ignoreKeys, increaseScaleLimits, initialFilterState, injectResizeEvent$, inputGroupsTermTypes, isAddPropertyEnabled, isChrome, isDateBetween, isEqual, isExternal, isKeyClosedVisible, isKeyHidden, isMaxStage, isMethodModelAllowed, isMigrationError, isMissingOneOfError, isMissingPropertyError, isNonNodeModelKey, isSchemaIri, isScrolledBelow, isState, isTermTypeAllowed, isValidKey, keyToDataPath, levels, listColor, listColorContinuous, listColorWithAlpha, loadMapApi, loadSvgSprite, locationQuery, logToCsv$2 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, nodeById, nodeColours$1 as nodeColours, nodeDataState, nodeDataStates, nodeId, nodeIds, nodeLink, nodeLinkEnabled, nodeLinkTypeEnabled, nodeLogsUrl, nodeQualityScoreColor, nodeQualityScoreLevel, nodeQualityScoreMaxDefault, nodeQualityScoreOrder, nodeSecondaryColours, nodeToAggregationFilename, nodeType, nodeTypeDataState, nodeTypeIcon, nodeTypeIconSchema, nodeUrl, nodeUrlParams, nodeVersion, nodesByState, nodesByType, numberGte, optionsFromGroup, parentKey, parentProperty, parseColor, parseData, parseDataPath, parseLines, parseLogMessage, parseMessage, parseNewValue, pluralize, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonToMap, polygonsFromFeature, populateWithTrackIdsFilterData, postGuideEvent, primaryProduct, productsQuery, propertyError, propertyId, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, registerChart, repeat, reportIssueLink, reportIssueUrl, safeJSONParse, safeJSONStringify, schemaBaseUrl, schemaDataBaseUrl, schemaLink, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchFilterData, searchableTypes, siblingProperty, singleProperty, siteTooBig, siteTypeToColor, siteTypeToIcon, sortProperties, sortedDates, strokeColor, strokeStyle, suggestMatchQuery, suggestQuery, takeAfterViewInit, termLocation, termLocationName, termProperties, termTypeLabel, toSnakeCase, toThousands, typeToNewProperty, typeaheadFocus, uncapitalize, uniqueDatesBetween, updateProperties, valueLink, valueToString, valueTypeToDefault, valueValue, waitFor, wildcardQuery };
15643
+ export { ARRAY_DELIMITER, ApplyPurePipe, BarChartComponent, BibliographiesSearchConfirmComponent, BlankNodeStateComponent, BlankNodeStateNoticeComponent, BlankNodeValueDeltaComponent, CapitalizePipe, ChartComponent, ChartConfigurationDirective, ChartExportButtonComponent, ChartTooltipComponent, ClickOutsideDirective, ClipboardComponent, CollapsibleBoxComponent, CollapsibleBoxStyle, ColorPalette, CompoundDirective, CompoundPipe, ContributionChartComponent, ControlValueAccessor, CycleNodesKeyGroup, CyclesCompletenessComponent, CyclesEmissionsCategoryService, CyclesEmissionsChartComponent, CyclesFunctionalUnitMeasureComponent, CyclesMetadataComponent, CyclesNodesComponent, CyclesNodesTimelineComponent, CyclesResultComponent, DataTableComponent, DefaultPipe, DeltaColour, DistributionChartComponent, DrawerContainerComponent, DurationPipe, EllipsisPipe, EngineModelsLinkComponent, EngineModelsLookupInfoComponent, EngineModelsStageComponent, EngineModelsStageDeepComponent, EngineModelsStageDeepService, EngineModelsVersionInfoComponent, EngineModelsVersionLinkComponent, EngineOrchestratorEditComponent, EngineRequirementsFormComponent, FileSizePipe, FileUploadErrorKeys, FilesErrorSummaryComponent, FilesFormComponent, FilesFormEditableComponent, FilesUploadErrorsComponent, FilterAccordionComponent, GUIDE_ENABLED, GetPipe, GlossaryMigrationFormat, GuideOverlayComponent, HESvgIconComponent, HE_API_BASE_URL, HE_CALCULATIONS_BASE_URL, HE_MAP_LOADED, HeAuthService, HeCommonService, HeEngineService, HeGlossaryService, HeMendeleyService, HeNodeCsvService, HeNodeService, HeNodeStoreService, HeSchemaService, HeSearchService, HeToastService, HorizontalBarChartComponent, HorizontalButtonsGroupComponent, ImpactAssessmentsGraphComponent, ImpactAssessmentsIndicatorBreakdownChartComponent, ImpactAssessmentsIndicatorsChartComponent, ImpactAssessmentsProductsComponent, IsArrayPipe, IsObjectPipe, IssueConfirmComponent, KeyToLabelPipe, Level, LineChartComponent, LinkKeyValueComponent, LogStatus, LongPressDirective, MAX_RESULTS, MapsDrawingComponent, MapsDrawingConfirmComponent, MaxPipe, MeanPipe, MedianPipe, MendeleySearchResult, MinPipe, MobileShellComponent, NavigationMenuComponent, NoExtPipe, NodeAggregatedComponent, NodeAggregatedInfoComponent, NodeAggregatedQualityScoreComponent, NodeCsvExportConfirmComponent, NodeCsvPreviewComponent, NodeCsvSelectHeadersComponent, NodeIconComponent, NodeJsonldComponent, NodeJsonldSchemaComponent, NodeKeyState, NodeLinkComponent, NodeLogsFileComponent, NodeLogsModelsComponent, NodeLogsTimeComponent, NodeMissingLookupFactorsComponent, NodeQualityScore, NodeRecommendationsComponent, NodeSelectComponent, NodeValueDetailsComponent, PipelineStagesProgressComponent, PluralizePipe, PopoverComponent, PopoverConfirmComponent, PrecisionPipe, RelatedNodeResult, RemoveMarkdownPipe, RepeatPipe, Repository, ResizedDirective, ResizedEvent, ResponsiveService, SchemaInfoComponent, SchemaVersionLinkComponent, SearchExtendComponent, ShelfDialogComponent, ShellComponent, SitesManagementChartComponent, SitesMapsComponent, SitesNodesComponent, SkeletonTextComponent, SocialTagsComponent, SortByPipe, SortSelectComponent, SumPipe, TagsInputDirective, Template, TermsPropertyContentComponent, TermsSubClassOfContentComponent, TermsUnitsDescriptionComponent, ThousandSuffixesPipe, ThousandsPipe, TimesPipe, ToastComponent, UncapitalizePipe, addPolygonToFeature, afterBarDrawPlugin, allCountriesQuery, allGroups, allOptions, availableProperties, axisHoverPlugin, backgroundHoverPlugin, baseApiUrl, baseUrl, bottom, buildSummary, bytesSize, calculateCycleDuration, calculateCycleDurationEnabled, calculateCycleStartDate, calculateCycleStartDateEnabled, capitalize, changelogUrl, clustererImage, code, colorToRgba, compoundToHtml, computeKeys, computeTerms, contactUsEmail, contactUsLink, convertToSvg, coordinatesToPoint, copyObject, countGroupVisibleNodes, countriesQuery, createMarker, cropsQuery, d3ellipse, d3wrap, dataPathLabel, dataPathToKey, dataVersionHeader, dataVersionHeaderKey, defaultFeature, defaultLabel, defaultSuggestionType, defaultSvgIconSize, defaultTicksFont, definitionToSchemaType, distinctUntilChangedDeep, downloadFile, downloadPng, downloadSvg, ellipsis, engineGitBaseUrl, engineGitUrl, errorHasError, errorHasWarning, errorText, evaluateSuccess, exportAsSVG, exportFormats, externalLink, externalNodeLink, 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, groupsLogsByFields, guideModelUrl, guideNamespace, guidePageId, handleAPIError, handleGuideEvent, hasError, hasValidationError, hasWarning, hexToRgba, iconSizes, icons, ignoreKeys$2 as ignoreKeys, increaseScaleLimits, initialFilterState, injectResizeEvent$, inputGroupsTermTypes, isAddPropertyEnabled, isChrome, isDateBetween, isEqual, isExternal, isKeyClosedVisible, isKeyHidden, isMaxStage, isMethodModelAllowed, isMigrationError, isMissingOneOfError, isMissingPropertyError, isNonNodeModelKey, isSchemaIri, isScrolledBelow, isState, isTermTypeAllowed, isValidKey, keyToDataPath, levels, listColor, listColorContinuous, listColorWithAlpha, loadMapApi, loadSvgSprite, locationQuery, logToCsv$2 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, nodeById, nodeColours$1 as nodeColours, nodeDataState, nodeDataStates, nodeId, nodeIds, nodeLink, nodeLinkEnabled, nodeLinkTypeEnabled, nodeLogsUrl, nodeQualityScoreColor, nodeQualityScoreLevel, nodeQualityScoreMaxDefault, nodeQualityScoreOrder, nodeSecondaryColours, nodeToAggregationFilename, nodeType, nodeTypeDataState, nodeTypeIcon, nodeTypeIconSchema, nodeUrl, nodeUrlParams, nodeVersion, nodesByState, nodesByType, numberGte, optionsFromGroup, parentKey, parentProperty, parseColor, parseData, parseDataPath, parseLines, parseLogMessage, parseMessage, parseNewValue, pluralize, pointToCoordinates, polygonBounds, polygonToCoordinates, polygonToMap, polygonsFromFeature, populateWithTrackIdsFilterData, postGuideEvent, primaryProduct, productsQuery, propertyError, propertyId, recursiveProperties, refToSchemaType, refreshPropertyKeys, regionsQuery, registerChart, repeat, reportIssueLink, reportIssueUrl, safeJSONParse, safeJSONStringify, schemaBaseUrl, schemaDataBaseUrl, schemaLink, schemaRequiredProperties, schemaTypeToDefaultValue, scrollToEl, scrollTop, searchFilterData, searchableTypes, siblingProperty, simplifyContributions, singleProperty, siteTooBig, siteTypeToColor, siteTypeToIcon, sortProperties, sortedDates, strokeColor, strokeStyle, suggestMatchQuery, suggestQuery, takeAfterViewInit, termLocation, termLocationName, termProperties, termTypeLabel, toSnakeCase, toThousands, typeToNewProperty, typeaheadFocus, uncapitalize, uniqueDatesBetween, updateProperties, valueLink, valueToString, valueTypeToDefault, valueValue, waitFor, wildcardQuery };
15530
15644
  //# sourceMappingURL=hestia-earth-ui-components.mjs.map