@evergis/react 3.1.124 → 3.1.126-alpha.0

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
@@ -3,7 +3,7 @@ import { IconButton, Flex, transition, Chip, Icon, Description, FlexSpan, IconTo
3
3
  import { createContext, memo, useRef, useState, useCallback, useEffect, 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, generateId, STORAGE_TOKEN_KEY, GeometryType, RemoteTaskStatus } from '@evergis/api';
6
+ import { AttributeType, generateId, STORAGE_TOKEN_KEY, OgcGeometryType, 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 } from 'date-fns';
@@ -15,7 +15,7 @@ import { changeProps, returnFound } from 'find-and';
15
15
  import { jsPDF } from 'jspdf';
16
16
  import html2canvas from 'html2canvas';
17
17
  import MapboxDraw from '@mapbox/mapbox-gl-draw';
18
- import { geometryCollection, multiPolygon, polygon, multiLineString, multiPoint, point as point$1, bbox } from '@turf/turf';
18
+ import { bbox } from '@turf/turf';
19
19
  import MapGL, { Source, Layer as Layer$1 } from 'react-map-gl/maplibre';
20
20
  import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
21
21
  import 'mapbox-gl/dist/mapbox-gl.css';
@@ -4262,11 +4262,11 @@ const getDataSource = (dataSourceName, dataSources) => dataSources?.find(({ name
4262
4262
  const getDataSourceFilterValue = ({ filterName, filterProp, attributeAlias, dataSource, selectedFilters, }) => {
4263
4263
  if (isNil(selectedFilters[filterName]))
4264
4264
  return null;
4265
- const feature = dataSource?.features?.find(({ attributes }) => attributes[attributeAlias] ===
4265
+ const feature = dataSource?.features?.find(({ properties }) => properties[attributeAlias] ===
4266
4266
  (Array.isArray(selectedFilters[filterName].value)
4267
4267
  ? selectedFilters[filterName].value[0]
4268
4268
  : selectedFilters[filterName].value));
4269
- return feature?.attributes?.[filterProp];
4269
+ return feature?.properties?.[filterProp];
4270
4270
  };
4271
4271
 
4272
4272
  const getSelectedFilterValue = (filterName, selectedFilters, defaultValue) => {
@@ -4384,9 +4384,12 @@ const createConfigPage = (props) => {
4384
4384
  };
4385
4385
 
4386
4386
  const getAttributesConfiguration = (layer) => {
4387
- const configuration = layer?.configuration ?? {};
4387
+ const configuration = layer?.configuration ??
4388
+ {};
4388
4389
  const emptyAttributesConfiguration = {
4389
- geometryAttribute: layer?.geometryType === GeometryType.Unknown ? undefined : GEOMETRY_ATTRIBUTE,
4390
+ geometryAttribute: layer?.geometryType === OgcGeometryType.Unknown
4391
+ ? undefined
4392
+ : GEOMETRY_ATTRIBUTE,
4390
4393
  idAttribute: DEFAULT_ID_ATTRIBUTE_NAME,
4391
4394
  tableName: "",
4392
4395
  };
@@ -4395,7 +4398,8 @@ const getAttributesConfiguration = (layer) => {
4395
4398
  }
4396
4399
  return {
4397
4400
  ...emptyAttributesConfiguration,
4398
- ...(configuration.attributesConfiguration || {}),
4401
+ ...(configuration
4402
+ .attributesConfiguration || {}),
4399
4403
  };
4400
4404
  };
4401
4405
 
@@ -4405,7 +4409,7 @@ const getLayerDefinition = (layer) => {
4405
4409
  attributes: {},
4406
4410
  geometryAttribute,
4407
4411
  idAttribute,
4408
- geometryType: GeometryType.Unknown,
4412
+ geometryType: OgcGeometryType.Unknown,
4409
4413
  titleAttribute: "",
4410
4414
  };
4411
4415
  if (!isLayerService(layer) || !("layerDefinition" in layer)) {
@@ -5183,73 +5187,6 @@ const useRedrawLayer = () => {
5183
5187
  }, [map]);
5184
5188
  };
5185
5189
 
5186
- const findAttributeInExpression = (expression) => {
5187
- if (Array.isArray(expression) && expression.length === 2 && expression[0] === "get") {
5188
- return [expression[1]];
5189
- }
5190
- return expression.reduce((acc, curr) => {
5191
- if (!Array.isArray(curr)) {
5192
- return acc;
5193
- }
5194
- if (curr[0] === "get") {
5195
- return [...new Set([...acc, curr[1]])];
5196
- }
5197
- return [...new Set([...acc, ...findAttributeInExpression(curr)])];
5198
- }, []);
5199
- };
5200
-
5201
- const getActualExtrusionHeight = (paint) => {
5202
- return Array.isArray(paint?.["fill-extrusion-height"]) && paint?.["fill-extrusion-height"][0] === "+"
5203
- ? paint?.["fill-extrusion-height"][1]
5204
- : paint?.["fill-extrusion-height"];
5205
- };
5206
-
5207
- const extractAttributesFromObject = (obj) => {
5208
- if (!obj || isEmpty(obj)) {
5209
- return [];
5210
- }
5211
- return Object.entries(obj).reduce((acc, [, value]) => {
5212
- if (!Array.isArray(value)) {
5213
- return acc;
5214
- }
5215
- return [...new Set([...acc, ...findAttributeInExpression(value)])];
5216
- }, []);
5217
- };
5218
- const parseClientStyle = (style) => {
5219
- if (!style) {
5220
- return [];
5221
- }
5222
- return style?.items?.reduce((acc, curr) => {
5223
- const paintAttributes = extractAttributesFromObject(curr.paint);
5224
- const layoutAttributes = extractAttributesFromObject(curr.layout);
5225
- const filterAttributes = curr.filter
5226
- ? findAttributeInExpression(curr.filter)
5227
- : [];
5228
- return [...new Set([...acc, ...paintAttributes, ...layoutAttributes, ...filterAttributes])];
5229
- }, []);
5230
- };
5231
-
5232
- const convertSpToTurfFeature = (geometry) => {
5233
- if (!geometry) {
5234
- return;
5235
- }
5236
- switch (geometry.type) {
5237
- case GeometryType.Point:
5238
- return point$1(geometry.coordinates);
5239
- case GeometryType.Multipoint:
5240
- return multiPoint(geometry.coordinates);
5241
- case GeometryType.Polyline:
5242
- return multiLineString(geometry.coordinates);
5243
- case GeometryType.Polygon:
5244
- case GeometryType.Envelope:
5245
- return polygon(geometry.coordinates);
5246
- case GeometryType.MultiPolygon:
5247
- return multiPolygon(geometry.coordinates);
5248
- case GeometryType.GeometryCollection:
5249
- return geometryCollection(geometry.geometries);
5250
- }
5251
- };
5252
-
5253
5190
  const useZoomToFeatures = () => {
5254
5191
  const { map } = useMapContext();
5255
5192
  return useCallback((features, padding) => {
@@ -5258,7 +5195,7 @@ const useZoomToFeatures = () => {
5258
5195
  }
5259
5196
  const currentFeatureCenter = bbox({
5260
5197
  type: "FeatureCollection",
5261
- features: features.map(feature => convertSpToTurfFeature(feature.geometry)),
5198
+ features: features,
5262
5199
  });
5263
5200
  map.current.fitBounds(currentFeatureCenter, { padding: padding ?? 150 });
5264
5201
  }, [map]);
@@ -5916,9 +5853,9 @@ function getValueIndex(items, attributes) {
5916
5853
  const getChartMarkers = (items, markers, dataSources) => {
5917
5854
  if (typeof markers === "string") {
5918
5855
  const dataSource = getDataSource(markers, dataSources);
5919
- return dataSource?.features?.map(({ attributes }) => ({
5920
- ...attributes,
5921
- value: getValueIndex(items, attributes),
5856
+ return dataSource?.features?.map(({ properties }) => ({
5857
+ ...properties,
5858
+ value: getValueIndex(items, properties),
5922
5859
  })) || [];
5923
5860
  }
5924
5861
  return (markers?.map(marker => ({
@@ -6085,8 +6022,8 @@ const useRenderContainerItem = (type, renderElement) => {
6085
6022
  return useCallback((elementConfig, attribute) => {
6086
6023
  const { id, options, style, children } = elementConfig || {};
6087
6024
  const { hideEmpty, innerTemplateStyle } = options || {};
6088
- const hasUnits = children?.some(({ id }) => id === "units");
6089
- const iconIndex = children?.findIndex(({ id }) => id === "icon");
6025
+ const hasUnits = children?.some(item => item.id === "units");
6026
+ const iconIndex = children?.findIndex(item => item.id === "icon");
6090
6027
  const icon = children?.[iconIndex];
6091
6028
  const hasIcon = !!icon;
6092
6029
  const elementChildren = elementConfig?.children?.map(child => ({
@@ -6355,19 +6292,19 @@ const DataSourceProgressContainer = memo(({ config, elementConfig, type, innerCo
6355
6292
  const totalUnits = useMemo(() => unitsElement?.type === "attributeUnits"
6356
6293
  ? attributes?.find(({ attributeName }) => attributeName === unitsElement.attributeName)?.stringFormat
6357
6294
  ?.unitsLabel
6358
- : dataSource?.features?.[0]?.attributes[unitsElement?.attributeName], [attributes, dataSource?.features, unitsElement?.attributeName, unitsElement?.type]);
6295
+ : dataSource?.features?.[0]?.properties[unitsElement?.attributeName], [attributes, dataSource?.features, unitsElement?.attributeName, unitsElement?.type]);
6359
6296
  const totalValue = useMemo(() => {
6360
6297
  const attribute = attributes?.find(({ attributeName }) => attributeName === valueElement?.attributeName);
6361
6298
  const { type: attributeType, stringFormat } = attribute || {};
6362
- const result = dataSource?.features?.reduce((total, feature) => total + feature.attributes[valueElement?.attributeName], 0);
6299
+ const result = dataSource?.features?.reduce((total, feature) => total + feature.properties[valueElement?.attributeName], 0);
6363
6300
  return formatAttributeValue({ t, type: attributeType, value: result, stringFormat, noUnits: !!unitsElement?.type });
6364
6301
  }, [attributes, dataSource?.features, unitsElement?.type, valueElement?.attributeName]);
6365
6302
  const currentMaxValue = useMemo(() => {
6366
6303
  if (typeof maxValue === "string") {
6367
- return dataSource?.features?.[0]?.attributes[maxValue];
6304
+ return dataSource?.features?.[0]?.properties[maxValue];
6368
6305
  }
6369
6306
  return (maxValue ||
6370
- dataSource?.features?.reduce((result, item) => Math.max(result, item.attributes[valueElement?.attributeName]), 0));
6307
+ dataSource?.features?.reduce((result, item) => Math.max(result, item.properties[valueElement?.attributeName]), 0));
6371
6308
  }, [dataSource?.features, maxValue, valueElement?.attributeName]);
6372
6309
  if (!relatedDataSource)
6373
6310
  return null;
@@ -7389,24 +7326,28 @@ const EditContainer = ({ type, elementConfig, renderElement }) => {
7389
7326
  const getControlTemplateName = (type) => {
7390
7327
  switch (type) {
7391
7328
  case "dropdown":
7392
- default: return ContainerTemplate.EditDropdown;
7329
+ default:
7330
+ return ContainerTemplate.EditDropdown;
7393
7331
  }
7394
7332
  };
7395
7333
 
7396
7334
  const EditGroupContainer = memo(({ type, elementConfig, renderElement }) => {
7397
7335
  const { config, attributes, layerInfo, expandedContainers } = useWidgetContext(type);
7398
7336
  const getRenderContainerItem = useRenderContainerItem(type, renderElement);
7399
- const { id, options } = elementConfig || {};
7400
- const { editAttributes } = options || {};
7337
+ const { options } = elementConfig || {};
7338
+ const { controls } = options || {};
7401
7339
  const renderContainer = useCallback((attribute) => {
7402
- const editAttribute = editAttributes?.find(({ name }) => name === attribute);
7340
+ const control = controls?.find(({ targetAttributeName }) => targetAttributeName === attribute);
7403
7341
  const itemAttribute = attributes.find(({ name }) => name === attribute);
7404
- const templateName = editAttribute?.type
7405
- ? getControlTemplateName(editAttribute.type)
7342
+ const templateName = control?.type
7343
+ ? getControlTemplateName(control.type)
7406
7344
  : getTemplateNameFromAttribute(itemAttribute);
7407
7345
  const itemConfig = {
7408
7346
  ...elementConfig,
7409
- children: elementConfig.children.map(child => ({ ...child, attributeName: attribute })),
7347
+ children: elementConfig.children.map(child => ({
7348
+ ...child,
7349
+ attributeName: attribute,
7350
+ })),
7410
7351
  templateName,
7411
7352
  };
7412
7353
  const { expandable, expanded } = elementConfig.options;
@@ -7416,72 +7357,84 @@ const EditGroupContainer = memo(({ type, elementConfig, renderElement }) => {
7416
7357
  return null;
7417
7358
  }
7418
7359
  return (jsx(ContainerTemplateValue, { id: attribute, type: type, config: config, elementConfig: itemConfig, layerInfo: layerInfo, attributes: attributes, innerComponent: getContainerComponent(templateName), isVisible: isVisibleContainer(id, expandable, expanded, expandedContainers), renderElement: render }, attribute));
7419
- }, [id, attributes, elementConfig, expandedContainers, editAttributes]);
7420
- return editAttributes?.length ? (jsx(Fragment$1, { children: editAttributes.map(attribute => renderContainer(attribute.name)) })) : (renderContainer());
7360
+ }, [
7361
+ controls,
7362
+ attributes,
7363
+ elementConfig,
7364
+ getRenderContainerItem,
7365
+ type,
7366
+ config,
7367
+ layerInfo,
7368
+ expandedContainers,
7369
+ ]);
7370
+ return controls?.length ? (jsx(Fragment$1, { children: controls.map(({ targetAttributeName }) => renderContainer(targetAttributeName)) })) : (renderContainer());
7421
7371
  });
7422
7372
 
7423
- const useEditAttribute = (type, elementConfig) => {
7373
+ const useEditControl = (type, elementConfig) => {
7424
7374
  const { attributes, controls, dataSources } = useWidgetContext(type);
7425
7375
  const { children, options } = elementConfig || {};
7426
- const { editAttributes } = options || {};
7427
- const attributeName = useMemo(() => {
7428
- const valueElement = children.find(({ id }) => id === "value");
7429
- return valueElement?.attributeName;
7430
- }, [children]);
7431
- const editAttribute = useMemo(() => editAttributes?.find(({ name }) => name === attributeName), [editAttributes, attributeName]);
7432
- const attributeValue = useMemo(() => {
7433
- const value = controls[attributeName] === undefined
7434
- ? attributes.find(({ name }) => name === attributeName)?.value
7435
- : controls[attributeName];
7436
- return value ?? editAttribute.defaultValue;
7437
- }, [controls, attributeName, attributes, editAttribute.defaultValue]);
7438
- const dataSource = useMemo(() => dataSources?.find(({ name }) => name === editAttribute.relatedDataSource), [editAttributes, attributeName, dataSources]);
7439
- return useMemo(() => ({ editAttribute, attributeValue, dataSource }), [editAttribute, attributeValue, dataSource]);
7376
+ const { controls: controlsOption } = options || {};
7377
+ const valueElement = useMemo(() => children.find(({ id }) => id === "value"), [children]);
7378
+ const control = useMemo(() => controlsOption?.find(item => item.targetAttributeName === valueElement.attributeName), [controlsOption, valueElement.attributeName]);
7379
+ const value = useMemo(() => {
7380
+ const currentValue = controls[control?.targetAttributeName] === undefined
7381
+ ? attributes.find(({ name }) => name === control.targetAttributeName)
7382
+ ?.value
7383
+ : controls[control?.targetAttributeName];
7384
+ return currentValue ?? control?.defaultValue;
7385
+ }, [
7386
+ controls,
7387
+ control.targetAttributeName,
7388
+ control?.defaultValue,
7389
+ attributes,
7390
+ ]);
7391
+ const dataSource = useMemo(() => dataSources?.find(({ name }) => name === control.relatedDataSource), [control.relatedDataSource, dataSources]);
7392
+ return useMemo(() => ({ control, value, dataSource }), [control, value, dataSource]);
7440
7393
  };
7441
7394
 
7442
7395
  const BASE_STYLE$2 = {
7443
7396
  marginBottom: "1rem",
7444
7397
  };
7445
- const EditBooleanContainer = ({ type, elementConfig, renderElement }) => {
7398
+ const EditBooleanContainer = ({ type, elementConfig, renderElement, }) => {
7446
7399
  const { changeControls } = useWidgetContext(type);
7447
- const { editAttribute, attributeValue } = useEditAttribute(type, elementConfig);
7400
+ const { control, value } = useEditControl(type, elementConfig);
7448
7401
  const { id, style } = elementConfig || {};
7449
- return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$2, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsxs(ContainerValue, { children: [jsx(Checkbox, { label: "\u0414\u0430", checked: !!attributeValue, onChange: () => {
7450
- changeControls({ [editAttribute.name]: true });
7451
- } }), jsx(Checkbox, { label: "\u041D\u0435\u0442", checked: !attributeValue, onChange: () => {
7452
- changeControls({ [editAttribute.name]: false });
7402
+ return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$2, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsxs(ContainerValue, { children: [jsx(Checkbox, { label: "\u0414\u0430", checked: !!value, onChange: () => {
7403
+ changeControls({ [control.targetAttributeName]: true });
7404
+ } }), jsx(Checkbox, { label: "\u041D\u0435\u0442", checked: !value, onChange: () => {
7405
+ changeControls({ [control.targetAttributeName]: false });
7453
7406
  } })] })] }));
7454
7407
  };
7455
7408
 
7456
7409
  const BASE_STYLE$1 = {
7457
7410
  marginBottom: "1rem",
7458
7411
  };
7459
- const EditStringContainer = ({ type, elementConfig, renderElement }) => {
7412
+ const EditStringContainer = ({ type, elementConfig, renderElement, }) => {
7460
7413
  const { changeControls } = useWidgetContext(type);
7461
- const { editAttribute, attributeValue } = useEditAttribute(type, elementConfig);
7414
+ const { control, value } = useEditControl(type, elementConfig);
7462
7415
  const { id, style } = elementConfig || {};
7463
7416
  const onChange = useCallback((e) => {
7464
- changeControls({ [editAttribute.name]: e.target.value });
7465
- }, [changeControls, editAttribute.name]);
7466
- return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$1, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Input, { value: attributeValue, width: "100%", onChange: onChange }) })] }));
7417
+ changeControls({ [control?.targetAttributeName]: e.target.value });
7418
+ }, [changeControls, control?.targetAttributeName]);
7419
+ return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE$1, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Input, { value: value, width: "100%", onChange: onChange }) })] }));
7467
7420
  };
7468
7421
 
7469
7422
  const BASE_STYLE = {
7470
7423
  marginBottom: "1rem",
7471
7424
  };
7472
- const EditDropdownContainer = ({ type, elementConfig, renderElement }) => {
7425
+ const EditDropdownContainer = ({ type, elementConfig, renderElement, }) => {
7473
7426
  const { changeControls } = useWidgetContext(type);
7474
- const { attributeValue, editAttribute, dataSource } = useEditAttribute(type, elementConfig);
7427
+ const { value, control, dataSource } = useEditControl(type, elementConfig);
7475
7428
  const { id, style, options } = elementConfig || {};
7476
7429
  const { placeholder, label, width } = options || {};
7477
7430
  const optionsList = useMemo(() => dataSource?.features.map(item => {
7478
- const value = item.attributes[editAttribute?.name] || null;
7479
- return { text: value, value };
7480
- }), [dataSource?.features, editAttribute.name]);
7431
+ const currentValue = item.properties[control?.attributeName] || null;
7432
+ return { text: currentValue, value: currentValue };
7433
+ }), [dataSource?.features, control?.attributeName]);
7481
7434
  const onChange = useCallback(([option]) => {
7482
- changeControls({ [editAttribute?.name]: option.value });
7483
- }, [editAttribute?.name, changeControls]);
7484
- return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Dropdown, { zIndex: 1000, label: label, placeholder: placeholder, options: optionsList, value: attributeValue ?? editAttribute.defaultValue, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, onChange: onChange }) })] }));
7435
+ changeControls({ [control?.targetAttributeName]: option.value });
7436
+ }, [control?.targetAttributeName, changeControls]);
7437
+ return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { children: jsx(Dropdown, { zIndex: 1000, label: label, placeholder: placeholder, options: optionsList, value: value, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, onChange: onChange }) })] }));
7485
7438
  };
7486
7439
 
7487
7440
  const ContainerDivider = styled(Divider) `
@@ -7818,12 +7771,12 @@ const LayerIcon = ({ layerInfo, error }) => {
7818
7771
  return (jsx(AlertIconContainer, { children: jsx(Icon, { kind: "warning" }) }));
7819
7772
  }
7820
7773
  switch (layerInfo.geometryType) {
7821
- case GeometryType.Polyline:
7774
+ case OgcGeometryType.MultiLineString:
7822
7775
  return jsx("img", { src: img$1, alt: "" });
7823
- case GeometryType.Polygon:
7824
- case GeometryType.MultiPolygon:
7776
+ case OgcGeometryType.Polygon:
7777
+ case OgcGeometryType.MultiPolygon:
7825
7778
  return jsx("img", { src: img, alt: "" });
7826
- case GeometryType.Point:
7779
+ case OgcGeometryType.Point:
7827
7780
  default:
7828
7781
  return jsx("img", { src: img$2, alt: "" });
7829
7782
  }
@@ -8360,7 +8313,10 @@ const ElementControl = ({ elementConfig }) => {
8360
8313
  const { t } = useGlobalContext();
8361
8314
  const { attributes, layerInfo, dataSources, controls, changeControls } = useWidgetContext(WidgetType.FeatureCard);
8362
8315
  const { options, attributeName, defaultValue } = elementConfig || {};
8363
- const { relatedDataSource, label, width, control, placeholder = t("selectValue", { ns: "dashboard", defaultValue: "Выберите значение" }) } = options || {};
8316
+ const { relatedDataSource, label, width, control, placeholder = t("selectValue", {
8317
+ ns: "dashboard",
8318
+ defaultValue: "Выберите значение",
8319
+ }), } = options || {};
8364
8320
  const attribute = useMemo(() => attributes?.find(({ name }) => name === control?.targetAttributeName), [attributes, control?.targetAttributeName]);
8365
8321
  const dataSource = useMemo(() => getDataSource(relatedDataSource, dataSources), [relatedDataSource, dataSources]);
8366
8322
  const items = useMemo(() => {
@@ -8368,14 +8324,17 @@ const ElementControl = ({ elementConfig }) => {
8368
8324
  return [];
8369
8325
  }
8370
8326
  return dataSource.features.map(item => ({
8371
- value: item.attributes?.[attributeName] || "",
8372
- text: item.attributes?.[control?.attributeAlias || attributeName] || "",
8327
+ value: item.properties?.[attributeName] || "",
8328
+ text: item.properties?.[control?.attributeName || attributeName] || "",
8373
8329
  }));
8374
- }, [control?.attributeAlias, dataSource?.features, attributeName]);
8330
+ }, [control?.attributeName, dataSource?.features, attributeName]);
8375
8331
  const isDisabled = useMemo(() => {
8376
8332
  const attr = layerInfo?.configuration?.attributesConfiguration?.attributes?.find(item => item.attributeName === control?.targetAttributeName);
8377
8333
  return !attr?.isEditable;
8378
- }, [control?.targetAttributeName, layerInfo?.configuration?.attributesConfiguration?.attributes]);
8334
+ }, [
8335
+ control?.targetAttributeName,
8336
+ layerInfo?.configuration?.attributesConfiguration?.attributes,
8337
+ ]);
8379
8338
  const handleChange = useCallback(([option]) => {
8380
8339
  if (control?.targetAttributeName && changeControls) {
8381
8340
  changeControls({
@@ -8383,7 +8342,9 @@ const ElementControl = ({ elementConfig }) => {
8383
8342
  });
8384
8343
  }
8385
8344
  }, [changeControls, control?.targetAttributeName]);
8386
- return (jsx(Dropdown, { zIndex: 1000, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, label: label, options: items, value: controls?.[control?.targetAttributeName] ?? attribute?.value ?? defaultValue, placeholder: placeholder, disabled: isDisabled, onChange: handleChange }));
8345
+ return (jsx(Dropdown, { zIndex: 1000, width: `${width ?? DEFAULT_DROPDOWN_WIDTH}px`, label: label, options: items, value: controls?.[control?.targetAttributeName] ??
8346
+ attribute?.value ??
8347
+ defaultValue, placeholder: placeholder, disabled: isDisabled, onChange: handleChange }));
8387
8348
  };
8388
8349
 
8389
8350
  const StyledIconFontSizeMixin = css `
@@ -8697,7 +8658,7 @@ const ElementSlideshow = ({ elementConfig, type, renderElement }) => {
8697
8658
  const images = useMemo(() => {
8698
8659
  const dataSource = relatedDataSource ? dataSources?.find(({ name }) => name === relatedDataSource) : null;
8699
8660
  const array = dataSource
8700
- ? dataSource.features.map(feature => feature.attributes[attributeName])
8661
+ ? dataSource.features.map(feature => feature.properties[attributeName])
8701
8662
  : getSlideshowImages({
8702
8663
  element: elementConfig,
8703
8664
  attribute: attributes?.find(({ name }) => name === attributeName),
@@ -8880,20 +8841,20 @@ const getDataFromRelatedFeatures = ({ t, config, filters, relatedConfig, dataSou
8880
8841
  }
8881
8842
  const { colors } = config.options;
8882
8843
  const layerDefinition = getLayerDefinition(layerInfo);
8883
- let data = JSON.parse(JSON.stringify(dataSource?.features));
8844
+ let data = [...dataSource?.features];
8884
8845
  const sortAttribute = config?.options?.orderByValue
8885
8846
  ? relatedConfig.attributeName
8886
8847
  : config?.options?.orderByTitle
8887
8848
  ? relatedConfig.attributeTitle
8888
8849
  : null;
8889
8850
  if (sortAttribute) {
8890
- data.sort((a, b) => b.attributes[sortAttribute] - a.attributes[sortAttribute]);
8851
+ data.sort((a, b) => b.properties[sortAttribute] - a.properties[sortAttribute]);
8891
8852
  }
8892
8853
  const isOtherSliced = config?.options?.otherItems && config.options.otherItems < data.length;
8893
8854
  const otherValue = isOtherSliced
8894
8855
  ? data
8895
8856
  .slice(config.options.otherItems)
8896
- .reduce((prev, { attributes }) => prev + attributes[relatedConfig.attributeName], 0)
8857
+ .reduce((prev, { properties }) => prev + properties[relatedConfig.attributeName], 0)
8897
8858
  : null;
8898
8859
  if (isOtherSliced) {
8899
8860
  data = data.slice(0, config?.options?.otherItems);
@@ -8909,9 +8870,9 @@ const getDataFromRelatedFeatures = ({ t, config, filters, relatedConfig, dataSou
8909
8870
  if (relatedConfig?.filterName && !filter) {
8910
8871
  return acc;
8911
8872
  }
8912
- const attributeName = feature.attributes[relatedConfig.attributeName];
8913
- const attributeTitle = feature.attributes[relatedConfig.attributeTitle];
8914
- const attributeColor = feature.attributes[relatedConfig.attributeColor];
8873
+ const attributeName = feature.properties[relatedConfig.attributeName];
8874
+ const attributeTitle = feature.properties[relatedConfig.attributeTitle];
8875
+ const attributeColor = feature.properties[relatedConfig.attributeColor];
8915
8876
  return [
8916
8877
  ...acc,
8917
8878
  {
@@ -8923,8 +8884,8 @@ const getDataFromRelatedFeatures = ({ t, config, filters, relatedConfig, dataSou
8923
8884
  }),
8924
8885
  value: attributeName === null ? null : Number(attributeName),
8925
8886
  color: attributeColor || gradientArray?.[index] || FEATURE_CARD_OTHER_COLOR,
8926
- min: filter?.attributeMin ? feature.attributes[filter.attributeMin] : null,
8927
- max: filter?.attributeMin ? feature.attributes[filter.attributeMax] : null
8887
+ min: filter?.attributeMin ? feature.properties[filter.attributeMin] : null,
8888
+ max: filter?.attributeMin ? feature.properties[filter.attributeMax] : null
8928
8889
  }
8929
8890
  ];
8930
8891
  }, []);
@@ -9090,7 +9051,7 @@ function getFeatureAttributes(feature = {}, layer, dataSource) {
9090
9051
  if (!layerDefinition) {
9091
9052
  return [];
9092
9053
  }
9093
- const currentAttributes = !feature && dataSource ? dataSource.features[0].attributes : feature?.attributes;
9054
+ const currentAttributes = !feature && dataSource ? dataSource.features[0].properties : feature?.properties;
9094
9055
  const { id: idValue } = feature || {};
9095
9056
  const { idAttribute, attributes } = layerDefinition || {};
9096
9057
  const layerAttributes = idAttribute
@@ -9107,7 +9068,7 @@ function getFeatureAttributes(feature = {}, layer, dataSource) {
9107
9068
  readOnly: true,
9108
9069
  }
9109
9070
  : {
9110
- value: currentAttributes?.[attributeName] || dataSource?.features?.[0]?.attributes?.[attributeName],
9071
+ value: currentAttributes?.[attributeName] || dataSource?.features?.[0]?.properties?.[attributeName],
9111
9072
  readOnly: isCalculated || !isEditable,
9112
9073
  };
9113
9074
  const clientData = layer.layerAttributes?.find(layerAttribute => layerAttribute.attributeName === attributeName)?.clientData;
@@ -9279,10 +9240,10 @@ const getListOptions = (items, filterName, configFilters) => {
9279
9240
  if (!filter)
9280
9241
  return [];
9281
9242
  return (items?.map(item => ({
9282
- text: item.attributes[filter.attributeAlias || DEFAULT_ATTRIBUTE_NAME],
9283
- value: item.attributes[filter.attributeValue || DEFAULT_ATTRIBUTE_NAME],
9284
- min: filter.attributeMin ? item.attributes[filter.attributeMin] : null,
9285
- max: filter.attributeMax ? item.attributes[filter.attributeMax] : null,
9243
+ text: item.properties[filter.attributeAlias || DEFAULT_ATTRIBUTE_NAME],
9244
+ value: item.properties[filter.attributeValue || DEFAULT_ATTRIBUTE_NAME],
9245
+ min: filter.attributeMin ? item.properties[filter.attributeMin] : null,
9246
+ max: filter.attributeMax ? item.properties[filter.attributeMax] : null,
9286
9247
  })) || []);
9287
9248
  };
9288
9249
 
@@ -9594,8 +9555,8 @@ const RangeDateFilter = ({ type, filter }) => {
9594
9555
  const { filterName, label, minValue, maxValue, withTime } = filter.options;
9595
9556
  const configFilter = useMemo(() => getConfigFilter(filterName, configFilters), [configFilters, filterName]);
9596
9557
  const dataSource = useMemo(() => getDataSource(configFilter?.relatedDataSource, dataSources), [configFilter?.relatedDataSource, dataSources]);
9597
- const { minFromData, maxFromData } = useMemo(() => dataSource?.features?.reduce((prev, { attributes }) => {
9598
- const date = getDate(attributes[configFilter?.attributeValue]);
9558
+ const { minFromData, maxFromData } = useMemo(() => dataSource?.features?.reduce((prev, { properties }) => {
9559
+ const date = getDate(properties[configFilter?.attributeValue]);
9599
9560
  return {
9600
9561
  minFromData: !prev.minFromData ? date : date < prev.minFromData ? date : prev.minFromData,
9601
9562
  maxFromData: !prev.maxFromData ? date : date > prev.maxFromData ? date : prev.maxFromData
@@ -9816,7 +9777,7 @@ const ChipsFilter = ({ type, filter, elementConfig, }) => {
9816
9777
  return [];
9817
9778
  const features = dataSource.features;
9818
9779
  return features.map(feature => {
9819
- const attrs = feature.attributes;
9780
+ const attrs = feature.properties;
9820
9781
  const text = attrs[configFilter.attributeAlias || DEFAULT_ATTRIBUTE_NAME];
9821
9782
  const value = attrs[configFilter.attributeValue || DEFAULT_ATTRIBUTE_NAME];
9822
9783
  const chipIcon = iconAttribute
@@ -10521,7 +10482,7 @@ const useDataSources = ({ type: widgetType, config, attributes, filters, layerPa
10521
10482
  const queryResponse = await api.eql.getPagedQueryResult({ saveInHistory: false }, getProps);
10522
10483
  const descriptionResponse = await api.eql.getQueryDescription(getProps);
10523
10484
  return {
10524
- items: queryResponse.items,
10485
+ items: queryResponse.features,
10525
10486
  attributeDefinition: descriptionResponse,
10526
10487
  };
10527
10488
  }
@@ -10569,7 +10530,7 @@ const useDataSources = ({ type: widgetType, config, attributes, filters, layerPa
10569
10530
  !!currentDataSources[index].url ||
10570
10531
  !!currentDataSources[index].resourceId;
10571
10532
  newDataSources[index].layerName = currentDataSources[index].layerName;
10572
- const items = response.status === "rejected" ? null : response.value?.items || response.items;
10533
+ const items = response.status === "rejected" ? null : response.value?.features || response.items;
10573
10534
  newDataSources[index].features =
10574
10535
  response.status === "rejected"
10575
10536
  ? null
@@ -11000,7 +10961,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
11000
10961
  const attribute = layerInfo?.layerDefinition.attributes[attributeName];
11001
10962
  const dataSource = getDataSource(dataSourceName, dataSources);
11002
10963
  const units = attributeUnits
11003
- ? dataSource?.features?.[0]?.attributes?.[attributeUnits]
10964
+ ? dataSource?.features?.[0]?.properties?.[attributeUnits]
11004
10965
  : attribute?.stringFormat?.unitsLabel;
11005
10966
  const formatValue = attribute
11006
10967
  ? formatAttributeValue({ t, type: attribute.type, value, stringFormat: attribute.stringFormat, noUnits: true })
@@ -11568,22 +11529,22 @@ const RasterLayer = ({ layer, tileUrl, visible, beforeId, filterVersion, }) => {
11568
11529
 
11569
11530
  const getClientStyleItemPrefixSuffix = (geometryType, itemType) => {
11570
11531
  switch (geometryType) {
11571
- case GeometryType.Point:
11532
+ case OgcGeometryType.Point:
11572
11533
  switch (itemType) {
11573
11534
  case "symbol":
11574
11535
  return ["point-label-layer-", "-label"];
11575
11536
  default:
11576
11537
  return ["point-layer-", ""];
11577
11538
  }
11578
- case GeometryType.Polyline:
11539
+ case OgcGeometryType.MultiLineString:
11579
11540
  switch (itemType) {
11580
11541
  case "symbol":
11581
11542
  return ["polyline-label-layer-", "-label"];
11582
11543
  default:
11583
11544
  return ["polyline-layer-", ""];
11584
11545
  }
11585
- case GeometryType.Polygon:
11586
- case GeometryType.MultiPolygon:
11546
+ case OgcGeometryType.Polygon:
11547
+ case OgcGeometryType.MultiPolygon:
11587
11548
  switch (itemType) {
11588
11549
  case "line":
11589
11550
  return ["polygon-stroke-layer-", "-stroke"];
@@ -11599,6 +11560,52 @@ const getClientStyleItemPrefixSuffix = (geometryType, itemType) => {
11599
11560
  }
11600
11561
  };
11601
11562
 
11563
+ const findAttributeInExpression = (expression) => {
11564
+ if (Array.isArray(expression) && expression.length === 2 && expression[0] === "get") {
11565
+ return [expression[1]];
11566
+ }
11567
+ return expression.reduce((acc, curr) => {
11568
+ if (!Array.isArray(curr)) {
11569
+ return acc;
11570
+ }
11571
+ if (curr[0] === "get") {
11572
+ return [...new Set([...acc, curr[1]])];
11573
+ }
11574
+ return [...new Set([...acc, ...findAttributeInExpression(curr)])];
11575
+ }, []);
11576
+ };
11577
+
11578
+ const getActualExtrusionHeight = (paint) => {
11579
+ return Array.isArray(paint?.["fill-extrusion-height"]) && paint?.["fill-extrusion-height"][0] === "+"
11580
+ ? paint?.["fill-extrusion-height"][1]
11581
+ : paint?.["fill-extrusion-height"];
11582
+ };
11583
+
11584
+ const extractAttributesFromObject = (obj) => {
11585
+ if (!obj || isEmpty(obj)) {
11586
+ return [];
11587
+ }
11588
+ return Object.entries(obj).reduce((acc, [, value]) => {
11589
+ if (!Array.isArray(value)) {
11590
+ return acc;
11591
+ }
11592
+ return [...new Set([...acc, ...findAttributeInExpression(value)])];
11593
+ }, []);
11594
+ };
11595
+ const parseClientStyle = (style) => {
11596
+ if (!style) {
11597
+ return [];
11598
+ }
11599
+ return style?.items?.reduce((acc, curr) => {
11600
+ const paintAttributes = extractAttributesFromObject(curr.paint);
11601
+ const layoutAttributes = extractAttributesFromObject(curr.layout);
11602
+ const filterAttributes = curr.filter
11603
+ ? findAttributeInExpression(curr.filter)
11604
+ : [];
11605
+ return [...new Set([...acc, ...paintAttributes, ...layoutAttributes, ...filterAttributes])];
11606
+ }, []);
11607
+ };
11608
+
11602
11609
  const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, filterVersion, }) => {
11603
11610
  const clientStyle = layer?.configuration?.clientStyle;
11604
11611
  const { idAttribute, geometryType } = layer.layerDefinition || {};
@@ -11630,7 +11637,7 @@ const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, fil
11630
11637
  const renderLayerByGeometryType = useCallback(() => {
11631
11638
  const visibility = visible ? "visible" : "none";
11632
11639
  switch (geometryType) {
11633
- case GeometryType.Point:
11640
+ case OgcGeometryType.Point:
11634
11641
  return (jsx(Layer$1, { id: layer.name, type: "circle", "source-layer": "default", beforeId: beforeId, layout: {
11635
11642
  ...getLayerTempStyle?.(layer.name, "circle")?.layout,
11636
11643
  visibility,
@@ -11638,8 +11645,8 @@ const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, fil
11638
11645
  ...DEFAULT_CIRCLE_PAINT,
11639
11646
  ...getLayerTempStyle?.(layer.name, "circle")?.paint,
11640
11647
  } }));
11641
- case GeometryType.Polygon:
11642
- case GeometryType.MultiPolygon:
11648
+ case OgcGeometryType.Polygon:
11649
+ case OgcGeometryType.MultiPolygon:
11643
11650
  return [
11644
11651
  jsx(Layer$1, { id: layer.name, type: "fill", "source-layer": "default", beforeId: beforeId, layout: {
11645
11652
  ...getLayerTempStyle?.(layer.name, "fill")?.layout,
@@ -11677,7 +11684,7 @@ const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, fil
11677
11684
  ...getLayerTempStyle?.(layer.name, "fill-extrusion")?.paint,
11678
11685
  } }, `polygon-extrusion-layer-${layer.name}`),
11679
11686
  ];
11680
- case GeometryType.Polyline:
11687
+ case OgcGeometryType.MultiLineString:
11681
11688
  return (jsx(Layer$1, { id: layer.name, type: "line", "source-layer": "default", beforeId: beforeId, layout: {
11682
11689
  ...getLayerTempStyle?.(layer.name, "line")?.layout,
11683
11690
  visibility,
@@ -11786,5 +11793,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
11786
11793
  }, children: children }), upperSiblings] }));
11787
11794
  };
11788
11795
 
11789
- export { AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, 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_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, 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, ElementControl, 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, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PageTitleContainer, 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, adjustColor, 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, getTemplateNameFromAttribute, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, parseIconNames, parseIconNamesFromClientStyle, 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, useHideIfEmptyDataSource, useIconsFromLayers, useLayerParams, useMapContext, useMapDraw, useMapImages, useProjectDashboardInit, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
11796
+ export { AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, 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_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, 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, ElementControl, 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, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PageTitleContainer, 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, adjustColor, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading, 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, getTemplateNameFromAttribute, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, parseIconNames, parseIconNamesFromClientStyle, 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, useHideIfEmptyDataSource, useIconsFromLayers, useLayerParams, useMapContext, useMapDraw, useMapImages, useProjectDashboardInit, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
11790
11797
  //# sourceMappingURL=react.esm.js.map