@evergis/react 3.1.49 → 3.1.51

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
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
- import { IconButton, Flex, transition, Chip, Icon, Description, FlexSpan, IconToggle, Popup, Menu, DraggableTree, shadows, Divider, LegendToggler, Tooltip as Tooltip$1, DropdownField, MultiSelectContainer, IconButtonButton, FlatButton, DraggableTreeContainer, LinearProgress, H2, ThemeProvider, defaultTheme, Preview, Blank, Popover, Expander, darkTheme, NumberRangeSlider, useAsyncAutocomplete, AutoComplete, Dropdown, Checkbox, CircularProgress, RangeNumberInput, dateFormat } from '@evergis/uilib-gl';
2
+ import { IconButton, Flex, transition, Chip, Icon, Description, FlexSpan, IconToggle, Popup, Menu, DraggableTree, shadows, Divider, LegendToggler, Tooltip as Tooltip$1, DropdownField, MultiSelectContainer, IconButtonButton, FlatButton, DraggableTreeContainer, UploaderItemArea, UploaderTitleWrapper, Uploader, WaitingButton, LinearProgress, H2, ThemeProvider, defaultTheme, Preview, Blank, Popover, Expander, darkTheme, NumberRangeSlider, useAsyncAutocomplete, AutoComplete, Dropdown, Checkbox, CircularProgress, RangeNumberInput, dateFormat } from '@evergis/uilib-gl';
3
3
  import { createContext, memo, useRef, useState, useEffect, useCallback, useContext, useMemo, Fragment } from 'react';
4
4
  import styled, { createGlobalStyle, css, useTheme } from 'styled-components';
5
5
  import { lineChartClassNames, BarChart as BarChart$1, barChartClassNames, LineChart, PieChart } from '@evergis/charts';
6
- import { AttributeType, GeometryType } from '@evergis/api';
6
+ import { AttributeType, GeometryType, RemoteTaskStatus } from '@evergis/api';
7
7
  import Gradient from 'javascript-color-gradient';
8
8
  import { Color as Color$1 } from '@evergis/color';
9
9
  import { isValid, format, parseJSON, parseISO, toDate, sub } from 'date-fns';
@@ -3380,6 +3380,8 @@ var ContainerTemplate;
3380
3380
  ContainerTemplate["AddFeature"] = "AddFeature";
3381
3381
  ContainerTemplate["Slideshow"] = "Slideshow";
3382
3382
  ContainerTemplate["ExportPdf"] = "ExportPdf";
3383
+ ContainerTemplate["Upload"] = "Upload";
3384
+ ContainerTemplate["Task"] = "Task";
3383
3385
  ContainerTemplate["Divider"] = "Divider";
3384
3386
  })(ContainerTemplate || (ContainerTemplate = {}));
3385
3387
  var HeaderTemplate;
@@ -4992,6 +4994,88 @@ const useServerNotificationsContext = () => {
4992
4994
  return useContext(ServerNotificationsContext);
4993
4995
  };
4994
4996
 
4997
+ const SERVER_NOTIFICATION_EVENT = {
4998
+ ReceiveFeaturesUpdate: "ReceiveFeaturesUpdateNotification",
4999
+ PythonProgressNotification: "ReceivePythonProgressNotification",
5000
+ };
5001
+
5002
+ const usePythonTask = () => {
5003
+ const { api, t } = useGlobalContext();
5004
+ const { addSubscription, connection, unsubscribeById } = useServerNotificationsContext();
5005
+ const [result, setResult] = useState(null);
5006
+ const [error, setError] = useState(null);
5007
+ const [loading, setLoading] = useState(false);
5008
+ const [executionTime, setExecutionTime] = useState(null);
5009
+ const [taskId, setTaskId] = useState(null);
5010
+ const [subscriptionId, setSubscriptionId] = useState(null);
5011
+ const reset = useCallback(() => {
5012
+ setResult(null);
5013
+ setError(null);
5014
+ setLoading(true);
5015
+ setExecutionTime(null);
5016
+ setTaskId(null);
5017
+ setSubscriptionId(null);
5018
+ }, []);
5019
+ const runTask = useCallback(async ({ resourceId, parameters, script, }) => {
5020
+ reset();
5021
+ const start = Date.now();
5022
+ let prototypeId = await api.remoteTaskManager.createTaskPrototype({
5023
+ enabled: true,
5024
+ startIfPreviousError: true,
5025
+ startIfPreviousNotFinished: true,
5026
+ subTaskSettings: [
5027
+ {
5028
+ type: "pythonService",
5029
+ startParameters: {
5030
+ resourceId,
5031
+ parameters,
5032
+ script,
5033
+ method: "pythonrunner/run",
5034
+ },
5035
+ },
5036
+ ],
5037
+ });
5038
+ prototypeId = prototypeId.replace(/["']+/g, "");
5039
+ const { id: newTaskId, success } = await api.remoteTaskManager.startTask1(prototypeId);
5040
+ if (!success) {
5041
+ setResult(t("taskRunFail", { ns: "devMode", defaultValue: "Не удалось запустить задачу" }));
5042
+ setExecutionTime(Date.now() - start);
5043
+ setLoading(false);
5044
+ }
5045
+ const newSubscriptionId = await addSubscription({
5046
+ tag: "python_task_progress_event",
5047
+ taskId: newTaskId,
5048
+ });
5049
+ setTaskId(newTaskId);
5050
+ setSubscriptionId(newSubscriptionId);
5051
+ const onNotification = ({ data }) => {
5052
+ if (data?.taskId === newTaskId) {
5053
+ setResult(`${data ? `${data}\n` : ""}${data.log || ""}`);
5054
+ setError(null);
5055
+ setExecutionTime(Date.now() - start);
5056
+ setLoading(false);
5057
+ setTaskId([RemoteTaskStatus.Completed, RemoteTaskStatus.Error].includes(data.status)
5058
+ ? undefined
5059
+ : newTaskId);
5060
+ setSubscriptionId([RemoteTaskStatus.Completed, RemoteTaskStatus.Error].includes(data.status)
5061
+ ? undefined
5062
+ : newSubscriptionId);
5063
+ if ([RemoteTaskStatus.Completed, RemoteTaskStatus.Error].includes(data.status)) {
5064
+ unsubscribeById(newSubscriptionId);
5065
+ connection.off(SERVER_NOTIFICATION_EVENT.PythonProgressNotification, onNotification);
5066
+ }
5067
+ }
5068
+ };
5069
+ connection.on(SERVER_NOTIFICATION_EVENT.PythonProgressNotification, onNotification);
5070
+ }, [api, connection, addSubscription, unsubscribeById, reset]);
5071
+ const stopTask = useCallback(async () => {
5072
+ await api.remoteTaskManager.stop(taskId);
5073
+ reset();
5074
+ unsubscribeById(subscriptionId);
5075
+ }, [api, reset, unsubscribeById, taskId, subscriptionId]);
5076
+ return { runTask, stopTask, result, error, loading, executionTime };
5077
+ };
5078
+
4995
5079
  const useAppHeight = () => {
4996
5080
  useEffect(() => {
4997
5081
  const setAppHeight = () => {
@@ -5421,7 +5505,7 @@ const formatElementValue = ({ t, value, elementConfig, attributes, wrap, }) => {
5421
5505
  : valueOrDefault;
5422
5506
  if (!wrap)
5423
5507
  return resultValue;
5424
- return (jsxs(Fragment, { children: [tagView ? (jsx(DashboardChip$1, { text: resultValue, "$bgColor": bgColor, "$fontColor": fontColor, "$fontSize": fontSize, "$radius": radius, style: style })) : (jsx(ElementValueWrapper, { "data-id": id, "data-templatename": templateName, children: resultValue })), withDivider && jsx(Divider, {})] }, id));
5508
+ return (jsxs(Fragment, { children: [tagView ? (jsx(DashboardChip$1, { text: resultValue, "$bgColor": bgColor, "$fontColor": fontColor, "$fontSize": fontSize, "$radius": radius, style: style })) : (jsx(ElementValueWrapper, { "data-id": id, "data-templatename": templateName, style: style, children: resultValue })), withDivider && jsx(Divider, {})] }, id));
5425
5509
  };
5426
5510
 
5427
5511
  const getAttributeValue = (element, attributes) => {
@@ -5472,7 +5556,7 @@ const ContainersGroupContainer = memo(({ elementConfig, type, renderElement }) =
5472
5556
  const { column, expandable, expanded } = options || {};
5473
5557
  const isColumn = column === undefined || column;
5474
5558
  const isVisible = isVisibleContainer(id, expandable, expanded, expandedContainers);
5475
- return (jsxs(Fragment$1, { children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsx(Container, { id: id, style: style, isColumn: isColumn, children: jsx(ContainerChildren, { items: children, elementConfig: elementConfig, isColumn: isColumn, isMain: id?.startsWith(CONFIG_PAGE_ID), renderElement: renderElement }) }))] }));
5559
+ return (jsxs(Fragment$1, { children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsx(Container, { id: id, isColumn: isColumn, children: jsx(ContainerChildren, { items: children, elementConfig: elementConfig, isColumn: isColumn, isMain: id?.startsWith(CONFIG_PAGE_ID), renderElement: renderElement }) }))] }));
5476
5560
  });
5477
5561
 
5478
5562
  const OneColumnContainer = memo(({ elementConfig, renderElement }) => {
@@ -6003,7 +6087,7 @@ const ChartContainer = memo(({ elementConfig, isVisible, type, renderElement })
6003
6087
  const hasItems = !!data[0]?.items?.length;
6004
6088
  if (!loading && !hasItems && hideEmpty)
6005
6089
  return null;
6006
- return (jsxs(Fragment$1, { children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxs(Container, { id: id, style: style, isColumn: true, children: [aliasElement && jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsx(ContainerValue, { column: !twoColumns, alignItems: "center", children: hasItems ? (jsxs(Fragment$1, { children: [jsx(ContainerChart, { children: renderElement({ id: "chart" }) }), jsx(ContainerLegend, { justifyContent: legendElement?.options?.center ? "center" : "flex-start", children: renderElement({ id: "legend" }) })] })) : (jsx(Fragment$1, { children: "\u2014" })) })] }))] }));
6090
+ return (jsxs(FlexSpan, { flexDirection: "column", children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxs(Container, { id: id, style: style, isColumn: true, children: [aliasElement && jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsx(ContainerValue, { column: !twoColumns, alignItems: "center", children: hasItems ? (jsxs(Fragment$1, { children: [jsx(ContainerChart, { children: renderElement({ id: "chart" }) }), jsx(ContainerLegend, { justifyContent: legendElement?.options?.center ? "center" : "flex-start", children: renderElement({ id: "legend" }) })] })) : (jsx(Fragment$1, { children: "\u2014" })) })] }))] }));
6007
6091
  });
6008
6092
 
6009
6093
  const PagesContainer = memo(({ type = WidgetType.Dashboard, noBorders }) => {
@@ -6635,6 +6719,98 @@ const ExportPdfContainer = memo(({ type, elementConfig }) => {
6635
6719
  return (jsx(Container, { id: id, style: style, children: jsx(IconButton, { kind: icon || "download", primary: true, disabled: loading, onClick: onExport, children: title ?? t("downloadPdf", { ns: "dashboard", defaultValue: "Скачать PDF" }) }) }));
6636
6720
  });
6637
6721
 
6722
+ const UploaderContainer = styled(Container) `
6723
+ ${UploaderItemArea} {
6724
+ overflow: visible;
6725
+ padding-top: 1rem;
6726
+ padding-bottom: 1rem;
6727
+ }
6728
+
6729
+ ${UploaderTitleWrapper} {
6730
+ top: 0;
6731
+ padding-top: 0;
6732
+ border: 0;
6733
+ }
6734
+ `;
6735
+ const UploaderTitle = styled(Flex) `
6736
+ flex-direction: column;
6737
+ align-items: center;
6738
+ width: 11rem;
6739
+ margin: 0 auto;
6740
+ text-align: center;
6741
+ font-size: 0.625rem;
6742
+ color: ${({ theme: { palette } }) => palette.textSecondary};
6743
+
6744
+ span[kind] {
6745
+ width: 1.5rem;
6746
+ height: 1.5rem;
6747
+ margin-bottom: 0.75rem;
6748
+
6749
+ :after {
6750
+ font-size: 1.5rem;
6751
+ color: ${({ theme: { palette } }) => palette.textSecondary};
6752
+ opacity: 0.12;
6753
+ }
6754
+ }
6755
+ `;
6756
+
6757
+ const DEFAULT_FILE_EXTENSIONS = ".txt,.csv,.py";
6758
+ const UploadContainer = memo(({ type, elementConfig, renderElement }) => {
6759
+ const { t, api } = useGlobalContext();
6760
+ const { changeFilters } = useWidgetContext(type);
6761
+ const [files, setFiles] = useState([]);
6762
+ const refInput = useRef();
6763
+ const { id, style, options } = elementConfig || {};
6764
+ const { icon, title, filterName, fileExtensions = DEFAULT_FILE_EXTENSIONS, parentResourceId, multiSelect } = options || {};
6765
+ const onUpload = useCallback(async (input) => {
6766
+ const files = Array.isArray(input) ? input : [input];
6767
+ const response = await Promise.all(files.map(file => {
6768
+ return api.file.upload(file, true, parentResourceId);
6769
+ }));
6770
+ const uploadedFiles = response.map(item => ({
6771
+ name: item.name,
6772
+ id: item.resourceId,
6773
+ done: true,
6774
+ }));
6775
+ setFiles(currentFiles => ([...uploadedFiles, ...currentFiles]));
6776
+ }, [parentResourceId]);
6777
+ const onDelete = useCallback(async (id) => {
6778
+ const index = files.findIndex(file => file.id === id);
6779
+ if (index === -1)
6780
+ return;
6781
+ const resourceId = files[index].id;
6782
+ await api.file.deleteResource(resourceId);
6783
+ setFiles(currentFiles => currentFiles.filter(({ id }) => id !== resourceId));
6784
+ }, [files]);
6785
+ const renderTitle = useMemo(() => {
6786
+ if (files.length)
6787
+ return null;
6788
+ return (jsxs(UploaderTitle, { children: [jsx(Icon, { kind: icon || "upload" }), jsx("div", { children: title ?? t("uploadTitle", {
6789
+ ns: "dashboard",
6790
+ defaultValue: "Перетащите файл сюда или нажмите, чтобы выбрать",
6791
+ }) })] }));
6792
+ }, [icon, t, title, files.length]);
6793
+ useEffect(() => {
6794
+ if (!filterName)
6795
+ return;
6796
+ changeFilters({ [filterName]: { value: files.map(({ id }) => id) } });
6797
+ }, [files]);
6798
+ return (jsxs(Fragment$1, { children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), jsx(UploaderContainer, { id: id, style: style, children: jsx(Uploader, { title: renderTitle, accept: fileExtensions, fileItems: files, currentRef: refInput, isMultiple: multiSelect, onUpload: onUpload, onDelete: onDelete }) })] }));
6799
+ });
6800
+
6801
+ const TaskContainer = memo(({ elementConfig }) => {
6802
+ const { t } = useGlobalContext();
6803
+ const { runTask, error, result, executionTime, loading } = usePythonTask();
6804
+ const { options } = elementConfig || {};
6805
+ const { title, relatedResources } = options || {};
6806
+ const onClick = useCallback(async () => {
6807
+ await Promise.all(relatedResources.map(({ resourceId, parameters, script }) => {
6808
+ return runTask({ resourceId, parameters, script });
6809
+ }));
6810
+ }, [relatedResources, runTask]);
6811
+ return (jsx(WaitingButton, { primary: true, isWaiting: loading, disabled: !relatedResources?.length, onClick: onClick, children: title || t("run", { ns: "dashboard", defaultValue: "Запуск" }) }));
6812
+ });
6813
+
6638
6814
  const containerComponents = {
6639
6815
  [ContainerTemplate.DefaultAttributes]: DefaultAttributesContainer,
6640
6816
  [ContainerTemplate.Pages]: PagesContainer,
@@ -6656,6 +6832,8 @@ const containerComponents = {
6656
6832
  [ContainerTemplate.AddFeature]: AddFeatureContainer,
6657
6833
  [ContainerTemplate.Divider]: DividerContainer,
6658
6834
  [ContainerTemplate.ExportPdf]: ExportPdfContainer,
6835
+ [ContainerTemplate.Upload]: UploadContainer,
6836
+ [ContainerTemplate.Task]: TaskContainer,
6659
6837
  default: ContainersGroupContainer,
6660
6838
  };
6661
6839
 
@@ -10571,5 +10749,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
10571
10749
  }, children: children }), upperSiblings] }));
10572
10750
  };
10573
10751
 
10574
- 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, ElementMarkdown, 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, 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 };
10752
+ 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, ElementMarkdown, 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, SERVER_NOTIFICATION_EVENT, 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, UploadContainer, 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, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
10575
10753
  //# sourceMappingURL=react.esm.js.map