@evergis/react 3.1.39 → 3.1.41

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.
package/dist/react.esm.js CHANGED
@@ -12,10 +12,10 @@ import { enUS } from 'date-fns/locale/en-US';
12
12
  import { uniqueId, isNil, isEmpty, isEqual, unescape } from 'lodash';
13
13
  import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';
14
14
  import { changeProps, returnFound } from 'find-and';
15
- import MapboxDraw from '@mapbox/mapbox-gl-draw';
16
- import { geometryCollection, multiPolygon, polygon, multiLineString, multiPoint, point as point$1, bbox } from '@turf/turf';
17
15
  import { jsPDF } from 'jspdf';
18
16
  import html2canvas from 'html2canvas';
17
+ import MapboxDraw from '@mapbox/mapbox-gl-draw';
18
+ import { geometryCollection, multiPolygon, polygon, multiLineString, multiPoint, point as point$1, bbox } from '@turf/turf';
19
19
  import MapGL, { Source, Layer as Layer$1 } from 'react-map-gl/mapbox';
20
20
  import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
21
21
  import 'mapbox-gl/dist/mapbox-gl.css';
@@ -5412,6 +5412,8 @@ const getAttributeValue = (element, attributes) => {
5412
5412
  return maxLength && maxLength < value.length ? (jsx(TextTrim, { maxLength: maxLength, expandable: expandable, lineBreak: lineBreak, children: value })) : (value);
5413
5413
  };
5414
5414
 
5415
+ const getChartAxes = (chartElement) => chartElement?.options?.relatedDataSources?.filter(({ chartAxis }) => chartAxis === "y");
5416
+
5415
5417
  const getChartFilterName = (relatedDataSources) => {
5416
5418
  const relatedAttributes = relatedDataSources || [];
5417
5419
  const axes = relatedAttributes.filter(({ chartAxis }) => chartAxis === "y");
@@ -6005,7 +6007,7 @@ const PagesContainer = memo(({ type = WidgetType.Dashboard, noBorders }) => {
6005
6007
  setSelectedTabId,
6006
6008
  type,
6007
6009
  ]);
6008
- return (jsxs("div", { id: "dashboard-root", style: { width }, children: [jsx(ExpandableTitle, { elementConfig: config, type: type, renderElement: renderElement }), jsx(Container, { isColumn: isColumn, isMain: true, noBorders: noBorders, children: jsx(ContainerChildren, { items: filteredChildren, isMain: true, renderElement: renderElement }) })] }));
6010
+ return (jsx(Container, { id: getRootElementId(type), style: { width }, isMain: true, isColumn: isColumn, noBorders: noBorders, children: jsx(ContainerChildren, { items: filteredChildren, isMain: true, renderElement: renderElement }) }));
6009
6011
  });
6010
6012
 
6011
6013
  const TwoColumnsInnerContainer = memo(({ renderElement }) => {
@@ -6573,10 +6575,12 @@ const LayersContainer = memo(({ type, elementConfig, renderElement }) => {
6573
6575
  return (jsxs(Fragment$1, { children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsx(LayersContainerWrapper, { style: style, children: jsx(LayerTree, { layers: layers, onlyMainTools: true }) }))] }));
6574
6576
  });
6575
6577
 
6576
- const ExportPdfContainer = memo(({ elementConfig }) => {
6577
- const { loading, onExport } = useExportPdf(["dashboard-root"]);
6578
- const { style } = elementConfig || {};
6579
- return (jsx(Container, { style: style, children: jsx(IconButton, { kind: "tools_print", primary: true, disabled: loading, onClick: onExport, children: "\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0432 PDF" }) }));
6578
+ const ExportPdfContainer = memo(({ type, elementConfig }) => {
6579
+ const { t } = useGlobalContext();
6580
+ const { loading, onExport } = useExportPdf(getRootElementId(type));
6581
+ const { style, options } = elementConfig || {};
6582
+ const { icon, title } = options || {};
6583
+ return (jsx(Container, { children: jsx(IconButton, { kind: icon || "download", primary: true, disabled: loading, style: style, onClick: onExport, children: title ?? t("downloadPdf", { ns: "dashboard", defaultValue: "Скачать PDF" }) }) }));
6580
6584
  });
6581
6585
 
6582
6586
  const containerComponents = {
@@ -7428,8 +7432,6 @@ const ElementImage = memo(({ type, elementConfig }) => {
7428
7432
  return firstImage ? jsx("img", { src: firstImage, alt: firstImage, width: width }) : null;
7429
7433
  });
7430
7434
 
7431
- const getChartAxes = (chartElement) => chartElement?.options?.relatedDataSources?.filter(({ chartAxis }) => chartAxis === "y");
7432
-
7433
7435
  const ElementLegend = memo(({ type, element, elementConfig, expandedContainers }) => {
7434
7436
  const { attributes, dataSources } = useWidgetContext(type);
7435
7437
  const { options } = elementConfig || {};
@@ -8640,6 +8642,8 @@ const getTotalFromRelatedFeatures = (data) => {
8640
8642
  return data?.reduce((result, { value }) => result + Number(value), 0)?.toFixed(0) || "";
8641
8643
  };
8642
8644
 
8645
+ const getRootElementId = (type = WidgetType.Dashboard) => `${type}-root`;
8646
+
8643
8647
  const pieChartTooltipFromAttributes = (t, data, attributes) => {
8644
8648
  const attribute = attributes?.find(({ name }) => name === data[0].name);
8645
8649
  const renderValue = attribute
@@ -8829,7 +8833,7 @@ const useChartData = ({ element, type }) => {
8829
8833
  return [];
8830
8834
  return filteredAttributes
8831
8835
  .map(relatedAxis => {
8832
- const { dataSourceName, axisColor, attributeName } = relatedAxis;
8836
+ const { dataSourceName, axisColor, attributeName, attributeUnits } = relatedAxis;
8833
8837
  const dataSource = configDataSources.find(({ name }) => name === dataSourceName);
8834
8838
  const layerInfo = layerInfos?.find(item => item?.name === dataSource?.layerName);
8835
8839
  const featureDataSource = getDataSource(dataSourceName, dataSources);
@@ -8847,8 +8851,10 @@ const useChartData = ({ element, type }) => {
8847
8851
  })
8848
8852
  : null,
8849
8853
  color: axisColor,
8854
+ attributeName,
8855
+ attributeUnits,
8856
+ dataSourceName,
8850
8857
  layerInfo,
8851
- attributeName
8852
8858
  };
8853
8859
  })
8854
8860
  .filter(({ items }) => items === null || (items?.length && !items.every(({ value }) => value === null)));
@@ -8858,6 +8864,8 @@ const useChartData = ({ element, type }) => {
8858
8864
  items: getDataFromAttributes(t, element, attributes),
8859
8865
  layerInfo: null,
8860
8866
  attributeName: null,
8867
+ attributeUnits: null,
8868
+ dataSourceName: null,
8861
8869
  color: null
8862
8870
  }
8863
8871
  ];
@@ -9094,125 +9102,99 @@ const useExpandableContainers = () => {
9094
9102
  return [expandedContainers, expandContainer];
9095
9103
  };
9096
9104
 
9097
- const useExportPdf = (ids) => {
9105
+ const useExportPdf = (id, margin = 20) => {
9098
9106
  const [loading, setLoading] = useState(false);
9099
9107
  const onExport = useCallback(async () => {
9100
- if (ids.length === 0) {
9108
+ if (!id) {
9101
9109
  return;
9102
9110
  }
9103
9111
  setLoading(true);
9104
- const pdf = new jsPDF("landscape", "pt", "a4", false);
9105
- for (let i = 0; i < ids.length; i++) {
9106
- const pageItemContents = document.querySelector(`#${ids[i]}`);
9107
- const data = await html2canvas(pageItemContents, {
9108
- scale: 2,
9109
- windowWidth: 800,
9110
- onclone: (clonedDocument, clonedElement) => {
9111
- clonedDocument.body.style.width = "1920px";
9112
- clonedDocument.body.style.height = "1080px";
9113
- /* if (!isCoverPage) {
9114
- clonedDocument.body.style.background = "#f4f7f9";
9115
- }
9116
-
9117
- const pageContainers = clonedElement.querySelectorAll(".export-page-container");
9118
- const inputWrappers = clonedElement.querySelectorAll(".page-title-input");
9119
- const textareas = clonedElement.querySelectorAll(".report-page-item-textarea");
9120
- const datePickerWrappers = clonedElement.querySelectorAll(".report-page-item-datepicker");
9121
- const pageBlockContainers = clonedElement.querySelectorAll(".report-page-block-container");
9122
- const pageItemTitles = clonedDocument.querySelectorAll(".report-page-item-title");
9123
-
9124
- pageContainers.forEach((element) => {
9125
- (element as HTMLDivElement).style.background = isCoverPage ? "transparent" : "#f4f7f9";
9126
- (element as HTMLDivElement).style.border = "none";
9127
- (element as HTMLDivElement).style.padding = isCoverPage ? "0px" : "3rem 3rem 30rem";
9128
- (element as HTMLDivElement).style.margin = isCoverPage ? "0px" : "initial";
9129
- });
9130
-
9131
- inputWrappers.forEach((inputWrapper) => {
9132
- const input = inputWrapper.querySelector("input");
9133
- const div = document.createElement("div");
9134
-
9135
- div.innerText = (input as HTMLInputElement).value;
9136
-
9137
- inputWrapper.replaceWith(div);
9138
- });
9139
-
9140
- textareas.forEach((textarea) => {
9141
- const div = document.createElement("div");
9142
-
9143
- if ((textarea as HTMLTextAreaElement).classList.contains("report-page-item-comment")) {
9144
- if (isCoverPage) {
9145
- (div as HTMLDivElement).style.display = "none";
9146
- } else {
9147
- (div as HTMLDivElement).style.fontSize = "24px";
9148
- (div as HTMLDivElement).style.fontWeight = "400";
9149
- (div as HTMLDivElement).style.opacity = "0.54";
9150
- (div as HTMLDivElement).style.marginTop = "2rem";
9151
- }
9152
- }
9153
-
9154
- if (isCoverPage) {
9155
- if ((textarea as HTMLTextAreaElement).classList.contains("report-page-front-cover-title")) {
9156
- (div as HTMLDivElement).style.fontSize = "32px";
9157
- (div as HTMLDivElement).style.fontWeight = "300";
9158
- (div as HTMLDivElement).style.lineHeight = "normal";
9159
- }
9160
-
9161
- if ((textarea as HTMLTextAreaElement).classList.contains("report-page-front-cover-comment")) {
9162
- (div as HTMLDivElement).style.fontSize = "16px";
9163
- (div as HTMLDivElement).style.fontWeight = "400";
9164
- (div as HTMLDivElement).style.opacity = "0.54";
9165
- (div as HTMLDivElement).style.lineHeight = "normal";
9166
- }
9167
- }
9168
-
9169
- div.innerText = (textarea as HTMLTextAreaElement).value;
9170
-
9171
- textarea.replaceWith(div);
9172
- });
9173
-
9174
- datePickerWrappers.forEach((inputWrapper) => {
9175
- const input = inputWrapper.querySelector("input");
9176
- const div = document.createElement("div");
9177
-
9178
- if (isCoverPage) {
9179
- (div as HTMLDivElement).style.fontSize = "12px";
9180
- (div as HTMLDivElement).style.fontWeight = "400";
9181
- (div as HTMLDivElement).style.opacity = "0.54";
9182
- }
9183
-
9184
- div.innerText = (input as HTMLInputElement).value;
9185
-
9186
- inputWrapper.replaceWith(div);
9187
- });
9188
-
9189
- pageBlockContainers.forEach((element) => {
9190
- (element as HTMLDivElement).style.background = "#ffffff";
9191
- });
9192
-
9193
- pageItemTitles.forEach((item) => {
9194
- if (isCoverPage) {
9195
- (item as HTMLDivElement).style.display = "none";
9196
- } else {
9197
- (item as HTMLDivElement).style.fontSize = "40px";
9198
- (item as HTMLDivElement).style.fontWeight = "300";
9199
- (item as HTMLDivElement).style.marginBottom = "2rem";
9200
- }
9201
- });*/
9202
- },
9112
+ const container = document.querySelector(`#${id}`);
9113
+ if (!container) {
9114
+ setLoading(false);
9115
+ return;
9116
+ }
9117
+ // Сохраняем оригинальные стили для восстановления
9118
+ const originalStyles = {
9119
+ overflow: container.style.overflow,
9120
+ position: container.style.position,
9121
+ };
9122
+ // Временные стили для точного измерения
9123
+ container.style.overflow = 'visible';
9124
+ container.style.position = 'relative';
9125
+ const pdf = new jsPDF("p", "px", "a4", false);
9126
+ const pageWidth = pdf.internal.pageSize.getWidth();
9127
+ const pageHeight = pdf.internal.pageSize.getHeight();
9128
+ const availableHeight = pageHeight - (2 * margin);
9129
+ // Получаем все дочерние элементы
9130
+ const children = Array.from(container.children);
9131
+ let currentPageHeight = 0;
9132
+ let currentPageElements = [];
9133
+ const pages = [];
9134
+ // Распределяем элементы по страницам
9135
+ for (const child of children) {
9136
+ const childHeight = child.offsetHeight;
9137
+ // Если элемент не помещается на текущей странице, начинаем новую
9138
+ if (currentPageHeight + childHeight > availableHeight && currentPageElements.length > 0) {
9139
+ pages.push([...currentPageElements]);
9140
+ currentPageElements = [];
9141
+ currentPageHeight = 0;
9142
+ }
9143
+ currentPageElements.push(child);
9144
+ currentPageHeight += childHeight;
9145
+ }
9146
+ // Добавляем последнюю страницу
9147
+ if (currentPageElements.length > 0) {
9148
+ pages.push(currentPageElements);
9149
+ }
9150
+ // Генерируем PDF для каждой страницы
9151
+ for (let pageIndex = 0; pageIndex < pages.length; pageIndex++) {
9152
+ if (pageIndex > 0) {
9153
+ pdf.addPage();
9154
+ }
9155
+ const pageElements = pages[pageIndex];
9156
+ // Создаем временный контейнер для текущей страницы
9157
+ const tempContainer = document.createElement('div');
9158
+ tempContainer.style.position = 'absolute';
9159
+ tempContainer.style.left = '-9999px';
9160
+ tempContainer.style.top = '0';
9161
+ tempContainer.style.width = container.offsetWidth + 'px';
9162
+ tempContainer.style.overflow = 'visible';
9163
+ // Клонируем элементы для текущей страницы
9164
+ pageElements.forEach(element => {
9165
+ const clone = element.cloneNode(true);
9166
+ tempContainer.appendChild(clone);
9203
9167
  });
9204
- const img = data.toDataURL("image/png");
9205
- const imgProperties = pdf.getImageProperties(img);
9206
- const pdfWidth = pdf.internal.pageSize.getWidth();
9207
- const pdfHeight = (imgProperties.height * pdfWidth) / imgProperties.width;
9208
- if (i > 0) {
9209
- pdf.addPage("a4", "landscape");
9168
+ document.body.appendChild(tempContainer);
9169
+ try {
9170
+ const canvas = await html2canvas(tempContainer, {
9171
+ scale: 2,
9172
+ useCORS: true,
9173
+ logging: false,
9174
+ backgroundColor: '#ffffff',
9175
+ width: container.offsetWidth,
9176
+ height: tempContainer.offsetHeight,
9177
+ });
9178
+ const imgData = canvas.toDataURL('image/png', 1.0);
9179
+ const imgWidth = pageWidth - (2 * margin);
9180
+ const imgHeight = (canvas.height * imgWidth) / canvas.width;
9181
+ // Центрируем по горизонтали и добавляем с верхним отступом
9182
+ pdf.addImage(imgData, 'PNG', margin, margin, imgWidth, imgHeight);
9183
+ }
9184
+ catch (error) {
9185
+ console.error('Error generating page:', error);
9186
+ }
9187
+ finally {
9188
+ // Удаляем временный контейнер
9189
+ document.body.removeChild(tempContainer);
9210
9190
  }
9211
- pdf.addImage(img, "PNG", 0, 0, pdfWidth, pdfHeight);
9212
9191
  }
9213
- pdf.save(`report_${format(new Date(), "yyyy-MM-dd_HH:mm:ss")}.pdf`);
9192
+ // Восстанавливаем оригинальные стили
9193
+ container.style.overflow = originalStyles.overflow;
9194
+ container.style.position = originalStyles.position;
9195
+ pdf.save(`${format(new Date(), "yyyy-MM-dd_HH:mm:ss")}.pdf`);
9214
9196
  setLoading(false);
9215
- }, [ids]);
9197
+ }, [id, margin]);
9216
9198
  return { loading, onExport };
9217
9199
  };
9218
9200
 
@@ -9415,7 +9397,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
9415
9397
  const { t } = useGlobalContext();
9416
9398
  const { expandedContainers, layerInfos, attributes, dataSources } = useWidgetContext(type);
9417
9399
  const { id, options, children } = element || {};
9418
- const { column, markers: configMarkers, showLabels, showMarkers, showTotal, totalWord: configTotalWord, totalAttribute, expandable, expanded, chartType, relatedDataSources, defaultColor } = options || {};
9400
+ const { column, markers: configMarkers, showLabels, showMarkers, showTotal, totalWord: configTotalWord, totalAttribute, expandable, expanded, chartType, relatedDataSources, defaultColor, dotSnapping, } = options || {};
9419
9401
  const isLineChart = chartType === "line";
9420
9402
  const isPieChart = chartType === "pie";
9421
9403
  const isStackBar = chartType === "stack";
@@ -9470,14 +9452,23 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
9470
9452
  const renderLineChartTooltip = useCallback((items, { indexX }) => {
9471
9453
  return (jsxs(Tooltip, { children: [jsx(ChartTooltipLabel, { children: labels[indexX] }), items
9472
9454
  .filter(({ value }) => !isEmptyValue(value))
9473
- ?.map(({ layerName, attributeName, value, stroke }, index) => {
9474
- const layerInfo = layerInfos?.find(({ name }) => name === layerName);
9475
- const attribute = layerInfo?.layerDefinition.attributes[attributeName];
9476
- return (jsxs(ChartTooltipRow, { children: [jsx(ChartLegendColor$1, { "$color": stroke }), jsx(ChartLegendValue, { children: attribute
9477
- ? formatAttributeValue({ t, type: attribute.type, value, stringFormat: attribute.stringFormat })
9478
- : value })] }, index));
9455
+ ?.map(({ layerName, attributeName, attributeUnits, dataSourceName, value, stroke }, index) => {
9456
+ const layerInfo = !attributeUnits
9457
+ ? layerInfos?.find(({ name }) => name === layerName)
9458
+ : null;
9459
+ const attribute = !attributeUnits
9460
+ ? layerInfo?.layerDefinition.attributes[attributeName]
9461
+ : null;
9462
+ const dataSource = dataSourceName ? getDataSource(dataSourceName, dataSources) : null;
9463
+ const dataSourceUnits = !dataSource || !attributeUnits
9464
+ ? null
9465
+ : dataSource.features?.[0]?.attributes?.[attributeUnits];
9466
+ const legendValue = attribute
9467
+ ? formatAttributeValue({ t, type: attribute.type, value, stringFormat: attribute.stringFormat })
9468
+ : [value, dataSourceUnits].filter(Boolean).join(" ");
9469
+ return (jsxs(ChartTooltipRow, { children: [jsx(ChartLegendColor$1, { "$color": stroke }), jsx(ChartLegendValue, { children: legendValue })] }, index));
9479
9470
  })] }));
9480
- }, [labels, layerInfos]);
9471
+ }, [labels, layerInfos, dataSources, dotSnapping]);
9481
9472
  const markers = useMemo(() => getChartMarkers(data[0]?.items, configMarkers, dataSources), [data, dataSources, configMarkers]);
9482
9473
  const margin = useMemo(() => {
9483
9474
  const markersMargin = showMarkers ? 10 : 0;
@@ -9511,6 +9502,8 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
9511
9502
  const lineChartData = data.map(item => ({
9512
9503
  layerName: item.layerInfo?.name,
9513
9504
  attributeName: item.attributeName,
9505
+ attributeUnits: item.attributeUnits,
9506
+ dataSourceName: item.dataSourceName,
9514
9507
  stroke: item.color || primaryColor,
9515
9508
  values: item.items
9516
9509
  ?.filter(({ value }) => !isEmptyValue(value))
@@ -9525,7 +9518,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
9525
9518
  if (isHidedY) {
9526
9519
  yAxis.remove();
9527
9520
  }
9528
- }, customYAxis: yAxis => yAxis.ticks(4), renderTooltip: renderLineChartTooltip, customize: customize, dynamicTooltipEnable: true, stackedTooltip: true, tooltipClassName: "dashboardLineChartTooltip", drawGridX: !isHidedY, margin: margin })] }));
9521
+ }, customYAxis: yAxis => yAxis.ticks(4), renderTooltip: renderLineChartTooltip, customize: customize, dotSnapping: dotSnapping, dynamicTooltipEnable: true, stackedTooltip: true, tooltipClassName: "dashboardLineChartTooltip", drawGridX: !isHidedY, margin: margin })] }));
9529
9522
  }
9530
9523
  if (isStackBar) {
9531
9524
  return (jsx(AnyChartWrapper, { height: height, children: jsx(StackBar, { data: data, filterName: filterName, type: type, alias: elementConfig?.children?.find(child => child.id === "alias"), options: options, renderTooltip: renderPieChartTooltip, renderElement: renderElement }) }));
@@ -10097,5 +10090,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
10097
10090
  }, children: children }), upperSiblings] }));
10098
10091
  };
10099
10092
 
10100
- export { AddFeatureButton, AddFeatureContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardGradientHeader, FeatureCardHeader, FeatureCardIconHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, RoundedBackgroundContainer, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TmsType, TopContainer, TopContainerButtons, TwoColumnContainer, TwoColumnsInnerContainer, WidgetType, addDataSource, addDataSources, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading, convertSpToTurfFeature, createConfigLayer, createConfigPage, createNewPageId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, getActualExtrusionHeight, getAttributeByName, getAttributeValue, getAttributesConfiguration, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDate, getDefaultConfig, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerDefinition, getLayerInfo, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getSelectedFilterValue, getSlideshowImages, getSvgUrl, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sliceShownOtherItems, timeOptions, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, useAppHeight, useChartChange, useChartData, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useExpandableContainers, useExportPdf, useGetConfigLayer, useGlobalContext, useHeaderRender, useLayerParams, useMapContext, useMapDraw, useProjectDashboardInit, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
10093
+ export { AddFeatureButton, AddFeatureContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardGradientHeader, FeatureCardHeader, FeatureCardIconHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, RoundedBackgroundContainer, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TmsType, TopContainer, TopContainerButtons, TwoColumnContainer, TwoColumnsInnerContainer, WidgetType, addDataSource, addDataSources, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading, convertSpToTurfFeature, createConfigLayer, createConfigPage, createNewPageId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, getActualExtrusionHeight, getAttributeByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDate, getDefaultConfig, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerDefinition, getLayerInfo, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getSvgUrl, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sliceShownOtherItems, timeOptions, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, useAppHeight, useChartChange, useChartData, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useExpandableContainers, useExportPdf, useGetConfigLayer, useGlobalContext, useHeaderRender, useLayerParams, useMapContext, useMapDraw, useProjectDashboardInit, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
10101
10094
  //# sourceMappingURL=react.esm.js.map