@evergis/react 4.0.55 → 4.0.57

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.
Files changed (30) hide show
  1. package/dist/components/Dashboard/containers/styled.d.ts +6 -1
  2. package/dist/components/Dashboard/elements/ElementSlideshow/useElementSlideshow.d.ts +11 -0
  3. package/dist/components/Dashboard/elements/registry.d.ts +0 -1
  4. package/dist/components/Dashboard/headers/FeatureCardDefaultHeader/styled.d.ts +6 -4
  5. package/dist/components/Dashboard/headers/FeatureCardGradientHeader/styled.d.ts +5 -0
  6. package/dist/components/Dashboard/headers/FeatureCardSlideshowHeader/styled.d.ts +2 -0
  7. package/dist/components/Dashboard/headers/components/HeaderLayerIcon.d.ts +2 -0
  8. package/dist/components/Dashboard/headers/components/styled.d.ts +1 -0
  9. package/dist/components/Dashboard/headers/index.d.ts +1 -1
  10. package/dist/components/Dashboard/headers/styled.d.ts +5 -0
  11. package/dist/components/Dashboard/hooks/index.d.ts +3 -0
  12. package/dist/components/Dashboard/hooks/useAttachmentItems.d.ts +13 -0
  13. package/dist/components/Dashboard/hooks/useAttachmentPreviewImages.d.ts +8 -0
  14. package/dist/components/Dashboard/hooks/useEditGroupAttributes.d.ts +7 -0
  15. package/dist/components/Dashboard/types.d.ts +2 -3
  16. package/dist/components/Dashboard/utils/getSlideshowImages.d.ts +1 -1
  17. package/dist/components/Dashboard/utils/getThemeByName.d.ts +2 -0
  18. package/dist/components/Dashboard/utils/index.d.ts +2 -0
  19. package/dist/components/Dashboard/utils/toRenderableValue.d.ts +14 -0
  20. package/dist/components/LayerIcon/index.d.ts +1 -0
  21. package/dist/index.js +900 -850
  22. package/dist/index.js.map +1 -1
  23. package/dist/react.esm.js +898 -853
  24. package/dist/react.esm.js.map +1 -1
  25. package/package.json +3 -3
  26. package/dist/components/Dashboard/containers/AttachmentContainer/usePreviewImages.d.ts +0 -8
  27. package/dist/components/Dashboard/elements/ElementLayerName/index.d.ts +0 -3
  28. package/dist/components/Dashboard/headers/FeatureCardIconHeader/index.d.ts +0 -3
  29. package/dist/components/Dashboard/headers/FeatureCardIconHeader/styled.d.ts +0 -7
  30. /package/dist/components/Dashboard/headers/{FeatureCardDefaultHeader/components → components}/HeaderTitle.d.ts +0 -0
package/dist/index.js CHANGED
@@ -11,8 +11,8 @@ var color$1 = require('@evergis/color');
11
11
  var dateFns = require('date-fns');
12
12
  var lodash = require('lodash');
13
13
  var locale = require('date-fns/locale');
14
- var findAnd = require('find-and');
15
14
  var signalr = require('@microsoft/signalr');
15
+ var findAnd = require('find-and');
16
16
  var MapboxDraw = require('@mapbox/mapbox-gl-draw');
17
17
  var turf = require('@turf/turf');
18
18
  var MapGL = require('react-map-gl/maplibre');
@@ -3406,7 +3406,6 @@ exports.HeaderTemplate = void 0;
3406
3406
  HeaderTemplate["Default"] = "Default";
3407
3407
  HeaderTemplate["Slideshow"] = "Slideshow";
3408
3408
  HeaderTemplate["Gradient"] = "Gradient";
3409
- HeaderTemplate["Icon"] = "Icon";
3410
3409
  })(exports.HeaderTemplate || (exports.HeaderTemplate = {}));
3411
3410
  exports.WidgetType = void 0;
3412
3411
  (function (WidgetType) {
@@ -3926,161 +3925,654 @@ const metersPerPixel = (zoom, lat) => {
3926
3925
  return (156543.03 * Math.cos(lat * (Math.PI / 180))) / 2 ** zoom;
3927
3926
  };
3928
3927
 
3929
- const useAutoCompleteControl = (items) => {
3930
- const [value, setValue] = React.useState("");
3931
- const [options, setOptions] = React.useState([]);
3932
- const staticOptions = React.useMemo(() => (items ?? [])
3933
- .filter(Boolean)
3934
- .map(item => ({ text: String(item), value: String(item) })), [items]);
3935
- const onChange = React.useCallback((newValue) => setValue(newValue), []);
3936
- return {
3937
- value,
3938
- setValue,
3939
- onChange,
3940
- options: staticOptions.length ? staticOptions : options,
3941
- setOptions,
3942
- };
3943
- };
3944
-
3945
- const eqlParametersToPayload = (parameters) => Object.keys(parameters).reduce((result, paramName) => ({
3946
- ...result,
3947
- [paramName]: parameters[paramName].default,
3948
- }), {});
3949
-
3950
- const addDataSource = (dashboardConfiguration, pageIndex, query, additional) => {
3951
- const newConfig = JSON.parse(JSON.stringify(dashboardConfiguration));
3952
- if (!newConfig.children[0].children[pageIndex].dataSources) {
3953
- newConfig.children[0].children[pageIndex].dataSources = [];
3954
- }
3955
- const freeId = newConfig.children[0].children[pageIndex].dataSources.length + 1;
3956
- const parameters = eqlParametersToPayload(additional.parameters);
3957
- newConfig.children[0].children[pageIndex].dataSources.push({
3958
- name: `datasource_${freeId}`,
3959
- query,
3960
- parameters,
3961
- offset: 0,
3962
- limit: DEFAULT_DATA_SOURCE_LIMIT,
3963
- });
3964
- return newConfig.children;
3965
- };
3928
+ const DashboardContext = React.createContext({});
3929
+ const DashboardProvider = React.memo(({ children, ...props }) => {
3930
+ return jsxRuntime.jsx(DashboardContext.Provider, { value: props, children: children });
3931
+ });
3966
3932
 
3967
- const addDataSources = (dashboardConfiguration, pageIndex, layerNames) => {
3968
- const newConfig = JSON.parse(JSON.stringify(dashboardConfiguration));
3969
- if (!newConfig.children[0].children[pageIndex].dataSources) {
3970
- newConfig.children[0].children[pageIndex].dataSources = [];
3971
- }
3972
- layerNames.forEach(layerName => {
3973
- newConfig.children[0].children[pageIndex].dataSources.push({
3974
- name: layerName.split(".")[1],
3975
- layerName,
3976
- query: "",
3977
- parameters: {},
3978
- });
3979
- });
3980
- return newConfig.children;
3981
- };
3933
+ const FeatureCardContext = React.createContext({});
3934
+ const FeatureCardProvider = React.memo(({ children, ...props }) => {
3935
+ return jsxRuntime.jsx(FeatureCardContext.Provider, { value: props, children: children });
3936
+ });
3982
3937
 
3983
- const getConfigFilter = (filterName, configFilters) => configFilters?.find(({ name }) => name === filterName);
3938
+ const GlobalContext = React.createContext({});
3939
+ const GlobalProvider = React.memo(({ children, ...props }) => {
3940
+ return jsxRuntime.jsx(GlobalContext.Provider, { value: props, children: children });
3941
+ });
3984
3942
 
3985
- const getDataSource = (dataSourceName, dataSources) => dataSources?.find(({ name }) => name === dataSourceName);
3943
+ const MapContext = React.createContext({});
3986
3944
 
3987
- const getDataSourceFilterValue = ({ filterName, filterProp, attributeAlias, dataSource, selectedFilters, }) => {
3988
- if (lodash.isNil(selectedFilters[filterName]))
3989
- return null;
3990
- const feature = dataSource?.features?.find(({ properties }) => properties[attributeAlias] ===
3991
- (Array.isArray(selectedFilters[filterName].value)
3992
- ? selectedFilters[filterName].value[0]
3993
- : selectedFilters[filterName].value));
3994
- return feature?.properties?.[filterProp];
3945
+ const MapProvider = ({ basemapItems, defaultBasemap, children }) => {
3946
+ const map = React.useRef();
3947
+ const draw = React.useRef();
3948
+ const [loaded, setLoaded] = React.useState(false);
3949
+ const [basemapName, setBasemapName] = React.useState(defaultBasemap);
3950
+ return (jsxRuntime.jsx(MapContext.Provider, { value: {
3951
+ map,
3952
+ draw,
3953
+ loaded,
3954
+ setLoaded,
3955
+ basemapItems,
3956
+ basemapName,
3957
+ setBasemapName,
3958
+ defaultBasemap,
3959
+ }, children: children }));
3995
3960
  };
3996
3961
 
3997
- const getSelectedFilterValue = (filterName, selectedFilters, defaultValue) => {
3998
- return ((!lodash.isNil(selectedFilters?.[filterName]?.value) &&
3999
- Array.isArray(defaultValue) &&
4000
- !Array.isArray(selectedFilters[filterName].value)
4001
- ? [selectedFilters[filterName].value]
4002
- : selectedFilters?.[filterName]?.value) ?? defaultValue);
4003
- };
3962
+ exports.BaseMapTheme = void 0;
3963
+ (function (BaseMapTheme) {
3964
+ BaseMapTheme["Light"] = "light";
3965
+ BaseMapTheme["Dark"] = "dark";
3966
+ })(exports.BaseMapTheme || (exports.BaseMapTheme = {}));
4004
3967
 
4005
- const applyQueryFilters = ({ parameters: configParameters, filters: configFilters, selectedFilters, geometry, attributes, layerInfo, dataSources, projectDataSources, }) => {
4006
- if (!configParameters) {
4007
- return {};
4008
- }
4009
- return Object.keys(configParameters).reduce((result, key) => {
4010
- if (typeof configParameters[key] === "string" && configParameters[key].startsWith(PROVIDER_PREFIX)) {
4011
- const raw = configParameters[key].slice(PROVIDER_PREFIX.length);
4012
- const [provider, layerName, fieldName] = raw.split(":");
4013
- if (provider === exports.ProviderPrefix.Card && fieldName && layerInfo.name === layerName && attributes) {
4014
- const attribute = attributes.find(({ attributeName }) => attributeName === fieldName);
4015
- const cardValue = attribute?.value ?? null;
4016
- if (lodash.isNil(cardValue))
4017
- return result;
4018
- return { ...result, [key]: cardValue };
4019
- }
4020
- if (provider === exports.ProviderPrefix.Left && layerName && fieldName && projectDataSources?.length) {
4021
- const dataSource = projectDataSources.find(({ layerName: name }) => name === layerName);
4022
- const leftValue = dataSource?.features?.[0]?.properties?.[fieldName] ?? null;
4023
- if (lodash.isNil(leftValue))
4024
- return result;
4025
- return { ...result, [key]: leftValue };
4026
- }
4027
- return result;
3968
+ const ServerNotificationsContext = React.createContext({});
3969
+
3970
+ const useServerNotifications = (url, initialized, apiClient) => {
3971
+ const hubConnection = React.useRef(null);
3972
+ const [connection, setConnection] = React.useState(null);
3973
+ const subscribeNotifications = React.useCallback(() => {
3974
+ if (!connection || connection.state !== "Connected") {
3975
+ return;
4028
3976
  }
4029
- if (typeof configParameters[key] === "string" && configParameters[key].includes("{") && attributes?.length) {
4030
- const exactAttr = attributes.find(({ attributeName }) => configParameters[key] === `{${attributeName}}`);
4031
- if (exactAttr) {
4032
- return { ...result, [key]: exactAttr.value ?? "" };
4033
- }
4034
- let interpolated = configParameters[key];
4035
- attributes.forEach(({ attributeName, value: attrValue }) => {
4036
- interpolated = interpolated.replace(new RegExp(`\\{${attributeName}\\}`, "g"), attrValue?.toString() ?? "");
4037
- });
4038
- return { ...result, [key]: interpolated };
3977
+ connection
3978
+ .invoke("SubscribeNotifications", [])
3979
+ .then(() => console.info("Подписка `SubscribeNotifications` оформлена"))
3980
+ .catch(err => console.info("Ошибка подписки `SubscribeNotifications`:", err));
3981
+ }, [connection]);
3982
+ React.useEffect(() => {
3983
+ if (!initialized) {
3984
+ return;
4039
3985
  }
4040
- if (typeof configParameters[key] !== "string" || !configParameters[key].startsWith("%")) {
4041
- return {
4042
- ...result,
4043
- [key]: configParameters[key],
4044
- };
3986
+ hubConnection.current = new signalr.HubConnectionBuilder()
3987
+ .withUrl(`${url}?clientId=${api.generateId()}`, {
3988
+ withCredentials: true,
3989
+ skipNegotiation: true,
3990
+ transport: signalr.HttpTransportType.WebSockets,
3991
+ accessTokenFactory: async () => {
3992
+ let accessToken = window.localStorage.getItem(api.STORAGE_TOKEN_KEY) || "";
3993
+ const { exp } = api.parseJwt(accessToken);
3994
+ const currentTime = new Date().getTime() / 1000;
3995
+ if (currentTime > exp) {
3996
+ const refreshToken = window.localStorage.getItem(api.STORAGE_REFRESH_TOKEN_KEY);
3997
+ if (refreshToken) {
3998
+ const refreshTokenResponse = await apiClient.account.refreshToken({
3999
+ refreshToken,
4000
+ });
4001
+ if (refreshTokenResponse) {
4002
+ accessToken = refreshTokenResponse.token;
4003
+ window.localStorage.setItem(api.STORAGE_TOKEN_KEY, refreshTokenResponse.token);
4004
+ window.localStorage.setItem(api.STORAGE_REFRESH_TOKEN_KEY, refreshTokenResponse.refreshToken);
4005
+ }
4006
+ }
4007
+ else {
4008
+ await apiClient.logout();
4009
+ }
4010
+ }
4011
+ return accessToken;
4012
+ },
4013
+ })
4014
+ .withAutomaticReconnect()
4015
+ .configureLogging(signalr.LogLevel.Information)
4016
+ .build();
4017
+ hubConnection.current
4018
+ .start()
4019
+ .then(() => console.info("Серверные нотификации подключены"))
4020
+ .catch(err => console.info("Ошибка:", err))
4021
+ .finally(() => setConnection(hubConnection.current));
4022
+ }, [initialized]); // eslint-disable-line
4023
+ React.useEffect(() => {
4024
+ if (!connection || connection.state !== "Connected") {
4025
+ return;
4045
4026
  }
4046
- const filterFullName = configParameters[key].replace("%", "");
4047
- const [filterName, filterProp] = filterFullName.includes(".") ? filterFullName.split(".") : [filterFullName, null];
4048
- const { defaultValue, relatedDataSource, attributeAlias } = getConfigFilter(filterName, configFilters) || {};
4049
- if (filterName === "geometry" && geometry && !geometry.includes("()") && geometry.endsWith(")")) {
4050
- return {
4051
- ...result,
4052
- [key]: geometry,
4053
- };
4027
+ connection.onreconnecting(() => console.info("Переподключение к серверным нотификациям"));
4028
+ connection.onreconnected(subscribeNotifications);
4029
+ subscribeNotifications();
4030
+ }, [connection]);
4031
+ return connection;
4032
+ };
4033
+
4034
+ const ServerNotificationsProvider = ({ url, initialized, apiClient, children }) => {
4035
+ const connection = useServerNotifications(url, initialized, apiClient);
4036
+ const addSubscription = React.useCallback(async (payload) => {
4037
+ if (!connection || connection.state !== "Connected" || !payload) {
4038
+ return;
4054
4039
  }
4055
- if (configParameters[key].endsWith(".max")) {
4056
- return {
4057
- ...result,
4058
- [key]: selectedFilters?.[filterName]?.max ?? (Array.isArray(defaultValue) ? defaultValue[1] : defaultValue),
4059
- };
4040
+ try {
4041
+ const id = await connection.invoke("AddSubscription", payload);
4042
+ console.info("Подписка добавлена, id:", id);
4043
+ return id;
4060
4044
  }
4061
- if (configParameters[key].endsWith(".min")) {
4062
- return {
4063
- ...result,
4064
- [key]: selectedFilters?.[filterName]?.min ?? (Array.isArray(defaultValue) ? defaultValue[0] : defaultValue),
4065
- };
4045
+ catch (err) {
4046
+ console.info("Ошибка добавления подписки:", err);
4047
+ return Promise.resolve(null);
4066
4048
  }
4067
- if (configParameters[key].includes(".")) {
4068
- return {
4069
- ...result,
4070
- [key]: getDataSourceFilterValue({
4071
- filterName,
4072
- filterProp,
4073
- selectedFilters,
4074
- attributeAlias,
4075
- dataSource: getDataSource(relatedDataSource, dataSources),
4076
- }) ?? defaultValue,
4077
- };
4049
+ }, [connection]);
4050
+ const updateSubscription = React.useCallback(async (id, payload) => {
4051
+ if (!connection || connection.state !== "Connected" || !id || !payload) {
4052
+ return;
4078
4053
  }
4079
- const value = getSelectedFilterValue(filterName, selectedFilters, defaultValue);
4080
- if (lodash.isNil(value)) {
4081
- return result;
4054
+ try {
4055
+ await connection.invoke("UpdateSubscription", id, payload);
4082
4056
  }
4083
- return {
4057
+ catch (err) {
4058
+ console.info(`Ошибка обновления подписки ${id}:`, err);
4059
+ }
4060
+ }, [connection]);
4061
+ const unsubscribeById = React.useCallback(async (id) => {
4062
+ if (!connection || connection.state !== "Connected" || !id) {
4063
+ return;
4064
+ }
4065
+ try {
4066
+ await connection.invoke("Unsubscribe", [id]);
4067
+ }
4068
+ catch (err) {
4069
+ console.info(`Ошибка отписки по ${id}:`, err);
4070
+ }
4071
+ }, [connection]);
4072
+ return (jsxRuntime.jsx(ServerNotificationsContext.Provider, { value: {
4073
+ connection,
4074
+ addSubscription,
4075
+ updateSubscription,
4076
+ unsubscribeById,
4077
+ }, children: children }));
4078
+ };
4079
+
4080
+ const useWidgetContext = (type = exports.WidgetType.Dashboard) => {
4081
+ const { toggleLayersVisibility, visibleLayers, projectInfo, updateProject, layerInfos, geometryFilter, dashboardLayers, setDashboardLayer, components: dashboardComponents, selectAttachmentsFromCatalog, config: dashboardConfig, containerIds, pageIndex: projectPageIndex, selectedTabId: projectSelectedTabId, setSelectedTabId: setProjectSelectedTabId, dataSources: projectDataSources, loading: projectLoading, editMode: projectEditMode, filters: projectFilters, changeFilters: projectChangeFilters, expandContainer: projectExpandContainer, expandedContainers: projectExpandedContainers, nextPage: projectNextPage, prevPage: projectPrevPage, changePage: projectChangePage, } = React.useContext(DashboardContext) || {};
4082
+ const { layerInfo, attributes, feature, controls, changeControls, closeFeatureCard, config: featureConfig, pageIndex: featurePageIndex, selectedTabId: featureSelectedTabId, setSelectedTabId: setFeatureSelectedTabId, dataSources: featureDataSources, loading: featureLoading, editMode: featureEditMode, filters: featureFilters, changeFilters: featureChangeFilters, expandContainer: featureExpandContainer, expandedContainers: featureExpandedContainers, nextPage: featureNextPage, prevPage: featurePrevPage, changePage: featureChangePage, } = React.useContext(FeatureCardContext) || {};
4083
+ return {
4084
+ toggleLayersVisibility,
4085
+ visibleLayers,
4086
+ projectInfo,
4087
+ layerInfos,
4088
+ updateProject,
4089
+ dashboardLayers,
4090
+ setDashboardLayer,
4091
+ geometryFilter,
4092
+ layerInfo,
4093
+ attributes,
4094
+ feature,
4095
+ closeFeatureCard,
4096
+ containerIds,
4097
+ controls,
4098
+ changeControls,
4099
+ components: dashboardComponents,
4100
+ selectAttachmentsFromCatalog,
4101
+ config: type === exports.WidgetType.Dashboard ? dashboardConfig : featureConfig,
4102
+ isEditing: type === exports.WidgetType.Dashboard ? projectEditMode : featureEditMode,
4103
+ isLoading: type === exports.WidgetType.Dashboard ? projectLoading : featureLoading,
4104
+ pageIndex: type === exports.WidgetType.Dashboard ? projectPageIndex || 1 : featurePageIndex || 1,
4105
+ filters: type === exports.WidgetType.Dashboard ? projectFilters : featureFilters,
4106
+ changeFilters: type === exports.WidgetType.Dashboard ? projectChangeFilters : featureChangeFilters,
4107
+ dataSources: type === exports.WidgetType.Dashboard ? projectDataSources : featureDataSources,
4108
+ expandContainer: type === exports.WidgetType.Dashboard ? projectExpandContainer : featureExpandContainer,
4109
+ expandedContainers: type === exports.WidgetType.Dashboard ? projectExpandedContainers : featureExpandedContainers,
4110
+ selectedTabId: type === exports.WidgetType.Dashboard ? projectSelectedTabId : featureSelectedTabId,
4111
+ setSelectedTabId: type === exports.WidgetType.Dashboard ? setProjectSelectedTabId : setFeatureSelectedTabId,
4112
+ nextPage: type === exports.WidgetType.Dashboard ? projectNextPage : featureNextPage,
4113
+ prevPage: type === exports.WidgetType.Dashboard ? projectPrevPage : featurePrevPage,
4114
+ changePage: type === exports.WidgetType.Dashboard ? projectChangePage : featureChangePage,
4115
+ };
4116
+ };
4117
+
4118
+ const parseAttachments = (raw) => {
4119
+ if (!raw)
4120
+ return [];
4121
+ if (Array.isArray(raw))
4122
+ return raw;
4123
+ if (typeof raw !== "string")
4124
+ return [];
4125
+ try {
4126
+ const parsed = JSON.parse(raw);
4127
+ return Array.isArray(parsed) ? parsed : [];
4128
+ }
4129
+ catch {
4130
+ return [];
4131
+ }
4132
+ };
4133
+ const attachmentsFromFeatures = (features, mapping = {}) => {
4134
+ if (!features?.length)
4135
+ return [];
4136
+ const { attributeLink = "link", attributeName = "name", attributeMime = "mimeType", attributeDate = "date", } = mapping;
4137
+ return features
4138
+ .map(feature => {
4139
+ const link = feature.properties?.[attributeLink];
4140
+ if (!link)
4141
+ return null;
4142
+ return {
4143
+ link,
4144
+ name: feature.properties?.[attributeName] ?? link,
4145
+ mimeType: feature.properties?.[attributeMime] ?? "",
4146
+ date: feature.properties?.[attributeDate],
4147
+ isExternal: /^https?:\/\//.test(link),
4148
+ };
4149
+ })
4150
+ .filter(Boolean);
4151
+ };
4152
+
4153
+ const useAttachmentItems = ({ type, elementConfig, valueOverride, }) => {
4154
+ const { attributes, dataSources } = useWidgetContext(type);
4155
+ const { children, options } = elementConfig || {};
4156
+ const { relatedDataSource, controls } = options || {};
4157
+ const valueElement = React.useMemo(() => children?.find(({ id }) => id === "value"), [children]);
4158
+ const attributeName = React.useMemo(() => {
4159
+ const candidate = valueElement?.attributeName ?? elementConfig?.attributeName;
4160
+ return Array.isArray(candidate) ? candidate[0] : candidate;
4161
+ }, [valueElement, elementConfig]);
4162
+ const rawValue = React.useMemo(() => {
4163
+ if (valueOverride !== undefined)
4164
+ return valueOverride;
4165
+ if (!attributeName)
4166
+ return undefined;
4167
+ return attributes?.find(item => item.attributeName === attributeName)?.value;
4168
+ }, [valueOverride, attributeName, attributes]);
4169
+ const items = React.useMemo(() => {
4170
+ if (relatedDataSource) {
4171
+ const dataSource = dataSources?.find(({ name }) => name === relatedDataSource);
4172
+ const mapping = controls?.[0];
4173
+ return attachmentsFromFeatures(dataSource?.features, mapping);
4174
+ }
4175
+ return parseAttachments(rawValue);
4176
+ }, [relatedDataSource, dataSources, controls, rawValue]);
4177
+ return {
4178
+ items,
4179
+ attributeName,
4180
+ rawValue,
4181
+ };
4182
+ };
4183
+
4184
+ const useGlobalContext = () => {
4185
+ const { t, language, themeName, api, ewktGeometry } = React.useContext(GlobalContext) || {};
4186
+ const translate = React.useCallback((value, options) => {
4187
+ if (t)
4188
+ return t(value, options);
4189
+ return options?.defaultValue ?? value;
4190
+ }, [t]);
4191
+ return React.useMemo(() => ({
4192
+ t: translate,
4193
+ language,
4194
+ themeName,
4195
+ api,
4196
+ ewktGeometry,
4197
+ }), [language, translate, api, ewktGeometry, themeName]);
4198
+ };
4199
+
4200
+ const GRID_TILE_SIZE = "4.5rem";
4201
+ const LIST_ICON_SIZE = "1.5rem";
4202
+ const JPG_MIME_TYPE = "image/jpeg";
4203
+ const PNG_MIME_TYPE = "image/png";
4204
+ const IMAGE_MIME_TYPES = [
4205
+ "image/apng",
4206
+ "image/avif",
4207
+ "image/gif",
4208
+ "image/jpeg",
4209
+ "image/png",
4210
+ "image/svg+xml",
4211
+ "image/webp",
4212
+ ];
4213
+ const XLSX_MIME_TYPES = [
4214
+ "application/vnd.ms-excel",
4215
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
4216
+ ];
4217
+ const PDF_MIME_TYPE = "application/pdf";
4218
+ const DOCX_MIME_TYPES = [
4219
+ "application/msword",
4220
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
4221
+ ];
4222
+ const CSV_MIME_TYPE = "text/csv";
4223
+ const JSON_MIME_TYPE = "application/json";
4224
+ const TXT_MIME_TYPE = "text/plain";
4225
+ const PPTX_MIME_TYPES = [
4226
+ "application/vnd.ms-powerpoint",
4227
+ "application/vnd.openxmlformats-officedocument.presentationml.presentation",
4228
+ ];
4229
+ const SHP_MIME_TYPE = "application/octet-stream";
4230
+ const KML_MIME_TYPE = "application/octet-stream";
4231
+ const ZIP_MIME_TYPE = "application/zip";
4232
+ const PYTHON_MIME_TYPES = ["application/x-python-code", "text/x-python"];
4233
+ var AddAttachmentSource;
4234
+ (function (AddAttachmentSource) {
4235
+ AddAttachmentSource["Pc"] = "pc";
4236
+ AddAttachmentSource["Catalog"] = "catalog";
4237
+ AddAttachmentSource["Link"] = "link";
4238
+ })(AddAttachmentSource || (AddAttachmentSource = {}));
4239
+
4240
+ var FileType;
4241
+ (function (FileType) {
4242
+ FileType[FileType["UNKNOWN"] = 0] = "UNKNOWN";
4243
+ FileType[FileType["XLSX"] = 1] = "XLSX";
4244
+ FileType[FileType["PDF"] = 2] = "PDF";
4245
+ FileType[FileType["CSV"] = 3] = "CSV";
4246
+ FileType[FileType["DOCX"] = 4] = "DOCX";
4247
+ FileType[FileType["IMAGE"] = 5] = "IMAGE";
4248
+ FileType[FileType["TXT"] = 6] = "TXT";
4249
+ FileType[FileType["JSON"] = 7] = "JSON";
4250
+ FileType[FileType["KML"] = 8] = "KML";
4251
+ FileType[FileType["PPTX"] = 9] = "PPTX";
4252
+ FileType[FileType["SHP"] = 10] = "SHP";
4253
+ FileType[FileType["ZIP"] = 11] = "ZIP";
4254
+ FileType[FileType["JPEG"] = 12] = "JPEG";
4255
+ FileType[FileType["JPG"] = 13] = "JPG";
4256
+ FileType[FileType["PNG"] = 14] = "PNG";
4257
+ FileType[FileType["PYTHON"] = 15] = "PYTHON";
4258
+ })(FileType || (FileType = {}));
4259
+ const IMAGE_FILE_TYPES = [
4260
+ FileType.IMAGE,
4261
+ FileType.JPEG,
4262
+ FileType.JPG,
4263
+ FileType.PNG,
4264
+ ];
4265
+
4266
+ const getFileType = (mimeType = "", name = "") => {
4267
+ if (mimeType === PNG_MIME_TYPE)
4268
+ return FileType.PNG;
4269
+ if (mimeType === JPG_MIME_TYPE)
4270
+ return FileType.JPG;
4271
+ if (IMAGE_MIME_TYPES.includes(mimeType))
4272
+ return FileType.IMAGE;
4273
+ if (XLSX_MIME_TYPES.includes(mimeType))
4274
+ return FileType.XLSX;
4275
+ if (DOCX_MIME_TYPES.includes(mimeType))
4276
+ return FileType.DOCX;
4277
+ if (mimeType === CSV_MIME_TYPE)
4278
+ return FileType.CSV;
4279
+ if (mimeType === PDF_MIME_TYPE)
4280
+ return FileType.PDF;
4281
+ if (mimeType === JSON_MIME_TYPE)
4282
+ return FileType.JSON;
4283
+ if (mimeType === KML_MIME_TYPE && (name.endsWith(".kml") || name.endsWith(".kmz"))) {
4284
+ return FileType.KML;
4285
+ }
4286
+ if (PYTHON_MIME_TYPES.includes(mimeType))
4287
+ return FileType.PYTHON;
4288
+ if (mimeType === TXT_MIME_TYPE && name.endsWith(".py"))
4289
+ return FileType.PYTHON;
4290
+ if (mimeType === TXT_MIME_TYPE)
4291
+ return FileType.TXT;
4292
+ if (PPTX_MIME_TYPES.includes(mimeType))
4293
+ return FileType.PPTX;
4294
+ if (mimeType === SHP_MIME_TYPE && name.endsWith(".shp"))
4295
+ return FileType.SHP;
4296
+ if (mimeType === ZIP_MIME_TYPE)
4297
+ return FileType.ZIP;
4298
+ return name.endsWith(".py") ? FileType.PYTHON : FileType.UNKNOWN;
4299
+ };
4300
+
4301
+ var img$j = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%2300AAFF'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cpath id='Vector_3' d='M9.84902 10.0353C9.69434 10.0353 9.55605 10.0112 9.43418 9.96318C9.3123 9.91396 9.20918 9.84658 9.1248 9.76104C9.0416 9.67549 8.97773 9.57705 8.9332 9.46572C8.88984 9.35439 8.86816 9.23662 8.86816 9.1124V9.04561C8.86816 8.90615 8.8875 8.77725 8.92617 8.65889C8.96484 8.53936 9.02227 8.43506 9.09844 8.346C9.17461 8.25693 9.27012 8.18779 9.38496 8.13857C9.4998 8.08818 9.6334 8.06299 9.78574 8.06299C9.92051 8.06299 10.0412 8.08467 10.1479 8.12803C10.2545 8.17139 10.3447 8.2335 10.4186 8.31436C10.4936 8.39521 10.5504 8.49307 10.5891 8.60791C10.6289 8.72275 10.6488 8.85166 10.6488 8.99463V9.23545H9.09492V8.86455H10.0705V8.81885C10.0717 8.75557 10.0605 8.70166 10.0371 8.65713C10.0148 8.6126 9.98203 8.57861 9.93867 8.55518C9.89531 8.53174 9.84258 8.52002 9.78047 8.52002C9.71602 8.52002 9.6627 8.53408 9.62051 8.56221C9.57949 8.59033 9.54727 8.629 9.52383 8.67822C9.50156 8.72627 9.48574 8.78193 9.47637 8.84521C9.46699 8.9085 9.46231 8.97529 9.46231 9.04561V9.1124C9.46231 9.18271 9.47168 9.24658 9.49043 9.304C9.51035 9.36143 9.53848 9.41064 9.5748 9.45166C9.6123 9.4915 9.65684 9.52256 9.7084 9.54482C9.76113 9.56709 9.8209 9.57822 9.8877 9.57822C9.96855 9.57822 10.0482 9.56299 10.1268 9.53252C10.2053 9.50205 10.2727 9.45166 10.3289 9.38135L10.5979 9.70127C10.5592 9.75635 10.5041 9.80967 10.4326 9.86123C10.3623 9.91279 10.2779 9.95498 10.1795 9.98779C10.0811 10.0194 9.9709 10.0353 9.84902 10.0353Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.4623 7.2998V9.9998H7.86816V7.2998H8.4623Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.17773 10.0001H5.58184V8.04893C5.58184 7.879 5.61699 7.73604 5.6873 7.62002C5.75879 7.50283 5.86133 7.41436 5.99492 7.35459C6.12852 7.29365 6.29023 7.26318 6.48008 7.26318C6.58789 7.26318 6.6916 7.27256 6.79121 7.29131C6.89082 7.31006 6.99395 7.33467 7.10059 7.36514L7.01797 7.83271C6.94883 7.81396 6.87617 7.79639 6.8 7.77998C6.725 7.76357 6.63066 7.75537 6.51699 7.75537C6.41035 7.75537 6.32715 7.78057 6.26738 7.83096C6.20762 7.88135 6.17773 7.954 6.17773 8.04893V10.0001ZM6.55039 8.09814V8.50947H5.30762V8.09814H6.55039ZM7.37129 8.09814V10.0001H6.77715V8.09814H7.37129Z' fill='white'/%3e%3c/g%3e%3c/svg%3e";
4302
+
4303
+ var img$i = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%2347C782'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='CSV'%3e%3cpath id='Vector_3' d='M10.3816 9.39736L10.9143 7.44092H11.6051L10.742 10.0003H10.2955L10.3816 9.39736ZM9.89824 7.44092L10.4309 9.39736L10.5205 10.0003H10.0687L9.21094 7.44092H9.89824Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.37852 9.32002C8.37852 9.28018 8.37266 9.24443 8.36094 9.21279C8.34922 9.17998 8.32754 9.14951 8.2959 9.12139C8.26426 9.09326 8.21855 9.06514 8.15879 9.03701C8.10019 9.00771 8.02285 8.97725 7.92676 8.94561C7.81426 8.90811 7.70586 8.86592 7.60156 8.81904C7.49727 8.771 7.4041 8.71533 7.32207 8.65205C7.24004 8.5876 7.175 8.5126 7.12695 8.42705C7.07891 8.34033 7.05488 8.23955 7.05488 8.12471C7.05488 8.01455 7.07949 7.91553 7.12871 7.82764C7.17793 7.73857 7.24648 7.66299 7.33437 7.60088C7.42344 7.5376 7.52773 7.48955 7.64727 7.45674C7.7668 7.42275 7.89746 7.40576 8.03926 7.40576C8.22676 7.40576 8.39199 7.43857 8.53496 7.5042C8.6791 7.56865 8.7916 7.66064 8.87246 7.78018C8.95449 7.89854 8.99551 8.03857 8.99551 8.20029H8.38203C8.38203 8.13584 8.36855 8.079 8.3416 8.02979C8.31582 7.98057 8.27656 7.94189 8.22383 7.91377C8.17109 7.88564 8.10488 7.87158 8.0252 7.87158C7.94785 7.87158 7.88281 7.8833 7.83008 7.90674C7.77734 7.93018 7.7375 7.96182 7.71055 8.00166C7.68359 8.04033 7.67012 8.08311 7.67012 8.12998C7.67012 8.16865 7.68066 8.20381 7.70176 8.23545C7.72402 8.26592 7.75508 8.29463 7.79492 8.32158C7.83594 8.34854 7.88516 8.37432 7.94258 8.39893C8.00117 8.42354 8.0668 8.44756 8.13945 8.471C8.27539 8.51436 8.39609 8.56299 8.50156 8.61689C8.6082 8.66963 8.69785 8.72998 8.77051 8.79795C8.84434 8.86475 8.9 8.94092 8.9375 9.02646C8.97617 9.11201 8.99551 9.20869 8.99551 9.3165C8.99551 9.43135 8.97324 9.5333 8.92871 9.62236C8.88418 9.71143 8.82031 9.78701 8.73711 9.84912C8.65391 9.91006 8.5543 9.95635 8.43828 9.98799C8.32227 10.0196 8.19277 10.0354 8.0498 10.0354C7.91855 10.0354 7.78906 10.019 7.66133 9.98623C7.53477 9.95225 7.41992 9.90068 7.3168 9.83154C7.21367 9.76123 7.13105 9.67158 7.06894 9.5626C7.00801 9.45244 6.97754 9.32178 6.97754 9.17061H7.59629C7.59629 9.24561 7.60625 9.30889 7.62617 9.36045C7.64609 9.41201 7.67539 9.45361 7.71406 9.48525C7.75273 9.51572 7.8002 9.53799 7.85645 9.55205C7.9127 9.56494 7.97715 9.57139 8.0498 9.57139C8.12832 9.57139 8.1916 9.56025 8.23965 9.53799C8.2877 9.51455 8.32285 9.48408 8.34512 9.44658C8.36738 9.40791 8.37852 9.36572 8.37852 9.32002Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.05293 9.1335H6.66816C6.65996 9.31162 6.61191 9.46865 6.52402 9.60459C6.43613 9.74053 6.31426 9.84658 6.1584 9.92275C6.00371 9.99775 5.8209 10.0353 5.60996 10.0353C5.43887 10.0353 5.28594 10.0065 5.15117 9.94912C5.01758 9.8917 4.90391 9.80908 4.81016 9.70127C4.71758 9.59346 4.64668 9.46279 4.59746 9.30928C4.54941 9.15576 4.52539 8.98291 4.52539 8.79072V8.65186C4.52539 8.45967 4.55059 8.28682 4.60098 8.1333C4.65254 7.97861 4.7252 7.84736 4.81895 7.73955C4.91387 7.63057 5.02754 7.54736 5.15996 7.48994C5.29238 7.43252 5.43945 7.40381 5.60117 7.40381C5.82383 7.40381 6.01191 7.44365 6.16543 7.52334C6.31895 7.60303 6.43789 7.7126 6.52227 7.85205C6.60664 7.99033 6.65645 8.14795 6.67168 8.3249H6.05645C6.0541 8.22881 6.0377 8.14854 6.00723 8.08408C5.97676 8.01846 5.92871 7.96924 5.86309 7.93643C5.79746 7.90361 5.71016 7.88721 5.60117 7.88721C5.525 7.88721 5.45879 7.90127 5.40254 7.92939C5.34629 7.95752 5.29941 8.00205 5.26191 8.06299C5.22441 8.12393 5.19629 8.20303 5.17754 8.30029C5.15996 8.39639 5.15117 8.5124 5.15117 8.64834V8.79072C5.15117 8.92666 5.15938 9.04268 5.17578 9.13877C5.19219 9.23486 5.21855 9.31338 5.25488 9.37432C5.29121 9.43525 5.33809 9.48037 5.39551 9.50967C5.4541 9.53779 5.52559 9.55186 5.60996 9.55186C5.70371 9.55186 5.78281 9.53721 5.84727 9.50791C5.91172 9.47744 5.96152 9.43174 5.99668 9.3708C6.03184 9.30869 6.05059 9.22959 6.05293 9.1335Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4304
+
4305
+ var img$h = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%232B7CD3'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='DOCX'%3e%3cpath id='Vector_3' d='M11.3209 7.44092L11.7393 8.2917L12.1576 7.44092H12.8607L12.1471 8.71006L12.8801 10.0003H12.1699L11.7393 9.13369L11.3086 10.0003H10.5967L11.3314 8.71006L10.616 7.44092H11.3209Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.77754 9.1335H10.3928C10.3846 9.31162 10.3365 9.46865 10.2486 9.60459C10.1607 9.74053 10.0389 9.84658 9.88301 9.92275C9.72832 9.99775 9.54551 10.0353 9.33457 10.0353C9.16348 10.0353 9.01055 10.0065 8.87578 9.94912C8.74219 9.8917 8.62852 9.80908 8.53477 9.70127C8.44219 9.59346 8.37129 9.46279 8.32207 9.30928C8.27402 9.15576 8.25 8.98291 8.25 8.79072V8.65186C8.25 8.45967 8.2752 8.28682 8.32559 8.1333C8.37715 7.97861 8.4498 7.84736 8.54355 7.73955C8.63848 7.63057 8.75215 7.54736 8.88457 7.48994C9.01699 7.43252 9.16406 7.40381 9.32578 7.40381C9.54844 7.40381 9.73652 7.44365 9.89004 7.52334C10.0436 7.60303 10.1625 7.7126 10.2469 7.85205C10.3313 7.99033 10.3811 8.14795 10.3963 8.3249H9.78105C9.77871 8.22881 9.7623 8.14854 9.73184 8.08408C9.70137 8.01846 9.65332 7.96924 9.5877 7.93643C9.52207 7.90361 9.43477 7.88721 9.32578 7.88721C9.24961 7.88721 9.1834 7.90127 9.12715 7.92939C9.0709 7.95752 9.02402 8.00205 8.98652 8.06299C8.94902 8.12393 8.9209 8.20303 8.90215 8.30029C8.88457 8.39639 8.87578 8.5124 8.87578 8.64834V8.79072C8.87578 8.92666 8.88398 9.04268 8.90039 9.13877C8.9168 9.23486 8.94316 9.31338 8.97949 9.37432C9.01582 9.43525 9.0627 9.48037 9.12012 9.50967C9.17871 9.53779 9.2502 9.55186 9.33457 9.55186C9.42832 9.55186 9.50742 9.53721 9.57188 9.50791C9.63633 9.47744 9.68613 9.43174 9.72129 9.3708C9.75645 9.30869 9.7752 9.22959 9.77754 9.1335Z' fill='white'/%3e%3cpath id='Vector_5' d='M7.90176 8.66963V8.77334C7.90176 8.96904 7.87422 9.14482 7.81914 9.30068C7.76523 9.45537 7.68848 9.58779 7.58887 9.69795C7.48926 9.80693 7.37148 9.89072 7.23555 9.94932C7.09961 10.0067 6.94961 10.0354 6.78555 10.0354C6.62031 10.0354 6.46914 10.0067 6.33203 9.94932C6.19609 9.89072 6.07773 9.80693 5.97695 9.69795C5.87734 9.58779 5.8 9.45537 5.74492 9.30068C5.69102 9.14482 5.66406 8.96904 5.66406 8.77334V8.66963C5.66406 8.47393 5.69102 8.29814 5.74492 8.14229C5.8 7.98643 5.87676 7.854 5.9752 7.74502C6.0748 7.63486 6.19258 7.55107 6.32852 7.49365C6.46563 7.43506 6.6168 7.40576 6.78203 7.40576C6.94609 7.40576 7.09609 7.43506 7.23203 7.49365C7.36914 7.55107 7.4875 7.63486 7.58711 7.74502C7.68672 7.854 7.76406 7.98643 7.81914 8.14229C7.87422 8.29814 7.90176 8.47393 7.90176 8.66963ZM7.27598 8.77334V8.66611C7.27598 8.53955 7.26484 8.42822 7.24258 8.33213C7.22148 8.23486 7.18984 8.15342 7.14766 8.08779C7.10547 8.02217 7.05332 7.97295 6.99121 7.94014C6.93027 7.90615 6.86055 7.88916 6.78203 7.88916C6.7 7.88916 6.62852 7.90615 6.56758 7.94014C6.50664 7.97295 6.45566 8.02217 6.41465 8.08779C6.37363 8.15342 6.34258 8.23486 6.32148 8.33213C6.30156 8.42822 6.2916 8.53955 6.2916 8.66611V8.77334C6.2916 8.89873 6.30156 9.01006 6.32148 9.10732C6.34258 9.20342 6.37363 9.28486 6.41465 9.35166C6.45684 9.41846 6.5084 9.46885 6.56934 9.50283C6.63145 9.53682 6.70352 9.55381 6.78555 9.55381C6.86406 9.55381 6.93379 9.53682 6.99473 9.50283C7.05566 9.46885 7.10664 9.41846 7.14766 9.35166C7.18984 9.28486 7.22148 9.20342 7.24258 9.10732C7.26484 9.01006 7.27598 8.89873 7.27598 8.77334Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.13711 10.0003H3.56934L3.57285 9.52568H4.13711C4.2543 9.52568 4.35332 9.49756 4.43418 9.44131C4.51621 9.38506 4.57832 9.30127 4.62051 9.18994C4.66387 9.07744 4.68555 8.93916 4.68555 8.7751V8.66436C4.68555 8.54131 4.67324 8.4335 4.64863 8.34092C4.6252 8.24717 4.59004 8.16924 4.54316 8.10713C4.49629 8.04385 4.4377 7.99639 4.36738 7.96475C4.29824 7.93311 4.21855 7.91729 4.12832 7.91729H3.55879V7.44092H4.12832C4.30176 7.44092 4.46055 7.4708 4.60469 7.53057C4.75 7.58916 4.87539 7.67354 4.98086 7.78369C5.0875 7.89268 5.16953 8.02217 5.22695 8.17217C5.28555 8.321 5.31484 8.48623 5.31484 8.66787V8.7751C5.31484 8.95557 5.28555 9.1208 5.22695 9.2708C5.16953 9.4208 5.08809 9.55029 4.98262 9.65928C4.87715 9.76826 4.75234 9.85264 4.6082 9.9124C4.46523 9.971 4.3082 10.0003 4.13711 10.0003ZM3.92266 7.44092V10.0003H3.30566V7.44092H3.92266Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4306
+
4307
+ var img$g = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23FF9C54'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='JPEG'%3e%3cpath id='Vector_3' d='M12.4043 8.63301V9.68418C12.3609 9.73223 12.2941 9.78379 12.2039 9.83887C12.1148 9.89277 12.0023 9.93906 11.8664 9.97773C11.7305 10.0164 11.5705 10.0357 11.3865 10.0357C11.2166 10.0357 11.0625 10.0088 10.9242 9.95488C10.7859 9.8998 10.667 9.81953 10.5674 9.71406C10.4689 9.60742 10.3928 9.47734 10.3389 9.32383C10.2861 9.16914 10.2598 8.99219 10.2598 8.79297V8.65059C10.2598 8.45137 10.2867 8.27441 10.3406 8.11973C10.3945 7.96504 10.4701 7.83496 10.5674 7.72949C10.6658 7.62285 10.7813 7.54199 10.9137 7.48691C11.0473 7.43184 11.1938 7.4043 11.3531 7.4043C11.5887 7.4043 11.7803 7.4418 11.9279 7.5168C12.0756 7.59063 12.1875 7.69316 12.2637 7.82441C12.3398 7.95449 12.3861 8.10508 12.4025 8.27617H11.8102C11.7984 8.1918 11.7762 8.12031 11.7434 8.06172C11.7117 8.00195 11.666 7.95684 11.6063 7.92637C11.5465 7.89473 11.4691 7.87891 11.3742 7.87891C11.3004 7.87891 11.233 7.89473 11.1721 7.92637C11.1123 7.95801 11.0613 8.00605 11.0191 8.07051C10.977 8.13379 10.9441 8.21348 10.9207 8.30957C10.8984 8.40566 10.8873 8.51816 10.8873 8.64707V8.79297C10.8873 8.9207 10.8979 9.03262 10.9189 9.12871C10.9412 9.2248 10.974 9.30508 11.0174 9.36953C11.0619 9.43281 11.1182 9.48086 11.1861 9.51367C11.2553 9.54531 11.3367 9.56113 11.4305 9.56113C11.4961 9.56113 11.5523 9.55586 11.5992 9.54531C11.6461 9.53359 11.6848 9.51953 11.7152 9.50312C11.7469 9.48555 11.7709 9.46914 11.7873 9.45391V9.05664H11.3584V8.63301H12.4043Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.95762 9.52617V10.0008H8.59355V9.52617H9.95762ZM8.81328 7.44141V10.0008H8.19629V7.44141H8.81328ZM9.78184 8.45742V8.91621H8.59355V8.45742H9.78184ZM9.96289 7.44141V7.91777H8.59355V7.44141H9.96289Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.77227 9.13242H6.13594V8.65605H6.77227C6.85898 8.65605 6.9293 8.64141 6.9832 8.61211C7.03711 8.58281 7.07637 8.54238 7.10098 8.49082C7.12676 8.43809 7.13965 8.37891 7.13965 8.31328C7.13965 8.24297 7.12676 8.17793 7.10098 8.11816C7.07637 8.0584 7.03711 8.01035 6.9832 7.97402C6.9293 7.93652 6.85898 7.91777 6.77227 7.91777H6.36797V10.0008H5.75098V7.44141H6.77227C6.97734 7.44141 7.15371 7.47891 7.30137 7.55391C7.4502 7.62891 7.56445 7.73203 7.64414 7.86328C7.72383 7.99336 7.76367 8.14219 7.76367 8.30977C7.76367 8.475 7.72383 8.61914 7.64414 8.74219C7.56445 8.86523 7.4502 8.96133 7.30137 9.03047C7.15371 9.09844 6.97734 9.13242 6.77227 9.13242Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.64395 9.19746V7.44141H5.25918V9.19746C5.25918 9.36855 5.21992 9.5168 5.14141 9.64219C5.06406 9.76758 4.95859 9.86484 4.825 9.93398C4.69258 10.002 4.54375 10.0359 4.37852 10.0359C4.20742 10.0359 4.05508 10.0072 3.92148 9.9498C3.78906 9.89238 3.68477 9.80391 3.60859 9.68437C3.53359 9.56484 3.49609 9.4125 3.49609 9.22734H4.11484C4.11484 9.31406 4.1248 9.38203 4.14473 9.43125C4.16465 9.4793 4.19395 9.51328 4.23262 9.5332C4.27246 9.55195 4.32109 9.56133 4.37852 9.56133C4.43477 9.56133 4.48223 9.54727 4.5209 9.51914C4.56074 9.48984 4.59121 9.44824 4.6123 9.39434C4.6334 9.33926 4.64395 9.27363 4.64395 9.19746Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4308
+
4309
+ var img$f = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23FF9C54'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='JPG'%3e%3cpath id='Vector_3' d='M11.3467 8.63301V9.68418C11.3033 9.73223 11.2365 9.78379 11.1463 9.83887C11.0572 9.89277 10.9447 9.93906 10.8088 9.97773C10.6729 10.0164 10.5129 10.0357 10.3289 10.0357C10.159 10.0357 10.0049 10.0088 9.8666 9.95488C9.72832 9.8998 9.60938 9.81953 9.50977 9.71406C9.41133 9.60742 9.33516 9.47734 9.28125 9.32383C9.22852 9.16914 9.20215 8.99219 9.20215 8.79297V8.65059C9.20215 8.45137 9.2291 8.27441 9.28301 8.11973C9.33691 7.96504 9.4125 7.83496 9.50977 7.72949C9.6082 7.62285 9.72363 7.54199 9.85605 7.48691C9.98965 7.43184 10.1361 7.4043 10.2955 7.4043C10.5311 7.4043 10.7227 7.4418 10.8703 7.5168C11.018 7.59063 11.1299 7.69316 11.2061 7.82441C11.2822 7.95449 11.3285 8.10508 11.3449 8.27617H10.7525C10.7408 8.1918 10.7186 8.12031 10.6857 8.06172C10.6541 8.00195 10.6084 7.95684 10.5486 7.92637C10.4889 7.89473 10.4115 7.87891 10.3166 7.87891C10.2428 7.87891 10.1754 7.89473 10.1145 7.92637C10.0547 7.95801 10.0037 8.00605 9.96152 8.07051C9.91934 8.13379 9.88652 8.21348 9.86309 8.30957C9.84082 8.40566 9.82969 8.51816 9.82969 8.64707V8.79297C9.82969 8.9207 9.84023 9.03262 9.86133 9.12871C9.88359 9.2248 9.91641 9.30508 9.95977 9.36953C10.0043 9.43281 10.0605 9.48086 10.1285 9.51367C10.1977 9.54531 10.2791 9.56113 10.3729 9.56113C10.4385 9.56113 10.4947 9.55586 10.5416 9.54531C10.5885 9.53359 10.6271 9.51953 10.6576 9.50312C10.6893 9.48555 10.7133 9.46914 10.7297 9.45391V9.05664H10.3008V8.63301H11.3467Z' fill='white'/%3e%3cpath id='Vector_4' d='M7.82891 9.13242H7.19258V8.65605H7.82891C7.91563 8.65605 7.98594 8.64141 8.03984 8.61211C8.09375 8.58281 8.13301 8.54238 8.15762 8.49082C8.1834 8.43809 8.19629 8.37891 8.19629 8.31328C8.19629 8.24297 8.1834 8.17793 8.15762 8.11816C8.13301 8.0584 8.09375 8.01035 8.03984 7.97402C7.98594 7.93652 7.91563 7.91777 7.82891 7.91777H7.42461V10.0008H6.80762V7.44141H7.82891C8.03398 7.44141 8.21035 7.47891 8.35801 7.55391C8.50684 7.62891 8.62109 7.73203 8.70078 7.86328C8.78047 7.99336 8.82031 8.14219 8.82031 8.30977C8.82031 8.475 8.78047 8.61914 8.70078 8.74219C8.62109 8.86523 8.50684 8.96133 8.35801 9.03047C8.21035 9.09844 8.03398 9.13242 7.82891 9.13242Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.70059 9.19746V7.44141H6.31582V9.19746C6.31582 9.36855 6.27656 9.5168 6.19805 9.64219C6.1207 9.76758 6.01523 9.86484 5.88164 9.93398C5.74922 10.002 5.60039 10.0359 5.43516 10.0359C5.26406 10.0359 5.11172 10.0072 4.97812 9.9498C4.8457 9.89238 4.74141 9.80391 4.66523 9.68437C4.59023 9.56484 4.55273 9.4125 4.55273 9.22734H5.17148C5.17148 9.31406 5.18145 9.38203 5.20137 9.43125C5.22129 9.4793 5.25059 9.51328 5.28926 9.5332C5.3291 9.55195 5.37773 9.56133 5.43516 9.56133C5.49141 9.56133 5.53887 9.54727 5.57754 9.51914C5.61738 9.48984 5.64785 9.44824 5.66895 9.39434C5.69004 9.33926 5.70059 9.27363 5.70059 9.19746Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4310
+
4311
+ var img$e = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23AE6BF1'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='JSON'%3e%3cpath id='Vector_3' d='M12.6014 7.44043V9.9998H11.9861L11.0809 8.40723V9.9998H10.4639V7.44043H11.0809L11.9861 9.03301V7.44043H12.6014Z' fill='white'/%3e%3cpath id='Vector_4' d='M10.0434 8.66914V8.77285C10.0434 8.96855 10.0158 9.14434 9.96074 9.3002C9.90684 9.45488 9.83008 9.5873 9.73047 9.69746C9.63086 9.80645 9.51309 9.89023 9.37715 9.94883C9.24121 10.0063 9.09121 10.035 8.92715 10.035C8.76191 10.035 8.61074 10.0063 8.47363 9.94883C8.3377 9.89023 8.21934 9.80645 8.11855 9.69746C8.01895 9.5873 7.9416 9.45488 7.88652 9.3002C7.83262 9.14434 7.80566 8.96855 7.80566 8.77285V8.66914C7.80566 8.47344 7.83262 8.29766 7.88652 8.1418C7.9416 7.98594 8.01836 7.85352 8.1168 7.74453C8.21641 7.63437 8.33418 7.55059 8.47012 7.49316C8.60723 7.43457 8.7584 7.40527 8.92363 7.40527C9.0877 7.40527 9.2377 7.43457 9.37363 7.49316C9.51074 7.55059 9.6291 7.63437 9.72871 7.74453C9.82832 7.85352 9.90566 7.98594 9.96074 8.1418C10.0158 8.29766 10.0434 8.47344 10.0434 8.66914ZM9.41758 8.77285V8.66562C9.41758 8.53906 9.40645 8.42773 9.38418 8.33164C9.36309 8.23438 9.33145 8.15293 9.28926 8.0873C9.24707 8.02168 9.19492 7.97246 9.13281 7.93965C9.07187 7.90566 9.00215 7.88867 8.92363 7.88867C8.8416 7.88867 8.77012 7.90566 8.70918 7.93965C8.64824 7.97246 8.59727 8.02168 8.55625 8.0873C8.51523 8.15293 8.48418 8.23438 8.46309 8.33164C8.44316 8.42773 8.4332 8.53906 8.4332 8.66562V8.77285C8.4332 8.89824 8.44316 9.00957 8.46309 9.10684C8.48418 9.20293 8.51523 9.28437 8.55625 9.35117C8.59844 9.41797 8.65 9.46836 8.71094 9.50234C8.77305 9.53633 8.84512 9.55332 8.92715 9.55332C9.00566 9.55332 9.07539 9.53633 9.13633 9.50234C9.19727 9.46836 9.24824 9.41797 9.28926 9.35117C9.33145 9.28437 9.36309 9.20293 9.38418 9.10684C9.40645 9.00957 9.41758 8.89824 9.41758 8.77285Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.84336 9.31953C6.84336 9.27969 6.8375 9.24395 6.82578 9.2123C6.81406 9.17949 6.79238 9.14902 6.76074 9.1209C6.7291 9.09277 6.6834 9.06465 6.62363 9.03652C6.56504 9.00723 6.4877 8.97676 6.3916 8.94512C6.2791 8.90762 6.1707 8.86543 6.06641 8.81855C5.96211 8.77051 5.86895 8.71484 5.78691 8.65156C5.70488 8.58711 5.63984 8.51211 5.5918 8.42656C5.54375 8.33984 5.51973 8.23906 5.51973 8.12422C5.51973 8.01406 5.54434 7.91504 5.59355 7.82715C5.64277 7.73809 5.71133 7.6625 5.79922 7.60039C5.88828 7.53711 5.99258 7.48906 6.11211 7.45625C6.23164 7.42227 6.3623 7.40527 6.5041 7.40527C6.6916 7.40527 6.85684 7.43809 6.9998 7.50371C7.14395 7.56816 7.25645 7.66016 7.3373 7.77969C7.41934 7.89805 7.46035 8.03809 7.46035 8.1998H6.84688C6.84688 8.13535 6.8334 8.07852 6.80645 8.0293C6.78066 7.98008 6.74141 7.94141 6.68867 7.91328C6.63594 7.88516 6.56973 7.87109 6.49004 7.87109C6.4127 7.87109 6.34766 7.88281 6.29492 7.90625C6.24219 7.92969 6.20234 7.96133 6.17539 8.00117C6.14844 8.03984 6.13496 8.08262 6.13496 8.12949C6.13496 8.16816 6.14551 8.20332 6.1666 8.23496C6.18887 8.26543 6.21992 8.29414 6.25977 8.32109C6.30078 8.34805 6.35 8.37383 6.40742 8.39844C6.46602 8.42305 6.53164 8.44707 6.6043 8.47051C6.74023 8.51387 6.86094 8.5625 6.96641 8.61641C7.07305 8.66914 7.1627 8.72949 7.23535 8.79746C7.30918 8.86426 7.36484 8.94043 7.40234 9.02598C7.44102 9.11152 7.46035 9.2082 7.46035 9.31602C7.46035 9.43086 7.43809 9.53281 7.39355 9.62187C7.34902 9.71094 7.28516 9.78652 7.20195 9.84863C7.11875 9.90957 7.01914 9.95586 6.90312 9.9875C6.78711 10.0191 6.65762 10.035 6.51465 10.035C6.3834 10.035 6.25391 10.0186 6.12617 9.98574C5.99961 9.95176 5.88477 9.9002 5.78164 9.83105C5.67852 9.76074 5.5959 9.67109 5.53379 9.56211C5.47285 9.45195 5.44238 9.32129 5.44238 9.17012H6.06113C6.06113 9.24512 6.07109 9.3084 6.09102 9.35996C6.11094 9.41152 6.14023 9.45312 6.17891 9.48477C6.21758 9.51523 6.26504 9.5375 6.32129 9.55156C6.37754 9.56445 6.44199 9.5709 6.51465 9.5709C6.59316 9.5709 6.65645 9.55977 6.70449 9.5375C6.75254 9.51406 6.7877 9.48359 6.80996 9.44609C6.83223 9.40742 6.84336 9.36523 6.84336 9.31953Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.41738 9.19648V7.44043H5.03262V9.19648C5.03262 9.36758 4.99336 9.51582 4.91484 9.64121C4.8375 9.7666 4.73203 9.86387 4.59844 9.93301C4.46602 10.001 4.31719 10.035 4.15195 10.035C3.98086 10.035 3.82852 10.0063 3.69492 9.94883C3.5625 9.89141 3.4582 9.80293 3.38203 9.6834C3.30703 9.56387 3.26953 9.41152 3.26953 9.22637H3.88828C3.88828 9.31309 3.89824 9.38105 3.91816 9.43027C3.93809 9.47832 3.96738 9.5123 4.00605 9.53223C4.0459 9.55098 4.09453 9.56035 4.15195 9.56035C4.2082 9.56035 4.25566 9.54629 4.29434 9.51816C4.33418 9.48887 4.36465 9.44727 4.38574 9.39336C4.40684 9.33828 4.41738 9.27266 4.41738 9.19648Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4312
+
4313
+ var img$d = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%236155E9'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='KML'%3e%3cpath id='Vector_3' d='M11.7408 9.5252V9.9998H10.4471V9.5252H11.7408ZM10.6668 7.44043V9.9998H10.0498V7.44043H10.6668Z' fill='white'/%3e%3cpath id='Vector_4' d='M7.09785 7.44043H7.60059L8.17188 9.22109L8.74316 7.44043H9.2459L8.37578 9.9998H7.96797L7.09785 7.44043ZM6.79199 7.44043H7.3123L7.40898 9.40215V9.9998H6.79199V7.44043ZM9.03145 7.44043H9.55352V9.9998H8.93477V9.40215L9.03145 7.44043Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.00664 7.44043V9.9998H4.38965V7.44043H5.00664ZM6.53418 7.44043L5.54277 8.7377L4.9627 9.37227L4.8502 8.80625L5.22109 8.24375L5.77305 7.44043H6.53418ZM5.80469 9.9998L5.14375 8.84668L5.62363 8.49336L6.53418 9.9998H5.80469Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4314
+
4315
+ var img$c = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23EC473F'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PDF'%3e%3cpath id='Vector_3' d='M10.2654 7.44043V9.9998H9.64844V7.44043H10.2654ZM11.2604 8.50566V8.98027H10.0896V8.50566H11.2604ZM11.3605 7.44043V7.9168H10.0896V7.44043H11.3605Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.04922 9.9998H7.48145L7.48496 9.5252H8.04922C8.16641 9.5252 8.26543 9.49707 8.34629 9.44082C8.42832 9.38457 8.49043 9.30078 8.53262 9.18945C8.57598 9.07695 8.59766 8.93867 8.59766 8.77461V8.66387C8.59766 8.54082 8.58535 8.43301 8.56074 8.34043C8.5373 8.24668 8.50215 8.16875 8.45527 8.10664C8.4084 8.04336 8.3498 7.9959 8.27949 7.96426C8.21035 7.93262 8.13066 7.9168 8.04043 7.9168H7.4709V7.44043H8.04043C8.21387 7.44043 8.37266 7.47031 8.5168 7.53008C8.66211 7.58867 8.7875 7.67305 8.89297 7.7832C8.99961 7.89219 9.08164 8.02168 9.13906 8.17168C9.19766 8.32051 9.22695 8.48574 9.22695 8.66738V8.77461C9.22695 8.95508 9.19766 9.12031 9.13906 9.27031C9.08164 9.42031 9.0002 9.5498 8.89473 9.65879C8.78926 9.76777 8.66445 9.85215 8.52031 9.91191C8.37734 9.97051 8.22031 9.9998 8.04922 9.9998ZM7.83477 7.44043V9.9998H7.21777V7.44043H7.83477Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.79375 9.13145H5.15742V8.65508H5.79375C5.88047 8.65508 5.95078 8.64043 6.00469 8.61113C6.05859 8.58184 6.09785 8.54141 6.12246 8.48984C6.14824 8.43711 6.16113 8.37793 6.16113 8.3123C6.16113 8.24199 6.14824 8.17695 6.12246 8.11719C6.09785 8.05742 6.05859 8.00937 6.00469 7.97305C5.95078 7.93555 5.88047 7.9168 5.79375 7.9168H5.38945V9.9998H4.77246V7.44043H5.79375C5.99883 7.44043 6.1752 7.47793 6.32285 7.55293C6.47168 7.62793 6.58594 7.73105 6.66562 7.8623C6.74531 7.99238 6.78516 8.14121 6.78516 8.30879C6.78516 8.47402 6.74531 8.61816 6.66562 8.74121C6.58594 8.86426 6.47168 8.96035 6.32285 9.02949C6.1752 9.09746 5.99883 9.13145 5.79375 9.13145Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4316
+
4317
+ var img$b = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%239381FF'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PNG'%3e%3cpath id='Vector_3' d='M11.5977 8.63301V9.68418C11.5543 9.73223 11.4875 9.78379 11.3973 9.83887C11.3082 9.89277 11.1957 9.93906 11.0598 9.97773C10.9238 10.0164 10.7639 10.0357 10.5799 10.0357C10.41 10.0357 10.2559 10.0088 10.1176 9.95488C9.9793 9.8998 9.86035 9.81953 9.76074 9.71406C9.6623 9.60742 9.58613 9.47734 9.53223 9.32383C9.47949 9.16914 9.45312 8.99219 9.45312 8.79297V8.65059C9.45312 8.45137 9.48008 8.27441 9.53398 8.11973C9.58789 7.96504 9.66348 7.83496 9.76074 7.72949C9.85918 7.62285 9.97461 7.54199 10.107 7.48691C10.2406 7.43184 10.3871 7.4043 10.5465 7.4043C10.782 7.4043 10.9736 7.4418 11.1213 7.5168C11.2689 7.59063 11.3809 7.69316 11.457 7.82441C11.5332 7.95449 11.5795 8.10508 11.5959 8.27617H11.0035C10.9918 8.1918 10.9695 8.12031 10.9367 8.06172C10.9051 8.00195 10.8594 7.95684 10.7996 7.92637C10.7398 7.89473 10.6625 7.87891 10.5676 7.87891C10.4937 7.87891 10.4264 7.89473 10.3654 7.92637C10.3057 7.95801 10.2547 8.00605 10.2125 8.07051C10.1703 8.13379 10.1375 8.21348 10.1141 8.30957C10.0918 8.40566 10.0807 8.51816 10.0807 8.64707V8.79297C10.0807 8.9207 10.0912 9.03262 10.1123 9.12871C10.1346 9.2248 10.1674 9.30508 10.2107 9.36953C10.2553 9.43281 10.3115 9.48086 10.3795 9.51367C10.4486 9.54531 10.5301 9.56113 10.6238 9.56113C10.6895 9.56113 10.7457 9.55586 10.7926 9.54531C10.8395 9.53359 10.8781 9.51953 10.9086 9.50312C10.9402 9.48555 10.9643 9.46914 10.9807 9.45391V9.05664H10.5518V8.63301H11.5977Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.01445 7.44141V10.0008H8.39922L7.49395 8.4082V10.0008H6.87695V7.44141H7.49395L8.39922 9.03398V7.44141H9.01445Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.45293 9.13242H4.8166V8.65605H5.45293C5.53965 8.65605 5.60996 8.64141 5.66387 8.61211C5.71777 8.58281 5.75703 8.54238 5.78164 8.49082C5.80742 8.43809 5.82031 8.37891 5.82031 8.31328C5.82031 8.24297 5.80742 8.17793 5.78164 8.11816C5.75703 8.0584 5.71777 8.01035 5.66387 7.97402C5.60996 7.93652 5.53965 7.91777 5.45293 7.91777H5.04863V10.0008H4.43164V7.44141H5.45293C5.65801 7.44141 5.83437 7.47891 5.98203 7.55391C6.13086 7.62891 6.24512 7.73203 6.3248 7.86328C6.40449 7.99336 6.44434 8.14219 6.44434 8.30977C6.44434 8.475 6.40449 8.61914 6.3248 8.74219C6.24512 8.86523 6.13086 8.96133 5.98203 9.03047C5.83437 9.09844 5.65801 9.13242 5.45293 9.13242Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4318
+
4319
+ var img$a = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23CA4424'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PPTX'%3e%3cpath id='Vector_3' d='M11.2125 7.44043L11.6309 8.29121L12.0492 7.44043H12.7523L12.0387 8.70957L12.7717 9.9998H12.0615L11.6309 9.1332L11.2002 9.9998H10.4883L11.223 8.70957L10.5076 7.44043H11.2125Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.54414 7.44043V9.9998H8.92715V7.44043H9.54414ZM10.3141 7.44043V7.9168H8.1748V7.44043H10.3141Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.88164 9.13145H6.24531V8.65508H6.88164C6.96836 8.65508 7.03867 8.64043 7.09258 8.61113C7.14648 8.58184 7.18574 8.54141 7.21035 8.48984C7.23613 8.43711 7.24902 8.37793 7.24902 8.3123C7.24902 8.24199 7.23613 8.17695 7.21035 8.11719C7.18574 8.05742 7.14648 8.00937 7.09258 7.97305C7.03867 7.93555 6.96836 7.9168 6.88164 7.9168H6.47734V9.9998H5.86035V7.44043H6.88164C7.08672 7.44043 7.26309 7.47793 7.41074 7.55293C7.55957 7.62793 7.67383 7.73105 7.75352 7.8623C7.8332 7.99238 7.87305 8.14121 7.87305 8.30879C7.87305 8.47402 7.8332 8.61816 7.75352 8.74121C7.67383 8.86426 7.55957 8.96035 7.41074 9.02949C7.26309 9.09746 7.08672 9.13145 6.88164 9.13145Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.43633 9.13145H3.8V8.65508H4.43633C4.52305 8.65508 4.59336 8.64043 4.64727 8.61113C4.70117 8.58184 4.74043 8.54141 4.76504 8.48984C4.79082 8.43711 4.80371 8.37793 4.80371 8.3123C4.80371 8.24199 4.79082 8.17695 4.76504 8.11719C4.74043 8.05742 4.70117 8.00937 4.64727 7.97305C4.59336 7.93555 4.52305 7.9168 4.43633 7.9168H4.03203V9.9998H3.41504V7.44043H4.43633C4.64141 7.44043 4.81777 7.47793 4.96543 7.55293C5.11426 7.62793 5.22852 7.73105 5.3082 7.8623C5.38789 7.99238 5.42773 8.14121 5.42773 8.30879C5.42773 8.47402 5.38789 8.61816 5.3082 8.74121C5.22852 8.86426 5.11426 8.96035 4.96543 9.02949C4.81777 9.09746 4.64141 9.13145 4.43633 9.13145Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4320
+
4321
+ var img$9 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%233674A5'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PY'%3e%3cpath id='Vector_3' d='M8.75215 7.44141L9.22324 8.55234L9.69609 7.44141H10.3605L9.53789 9.08145V10.0008H8.91035V9.08145L8.08594 7.44141H8.75215Z' fill='%23FED341'/%3e%3cpath id='Vector_4' d='M6.86406 9.13242H6.22773V8.65605H6.86406C6.95078 8.65605 7.02109 8.64141 7.075 8.61211C7.12891 8.58281 7.16816 8.54238 7.19277 8.49082C7.21855 8.43809 7.23145 8.37891 7.23145 8.31328C7.23145 8.24297 7.21855 8.17793 7.19277 8.11816C7.16816 8.0584 7.12891 8.01035 7.075 7.97402C7.02109 7.93652 6.95078 7.91777 6.86406 7.91777H6.45977V10.0008H5.84277V7.44141H6.86406C7.06914 7.44141 7.24551 7.47891 7.39316 7.55391C7.54199 7.62891 7.65625 7.73203 7.73594 7.86328C7.81563 7.99336 7.85547 8.14219 7.85547 8.30977C7.85547 8.475 7.81563 8.61914 7.73594 8.74219C7.65625 8.86523 7.54199 8.96133 7.39316 9.03047C7.24551 9.09844 7.06914 9.13242 6.86406 9.13242Z' fill='%23FED341'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4322
+
4323
+ var img$8 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23C0D155'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='SHP'%3e%3cpath id='Vector_3' d='M10.5359 9.13145H9.89961V8.65508H10.5359C10.6227 8.65508 10.693 8.64043 10.7469 8.61113C10.8008 8.58184 10.84 8.54141 10.8646 8.48984C10.8904 8.43711 10.9033 8.37793 10.9033 8.3123C10.9033 8.24199 10.8904 8.17695 10.8646 8.11719C10.84 8.05742 10.8008 8.00937 10.7469 7.97305C10.693 7.93555 10.6227 7.9168 10.5359 7.9168H10.1316V9.9998H9.51465V7.44043H10.5359C10.741 7.44043 10.9174 7.47793 11.065 7.55293C11.2139 7.62793 11.3281 7.73105 11.4078 7.8623C11.4875 7.99238 11.5273 8.14121 11.5273 8.30879C11.5273 8.47402 11.4875 8.61816 11.4078 8.74121C11.3281 8.86426 11.2139 8.96035 11.065 9.02949C10.9174 9.09746 10.741 9.13145 10.5359 9.13145Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.6082 8.45645V8.93105H7.29512V8.45645H8.6082ZM7.50078 7.44043V9.9998H6.88379V7.44043H7.50078ZM9.02305 7.44043V9.9998H8.40781V7.44043H9.02305Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.84824 9.31953C5.84824 9.27969 5.84238 9.24395 5.83066 9.2123C5.81895 9.17949 5.79727 9.14902 5.76562 9.1209C5.73398 9.09277 5.68828 9.06465 5.62852 9.03652C5.56992 9.00723 5.49258 8.97676 5.39648 8.94512C5.28398 8.90762 5.17559 8.86543 5.07129 8.81855C4.96699 8.77051 4.87383 8.71484 4.7918 8.65156C4.70977 8.58711 4.64473 8.51211 4.59668 8.42656C4.54863 8.33984 4.52461 8.23906 4.52461 8.12422C4.52461 8.01406 4.54922 7.91504 4.59844 7.82715C4.64766 7.73809 4.71621 7.6625 4.8041 7.60039C4.89316 7.53711 4.99746 7.48906 5.11699 7.45625C5.23652 7.42227 5.36719 7.40527 5.50898 7.40527C5.69648 7.40527 5.86172 7.43809 6.00469 7.50371C6.14883 7.56816 6.26133 7.66016 6.34219 7.77969C6.42422 7.89805 6.46523 8.03809 6.46523 8.1998H5.85176C5.85176 8.13535 5.83828 8.07852 5.81133 8.0293C5.78555 7.98008 5.74629 7.94141 5.69355 7.91328C5.64082 7.88516 5.57461 7.87109 5.49492 7.87109C5.41758 7.87109 5.35254 7.88281 5.2998 7.90625C5.24707 7.92969 5.20723 7.96133 5.18027 8.00117C5.15332 8.03984 5.13984 8.08262 5.13984 8.12949C5.13984 8.16816 5.15039 8.20332 5.17148 8.23496C5.19375 8.26543 5.2248 8.29414 5.26465 8.32109C5.30566 8.34805 5.35488 8.37383 5.4123 8.39844C5.4709 8.42305 5.53652 8.44707 5.60918 8.47051C5.74512 8.51387 5.86582 8.5625 5.97129 8.61641C6.07793 8.66914 6.16758 8.72949 6.24023 8.79746C6.31406 8.86426 6.36973 8.94043 6.40723 9.02598C6.4459 9.11152 6.46523 9.2082 6.46523 9.31602C6.46523 9.43086 6.44297 9.53281 6.39844 9.62187C6.35391 9.71094 6.29004 9.78652 6.20684 9.84863C6.12363 9.90957 6.02402 9.95586 5.90801 9.9875C5.79199 10.0191 5.6625 10.035 5.51953 10.035C5.38828 10.035 5.25879 10.0186 5.13105 9.98574C5.00449 9.95176 4.88965 9.9002 4.78652 9.83105C4.6834 9.76074 4.60078 9.67109 4.53867 9.56211C4.47773 9.45195 4.44727 9.32129 4.44727 9.17012H5.06602C5.06602 9.24512 5.07598 9.3084 5.0959 9.35996C5.11582 9.41152 5.14512 9.45312 5.18379 9.48477C5.22246 9.51523 5.26992 9.5375 5.32617 9.55156C5.38242 9.56445 5.44687 9.5709 5.51953 9.5709C5.59805 9.5709 5.66133 9.55977 5.70937 9.5375C5.75742 9.51406 5.79258 9.48359 5.81484 9.44609C5.83711 9.40742 5.84824 9.36523 5.84824 9.31953Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4324
+
4325
+ var img$7 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23DDE3EA'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='TXT'%3e%3cpath id='Vector_3' d='M10.6838 7.44043V9.9998H10.0668V7.44043H10.6838ZM11.4537 7.44043V7.9168H9.31445V7.44043H11.4537Z' fill='black'/%3e%3cpath id='Vector_4' d='M7.58164 7.44043L8 8.29121L8.41836 7.44043H9.12148L8.40781 8.70957L9.14082 9.9998H8.43066L8 9.1332L7.56934 9.9998H6.85742L7.59219 8.70957L6.87676 7.44043H7.58164Z' fill='black'/%3e%3cpath id='Vector_5' d='M5.91328 7.44043V9.9998H5.29629V7.44043H5.91328ZM6.6832 7.44043V7.9168H4.54395V7.44043H6.6832Z' fill='black'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4326
+
4327
+ var img$6 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%2341A246'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='XLSX'%3e%3cpath id='Vector_3' d='M10.983 7.44043L11.4014 8.29121L11.8197 7.44043H12.5229L11.8092 8.70957L12.5422 9.9998H11.832L11.4014 9.1332L10.9707 9.9998H10.2588L10.9936 8.70957L10.2781 7.44043H10.983Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.41172 9.31953C9.41172 9.27969 9.40586 9.24395 9.39414 9.2123C9.38242 9.17949 9.36074 9.14902 9.3291 9.1209C9.29746 9.09277 9.25176 9.06465 9.19199 9.03652C9.1334 9.00723 9.05605 8.97676 8.95996 8.94512C8.84746 8.90762 8.73906 8.86543 8.63477 8.81855C8.53047 8.77051 8.4373 8.71484 8.35527 8.65156C8.27324 8.58711 8.2082 8.51211 8.16016 8.42656C8.11211 8.33984 8.08809 8.23906 8.08809 8.12422C8.08809 8.01406 8.1127 7.91504 8.16191 7.82715C8.21113 7.73809 8.27969 7.6625 8.36758 7.60039C8.45664 7.53711 8.56094 7.48906 8.68047 7.45625C8.8 7.42227 8.93066 7.40527 9.07246 7.40527C9.25996 7.40527 9.4252 7.43809 9.56816 7.50371C9.7123 7.56816 9.8248 7.66016 9.90566 7.77969C9.9877 7.89805 10.0287 8.03809 10.0287 8.1998H9.41523C9.41523 8.13535 9.40176 8.07852 9.3748 8.0293C9.34902 7.98008 9.30977 7.94141 9.25703 7.91328C9.2043 7.88516 9.13809 7.87109 9.0584 7.87109C8.98105 7.87109 8.91602 7.88281 8.86328 7.90625C8.81055 7.92969 8.7707 7.96133 8.74375 8.00117C8.7168 8.03984 8.70332 8.08262 8.70332 8.12949C8.70332 8.16816 8.71387 8.20332 8.73496 8.23496C8.75723 8.26543 8.78828 8.29414 8.82812 8.32109C8.86914 8.34805 8.91836 8.37383 8.97578 8.39844C9.03437 8.42305 9.1 8.44707 9.17266 8.47051C9.30859 8.51387 9.4293 8.5625 9.53477 8.61641C9.64141 8.66914 9.73105 8.72949 9.80371 8.79746C9.87754 8.86426 9.9332 8.94043 9.9707 9.02598C10.0094 9.11152 10.0287 9.2082 10.0287 9.31602C10.0287 9.43086 10.0064 9.53281 9.96191 9.62187C9.91738 9.71094 9.85352 9.78652 9.77031 9.84863C9.68711 9.90957 9.5875 9.95586 9.47148 9.9875C9.35547 10.0191 9.22598 10.035 9.08301 10.035C8.95176 10.035 8.82227 10.0186 8.69453 9.98574C8.56797 9.95176 8.45312 9.9002 8.35 9.83105C8.24687 9.76074 8.16426 9.67109 8.10215 9.56211C8.04121 9.45195 8.01074 9.32129 8.01074 9.17012H8.62949C8.62949 9.24512 8.63945 9.3084 8.65937 9.35996C8.6793 9.41152 8.70859 9.45312 8.74727 9.48477C8.78594 9.51523 8.8334 9.5375 8.88965 9.55156C8.9459 9.56445 9.01035 9.5709 9.08301 9.5709C9.16152 9.5709 9.2248 9.55977 9.27285 9.5375C9.3209 9.51406 9.35605 9.48359 9.37832 9.44609C9.40059 9.40742 9.41172 9.36523 9.41172 9.31953Z' fill='white'/%3e%3cpath id='Vector_5' d='M7.73301 9.5252V9.9998H6.43926V9.5252H7.73301ZM6.65898 7.44043V9.9998H6.04199V7.44043H6.65898Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.1793 7.44043L4.59766 8.29121L5.01602 7.44043H5.71914L5.00547 8.70957L5.73848 9.9998H5.02832L4.59766 9.1332L4.16699 9.9998H3.45508L4.18984 8.70957L3.47441 7.44043H4.1793Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4328
+
4329
+ var img$5 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23F4BB0A'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='ZIP'%3e%3cpath id='Vector_3' d='M9.78789 9.13145H9.15156V8.65508H9.78789C9.87461 8.65508 9.94492 8.64043 9.99883 8.61113C10.0527 8.58184 10.092 8.54141 10.1166 8.48984C10.1424 8.43711 10.1553 8.37793 10.1553 8.3123C10.1553 8.24199 10.1424 8.17695 10.1166 8.11719C10.092 8.05742 10.0527 8.00937 9.99883 7.97305C9.94492 7.93555 9.87461 7.9168 9.78789 7.9168H9.38359V9.9998H8.7666V7.44043H9.78789C9.99297 7.44043 10.1693 7.47793 10.317 7.55293C10.4658 7.62793 10.5801 7.73105 10.6598 7.8623C10.7395 7.99238 10.7793 8.14121 10.7793 8.30879C10.7793 8.47402 10.7395 8.61816 10.6598 8.74121C10.5801 8.86426 10.4658 8.96035 10.317 9.02949C10.1693 9.09746 9.99297 9.13145 9.78789 9.13145Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.23242 7.44043V9.9998H7.61719V7.44043H8.23242Z' fill='white'/%3e%3cpath id='Vector_5' d='M7.19551 9.5252V9.9998H5.34277V9.5252H7.19551ZM7.1832 7.75684L5.64863 9.9998H5.20215V9.67461L6.7543 7.44043H7.1832V7.75684ZM6.98457 7.44043V7.9168H5.19336V7.44043H6.98457Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
4330
+
4331
+ const getFileTypeIcon = (fileType) => {
4332
+ switch (fileType) {
4333
+ case FileType.CSV:
4334
+ return img$i;
4335
+ case FileType.XLSX:
4336
+ return img$6;
4337
+ case FileType.DOCX:
4338
+ return img$h;
4339
+ case FileType.PDF:
4340
+ return img$c;
4341
+ case FileType.JSON:
4342
+ return img$e;
4343
+ case FileType.KML:
4344
+ return img$d;
4345
+ case FileType.PPTX:
4346
+ return img$a;
4347
+ case FileType.SHP:
4348
+ return img$8;
4349
+ case FileType.TXT:
4350
+ return img$7;
4351
+ case FileType.ZIP:
4352
+ return img$5;
4353
+ case FileType.IMAGE:
4354
+ case FileType.JPEG:
4355
+ return img$g;
4356
+ case FileType.JPG:
4357
+ return img$f;
4358
+ case FileType.PNG:
4359
+ return img$b;
4360
+ case FileType.PYTHON:
4361
+ return img$9;
4362
+ default:
4363
+ return img$j;
4364
+ }
4365
+ };
4366
+
4367
+ const useAttachmentPreviewImages = ({ items, active, }) => {
4368
+ const { api } = useGlobalContext();
4369
+ const [blobUrls, setBlobUrls] = React.useState({});
4370
+ const [failedLinks, setFailedLinks] = React.useState({});
4371
+ const inFlightRef = React.useRef(new Set());
4372
+ const blobUrlsRef = React.useRef(blobUrls);
4373
+ blobUrlsRef.current = blobUrls;
4374
+ React.useEffect(() => {
4375
+ if (!active || !api?.catalog?.getFile)
4376
+ return;
4377
+ items.forEach(item => {
4378
+ const fileType = getFileType(item.mimeType, item.name);
4379
+ const isImage = IMAGE_FILE_TYPES.includes(fileType);
4380
+ if (!isImage || item.isExternal)
4381
+ return;
4382
+ if (blobUrlsRef.current[item.link] || inFlightRef.current.has(item.link))
4383
+ return;
4384
+ inFlightRef.current.add(item.link);
4385
+ api.catalog
4386
+ .getFile(item.link)
4387
+ .then(blob => {
4388
+ const objectUrl = URL.createObjectURL(blob);
4389
+ setBlobUrls(prev => ({ ...prev, [item.link]: objectUrl }));
4390
+ })
4391
+ .catch(() => {
4392
+ setFailedLinks(prev => (prev[item.link] ? prev : { ...prev, [item.link]: true }));
4393
+ })
4394
+ .finally(() => {
4395
+ inFlightRef.current.delete(item.link);
4396
+ });
4397
+ });
4398
+ }, [active, api, items]);
4399
+ React.useEffect(() => () => {
4400
+ Object.values(blobUrlsRef.current).forEach(URL.revokeObjectURL);
4401
+ }, []);
4402
+ return React.useMemo(() => items.map(item => {
4403
+ const fileType = getFileType(item.mimeType, item.name);
4404
+ const isImage = IMAGE_FILE_TYPES.includes(fileType);
4405
+ const fileName = item.name;
4406
+ if (!isImage)
4407
+ return { src: getFileTypeIcon(fileType), fileName };
4408
+ if (item.isExternal)
4409
+ return { src: item.link, fileName };
4410
+ const hasError = !!failedLinks[item.link];
4411
+ const blobUrl = blobUrls[item.link];
4412
+ return {
4413
+ src: blobUrl ?? "",
4414
+ fileName,
4415
+ hasError,
4416
+ isLoading: !hasError && !blobUrl,
4417
+ };
4418
+ }), [items, blobUrls, failedLinks]);
4419
+ };
4420
+
4421
+ const useAutoCompleteControl = (items) => {
4422
+ const [value, setValue] = React.useState("");
4423
+ const [options, setOptions] = React.useState([]);
4424
+ const staticOptions = React.useMemo(() => (items ?? [])
4425
+ .filter(Boolean)
4426
+ .map(item => ({ text: String(item), value: String(item) })), [items]);
4427
+ const onChange = React.useCallback((newValue) => setValue(newValue), []);
4428
+ return {
4429
+ value,
4430
+ setValue,
4431
+ onChange,
4432
+ options: staticOptions.length ? staticOptions : options,
4433
+ setOptions,
4434
+ };
4435
+ };
4436
+
4437
+ const eqlParametersToPayload = (parameters) => Object.keys(parameters).reduce((result, paramName) => ({
4438
+ ...result,
4439
+ [paramName]: parameters[paramName].default,
4440
+ }), {});
4441
+
4442
+ const addDataSource = (dashboardConfiguration, pageIndex, query, additional) => {
4443
+ const newConfig = JSON.parse(JSON.stringify(dashboardConfiguration));
4444
+ if (!newConfig.children[0].children[pageIndex].dataSources) {
4445
+ newConfig.children[0].children[pageIndex].dataSources = [];
4446
+ }
4447
+ const freeId = newConfig.children[0].children[pageIndex].dataSources.length + 1;
4448
+ const parameters = eqlParametersToPayload(additional.parameters);
4449
+ newConfig.children[0].children[pageIndex].dataSources.push({
4450
+ name: `datasource_${freeId}`,
4451
+ query,
4452
+ parameters,
4453
+ offset: 0,
4454
+ limit: DEFAULT_DATA_SOURCE_LIMIT,
4455
+ });
4456
+ return newConfig.children;
4457
+ };
4458
+
4459
+ const addDataSources = (dashboardConfiguration, pageIndex, layerNames) => {
4460
+ const newConfig = JSON.parse(JSON.stringify(dashboardConfiguration));
4461
+ if (!newConfig.children[0].children[pageIndex].dataSources) {
4462
+ newConfig.children[0].children[pageIndex].dataSources = [];
4463
+ }
4464
+ layerNames.forEach(layerName => {
4465
+ newConfig.children[0].children[pageIndex].dataSources.push({
4466
+ name: layerName.split(".")[1],
4467
+ layerName,
4468
+ query: "",
4469
+ parameters: {},
4470
+ });
4471
+ });
4472
+ return newConfig.children;
4473
+ };
4474
+
4475
+ const getConfigFilter = (filterName, configFilters) => configFilters?.find(({ name }) => name === filterName);
4476
+
4477
+ const getDataSource = (dataSourceName, dataSources) => dataSources?.find(({ name }) => name === dataSourceName);
4478
+
4479
+ const getDataSourceFilterValue = ({ filterName, filterProp, attributeAlias, dataSource, selectedFilters, }) => {
4480
+ if (lodash.isNil(selectedFilters[filterName]))
4481
+ return null;
4482
+ const feature = dataSource?.features?.find(({ properties }) => properties[attributeAlias] ===
4483
+ (Array.isArray(selectedFilters[filterName].value)
4484
+ ? selectedFilters[filterName].value[0]
4485
+ : selectedFilters[filterName].value));
4486
+ return feature?.properties?.[filterProp];
4487
+ };
4488
+
4489
+ const getSelectedFilterValue = (filterName, selectedFilters, defaultValue) => {
4490
+ return ((!lodash.isNil(selectedFilters?.[filterName]?.value) &&
4491
+ Array.isArray(defaultValue) &&
4492
+ !Array.isArray(selectedFilters[filterName].value)
4493
+ ? [selectedFilters[filterName].value]
4494
+ : selectedFilters?.[filterName]?.value) ?? defaultValue);
4495
+ };
4496
+
4497
+ const applyQueryFilters = ({ parameters: configParameters, filters: configFilters, selectedFilters, geometry, attributes, layerInfo, dataSources, projectDataSources, }) => {
4498
+ if (!configParameters) {
4499
+ return {};
4500
+ }
4501
+ return Object.keys(configParameters).reduce((result, key) => {
4502
+ if (typeof configParameters[key] === "string" && configParameters[key].startsWith(PROVIDER_PREFIX)) {
4503
+ const raw = configParameters[key].slice(PROVIDER_PREFIX.length);
4504
+ const [provider, layerName, fieldName] = raw.split(":");
4505
+ if (provider === exports.ProviderPrefix.Card && fieldName && layerInfo.name === layerName && attributes) {
4506
+ const attribute = attributes.find(({ attributeName }) => attributeName === fieldName);
4507
+ const cardValue = attribute?.value ?? null;
4508
+ if (lodash.isNil(cardValue))
4509
+ return result;
4510
+ return { ...result, [key]: cardValue };
4511
+ }
4512
+ if (provider === exports.ProviderPrefix.Left && layerName && fieldName && projectDataSources?.length) {
4513
+ const dataSource = projectDataSources.find(({ layerName: name }) => name === layerName);
4514
+ const leftValue = dataSource?.features?.[0]?.properties?.[fieldName] ?? null;
4515
+ if (lodash.isNil(leftValue))
4516
+ return result;
4517
+ return { ...result, [key]: leftValue };
4518
+ }
4519
+ return result;
4520
+ }
4521
+ if (typeof configParameters[key] === "string" && configParameters[key].includes("{") && attributes?.length) {
4522
+ const exactAttr = attributes.find(({ attributeName }) => configParameters[key] === `{${attributeName}}`);
4523
+ if (exactAttr) {
4524
+ return { ...result, [key]: exactAttr.value ?? "" };
4525
+ }
4526
+ let interpolated = configParameters[key];
4527
+ attributes.forEach(({ attributeName, value: attrValue }) => {
4528
+ interpolated = interpolated.replace(new RegExp(`\\{${attributeName}\\}`, "g"), attrValue?.toString() ?? "");
4529
+ });
4530
+ return { ...result, [key]: interpolated };
4531
+ }
4532
+ if (typeof configParameters[key] !== "string" || !configParameters[key].startsWith("%")) {
4533
+ return {
4534
+ ...result,
4535
+ [key]: configParameters[key],
4536
+ };
4537
+ }
4538
+ const filterFullName = configParameters[key].replace("%", "");
4539
+ const [filterName, filterProp] = filterFullName.includes(".") ? filterFullName.split(".") : [filterFullName, null];
4540
+ const { defaultValue, relatedDataSource, attributeAlias } = getConfigFilter(filterName, configFilters) || {};
4541
+ if (filterName === "geometry" && geometry && !geometry.includes("()") && geometry.endsWith(")")) {
4542
+ return {
4543
+ ...result,
4544
+ [key]: geometry,
4545
+ };
4546
+ }
4547
+ if (configParameters[key].endsWith(".max")) {
4548
+ return {
4549
+ ...result,
4550
+ [key]: selectedFilters?.[filterName]?.max ?? (Array.isArray(defaultValue) ? defaultValue[1] : defaultValue),
4551
+ };
4552
+ }
4553
+ if (configParameters[key].endsWith(".min")) {
4554
+ return {
4555
+ ...result,
4556
+ [key]: selectedFilters?.[filterName]?.min ?? (Array.isArray(defaultValue) ? defaultValue[0] : defaultValue),
4557
+ };
4558
+ }
4559
+ if (configParameters[key].includes(".")) {
4560
+ return {
4561
+ ...result,
4562
+ [key]: getDataSourceFilterValue({
4563
+ filterName,
4564
+ filterProp,
4565
+ selectedFilters,
4566
+ attributeAlias,
4567
+ dataSource: getDataSource(relatedDataSource, dataSources),
4568
+ }) ?? defaultValue,
4569
+ };
4570
+ }
4571
+ const value = getSelectedFilterValue(filterName, selectedFilters, defaultValue);
4572
+ if (lodash.isNil(value)) {
4573
+ return result;
4574
+ }
4575
+ return {
4084
4576
  ...result,
4085
4577
  [key]: value,
4086
4578
  };
@@ -4533,158 +5025,6 @@ const customStyles = [
4533
5025
  },
4534
5026
  ];
4535
5027
 
4536
- const DashboardContext = React.createContext({});
4537
- const DashboardProvider = React.memo(({ children, ...props }) => {
4538
- return jsxRuntime.jsx(DashboardContext.Provider, { value: props, children: children });
4539
- });
4540
-
4541
- const FeatureCardContext = React.createContext({});
4542
- const FeatureCardProvider = React.memo(({ children, ...props }) => {
4543
- return jsxRuntime.jsx(FeatureCardContext.Provider, { value: props, children: children });
4544
- });
4545
-
4546
- const GlobalContext = React.createContext({});
4547
- const GlobalProvider = React.memo(({ children, ...props }) => {
4548
- return jsxRuntime.jsx(GlobalContext.Provider, { value: props, children: children });
4549
- });
4550
-
4551
- const MapContext = React.createContext({});
4552
-
4553
- const MapProvider = ({ basemapItems, defaultBasemap, children }) => {
4554
- const map = React.useRef();
4555
- const draw = React.useRef();
4556
- const [loaded, setLoaded] = React.useState(false);
4557
- const [basemapName, setBasemapName] = React.useState(defaultBasemap);
4558
- return (jsxRuntime.jsx(MapContext.Provider, { value: {
4559
- map,
4560
- draw,
4561
- loaded,
4562
- setLoaded,
4563
- basemapItems,
4564
- basemapName,
4565
- setBasemapName,
4566
- defaultBasemap,
4567
- }, children: children }));
4568
- };
4569
-
4570
- exports.BaseMapTheme = void 0;
4571
- (function (BaseMapTheme) {
4572
- BaseMapTheme["Light"] = "light";
4573
- BaseMapTheme["Dark"] = "dark";
4574
- })(exports.BaseMapTheme || (exports.BaseMapTheme = {}));
4575
-
4576
- const ServerNotificationsContext = React.createContext({});
4577
-
4578
- const useServerNotifications = (url, initialized, apiClient) => {
4579
- const hubConnection = React.useRef(null);
4580
- const [connection, setConnection] = React.useState(null);
4581
- const subscribeNotifications = React.useCallback(() => {
4582
- if (!connection || connection.state !== "Connected") {
4583
- return;
4584
- }
4585
- connection
4586
- .invoke("SubscribeNotifications", [])
4587
- .then(() => console.info("Подписка `SubscribeNotifications` оформлена"))
4588
- .catch(err => console.info("Ошибка подписки `SubscribeNotifications`:", err));
4589
- }, [connection]);
4590
- React.useEffect(() => {
4591
- if (!initialized) {
4592
- return;
4593
- }
4594
- hubConnection.current = new signalr.HubConnectionBuilder()
4595
- .withUrl(`${url}?clientId=${api.generateId()}`, {
4596
- withCredentials: true,
4597
- skipNegotiation: true,
4598
- transport: signalr.HttpTransportType.WebSockets,
4599
- accessTokenFactory: async () => {
4600
- let accessToken = window.localStorage.getItem(api.STORAGE_TOKEN_KEY) || "";
4601
- const { exp } = api.parseJwt(accessToken);
4602
- const currentTime = new Date().getTime() / 1000;
4603
- if (currentTime > exp) {
4604
- const refreshToken = window.localStorage.getItem(api.STORAGE_REFRESH_TOKEN_KEY);
4605
- if (refreshToken) {
4606
- const refreshTokenResponse = await apiClient.account.refreshToken({
4607
- refreshToken,
4608
- });
4609
- if (refreshTokenResponse) {
4610
- accessToken = refreshTokenResponse.token;
4611
- window.localStorage.setItem(api.STORAGE_TOKEN_KEY, refreshTokenResponse.token);
4612
- window.localStorage.setItem(api.STORAGE_REFRESH_TOKEN_KEY, refreshTokenResponse.refreshToken);
4613
- }
4614
- }
4615
- else {
4616
- await apiClient.logout();
4617
- }
4618
- }
4619
- return accessToken;
4620
- },
4621
- })
4622
- .withAutomaticReconnect()
4623
- .configureLogging(signalr.LogLevel.Information)
4624
- .build();
4625
- hubConnection.current
4626
- .start()
4627
- .then(() => console.info("Серверные нотификации подключены"))
4628
- .catch(err => console.info("Ошибка:", err))
4629
- .finally(() => setConnection(hubConnection.current));
4630
- }, [initialized]); // eslint-disable-line
4631
- React.useEffect(() => {
4632
- if (!connection || connection.state !== "Connected") {
4633
- return;
4634
- }
4635
- connection.onreconnecting(() => console.info("Переподключение к серверным нотификациям"));
4636
- connection.onreconnected(subscribeNotifications);
4637
- subscribeNotifications();
4638
- }, [connection]);
4639
- return connection;
4640
- };
4641
-
4642
- const ServerNotificationsProvider = ({ url, initialized, apiClient, children }) => {
4643
- const connection = useServerNotifications(url, initialized, apiClient);
4644
- const addSubscription = React.useCallback(async (payload) => {
4645
- if (!connection || connection.state !== "Connected" || !payload) {
4646
- return;
4647
- }
4648
- try {
4649
- const id = await connection.invoke("AddSubscription", payload);
4650
- console.info("Подписка добавлена, id:", id);
4651
- return id;
4652
- }
4653
- catch (err) {
4654
- console.info("Ошибка добавления подписки:", err);
4655
- return Promise.resolve(null);
4656
- }
4657
- }, [connection]);
4658
- const updateSubscription = React.useCallback(async (id, payload) => {
4659
- if (!connection || connection.state !== "Connected" || !id || !payload) {
4660
- return;
4661
- }
4662
- try {
4663
- await connection.invoke("UpdateSubscription", id, payload);
4664
- }
4665
- catch (err) {
4666
- console.info(`Ошибка обновления подписки ${id}:`, err);
4667
- }
4668
- }, [connection]);
4669
- const unsubscribeById = React.useCallback(async (id) => {
4670
- if (!connection || connection.state !== "Connected" || !id) {
4671
- return;
4672
- }
4673
- try {
4674
- await connection.invoke("Unsubscribe", [id]);
4675
- }
4676
- catch (err) {
4677
- console.info(`Ошибка отписки по ${id}:`, err);
4678
- }
4679
- }, [connection]);
4680
- return (jsxRuntime.jsx(ServerNotificationsContext.Provider, { value: {
4681
- connection,
4682
- addSubscription,
4683
- updateSubscription,
4684
- unsubscribeById,
4685
- }, children: children }));
4686
- };
4687
-
4688
5028
  const useMapContext = () => {
4689
5029
  return React.useContext(MapContext);
4690
5030
  };
@@ -5837,6 +6177,24 @@ const getAttributeByName = (name, attributes) => {
5837
6177
  : null;
5838
6178
  };
5839
6179
 
6180
+ /**
6181
+ * Returns a value safe to render as a React child.
6182
+ *
6183
+ * If the input is a non-primitive object (array or plain object) that is NOT
6184
+ * a React element, returns an empty string to prevent the runtime error
6185
+ * "Objects are not valid as a React child" that React throws on such values.
6186
+ *
6187
+ * Use in places where a rendered slot receives a raw attribute value that may
6188
+ * be a structured payload (e.g. an attribute with `subType: Attachments`
6189
+ * exposes its value as `Attachment[]`). React elements and primitives pass
6190
+ * through unchanged, preserving existing rendering behaviour for normal data.
6191
+ */
6192
+ const toRenderableValue = (value) => {
6193
+ if (value && typeof value === "object" && !React.isValidElement(value))
6194
+ return "";
6195
+ return value;
6196
+ };
6197
+
5840
6198
  const formatElementValue = ({ t, value, elementConfig, attributes, wrap, }) => {
5841
6199
  const { id, type, defaultValue, options, style, attributeName, templateName, } = elementConfig || {};
5842
6200
  const attribute = attributeName
@@ -5853,9 +6211,10 @@ const formatElementValue = ({ t, value, elementConfig, attributes, wrap, }) => {
5853
6211
  noUnits,
5854
6212
  })
5855
6213
  : valueOrDefault;
6214
+ const renderableValue = toRenderableValue(resultValue);
5856
6215
  if (!wrap)
5857
- return resultValue;
5858
- return (jsxRuntime.jsxs(React.Fragment, { children: [tagView ? (jsxRuntime.jsx(DashboardChip$1, { "data-id": id, "data-templatename": templateName, style: style, text: resultValue, "$bgColor": bgColor, "$fontColor": fontColor, "$fontSize": fontSize, "$radius": radius })) : (jsxRuntime.jsx(ElementValueWrapper, { "data-id": id, "data-templatename": templateName, style: style, noMargin: noMargin, children: resultValue })), withDivider && jsxRuntime.jsx(uilibGl.Divider, {})] }, id));
6216
+ return renderableValue;
6217
+ return (jsxRuntime.jsxs(React.Fragment, { children: [tagView ? (jsxRuntime.jsx(DashboardChip$1, { "data-id": id, "data-templatename": templateName, style: style, text: renderableValue, "$bgColor": bgColor, "$fontColor": fontColor, "$fontSize": fontSize, "$radius": radius })) : (jsxRuntime.jsx(ElementValueWrapper, { "data-id": id, "data-templatename": templateName, style: style, noMargin: noMargin, children: renderableValue })), withDivider && jsxRuntime.jsx(uilibGl.Divider, {})] }, id));
5859
6218
  };
5860
6219
 
5861
6220
  const getAttributeValue = (element, attributes) => {
@@ -5870,7 +6229,10 @@ const getAttributeValue = (element, attributes) => {
5870
6229
  value = concatAttributes.join(separator || ", ");
5871
6230
  }
5872
6231
  else {
5873
- value = attribute?.value || "";
6232
+ const rawValue = attribute?.value;
6233
+ value = rawValue && typeof rawValue === "object"
6234
+ ? JSON.stringify(rawValue)
6235
+ : (rawValue || "");
5874
6236
  }
5875
6237
  return typeof value === "string" && maxLength && maxLength < value.length ? (jsxRuntime.jsx(TextTrim, { maxLength: maxLength, expandable: expandable, lineBreak: lineBreak, children: value })) : (value);
5876
6238
  };
@@ -6034,8 +6396,7 @@ const SvgContainer$1 = styled.div `
6034
6396
  }
6035
6397
  }
6036
6398
  `;
6037
- const TwoColumnContainerWrapper = styled(uilibGl.Flex) `
6038
- width: 100%;
6399
+ const TwoColumnContainerWrapper = styled(Container) `
6039
6400
  flex-direction: row;
6040
6401
  flex-wrap: nowrap;
6041
6402
  align-items: center;
@@ -6053,44 +6414,6 @@ const TwoColumnContainerWrapper = styled(uilibGl.Flex) `
6053
6414
  }
6054
6415
  `;
6055
6416
 
6056
- const useWidgetContext = (type = exports.WidgetType.Dashboard) => {
6057
- const { toggleLayersVisibility, visibleLayers, projectInfo, updateProject, layerInfos, geometryFilter, dashboardLayers, setDashboardLayer, components: dashboardComponents, selectAttachmentsFromCatalog, config: dashboardConfig, containerIds, pageIndex: projectPageIndex, selectedTabId: projectSelectedTabId, setSelectedTabId: setProjectSelectedTabId, dataSources: projectDataSources, loading: projectLoading, editMode: projectEditMode, filters: projectFilters, changeFilters: projectChangeFilters, expandContainer: projectExpandContainer, expandedContainers: projectExpandedContainers, nextPage: projectNextPage, prevPage: projectPrevPage, changePage: projectChangePage, } = React.useContext(DashboardContext) || {};
6058
- const { layerInfo, attributes, feature, controls, changeControls, closeFeatureCard, config: featureConfig, pageIndex: featurePageIndex, selectedTabId: featureSelectedTabId, setSelectedTabId: setFeatureSelectedTabId, dataSources: featureDataSources, loading: featureLoading, editMode: featureEditMode, filters: featureFilters, changeFilters: featureChangeFilters, expandContainer: featureExpandContainer, expandedContainers: featureExpandedContainers, nextPage: featureNextPage, prevPage: featurePrevPage, changePage: featureChangePage, } = React.useContext(FeatureCardContext) || {};
6059
- return {
6060
- toggleLayersVisibility,
6061
- visibleLayers,
6062
- projectInfo,
6063
- layerInfos,
6064
- updateProject,
6065
- dashboardLayers,
6066
- setDashboardLayer,
6067
- geometryFilter,
6068
- layerInfo,
6069
- attributes,
6070
- feature,
6071
- closeFeatureCard,
6072
- containerIds,
6073
- controls,
6074
- changeControls,
6075
- components: dashboardComponents,
6076
- selectAttachmentsFromCatalog,
6077
- config: type === exports.WidgetType.Dashboard ? dashboardConfig : featureConfig,
6078
- isEditing: type === exports.WidgetType.Dashboard ? projectEditMode : featureEditMode,
6079
- isLoading: type === exports.WidgetType.Dashboard ? projectLoading : featureLoading,
6080
- pageIndex: type === exports.WidgetType.Dashboard ? projectPageIndex || 1 : featurePageIndex || 1,
6081
- filters: type === exports.WidgetType.Dashboard ? projectFilters : featureFilters,
6082
- changeFilters: type === exports.WidgetType.Dashboard ? projectChangeFilters : featureChangeFilters,
6083
- dataSources: type === exports.WidgetType.Dashboard ? projectDataSources : featureDataSources,
6084
- expandContainer: type === exports.WidgetType.Dashboard ? projectExpandContainer : featureExpandContainer,
6085
- expandedContainers: type === exports.WidgetType.Dashboard ? projectExpandedContainers : featureExpandedContainers,
6086
- selectedTabId: type === exports.WidgetType.Dashboard ? projectSelectedTabId : featureSelectedTabId,
6087
- setSelectedTabId: type === exports.WidgetType.Dashboard ? setProjectSelectedTabId : setFeatureSelectedTabId,
6088
- nextPage: type === exports.WidgetType.Dashboard ? projectNextPage : featureNextPage,
6089
- prevPage: type === exports.WidgetType.Dashboard ? projectPrevPage : featurePrevPage,
6090
- changePage: type === exports.WidgetType.Dashboard ? projectChangePage : featureChangePage,
6091
- };
6092
- };
6093
-
6094
6417
  const useRenderContainer = ({ elementConfig, type, renderElement, renderBody, }) => {
6095
6418
  const { attributes } = useWidgetContext(type);
6096
6419
  const { getRenderContainerItem, attributesToRender } = useContainerAttributes({
@@ -6109,7 +6432,6 @@ const useRenderContainer = ({ elementConfig, type, renderElement, renderBody, })
6109
6432
  if (OverrideContainer) {
6110
6433
  const itemConfig = {
6111
6434
  ...elementConfig,
6112
- style: { ...BASE_CONTAINER_STYLE, ...elementConfig.style },
6113
6435
  children: (elementConfig?.children ?? []).map(child => ({
6114
6436
  ...child,
6115
6437
  attributeName: attribute,
@@ -6138,7 +6460,7 @@ const OneColumnContainer = React.memo(({ type, elementConfig, renderElement }) =
6138
6460
  });
6139
6461
 
6140
6462
  const TwoColumnContainer = React.memo(({ elementConfig, type, renderElement }) => {
6141
- const renderBody = React.useCallback(({ id, value, style, hasIcon, hasUnits, render }, attribute) => (jsxRuntime.jsxs(TwoColumnContainerWrapper, { id: id, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxRuntime.jsxs(ContainerAlias, { children: [hasIcon && (jsxRuntime.jsx(ContainerAliasIcon, { children: render({ id: "icon" }) })), render({ id: "alias" }), render({ id: "tooltip" }), render({ id: "modal" })] }), jsxRuntime.jsxs(ContainerValue, { big: true, children: [value, hasUnits && (jsxRuntime.jsx(ContainerUnits, { children: render({ id: "units" }) }))] })] }, attribute)), []);
6463
+ const renderBody = React.useCallback(({ id, value, style, hasIcon, hasUnits, render }) => (jsxRuntime.jsxs(TwoColumnContainerWrapper, { id: id, style: style, children: [jsxRuntime.jsxs(ContainerAlias, { children: [hasIcon && (jsxRuntime.jsx(ContainerAliasIcon, { children: render({ id: "icon" }) })), render({ id: "alias" }), render({ id: "tooltip" }), render({ id: "modal" })] }), jsxRuntime.jsxs(ContainerValue, { big: true, children: [value, hasUnits && (jsxRuntime.jsx(ContainerUnits, { children: render({ id: "units" }) }))] })] })), []);
6142
6464
  const { renderContainer, attributesToRender } = useRenderContainer({
6143
6465
  type,
6144
6466
  elementConfig,
@@ -7407,17 +7729,10 @@ const getControlTemplateName = (type) => {
7407
7729
 
7408
7730
  const EditGroupContainer = React.memo(({ type, elementConfig, renderElement }) => {
7409
7731
  const { config, attributes, layerInfo, expandedContainers } = useWidgetContext(type);
7732
+ const { filteredAttributes, filteredControls } = useEditGroupAttributes({ elementConfig, type });
7410
7733
  const getRenderContainerItem = useRenderContainerItem(type, renderElement);
7411
- const { options } = elementConfig || {};
7412
- const { controls } = options || {};
7413
- const filteredAttributes = React.useMemo(() => {
7414
- const { idAttribute } = layerInfo?.configuration?.attributesConfiguration || {};
7415
- if (!idAttribute)
7416
- return attributes;
7417
- return attributes.filter(({ attributeName }) => attributeName !== idAttribute);
7418
- }, [attributes, layerInfo?.configuration]);
7419
7734
  const renderContainer = React.useCallback((attributeName) => {
7420
- const control = controls?.find(({ targetAttributeName }) => targetAttributeName === attributeName);
7735
+ const control = filteredControls?.find(({ targetAttributeName }) => targetAttributeName === attributeName);
7421
7736
  const itemAttribute = attributes.find(item => item.attributeName === attributeName);
7422
7737
  const templateName = control?.type
7423
7738
  ? getControlTemplateName(control.type)
@@ -7438,7 +7753,7 @@ const EditGroupContainer = React.memo(({ type, elementConfig, renderElement }) =
7438
7753
  }
7439
7754
  return (jsxRuntime.jsx(ContainerTemplateValue, { id: attributeName, type: type, config: config, elementConfig: itemConfig, layerInfo: layerInfo, attributes: attributes, isVisible: isVisibleContainer(id, expandable, expanded, expandedContainers), renderElement: render }, attributeName));
7440
7755
  }, [
7441
- controls,
7756
+ filteredControls,
7442
7757
  attributes,
7443
7758
  elementConfig,
7444
7759
  getRenderContainerItem,
@@ -7447,10 +7762,10 @@ const EditGroupContainer = React.memo(({ type, elementConfig, renderElement }) =
7447
7762
  layerInfo,
7448
7763
  expandedContainers,
7449
7764
  ]);
7450
- if (!controls?.length) {
7765
+ if (!filteredControls?.length) {
7451
7766
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: filteredAttributes.map(({ attributeName }) => renderContainer(attributeName)) }));
7452
7767
  }
7453
- return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: controls.map(({ targetAttributeName }) => renderContainer(targetAttributeName)) }));
7768
+ return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: filteredControls.map(({ targetAttributeName }) => renderContainer(targetAttributeName)) }));
7454
7769
  });
7455
7770
 
7456
7771
  const useEditControl = (type, elementConfig) => {
@@ -7567,138 +7882,6 @@ const EditDateContainer = ({ type, elementConfig, renderElement, }) => {
7567
7882
  return (jsxRuntime.jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxRuntime.jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsxRuntime.jsx(ContainerValue, { column: true, children: jsxRuntime.jsx(uilibGl.DatePicker, { value: dateValue, locale: uilibGl.getLocale(language), withTime: withTime ?? false, withHeader: true, width: "100%", onChange: handleChange }) })] }));
7568
7883
  };
7569
7884
 
7570
- const GRID_TILE_SIZE = "4.5rem";
7571
- const LIST_ICON_SIZE = "1.5rem";
7572
- const JPG_MIME_TYPE = "image/jpeg";
7573
- const PNG_MIME_TYPE = "image/png";
7574
- const IMAGE_MIME_TYPES = [
7575
- "image/apng",
7576
- "image/avif",
7577
- "image/gif",
7578
- "image/jpeg",
7579
- "image/png",
7580
- "image/svg+xml",
7581
- "image/webp",
7582
- ];
7583
- const XLSX_MIME_TYPES = [
7584
- "application/vnd.ms-excel",
7585
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
7586
- ];
7587
- const PDF_MIME_TYPE = "application/pdf";
7588
- const DOCX_MIME_TYPES = [
7589
- "application/msword",
7590
- "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
7591
- ];
7592
- const CSV_MIME_TYPE = "text/csv";
7593
- const JSON_MIME_TYPE = "application/json";
7594
- const TXT_MIME_TYPE = "text/plain";
7595
- const PPTX_MIME_TYPES = [
7596
- "application/vnd.ms-powerpoint",
7597
- "application/vnd.openxmlformats-officedocument.presentationml.presentation",
7598
- ];
7599
- const SHP_MIME_TYPE = "application/octet-stream";
7600
- const KML_MIME_TYPE = "application/octet-stream";
7601
- const ZIP_MIME_TYPE = "application/zip";
7602
- const PYTHON_MIME_TYPES = ["application/x-python-code", "text/x-python"];
7603
- var AddAttachmentSource;
7604
- (function (AddAttachmentSource) {
7605
- AddAttachmentSource["Pc"] = "pc";
7606
- AddAttachmentSource["Catalog"] = "catalog";
7607
- AddAttachmentSource["Link"] = "link";
7608
- })(AddAttachmentSource || (AddAttachmentSource = {}));
7609
-
7610
- var img$j = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%2300AAFF'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cpath id='Vector_3' d='M9.84902 10.0353C9.69434 10.0353 9.55605 10.0112 9.43418 9.96318C9.3123 9.91396 9.20918 9.84658 9.1248 9.76104C9.0416 9.67549 8.97773 9.57705 8.9332 9.46572C8.88984 9.35439 8.86816 9.23662 8.86816 9.1124V9.04561C8.86816 8.90615 8.8875 8.77725 8.92617 8.65889C8.96484 8.53936 9.02227 8.43506 9.09844 8.346C9.17461 8.25693 9.27012 8.18779 9.38496 8.13857C9.4998 8.08818 9.6334 8.06299 9.78574 8.06299C9.92051 8.06299 10.0412 8.08467 10.1479 8.12803C10.2545 8.17139 10.3447 8.2335 10.4186 8.31436C10.4936 8.39521 10.5504 8.49307 10.5891 8.60791C10.6289 8.72275 10.6488 8.85166 10.6488 8.99463V9.23545H9.09492V8.86455H10.0705V8.81885C10.0717 8.75557 10.0605 8.70166 10.0371 8.65713C10.0148 8.6126 9.98203 8.57861 9.93867 8.55518C9.89531 8.53174 9.84258 8.52002 9.78047 8.52002C9.71602 8.52002 9.6627 8.53408 9.62051 8.56221C9.57949 8.59033 9.54727 8.629 9.52383 8.67822C9.50156 8.72627 9.48574 8.78193 9.47637 8.84521C9.46699 8.9085 9.46231 8.97529 9.46231 9.04561V9.1124C9.46231 9.18271 9.47168 9.24658 9.49043 9.304C9.51035 9.36143 9.53848 9.41064 9.5748 9.45166C9.6123 9.4915 9.65684 9.52256 9.7084 9.54482C9.76113 9.56709 9.8209 9.57822 9.8877 9.57822C9.96855 9.57822 10.0482 9.56299 10.1268 9.53252C10.2053 9.50205 10.2727 9.45166 10.3289 9.38135L10.5979 9.70127C10.5592 9.75635 10.5041 9.80967 10.4326 9.86123C10.3623 9.91279 10.2779 9.95498 10.1795 9.98779C10.0811 10.0194 9.9709 10.0353 9.84902 10.0353Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.4623 7.2998V9.9998H7.86816V7.2998H8.4623Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.17773 10.0001H5.58184V8.04893C5.58184 7.879 5.61699 7.73604 5.6873 7.62002C5.75879 7.50283 5.86133 7.41436 5.99492 7.35459C6.12852 7.29365 6.29023 7.26318 6.48008 7.26318C6.58789 7.26318 6.6916 7.27256 6.79121 7.29131C6.89082 7.31006 6.99395 7.33467 7.10059 7.36514L7.01797 7.83271C6.94883 7.81396 6.87617 7.79639 6.8 7.77998C6.725 7.76357 6.63066 7.75537 6.51699 7.75537C6.41035 7.75537 6.32715 7.78057 6.26738 7.83096C6.20762 7.88135 6.17773 7.954 6.17773 8.04893V10.0001ZM6.55039 8.09814V8.50947H5.30762V8.09814H6.55039ZM7.37129 8.09814V10.0001H6.77715V8.09814H7.37129Z' fill='white'/%3e%3c/g%3e%3c/svg%3e";
7611
-
7612
- var img$i = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%2347C782'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='CSV'%3e%3cpath id='Vector_3' d='M10.3816 9.39736L10.9143 7.44092H11.6051L10.742 10.0003H10.2955L10.3816 9.39736ZM9.89824 7.44092L10.4309 9.39736L10.5205 10.0003H10.0687L9.21094 7.44092H9.89824Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.37852 9.32002C8.37852 9.28018 8.37266 9.24443 8.36094 9.21279C8.34922 9.17998 8.32754 9.14951 8.2959 9.12139C8.26426 9.09326 8.21855 9.06514 8.15879 9.03701C8.10019 9.00771 8.02285 8.97725 7.92676 8.94561C7.81426 8.90811 7.70586 8.86592 7.60156 8.81904C7.49727 8.771 7.4041 8.71533 7.32207 8.65205C7.24004 8.5876 7.175 8.5126 7.12695 8.42705C7.07891 8.34033 7.05488 8.23955 7.05488 8.12471C7.05488 8.01455 7.07949 7.91553 7.12871 7.82764C7.17793 7.73857 7.24648 7.66299 7.33437 7.60088C7.42344 7.5376 7.52773 7.48955 7.64727 7.45674C7.7668 7.42275 7.89746 7.40576 8.03926 7.40576C8.22676 7.40576 8.39199 7.43857 8.53496 7.5042C8.6791 7.56865 8.7916 7.66064 8.87246 7.78018C8.95449 7.89854 8.99551 8.03857 8.99551 8.20029H8.38203C8.38203 8.13584 8.36855 8.079 8.3416 8.02979C8.31582 7.98057 8.27656 7.94189 8.22383 7.91377C8.17109 7.88564 8.10488 7.87158 8.0252 7.87158C7.94785 7.87158 7.88281 7.8833 7.83008 7.90674C7.77734 7.93018 7.7375 7.96182 7.71055 8.00166C7.68359 8.04033 7.67012 8.08311 7.67012 8.12998C7.67012 8.16865 7.68066 8.20381 7.70176 8.23545C7.72402 8.26592 7.75508 8.29463 7.79492 8.32158C7.83594 8.34854 7.88516 8.37432 7.94258 8.39893C8.00117 8.42354 8.0668 8.44756 8.13945 8.471C8.27539 8.51436 8.39609 8.56299 8.50156 8.61689C8.6082 8.66963 8.69785 8.72998 8.77051 8.79795C8.84434 8.86475 8.9 8.94092 8.9375 9.02646C8.97617 9.11201 8.99551 9.20869 8.99551 9.3165C8.99551 9.43135 8.97324 9.5333 8.92871 9.62236C8.88418 9.71143 8.82031 9.78701 8.73711 9.84912C8.65391 9.91006 8.5543 9.95635 8.43828 9.98799C8.32227 10.0196 8.19277 10.0354 8.0498 10.0354C7.91855 10.0354 7.78906 10.019 7.66133 9.98623C7.53477 9.95225 7.41992 9.90068 7.3168 9.83154C7.21367 9.76123 7.13105 9.67158 7.06894 9.5626C7.00801 9.45244 6.97754 9.32178 6.97754 9.17061H7.59629C7.59629 9.24561 7.60625 9.30889 7.62617 9.36045C7.64609 9.41201 7.67539 9.45361 7.71406 9.48525C7.75273 9.51572 7.8002 9.53799 7.85645 9.55205C7.9127 9.56494 7.97715 9.57139 8.0498 9.57139C8.12832 9.57139 8.1916 9.56025 8.23965 9.53799C8.2877 9.51455 8.32285 9.48408 8.34512 9.44658C8.36738 9.40791 8.37852 9.36572 8.37852 9.32002Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.05293 9.1335H6.66816C6.65996 9.31162 6.61191 9.46865 6.52402 9.60459C6.43613 9.74053 6.31426 9.84658 6.1584 9.92275C6.00371 9.99775 5.8209 10.0353 5.60996 10.0353C5.43887 10.0353 5.28594 10.0065 5.15117 9.94912C5.01758 9.8917 4.90391 9.80908 4.81016 9.70127C4.71758 9.59346 4.64668 9.46279 4.59746 9.30928C4.54941 9.15576 4.52539 8.98291 4.52539 8.79072V8.65186C4.52539 8.45967 4.55059 8.28682 4.60098 8.1333C4.65254 7.97861 4.7252 7.84736 4.81895 7.73955C4.91387 7.63057 5.02754 7.54736 5.15996 7.48994C5.29238 7.43252 5.43945 7.40381 5.60117 7.40381C5.82383 7.40381 6.01191 7.44365 6.16543 7.52334C6.31895 7.60303 6.43789 7.7126 6.52227 7.85205C6.60664 7.99033 6.65645 8.14795 6.67168 8.3249H6.05645C6.0541 8.22881 6.0377 8.14854 6.00723 8.08408C5.97676 8.01846 5.92871 7.96924 5.86309 7.93643C5.79746 7.90361 5.71016 7.88721 5.60117 7.88721C5.525 7.88721 5.45879 7.90127 5.40254 7.92939C5.34629 7.95752 5.29941 8.00205 5.26191 8.06299C5.22441 8.12393 5.19629 8.20303 5.17754 8.30029C5.15996 8.39639 5.15117 8.5124 5.15117 8.64834V8.79072C5.15117 8.92666 5.15938 9.04268 5.17578 9.13877C5.19219 9.23486 5.21855 9.31338 5.25488 9.37432C5.29121 9.43525 5.33809 9.48037 5.39551 9.50967C5.4541 9.53779 5.52559 9.55186 5.60996 9.55186C5.70371 9.55186 5.78281 9.53721 5.84727 9.50791C5.91172 9.47744 5.96152 9.43174 5.99668 9.3708C6.03184 9.30869 6.05059 9.22959 6.05293 9.1335Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7613
-
7614
- var img$h = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%232B7CD3'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='DOCX'%3e%3cpath id='Vector_3' d='M11.3209 7.44092L11.7393 8.2917L12.1576 7.44092H12.8607L12.1471 8.71006L12.8801 10.0003H12.1699L11.7393 9.13369L11.3086 10.0003H10.5967L11.3314 8.71006L10.616 7.44092H11.3209Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.77754 9.1335H10.3928C10.3846 9.31162 10.3365 9.46865 10.2486 9.60459C10.1607 9.74053 10.0389 9.84658 9.88301 9.92275C9.72832 9.99775 9.54551 10.0353 9.33457 10.0353C9.16348 10.0353 9.01055 10.0065 8.87578 9.94912C8.74219 9.8917 8.62852 9.80908 8.53477 9.70127C8.44219 9.59346 8.37129 9.46279 8.32207 9.30928C8.27402 9.15576 8.25 8.98291 8.25 8.79072V8.65186C8.25 8.45967 8.2752 8.28682 8.32559 8.1333C8.37715 7.97861 8.4498 7.84736 8.54355 7.73955C8.63848 7.63057 8.75215 7.54736 8.88457 7.48994C9.01699 7.43252 9.16406 7.40381 9.32578 7.40381C9.54844 7.40381 9.73652 7.44365 9.89004 7.52334C10.0436 7.60303 10.1625 7.7126 10.2469 7.85205C10.3313 7.99033 10.3811 8.14795 10.3963 8.3249H9.78105C9.77871 8.22881 9.7623 8.14854 9.73184 8.08408C9.70137 8.01846 9.65332 7.96924 9.5877 7.93643C9.52207 7.90361 9.43477 7.88721 9.32578 7.88721C9.24961 7.88721 9.1834 7.90127 9.12715 7.92939C9.0709 7.95752 9.02402 8.00205 8.98652 8.06299C8.94902 8.12393 8.9209 8.20303 8.90215 8.30029C8.88457 8.39639 8.87578 8.5124 8.87578 8.64834V8.79072C8.87578 8.92666 8.88398 9.04268 8.90039 9.13877C8.9168 9.23486 8.94316 9.31338 8.97949 9.37432C9.01582 9.43525 9.0627 9.48037 9.12012 9.50967C9.17871 9.53779 9.2502 9.55186 9.33457 9.55186C9.42832 9.55186 9.50742 9.53721 9.57188 9.50791C9.63633 9.47744 9.68613 9.43174 9.72129 9.3708C9.75645 9.30869 9.7752 9.22959 9.77754 9.1335Z' fill='white'/%3e%3cpath id='Vector_5' d='M7.90176 8.66963V8.77334C7.90176 8.96904 7.87422 9.14482 7.81914 9.30068C7.76523 9.45537 7.68848 9.58779 7.58887 9.69795C7.48926 9.80693 7.37148 9.89072 7.23555 9.94932C7.09961 10.0067 6.94961 10.0354 6.78555 10.0354C6.62031 10.0354 6.46914 10.0067 6.33203 9.94932C6.19609 9.89072 6.07773 9.80693 5.97695 9.69795C5.87734 9.58779 5.8 9.45537 5.74492 9.30068C5.69102 9.14482 5.66406 8.96904 5.66406 8.77334V8.66963C5.66406 8.47393 5.69102 8.29814 5.74492 8.14229C5.8 7.98643 5.87676 7.854 5.9752 7.74502C6.0748 7.63486 6.19258 7.55107 6.32852 7.49365C6.46563 7.43506 6.6168 7.40576 6.78203 7.40576C6.94609 7.40576 7.09609 7.43506 7.23203 7.49365C7.36914 7.55107 7.4875 7.63486 7.58711 7.74502C7.68672 7.854 7.76406 7.98643 7.81914 8.14229C7.87422 8.29814 7.90176 8.47393 7.90176 8.66963ZM7.27598 8.77334V8.66611C7.27598 8.53955 7.26484 8.42822 7.24258 8.33213C7.22148 8.23486 7.18984 8.15342 7.14766 8.08779C7.10547 8.02217 7.05332 7.97295 6.99121 7.94014C6.93027 7.90615 6.86055 7.88916 6.78203 7.88916C6.7 7.88916 6.62852 7.90615 6.56758 7.94014C6.50664 7.97295 6.45566 8.02217 6.41465 8.08779C6.37363 8.15342 6.34258 8.23486 6.32148 8.33213C6.30156 8.42822 6.2916 8.53955 6.2916 8.66611V8.77334C6.2916 8.89873 6.30156 9.01006 6.32148 9.10732C6.34258 9.20342 6.37363 9.28486 6.41465 9.35166C6.45684 9.41846 6.5084 9.46885 6.56934 9.50283C6.63145 9.53682 6.70352 9.55381 6.78555 9.55381C6.86406 9.55381 6.93379 9.53682 6.99473 9.50283C7.05566 9.46885 7.10664 9.41846 7.14766 9.35166C7.18984 9.28486 7.22148 9.20342 7.24258 9.10732C7.26484 9.01006 7.27598 8.89873 7.27598 8.77334Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.13711 10.0003H3.56934L3.57285 9.52568H4.13711C4.2543 9.52568 4.35332 9.49756 4.43418 9.44131C4.51621 9.38506 4.57832 9.30127 4.62051 9.18994C4.66387 9.07744 4.68555 8.93916 4.68555 8.7751V8.66436C4.68555 8.54131 4.67324 8.4335 4.64863 8.34092C4.6252 8.24717 4.59004 8.16924 4.54316 8.10713C4.49629 8.04385 4.4377 7.99639 4.36738 7.96475C4.29824 7.93311 4.21855 7.91729 4.12832 7.91729H3.55879V7.44092H4.12832C4.30176 7.44092 4.46055 7.4708 4.60469 7.53057C4.75 7.58916 4.87539 7.67354 4.98086 7.78369C5.0875 7.89268 5.16953 8.02217 5.22695 8.17217C5.28555 8.321 5.31484 8.48623 5.31484 8.66787V8.7751C5.31484 8.95557 5.28555 9.1208 5.22695 9.2708C5.16953 9.4208 5.08809 9.55029 4.98262 9.65928C4.87715 9.76826 4.75234 9.85264 4.6082 9.9124C4.46523 9.971 4.3082 10.0003 4.13711 10.0003ZM3.92266 7.44092V10.0003H3.30566V7.44092H3.92266Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7615
-
7616
- var img$g = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23FF9C54'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='JPEG'%3e%3cpath id='Vector_3' d='M12.4043 8.63301V9.68418C12.3609 9.73223 12.2941 9.78379 12.2039 9.83887C12.1148 9.89277 12.0023 9.93906 11.8664 9.97773C11.7305 10.0164 11.5705 10.0357 11.3865 10.0357C11.2166 10.0357 11.0625 10.0088 10.9242 9.95488C10.7859 9.8998 10.667 9.81953 10.5674 9.71406C10.4689 9.60742 10.3928 9.47734 10.3389 9.32383C10.2861 9.16914 10.2598 8.99219 10.2598 8.79297V8.65059C10.2598 8.45137 10.2867 8.27441 10.3406 8.11973C10.3945 7.96504 10.4701 7.83496 10.5674 7.72949C10.6658 7.62285 10.7813 7.54199 10.9137 7.48691C11.0473 7.43184 11.1938 7.4043 11.3531 7.4043C11.5887 7.4043 11.7803 7.4418 11.9279 7.5168C12.0756 7.59063 12.1875 7.69316 12.2637 7.82441C12.3398 7.95449 12.3861 8.10508 12.4025 8.27617H11.8102C11.7984 8.1918 11.7762 8.12031 11.7434 8.06172C11.7117 8.00195 11.666 7.95684 11.6063 7.92637C11.5465 7.89473 11.4691 7.87891 11.3742 7.87891C11.3004 7.87891 11.233 7.89473 11.1721 7.92637C11.1123 7.95801 11.0613 8.00605 11.0191 8.07051C10.977 8.13379 10.9441 8.21348 10.9207 8.30957C10.8984 8.40566 10.8873 8.51816 10.8873 8.64707V8.79297C10.8873 8.9207 10.8979 9.03262 10.9189 9.12871C10.9412 9.2248 10.974 9.30508 11.0174 9.36953C11.0619 9.43281 11.1182 9.48086 11.1861 9.51367C11.2553 9.54531 11.3367 9.56113 11.4305 9.56113C11.4961 9.56113 11.5523 9.55586 11.5992 9.54531C11.6461 9.53359 11.6848 9.51953 11.7152 9.50312C11.7469 9.48555 11.7709 9.46914 11.7873 9.45391V9.05664H11.3584V8.63301H12.4043Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.95762 9.52617V10.0008H8.59355V9.52617H9.95762ZM8.81328 7.44141V10.0008H8.19629V7.44141H8.81328ZM9.78184 8.45742V8.91621H8.59355V8.45742H9.78184ZM9.96289 7.44141V7.91777H8.59355V7.44141H9.96289Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.77227 9.13242H6.13594V8.65605H6.77227C6.85898 8.65605 6.9293 8.64141 6.9832 8.61211C7.03711 8.58281 7.07637 8.54238 7.10098 8.49082C7.12676 8.43809 7.13965 8.37891 7.13965 8.31328C7.13965 8.24297 7.12676 8.17793 7.10098 8.11816C7.07637 8.0584 7.03711 8.01035 6.9832 7.97402C6.9293 7.93652 6.85898 7.91777 6.77227 7.91777H6.36797V10.0008H5.75098V7.44141H6.77227C6.97734 7.44141 7.15371 7.47891 7.30137 7.55391C7.4502 7.62891 7.56445 7.73203 7.64414 7.86328C7.72383 7.99336 7.76367 8.14219 7.76367 8.30977C7.76367 8.475 7.72383 8.61914 7.64414 8.74219C7.56445 8.86523 7.4502 8.96133 7.30137 9.03047C7.15371 9.09844 6.97734 9.13242 6.77227 9.13242Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.64395 9.19746V7.44141H5.25918V9.19746C5.25918 9.36855 5.21992 9.5168 5.14141 9.64219C5.06406 9.76758 4.95859 9.86484 4.825 9.93398C4.69258 10.002 4.54375 10.0359 4.37852 10.0359C4.20742 10.0359 4.05508 10.0072 3.92148 9.9498C3.78906 9.89238 3.68477 9.80391 3.60859 9.68437C3.53359 9.56484 3.49609 9.4125 3.49609 9.22734H4.11484C4.11484 9.31406 4.1248 9.38203 4.14473 9.43125C4.16465 9.4793 4.19395 9.51328 4.23262 9.5332C4.27246 9.55195 4.32109 9.56133 4.37852 9.56133C4.43477 9.56133 4.48223 9.54727 4.5209 9.51914C4.56074 9.48984 4.59121 9.44824 4.6123 9.39434C4.6334 9.33926 4.64395 9.27363 4.64395 9.19746Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7617
-
7618
- var img$f = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23FF9C54'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='JPG'%3e%3cpath id='Vector_3' d='M11.3467 8.63301V9.68418C11.3033 9.73223 11.2365 9.78379 11.1463 9.83887C11.0572 9.89277 10.9447 9.93906 10.8088 9.97773C10.6729 10.0164 10.5129 10.0357 10.3289 10.0357C10.159 10.0357 10.0049 10.0088 9.8666 9.95488C9.72832 9.8998 9.60938 9.81953 9.50977 9.71406C9.41133 9.60742 9.33516 9.47734 9.28125 9.32383C9.22852 9.16914 9.20215 8.99219 9.20215 8.79297V8.65059C9.20215 8.45137 9.2291 8.27441 9.28301 8.11973C9.33691 7.96504 9.4125 7.83496 9.50977 7.72949C9.6082 7.62285 9.72363 7.54199 9.85605 7.48691C9.98965 7.43184 10.1361 7.4043 10.2955 7.4043C10.5311 7.4043 10.7227 7.4418 10.8703 7.5168C11.018 7.59063 11.1299 7.69316 11.2061 7.82441C11.2822 7.95449 11.3285 8.10508 11.3449 8.27617H10.7525C10.7408 8.1918 10.7186 8.12031 10.6857 8.06172C10.6541 8.00195 10.6084 7.95684 10.5486 7.92637C10.4889 7.89473 10.4115 7.87891 10.3166 7.87891C10.2428 7.87891 10.1754 7.89473 10.1145 7.92637C10.0547 7.95801 10.0037 8.00605 9.96152 8.07051C9.91934 8.13379 9.88652 8.21348 9.86309 8.30957C9.84082 8.40566 9.82969 8.51816 9.82969 8.64707V8.79297C9.82969 8.9207 9.84023 9.03262 9.86133 9.12871C9.88359 9.2248 9.91641 9.30508 9.95977 9.36953C10.0043 9.43281 10.0605 9.48086 10.1285 9.51367C10.1977 9.54531 10.2791 9.56113 10.3729 9.56113C10.4385 9.56113 10.4947 9.55586 10.5416 9.54531C10.5885 9.53359 10.6271 9.51953 10.6576 9.50312C10.6893 9.48555 10.7133 9.46914 10.7297 9.45391V9.05664H10.3008V8.63301H11.3467Z' fill='white'/%3e%3cpath id='Vector_4' d='M7.82891 9.13242H7.19258V8.65605H7.82891C7.91563 8.65605 7.98594 8.64141 8.03984 8.61211C8.09375 8.58281 8.13301 8.54238 8.15762 8.49082C8.1834 8.43809 8.19629 8.37891 8.19629 8.31328C8.19629 8.24297 8.1834 8.17793 8.15762 8.11816C8.13301 8.0584 8.09375 8.01035 8.03984 7.97402C7.98594 7.93652 7.91563 7.91777 7.82891 7.91777H7.42461V10.0008H6.80762V7.44141H7.82891C8.03398 7.44141 8.21035 7.47891 8.35801 7.55391C8.50684 7.62891 8.62109 7.73203 8.70078 7.86328C8.78047 7.99336 8.82031 8.14219 8.82031 8.30977C8.82031 8.475 8.78047 8.61914 8.70078 8.74219C8.62109 8.86523 8.50684 8.96133 8.35801 9.03047C8.21035 9.09844 8.03398 9.13242 7.82891 9.13242Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.70059 9.19746V7.44141H6.31582V9.19746C6.31582 9.36855 6.27656 9.5168 6.19805 9.64219C6.1207 9.76758 6.01523 9.86484 5.88164 9.93398C5.74922 10.002 5.60039 10.0359 5.43516 10.0359C5.26406 10.0359 5.11172 10.0072 4.97812 9.9498C4.8457 9.89238 4.74141 9.80391 4.66523 9.68437C4.59023 9.56484 4.55273 9.4125 4.55273 9.22734H5.17148C5.17148 9.31406 5.18145 9.38203 5.20137 9.43125C5.22129 9.4793 5.25059 9.51328 5.28926 9.5332C5.3291 9.55195 5.37773 9.56133 5.43516 9.56133C5.49141 9.56133 5.53887 9.54727 5.57754 9.51914C5.61738 9.48984 5.64785 9.44824 5.66895 9.39434C5.69004 9.33926 5.70059 9.27363 5.70059 9.19746Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7619
-
7620
- var img$e = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23AE6BF1'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='JSON'%3e%3cpath id='Vector_3' d='M12.6014 7.44043V9.9998H11.9861L11.0809 8.40723V9.9998H10.4639V7.44043H11.0809L11.9861 9.03301V7.44043H12.6014Z' fill='white'/%3e%3cpath id='Vector_4' d='M10.0434 8.66914V8.77285C10.0434 8.96855 10.0158 9.14434 9.96074 9.3002C9.90684 9.45488 9.83008 9.5873 9.73047 9.69746C9.63086 9.80645 9.51309 9.89023 9.37715 9.94883C9.24121 10.0063 9.09121 10.035 8.92715 10.035C8.76191 10.035 8.61074 10.0063 8.47363 9.94883C8.3377 9.89023 8.21934 9.80645 8.11855 9.69746C8.01895 9.5873 7.9416 9.45488 7.88652 9.3002C7.83262 9.14434 7.80566 8.96855 7.80566 8.77285V8.66914C7.80566 8.47344 7.83262 8.29766 7.88652 8.1418C7.9416 7.98594 8.01836 7.85352 8.1168 7.74453C8.21641 7.63437 8.33418 7.55059 8.47012 7.49316C8.60723 7.43457 8.7584 7.40527 8.92363 7.40527C9.0877 7.40527 9.2377 7.43457 9.37363 7.49316C9.51074 7.55059 9.6291 7.63437 9.72871 7.74453C9.82832 7.85352 9.90566 7.98594 9.96074 8.1418C10.0158 8.29766 10.0434 8.47344 10.0434 8.66914ZM9.41758 8.77285V8.66562C9.41758 8.53906 9.40645 8.42773 9.38418 8.33164C9.36309 8.23438 9.33145 8.15293 9.28926 8.0873C9.24707 8.02168 9.19492 7.97246 9.13281 7.93965C9.07187 7.90566 9.00215 7.88867 8.92363 7.88867C8.8416 7.88867 8.77012 7.90566 8.70918 7.93965C8.64824 7.97246 8.59727 8.02168 8.55625 8.0873C8.51523 8.15293 8.48418 8.23438 8.46309 8.33164C8.44316 8.42773 8.4332 8.53906 8.4332 8.66562V8.77285C8.4332 8.89824 8.44316 9.00957 8.46309 9.10684C8.48418 9.20293 8.51523 9.28437 8.55625 9.35117C8.59844 9.41797 8.65 9.46836 8.71094 9.50234C8.77305 9.53633 8.84512 9.55332 8.92715 9.55332C9.00566 9.55332 9.07539 9.53633 9.13633 9.50234C9.19727 9.46836 9.24824 9.41797 9.28926 9.35117C9.33145 9.28437 9.36309 9.20293 9.38418 9.10684C9.40645 9.00957 9.41758 8.89824 9.41758 8.77285Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.84336 9.31953C6.84336 9.27969 6.8375 9.24395 6.82578 9.2123C6.81406 9.17949 6.79238 9.14902 6.76074 9.1209C6.7291 9.09277 6.6834 9.06465 6.62363 9.03652C6.56504 9.00723 6.4877 8.97676 6.3916 8.94512C6.2791 8.90762 6.1707 8.86543 6.06641 8.81855C5.96211 8.77051 5.86895 8.71484 5.78691 8.65156C5.70488 8.58711 5.63984 8.51211 5.5918 8.42656C5.54375 8.33984 5.51973 8.23906 5.51973 8.12422C5.51973 8.01406 5.54434 7.91504 5.59355 7.82715C5.64277 7.73809 5.71133 7.6625 5.79922 7.60039C5.88828 7.53711 5.99258 7.48906 6.11211 7.45625C6.23164 7.42227 6.3623 7.40527 6.5041 7.40527C6.6916 7.40527 6.85684 7.43809 6.9998 7.50371C7.14395 7.56816 7.25645 7.66016 7.3373 7.77969C7.41934 7.89805 7.46035 8.03809 7.46035 8.1998H6.84688C6.84688 8.13535 6.8334 8.07852 6.80645 8.0293C6.78066 7.98008 6.74141 7.94141 6.68867 7.91328C6.63594 7.88516 6.56973 7.87109 6.49004 7.87109C6.4127 7.87109 6.34766 7.88281 6.29492 7.90625C6.24219 7.92969 6.20234 7.96133 6.17539 8.00117C6.14844 8.03984 6.13496 8.08262 6.13496 8.12949C6.13496 8.16816 6.14551 8.20332 6.1666 8.23496C6.18887 8.26543 6.21992 8.29414 6.25977 8.32109C6.30078 8.34805 6.35 8.37383 6.40742 8.39844C6.46602 8.42305 6.53164 8.44707 6.6043 8.47051C6.74023 8.51387 6.86094 8.5625 6.96641 8.61641C7.07305 8.66914 7.1627 8.72949 7.23535 8.79746C7.30918 8.86426 7.36484 8.94043 7.40234 9.02598C7.44102 9.11152 7.46035 9.2082 7.46035 9.31602C7.46035 9.43086 7.43809 9.53281 7.39355 9.62187C7.34902 9.71094 7.28516 9.78652 7.20195 9.84863C7.11875 9.90957 7.01914 9.95586 6.90312 9.9875C6.78711 10.0191 6.65762 10.035 6.51465 10.035C6.3834 10.035 6.25391 10.0186 6.12617 9.98574C5.99961 9.95176 5.88477 9.9002 5.78164 9.83105C5.67852 9.76074 5.5959 9.67109 5.53379 9.56211C5.47285 9.45195 5.44238 9.32129 5.44238 9.17012H6.06113C6.06113 9.24512 6.07109 9.3084 6.09102 9.35996C6.11094 9.41152 6.14023 9.45312 6.17891 9.48477C6.21758 9.51523 6.26504 9.5375 6.32129 9.55156C6.37754 9.56445 6.44199 9.5709 6.51465 9.5709C6.59316 9.5709 6.65645 9.55977 6.70449 9.5375C6.75254 9.51406 6.7877 9.48359 6.80996 9.44609C6.83223 9.40742 6.84336 9.36523 6.84336 9.31953Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.41738 9.19648V7.44043H5.03262V9.19648C5.03262 9.36758 4.99336 9.51582 4.91484 9.64121C4.8375 9.7666 4.73203 9.86387 4.59844 9.93301C4.46602 10.001 4.31719 10.035 4.15195 10.035C3.98086 10.035 3.82852 10.0063 3.69492 9.94883C3.5625 9.89141 3.4582 9.80293 3.38203 9.6834C3.30703 9.56387 3.26953 9.41152 3.26953 9.22637H3.88828C3.88828 9.31309 3.89824 9.38105 3.91816 9.43027C3.93809 9.47832 3.96738 9.5123 4.00605 9.53223C4.0459 9.55098 4.09453 9.56035 4.15195 9.56035C4.2082 9.56035 4.25566 9.54629 4.29434 9.51816C4.33418 9.48887 4.36465 9.44727 4.38574 9.39336C4.40684 9.33828 4.41738 9.27266 4.41738 9.19648Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7621
-
7622
- var img$d = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%236155E9'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='KML'%3e%3cpath id='Vector_3' d='M11.7408 9.5252V9.9998H10.4471V9.5252H11.7408ZM10.6668 7.44043V9.9998H10.0498V7.44043H10.6668Z' fill='white'/%3e%3cpath id='Vector_4' d='M7.09785 7.44043H7.60059L8.17188 9.22109L8.74316 7.44043H9.2459L8.37578 9.9998H7.96797L7.09785 7.44043ZM6.79199 7.44043H7.3123L7.40898 9.40215V9.9998H6.79199V7.44043ZM9.03145 7.44043H9.55352V9.9998H8.93477V9.40215L9.03145 7.44043Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.00664 7.44043V9.9998H4.38965V7.44043H5.00664ZM6.53418 7.44043L5.54277 8.7377L4.9627 9.37227L4.8502 8.80625L5.22109 8.24375L5.77305 7.44043H6.53418ZM5.80469 9.9998L5.14375 8.84668L5.62363 8.49336L6.53418 9.9998H5.80469Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7623
-
7624
- var img$c = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23EC473F'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PDF'%3e%3cpath id='Vector_3' d='M10.2654 7.44043V9.9998H9.64844V7.44043H10.2654ZM11.2604 8.50566V8.98027H10.0896V8.50566H11.2604ZM11.3605 7.44043V7.9168H10.0896V7.44043H11.3605Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.04922 9.9998H7.48145L7.48496 9.5252H8.04922C8.16641 9.5252 8.26543 9.49707 8.34629 9.44082C8.42832 9.38457 8.49043 9.30078 8.53262 9.18945C8.57598 9.07695 8.59766 8.93867 8.59766 8.77461V8.66387C8.59766 8.54082 8.58535 8.43301 8.56074 8.34043C8.5373 8.24668 8.50215 8.16875 8.45527 8.10664C8.4084 8.04336 8.3498 7.9959 8.27949 7.96426C8.21035 7.93262 8.13066 7.9168 8.04043 7.9168H7.4709V7.44043H8.04043C8.21387 7.44043 8.37266 7.47031 8.5168 7.53008C8.66211 7.58867 8.7875 7.67305 8.89297 7.7832C8.99961 7.89219 9.08164 8.02168 9.13906 8.17168C9.19766 8.32051 9.22695 8.48574 9.22695 8.66738V8.77461C9.22695 8.95508 9.19766 9.12031 9.13906 9.27031C9.08164 9.42031 9.0002 9.5498 8.89473 9.65879C8.78926 9.76777 8.66445 9.85215 8.52031 9.91191C8.37734 9.97051 8.22031 9.9998 8.04922 9.9998ZM7.83477 7.44043V9.9998H7.21777V7.44043H7.83477Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.79375 9.13145H5.15742V8.65508H5.79375C5.88047 8.65508 5.95078 8.64043 6.00469 8.61113C6.05859 8.58184 6.09785 8.54141 6.12246 8.48984C6.14824 8.43711 6.16113 8.37793 6.16113 8.3123C6.16113 8.24199 6.14824 8.17695 6.12246 8.11719C6.09785 8.05742 6.05859 8.00937 6.00469 7.97305C5.95078 7.93555 5.88047 7.9168 5.79375 7.9168H5.38945V9.9998H4.77246V7.44043H5.79375C5.99883 7.44043 6.1752 7.47793 6.32285 7.55293C6.47168 7.62793 6.58594 7.73105 6.66562 7.8623C6.74531 7.99238 6.78516 8.14121 6.78516 8.30879C6.78516 8.47402 6.74531 8.61816 6.66562 8.74121C6.58594 8.86426 6.47168 8.96035 6.32285 9.02949C6.1752 9.09746 5.99883 9.13145 5.79375 9.13145Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7625
-
7626
- var img$b = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%239381FF'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PNG'%3e%3cpath id='Vector_3' d='M11.5977 8.63301V9.68418C11.5543 9.73223 11.4875 9.78379 11.3973 9.83887C11.3082 9.89277 11.1957 9.93906 11.0598 9.97773C10.9238 10.0164 10.7639 10.0357 10.5799 10.0357C10.41 10.0357 10.2559 10.0088 10.1176 9.95488C9.9793 9.8998 9.86035 9.81953 9.76074 9.71406C9.6623 9.60742 9.58613 9.47734 9.53223 9.32383C9.47949 9.16914 9.45312 8.99219 9.45312 8.79297V8.65059C9.45312 8.45137 9.48008 8.27441 9.53398 8.11973C9.58789 7.96504 9.66348 7.83496 9.76074 7.72949C9.85918 7.62285 9.97461 7.54199 10.107 7.48691C10.2406 7.43184 10.3871 7.4043 10.5465 7.4043C10.782 7.4043 10.9736 7.4418 11.1213 7.5168C11.2689 7.59063 11.3809 7.69316 11.457 7.82441C11.5332 7.95449 11.5795 8.10508 11.5959 8.27617H11.0035C10.9918 8.1918 10.9695 8.12031 10.9367 8.06172C10.9051 8.00195 10.8594 7.95684 10.7996 7.92637C10.7398 7.89473 10.6625 7.87891 10.5676 7.87891C10.4937 7.87891 10.4264 7.89473 10.3654 7.92637C10.3057 7.95801 10.2547 8.00605 10.2125 8.07051C10.1703 8.13379 10.1375 8.21348 10.1141 8.30957C10.0918 8.40566 10.0807 8.51816 10.0807 8.64707V8.79297C10.0807 8.9207 10.0912 9.03262 10.1123 9.12871C10.1346 9.2248 10.1674 9.30508 10.2107 9.36953C10.2553 9.43281 10.3115 9.48086 10.3795 9.51367C10.4486 9.54531 10.5301 9.56113 10.6238 9.56113C10.6895 9.56113 10.7457 9.55586 10.7926 9.54531C10.8395 9.53359 10.8781 9.51953 10.9086 9.50312C10.9402 9.48555 10.9643 9.46914 10.9807 9.45391V9.05664H10.5518V8.63301H11.5977Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.01445 7.44141V10.0008H8.39922L7.49395 8.4082V10.0008H6.87695V7.44141H7.49395L8.39922 9.03398V7.44141H9.01445Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.45293 9.13242H4.8166V8.65605H5.45293C5.53965 8.65605 5.60996 8.64141 5.66387 8.61211C5.71777 8.58281 5.75703 8.54238 5.78164 8.49082C5.80742 8.43809 5.82031 8.37891 5.82031 8.31328C5.82031 8.24297 5.80742 8.17793 5.78164 8.11816C5.75703 8.0584 5.71777 8.01035 5.66387 7.97402C5.60996 7.93652 5.53965 7.91777 5.45293 7.91777H5.04863V10.0008H4.43164V7.44141H5.45293C5.65801 7.44141 5.83437 7.47891 5.98203 7.55391C6.13086 7.62891 6.24512 7.73203 6.3248 7.86328C6.40449 7.99336 6.44434 8.14219 6.44434 8.30977C6.44434 8.475 6.40449 8.61914 6.3248 8.74219C6.24512 8.86523 6.13086 8.96133 5.98203 9.03047C5.83437 9.09844 5.65801 9.13242 5.45293 9.13242Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7627
-
7628
- var img$a = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23CA4424'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PPTX'%3e%3cpath id='Vector_3' d='M11.2125 7.44043L11.6309 8.29121L12.0492 7.44043H12.7523L12.0387 8.70957L12.7717 9.9998H12.0615L11.6309 9.1332L11.2002 9.9998H10.4883L11.223 8.70957L10.5076 7.44043H11.2125Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.54414 7.44043V9.9998H8.92715V7.44043H9.54414ZM10.3141 7.44043V7.9168H8.1748V7.44043H10.3141Z' fill='white'/%3e%3cpath id='Vector_5' d='M6.88164 9.13145H6.24531V8.65508H6.88164C6.96836 8.65508 7.03867 8.64043 7.09258 8.61113C7.14648 8.58184 7.18574 8.54141 7.21035 8.48984C7.23613 8.43711 7.24902 8.37793 7.24902 8.3123C7.24902 8.24199 7.23613 8.17695 7.21035 8.11719C7.18574 8.05742 7.14648 8.00937 7.09258 7.97305C7.03867 7.93555 6.96836 7.9168 6.88164 7.9168H6.47734V9.9998H5.86035V7.44043H6.88164C7.08672 7.44043 7.26309 7.47793 7.41074 7.55293C7.55957 7.62793 7.67383 7.73105 7.75352 7.8623C7.8332 7.99238 7.87305 8.14121 7.87305 8.30879C7.87305 8.47402 7.8332 8.61816 7.75352 8.74121C7.67383 8.86426 7.55957 8.96035 7.41074 9.02949C7.26309 9.09746 7.08672 9.13145 6.88164 9.13145Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.43633 9.13145H3.8V8.65508H4.43633C4.52305 8.65508 4.59336 8.64043 4.64727 8.61113C4.70117 8.58184 4.74043 8.54141 4.76504 8.48984C4.79082 8.43711 4.80371 8.37793 4.80371 8.3123C4.80371 8.24199 4.79082 8.17695 4.76504 8.11719C4.74043 8.05742 4.70117 8.00937 4.64727 7.97305C4.59336 7.93555 4.52305 7.9168 4.43633 7.9168H4.03203V9.9998H3.41504V7.44043H4.43633C4.64141 7.44043 4.81777 7.47793 4.96543 7.55293C5.11426 7.62793 5.22852 7.73105 5.3082 7.8623C5.38789 7.99238 5.42773 8.14121 5.42773 8.30879C5.42773 8.47402 5.38789 8.61816 5.3082 8.74121C5.22852 8.86426 5.11426 8.96035 4.96543 9.02949C4.81777 9.09746 4.64141 9.13145 4.43633 9.13145Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7629
-
7630
- var img$9 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%233674A5'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='PY'%3e%3cpath id='Vector_3' d='M8.75215 7.44141L9.22324 8.55234L9.69609 7.44141H10.3605L9.53789 9.08145V10.0008H8.91035V9.08145L8.08594 7.44141H8.75215Z' fill='%23FED341'/%3e%3cpath id='Vector_4' d='M6.86406 9.13242H6.22773V8.65605H6.86406C6.95078 8.65605 7.02109 8.64141 7.075 8.61211C7.12891 8.58281 7.16816 8.54238 7.19277 8.49082C7.21855 8.43809 7.23145 8.37891 7.23145 8.31328C7.23145 8.24297 7.21855 8.17793 7.19277 8.11816C7.16816 8.0584 7.12891 8.01035 7.075 7.97402C7.02109 7.93652 6.95078 7.91777 6.86406 7.91777H6.45977V10.0008H5.84277V7.44141H6.86406C7.06914 7.44141 7.24551 7.47891 7.39316 7.55391C7.54199 7.62891 7.65625 7.73203 7.73594 7.86328C7.81563 7.99336 7.85547 8.14219 7.85547 8.30977C7.85547 8.475 7.81563 8.61914 7.73594 8.74219C7.65625 8.86523 7.54199 8.96133 7.39316 9.03047C7.24551 9.09844 7.06914 9.13242 6.86406 9.13242Z' fill='%23FED341'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7631
-
7632
- var img$8 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23C0D155'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='SHP'%3e%3cpath id='Vector_3' d='M10.5359 9.13145H9.89961V8.65508H10.5359C10.6227 8.65508 10.693 8.64043 10.7469 8.61113C10.8008 8.58184 10.84 8.54141 10.8646 8.48984C10.8904 8.43711 10.9033 8.37793 10.9033 8.3123C10.9033 8.24199 10.8904 8.17695 10.8646 8.11719C10.84 8.05742 10.8008 8.00937 10.7469 7.97305C10.693 7.93555 10.6227 7.9168 10.5359 7.9168H10.1316V9.9998H9.51465V7.44043H10.5359C10.741 7.44043 10.9174 7.47793 11.065 7.55293C11.2139 7.62793 11.3281 7.73105 11.4078 7.8623C11.4875 7.99238 11.5273 8.14121 11.5273 8.30879C11.5273 8.47402 11.4875 8.61816 11.4078 8.74121C11.3281 8.86426 11.2139 8.96035 11.065 9.02949C10.9174 9.09746 10.741 9.13145 10.5359 9.13145Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.6082 8.45645V8.93105H7.29512V8.45645H8.6082ZM7.50078 7.44043V9.9998H6.88379V7.44043H7.50078ZM9.02305 7.44043V9.9998H8.40781V7.44043H9.02305Z' fill='white'/%3e%3cpath id='Vector_5' d='M5.84824 9.31953C5.84824 9.27969 5.84238 9.24395 5.83066 9.2123C5.81895 9.17949 5.79727 9.14902 5.76562 9.1209C5.73398 9.09277 5.68828 9.06465 5.62852 9.03652C5.56992 9.00723 5.49258 8.97676 5.39648 8.94512C5.28398 8.90762 5.17559 8.86543 5.07129 8.81855C4.96699 8.77051 4.87383 8.71484 4.7918 8.65156C4.70977 8.58711 4.64473 8.51211 4.59668 8.42656C4.54863 8.33984 4.52461 8.23906 4.52461 8.12422C4.52461 8.01406 4.54922 7.91504 4.59844 7.82715C4.64766 7.73809 4.71621 7.6625 4.8041 7.60039C4.89316 7.53711 4.99746 7.48906 5.11699 7.45625C5.23652 7.42227 5.36719 7.40527 5.50898 7.40527C5.69648 7.40527 5.86172 7.43809 6.00469 7.50371C6.14883 7.56816 6.26133 7.66016 6.34219 7.77969C6.42422 7.89805 6.46523 8.03809 6.46523 8.1998H5.85176C5.85176 8.13535 5.83828 8.07852 5.81133 8.0293C5.78555 7.98008 5.74629 7.94141 5.69355 7.91328C5.64082 7.88516 5.57461 7.87109 5.49492 7.87109C5.41758 7.87109 5.35254 7.88281 5.2998 7.90625C5.24707 7.92969 5.20723 7.96133 5.18027 8.00117C5.15332 8.03984 5.13984 8.08262 5.13984 8.12949C5.13984 8.16816 5.15039 8.20332 5.17148 8.23496C5.19375 8.26543 5.2248 8.29414 5.26465 8.32109C5.30566 8.34805 5.35488 8.37383 5.4123 8.39844C5.4709 8.42305 5.53652 8.44707 5.60918 8.47051C5.74512 8.51387 5.86582 8.5625 5.97129 8.61641C6.07793 8.66914 6.16758 8.72949 6.24023 8.79746C6.31406 8.86426 6.36973 8.94043 6.40723 9.02598C6.4459 9.11152 6.46523 9.2082 6.46523 9.31602C6.46523 9.43086 6.44297 9.53281 6.39844 9.62187C6.35391 9.71094 6.29004 9.78652 6.20684 9.84863C6.12363 9.90957 6.02402 9.95586 5.90801 9.9875C5.79199 10.0191 5.6625 10.035 5.51953 10.035C5.38828 10.035 5.25879 10.0186 5.13105 9.98574C5.00449 9.95176 4.88965 9.9002 4.78652 9.83105C4.6834 9.76074 4.60078 9.67109 4.53867 9.56211C4.47773 9.45195 4.44727 9.32129 4.44727 9.17012H5.06602C5.06602 9.24512 5.07598 9.3084 5.0959 9.35996C5.11582 9.41152 5.14512 9.45312 5.18379 9.48477C5.22246 9.51523 5.26992 9.5375 5.32617 9.55156C5.38242 9.56445 5.44687 9.5709 5.51953 9.5709C5.59805 9.5709 5.66133 9.55977 5.70937 9.5375C5.75742 9.51406 5.79258 9.48359 5.81484 9.44609C5.83711 9.40742 5.84824 9.36523 5.84824 9.31953Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7633
-
7634
- var img$7 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23DDE3EA'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='TXT'%3e%3cpath id='Vector_3' d='M10.6838 7.44043V9.9998H10.0668V7.44043H10.6838ZM11.4537 7.44043V7.9168H9.31445V7.44043H11.4537Z' fill='black'/%3e%3cpath id='Vector_4' d='M7.58164 7.44043L8 8.29121L8.41836 7.44043H9.12148L8.40781 8.70957L9.14082 9.9998H8.43066L8 9.1332L7.56934 9.9998H6.85742L7.59219 8.70957L6.87676 7.44043H7.58164Z' fill='black'/%3e%3cpath id='Vector_5' d='M5.91328 7.44043V9.9998H5.29629V7.44043H5.91328ZM6.6832 7.44043V7.9168H4.54395V7.44043H6.6832Z' fill='black'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7635
-
7636
- var img$6 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%2341A246'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='XLSX'%3e%3cpath id='Vector_3' d='M10.983 7.44043L11.4014 8.29121L11.8197 7.44043H12.5229L11.8092 8.70957L12.5422 9.9998H11.832L11.4014 9.1332L10.9707 9.9998H10.2588L10.9936 8.70957L10.2781 7.44043H10.983Z' fill='white'/%3e%3cpath id='Vector_4' d='M9.41172 9.31953C9.41172 9.27969 9.40586 9.24395 9.39414 9.2123C9.38242 9.17949 9.36074 9.14902 9.3291 9.1209C9.29746 9.09277 9.25176 9.06465 9.19199 9.03652C9.1334 9.00723 9.05605 8.97676 8.95996 8.94512C8.84746 8.90762 8.73906 8.86543 8.63477 8.81855C8.53047 8.77051 8.4373 8.71484 8.35527 8.65156C8.27324 8.58711 8.2082 8.51211 8.16016 8.42656C8.11211 8.33984 8.08809 8.23906 8.08809 8.12422C8.08809 8.01406 8.1127 7.91504 8.16191 7.82715C8.21113 7.73809 8.27969 7.6625 8.36758 7.60039C8.45664 7.53711 8.56094 7.48906 8.68047 7.45625C8.8 7.42227 8.93066 7.40527 9.07246 7.40527C9.25996 7.40527 9.4252 7.43809 9.56816 7.50371C9.7123 7.56816 9.8248 7.66016 9.90566 7.77969C9.9877 7.89805 10.0287 8.03809 10.0287 8.1998H9.41523C9.41523 8.13535 9.40176 8.07852 9.3748 8.0293C9.34902 7.98008 9.30977 7.94141 9.25703 7.91328C9.2043 7.88516 9.13809 7.87109 9.0584 7.87109C8.98105 7.87109 8.91602 7.88281 8.86328 7.90625C8.81055 7.92969 8.7707 7.96133 8.74375 8.00117C8.7168 8.03984 8.70332 8.08262 8.70332 8.12949C8.70332 8.16816 8.71387 8.20332 8.73496 8.23496C8.75723 8.26543 8.78828 8.29414 8.82812 8.32109C8.86914 8.34805 8.91836 8.37383 8.97578 8.39844C9.03437 8.42305 9.1 8.44707 9.17266 8.47051C9.30859 8.51387 9.4293 8.5625 9.53477 8.61641C9.64141 8.66914 9.73105 8.72949 9.80371 8.79746C9.87754 8.86426 9.9332 8.94043 9.9707 9.02598C10.0094 9.11152 10.0287 9.2082 10.0287 9.31602C10.0287 9.43086 10.0064 9.53281 9.96191 9.62187C9.91738 9.71094 9.85352 9.78652 9.77031 9.84863C9.68711 9.90957 9.5875 9.95586 9.47148 9.9875C9.35547 10.0191 9.22598 10.035 9.08301 10.035C8.95176 10.035 8.82227 10.0186 8.69453 9.98574C8.56797 9.95176 8.45312 9.9002 8.35 9.83105C8.24687 9.76074 8.16426 9.67109 8.10215 9.56211C8.04121 9.45195 8.01074 9.32129 8.01074 9.17012H8.62949C8.62949 9.24512 8.63945 9.3084 8.65937 9.35996C8.6793 9.41152 8.70859 9.45312 8.74727 9.48477C8.78594 9.51523 8.8334 9.5375 8.88965 9.55156C8.9459 9.56445 9.01035 9.5709 9.08301 9.5709C9.16152 9.5709 9.2248 9.55977 9.27285 9.5375C9.3209 9.51406 9.35605 9.48359 9.37832 9.44609C9.40059 9.40742 9.41172 9.36523 9.41172 9.31953Z' fill='white'/%3e%3cpath id='Vector_5' d='M7.73301 9.5252V9.9998H6.43926V9.5252H7.73301ZM6.65898 7.44043V9.9998H6.04199V7.44043H6.65898Z' fill='white'/%3e%3cpath id='Vector_6' d='M4.1793 7.44043L4.59766 8.29121L5.01602 7.44043H5.71914L5.00547 8.70957L5.73848 9.9998H5.02832L4.59766 9.1332L4.16699 9.9998H3.45508L4.18984 8.70957L3.47441 7.44043H4.1793Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7637
-
7638
- var img$5 = "data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cg id='Frame'%3e%3cpath id='Vector' d='M13 16H3C2.4 16 2 15.6 2 15V1C2 0.4 2.4 0 3 0H10L14 4V15C14 15.6 13.6 16 13 16Z' fill='%23F4BB0A'/%3e%3cpath id='Vector_2' opacity='0.36' d='M14 4L10 0V3C10 3.6 10.4 4 11 4H14Z' fill='white'/%3e%3cg id='ZIP'%3e%3cpath id='Vector_3' d='M9.78789 9.13145H9.15156V8.65508H9.78789C9.87461 8.65508 9.94492 8.64043 9.99883 8.61113C10.0527 8.58184 10.092 8.54141 10.1166 8.48984C10.1424 8.43711 10.1553 8.37793 10.1553 8.3123C10.1553 8.24199 10.1424 8.17695 10.1166 8.11719C10.092 8.05742 10.0527 8.00937 9.99883 7.97305C9.94492 7.93555 9.87461 7.9168 9.78789 7.9168H9.38359V9.9998H8.7666V7.44043H9.78789C9.99297 7.44043 10.1693 7.47793 10.317 7.55293C10.4658 7.62793 10.5801 7.73105 10.6598 7.8623C10.7395 7.99238 10.7793 8.14121 10.7793 8.30879C10.7793 8.47402 10.7395 8.61816 10.6598 8.74121C10.5801 8.86426 10.4658 8.96035 10.317 9.02949C10.1693 9.09746 9.99297 9.13145 9.78789 9.13145Z' fill='white'/%3e%3cpath id='Vector_4' d='M8.23242 7.44043V9.9998H7.61719V7.44043H8.23242Z' fill='white'/%3e%3cpath id='Vector_5' d='M7.19551 9.5252V9.9998H5.34277V9.5252H7.19551ZM7.1832 7.75684L5.64863 9.9998H5.20215V9.67461L6.7543 7.44043H7.1832V7.75684ZM6.98457 7.44043V7.9168H5.19336V7.44043H6.98457Z' fill='white'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
7639
-
7640
- var FileType;
7641
- (function (FileType) {
7642
- FileType[FileType["UNKNOWN"] = 0] = "UNKNOWN";
7643
- FileType[FileType["XLSX"] = 1] = "XLSX";
7644
- FileType[FileType["PDF"] = 2] = "PDF";
7645
- FileType[FileType["CSV"] = 3] = "CSV";
7646
- FileType[FileType["DOCX"] = 4] = "DOCX";
7647
- FileType[FileType["IMAGE"] = 5] = "IMAGE";
7648
- FileType[FileType["TXT"] = 6] = "TXT";
7649
- FileType[FileType["JSON"] = 7] = "JSON";
7650
- FileType[FileType["KML"] = 8] = "KML";
7651
- FileType[FileType["PPTX"] = 9] = "PPTX";
7652
- FileType[FileType["SHP"] = 10] = "SHP";
7653
- FileType[FileType["ZIP"] = 11] = "ZIP";
7654
- FileType[FileType["JPEG"] = 12] = "JPEG";
7655
- FileType[FileType["JPG"] = 13] = "JPG";
7656
- FileType[FileType["PNG"] = 14] = "PNG";
7657
- FileType[FileType["PYTHON"] = 15] = "PYTHON";
7658
- })(FileType || (FileType = {}));
7659
- const IMAGE_FILE_TYPES = [
7660
- FileType.IMAGE,
7661
- FileType.JPEG,
7662
- FileType.JPG,
7663
- FileType.PNG,
7664
- ];
7665
-
7666
- const getFileTypeIcon = (fileType) => {
7667
- switch (fileType) {
7668
- case FileType.CSV:
7669
- return img$i;
7670
- case FileType.XLSX:
7671
- return img$6;
7672
- case FileType.DOCX:
7673
- return img$h;
7674
- case FileType.PDF:
7675
- return img$c;
7676
- case FileType.JSON:
7677
- return img$e;
7678
- case FileType.KML:
7679
- return img$d;
7680
- case FileType.PPTX:
7681
- return img$a;
7682
- case FileType.SHP:
7683
- return img$8;
7684
- case FileType.TXT:
7685
- return img$7;
7686
- case FileType.ZIP:
7687
- return img$5;
7688
- case FileType.IMAGE:
7689
- case FileType.JPEG:
7690
- return img$g;
7691
- case FileType.JPG:
7692
- return img$f;
7693
- case FileType.PNG:
7694
- return img$b;
7695
- case FileType.PYTHON:
7696
- return img$9;
7697
- default:
7698
- return img$j;
7699
- }
7700
- };
7701
-
7702
7885
  const AttachmentsContainer = styled.div `
7703
7886
  display: flex;
7704
7887
  flex-direction: column;
@@ -8026,22 +8209,6 @@ const AttachmentLinkDialog = ({ isOpen, onClose, onSubmit, }) => {
8026
8209
  return (jsxRuntime.jsxs(uilibGl.Dialog, { isOpen: isOpen, onCloseRequest: handleClose, modal: true, maxWidth: "32rem", minHeight: "0", children: [jsxRuntime.jsxs(uilibGl.DialogTitle, { children: [jsxRuntime.jsx(uilibGl.ActionsGroup, { children: title }), jsxRuntime.jsx(uilibGl.ActionsGroup, { children: jsxRuntime.jsx(uilibGl.IconButton, { kind: "close", onClick: handleClose }) })] }), jsxRuntime.jsx(uilibGl.DialogContent, { children: jsxRuntime.jsx(LinkDialogContent, { children: jsxRuntime.jsx(uilibGl.Input, { label: urlLabel, placeholder: urlLabel, value: url, width: "100%", onChange: handleChange }) }) }), jsxRuntime.jsx(uilibGl.DialogActions, { children: jsxRuntime.jsxs(uilibGl.ActionsGroup, { children: [jsxRuntime.jsx(uilibGl.FlatButton, { onClick: handleClose, children: cancelLabel }), jsxRuntime.jsx(uilibGl.RaisedButton, { primary: true, disabled: !url.trim(), onClick: handleSubmit, children: attachLabel })] }) })] }));
8027
8210
  };
8028
8211
 
8029
- const useGlobalContext = () => {
8030
- const { t, language, themeName, api, ewktGeometry } = React.useContext(GlobalContext) || {};
8031
- const translate = React.useCallback((value, options) => {
8032
- if (t)
8033
- return t(value, options);
8034
- return options?.defaultValue ?? value;
8035
- }, [t]);
8036
- return React.useMemo(() => ({
8037
- t: translate,
8038
- language,
8039
- themeName,
8040
- api,
8041
- ewktGeometry,
8042
- }), [language, translate, api, ewktGeometry, themeName]);
8043
- };
8044
-
8045
8212
  const ImagePreviewError = styled.div `
8046
8213
  display: flex;
8047
8214
  align-items: center;
@@ -8098,41 +8265,6 @@ const FileImagePreview = ({ link, isExternal, size, borderRadius, }) => {
8098
8265
  return (jsxRuntime.jsxs(ImagePreviewContainer, { size: size, children: [hasError && (jsxRuntime.jsx(ImagePreviewError, { borderRadius: borderRadius, children: jsxRuntime.jsx(uilibGl.Icon, { kind: "alert" }) })), !hasError && !imageSrc && (jsxRuntime.jsx(ImagePreviewLoaderContainer, { children: jsxRuntime.jsx(uilibGl.LinearProgress, {}) })), !hasError && imageSrc && (jsxRuntime.jsx(GridImagePreview, { borderRadius: borderRadius, size: size, src: imageSrc, alt: "", onError: () => setHasError(true) }))] }));
8099
8266
  };
8100
8267
 
8101
- const getFileType = (mimeType = "", name = "") => {
8102
- if (mimeType === PNG_MIME_TYPE)
8103
- return FileType.PNG;
8104
- if (mimeType === JPG_MIME_TYPE)
8105
- return FileType.JPG;
8106
- if (IMAGE_MIME_TYPES.includes(mimeType))
8107
- return FileType.IMAGE;
8108
- if (XLSX_MIME_TYPES.includes(mimeType))
8109
- return FileType.XLSX;
8110
- if (DOCX_MIME_TYPES.includes(mimeType))
8111
- return FileType.DOCX;
8112
- if (mimeType === CSV_MIME_TYPE)
8113
- return FileType.CSV;
8114
- if (mimeType === PDF_MIME_TYPE)
8115
- return FileType.PDF;
8116
- if (mimeType === JSON_MIME_TYPE)
8117
- return FileType.JSON;
8118
- if (mimeType === KML_MIME_TYPE && (name.endsWith(".kml") || name.endsWith(".kmz"))) {
8119
- return FileType.KML;
8120
- }
8121
- if (PYTHON_MIME_TYPES.includes(mimeType))
8122
- return FileType.PYTHON;
8123
- if (mimeType === TXT_MIME_TYPE && name.endsWith(".py"))
8124
- return FileType.PYTHON;
8125
- if (mimeType === TXT_MIME_TYPE)
8126
- return FileType.TXT;
8127
- if (PPTX_MIME_TYPES.includes(mimeType))
8128
- return FileType.PPTX;
8129
- if (mimeType === SHP_MIME_TYPE && name.endsWith(".shp"))
8130
- return FileType.SHP;
8131
- if (mimeType === ZIP_MIME_TYPE)
8132
- return FileType.ZIP;
8133
- return name.endsWith(".py") ? FileType.PYTHON : FileType.UNKNOWN;
8134
- };
8135
-
8136
8268
  const AttachmentItem = ({ item, viewMode, isEdit, onPreview, onDelete, }) => {
8137
8269
  const { mimeType, link, isExternal, name: fileName, date } = item;
8138
8270
  const fileType = React.useMemo(() => getFileType(mimeType, fileName), [mimeType, fileName]);
@@ -8159,78 +8291,22 @@ const AttachmentsList = ({ items, isEdit, onPreview, onDelete, }) => {
8159
8291
  };
8160
8292
 
8161
8293
  const ShowMoreButton = ({ hiddenCount, onClick, }) => {
8162
- const { t } = useGlobalContext();
8163
- return (jsxRuntime.jsxs(ShowMoreButton$1, { onClick: onClick, children: [t("showMore", { ns: "dashboard", defaultValue: "Показать ещё" }), " ", hiddenCount, jsxRuntime.jsx(uilibGl.Icon, { kind: "arrow_down" })] }));
8164
- };
8165
-
8166
- const sliceShownOtherItems = (data, options = {}, showMore) => {
8167
- const { shownItems, otherItems } = options || {};
8168
- const limit = shownItems && otherItems ? Math.min(shownItems, otherItems) : shownItems || otherItems;
8169
- return (shownItems || otherItems) && !showMore ? (data?.slice(0, limit) || []) : data;
8170
- };
8171
-
8172
- const parseAttachments = (raw) => {
8173
- if (!raw)
8174
- return [];
8175
- if (Array.isArray(raw))
8176
- return raw;
8177
- if (typeof raw !== "string")
8178
- return [];
8179
- try {
8180
- const parsed = JSON.parse(raw);
8181
- return Array.isArray(parsed) ? parsed : [];
8182
- }
8183
- catch {
8184
- return [];
8185
- }
8186
- };
8187
- const attachmentsFromFeatures = (features, mapping = {}) => {
8188
- if (!features?.length)
8189
- return [];
8190
- const { attributeLink = "link", attributeName = "name", attributeMime = "mimeType", attributeDate = "date", } = mapping;
8191
- return features
8192
- .map(feature => {
8193
- const link = feature.properties?.[attributeLink];
8194
- if (!link)
8195
- return null;
8196
- return {
8197
- link,
8198
- name: feature.properties?.[attributeName] ?? link,
8199
- mimeType: feature.properties?.[attributeMime] ?? "",
8200
- date: feature.properties?.[attributeDate],
8201
- isExternal: /^https?:\/\//.test(link),
8202
- };
8203
- })
8204
- .filter(Boolean);
8205
- };
8206
-
8207
- const useAttachmentContainer = ({ type, elementConfig, valueOverride, }) => {
8208
- const { attributes, dataSources } = useWidgetContext(type);
8209
- const { children, options } = elementConfig || {};
8210
- const { relatedDataSource, controls } = options || {};
8211
- const initialViewMode = options?.viewMode === "list" ? "list" : "grid";
8212
- const [viewMode, setViewMode] = React.useState(initialViewMode);
8213
- const [showMore, setShowMore] = React.useState(false);
8214
- const valueElement = React.useMemo(() => children?.find(({ id }) => id === "value"), [children]);
8215
- const attributeName = React.useMemo(() => {
8216
- const candidate = valueElement?.attributeName ?? elementConfig?.attributeName;
8217
- return Array.isArray(candidate) ? candidate[0] : candidate;
8218
- }, [valueElement, elementConfig]);
8219
- const rawValue = React.useMemo(() => {
8220
- if (valueOverride !== undefined)
8221
- return valueOverride;
8222
- if (!attributeName)
8223
- return undefined;
8224
- return attributes?.find(item => item.attributeName === attributeName)?.value;
8225
- }, [valueOverride, attributeName, attributes]);
8226
- const items = React.useMemo(() => {
8227
- if (relatedDataSource) {
8228
- const dataSource = dataSources?.find(({ name }) => name === relatedDataSource);
8229
- const mapping = controls?.[0];
8230
- return attachmentsFromFeatures(dataSource?.features, mapping);
8231
- }
8232
- return parseAttachments(rawValue);
8233
- }, [relatedDataSource, dataSources, controls, rawValue]);
8294
+ const { t } = useGlobalContext();
8295
+ return (jsxRuntime.jsxs(ShowMoreButton$1, { onClick: onClick, children: [t("showMore", { ns: "dashboard", defaultValue: "Показать ещё" }), " ", hiddenCount, jsxRuntime.jsx(uilibGl.Icon, { kind: "arrow_down" })] }));
8296
+ };
8297
+
8298
+ const sliceShownOtherItems = (data, options = {}, showMore) => {
8299
+ const { shownItems, otherItems } = options || {};
8300
+ const limit = shownItems && otherItems ? Math.min(shownItems, otherItems) : shownItems || otherItems;
8301
+ return (shownItems || otherItems) && !showMore ? (data?.slice(0, limit) || []) : data;
8302
+ };
8303
+
8304
+ const useAttachmentContainer = ({ type, elementConfig, valueOverride, }) => {
8305
+ const { items, attributeName } = useAttachmentItems({ type, elementConfig, valueOverride });
8306
+ const { options } = elementConfig || {};
8307
+ const initialViewMode = options?.viewMode === "list" ? "list" : "grid";
8308
+ const [viewMode, setViewMode] = React.useState(initialViewMode);
8309
+ const [showMore, setShowMore] = React.useState(false);
8234
8310
  const visibleItems = React.useMemo(() => sliceShownOtherItems(items, options, showMore), [items, options, showMore]);
8235
8311
  const hiddenCount = items.length - visibleItems.length;
8236
8312
  const hasMore = hiddenCount > 0;
@@ -8248,60 +8324,6 @@ const useAttachmentContainer = ({ type, elementConfig, valueOverride, }) => {
8248
8324
  };
8249
8325
  };
8250
8326
 
8251
- const usePreviewImages = ({ items, active }) => {
8252
- const { api } = useGlobalContext();
8253
- const [blobUrls, setBlobUrls] = React.useState({});
8254
- const [failedLinks, setFailedLinks] = React.useState({});
8255
- const inFlightRef = React.useRef(new Set());
8256
- const blobUrlsRef = React.useRef(blobUrls);
8257
- blobUrlsRef.current = blobUrls;
8258
- React.useEffect(() => {
8259
- if (!active || !api?.catalog?.getFile)
8260
- return;
8261
- items.forEach(item => {
8262
- const fileType = getFileType(item.mimeType, item.name);
8263
- const isImage = IMAGE_FILE_TYPES.includes(fileType);
8264
- if (!isImage || item.isExternal)
8265
- return;
8266
- if (blobUrlsRef.current[item.link] || inFlightRef.current.has(item.link))
8267
- return;
8268
- inFlightRef.current.add(item.link);
8269
- api.catalog
8270
- .getFile(item.link)
8271
- .then(blob => {
8272
- const objectUrl = URL.createObjectURL(blob);
8273
- setBlobUrls(prev => ({ ...prev, [item.link]: objectUrl }));
8274
- })
8275
- .catch(() => {
8276
- setFailedLinks(prev => (prev[item.link] ? prev : { ...prev, [item.link]: true }));
8277
- })
8278
- .finally(() => {
8279
- inFlightRef.current.delete(item.link);
8280
- });
8281
- });
8282
- }, [active, api, items]);
8283
- React.useEffect(() => () => {
8284
- Object.values(blobUrlsRef.current).forEach(URL.revokeObjectURL);
8285
- }, []);
8286
- return React.useMemo(() => items.map(item => {
8287
- const fileType = getFileType(item.mimeType, item.name);
8288
- const isImage = IMAGE_FILE_TYPES.includes(fileType);
8289
- const fileName = item.name;
8290
- if (!isImage)
8291
- return { src: getFileTypeIcon(fileType), fileName };
8292
- if (item.isExternal)
8293
- return { src: item.link, fileName };
8294
- const hasError = !!failedLinks[item.link];
8295
- const blobUrl = blobUrls[item.link];
8296
- return {
8297
- src: blobUrl ?? "",
8298
- fileName,
8299
- hasError,
8300
- isLoading: !hasError && !blobUrl,
8301
- };
8302
- }), [items, blobUrls, failedLinks]);
8303
- };
8304
-
8305
8327
  const EXTENSION_TO_MIME = {
8306
8328
  apng: "image/apng",
8307
8329
  avif: "image/avif",
@@ -8358,15 +8380,7 @@ const EditAttachmentContainer = React.memo(({ type, elementConfig, renderElement
8358
8380
  const [previewIndex, setPreviewIndex] = React.useState(null);
8359
8381
  const [uploading, setUploading] = React.useState(false);
8360
8382
  const [isLinkDialogOpen, , setLinkDialogOpen] = useToggle(false);
8361
- const previewImages = usePreviewImages({ items, active: previewIndex !== null });
8362
- const orderedPreviewImages = React.useMemo(() => {
8363
- if (previewIndex === null)
8364
- return previewImages;
8365
- return [
8366
- previewImages[previewIndex],
8367
- ...previewImages.filter((_, idx) => idx !== previewIndex),
8368
- ];
8369
- }, [previewImages, previewIndex]);
8383
+ const previewImages = useAttachmentPreviewImages({ items, active: previewIndex !== null });
8370
8384
  const persist = React.useCallback((next) => onChange(next), [onChange]);
8371
8385
  const handlePreview = React.useCallback((link) => {
8372
8386
  const idx = items.findIndex(item => item.link === link);
@@ -8424,7 +8438,7 @@ const EditAttachmentContainer = React.memo(({ type, elementConfig, renderElement
8424
8438
  setUploading(false);
8425
8439
  }
8426
8440
  }, [api, items, parentResourceId, persist]);
8427
- return (jsxRuntime.jsxs(AttachmentsContainer, { id: id, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxRuntime.jsx(AttachmentsHeader, { alias: renderElement?.({ id: "alias" }), count: items.length, viewMode: viewMode, onChangeViewMode: setViewMode }), jsxRuntime.jsx(AttachmentsContent, { children: viewMode === "grid" ? (jsxRuntime.jsx(AttachmentsGrid, { items: visibleItems, isEdit: true, onPreview: handlePreview, onDelete: handleDelete })) : (jsxRuntime.jsx(AttachmentsList, { items: visibleItems, isEdit: true, onPreview: handlePreview, onDelete: handleDelete })) }), hasMore && !showMore && (jsxRuntime.jsx(ShowMoreButton, { hiddenCount: hiddenCount, onClick: handleShowMore })), jsxRuntime.jsx(AddButton, { accept: fileExtensions, onSelectFiles: uploading ? () => undefined : handleUpload, onSelectFromCatalog: handleSelectFromCatalog, onSelectFromLink: handleOpenLinkDialog }), jsxRuntime.jsx(AttachmentLinkDialog, { isOpen: isLinkDialogOpen, onClose: handleCloseLinkDialog, onSubmit: handleAddByLink }), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: orderedPreviewImages, isOpen: previewIndex !== null, onClose: handleClosePreview }))] }));
8441
+ return (jsxRuntime.jsxs(AttachmentsContainer, { id: id, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxRuntime.jsx(AttachmentsHeader, { alias: renderElement?.({ id: "alias" }), count: items.length, viewMode: viewMode, onChangeViewMode: setViewMode }), jsxRuntime.jsx(AttachmentsContent, { children: viewMode === "grid" ? (jsxRuntime.jsx(AttachmentsGrid, { items: visibleItems, isEdit: true, onPreview: handlePreview, onDelete: handleDelete })) : (jsxRuntime.jsx(AttachmentsList, { items: visibleItems, isEdit: true, onPreview: handlePreview, onDelete: handleDelete })) }), hasMore && !showMore && (jsxRuntime.jsx(ShowMoreButton, { hiddenCount: hiddenCount, onClick: handleShowMore })), jsxRuntime.jsx(AddButton, { accept: fileExtensions, onSelectFiles: uploading ? () => undefined : handleUpload, onSelectFromCatalog: handleSelectFromCatalog, onSelectFromLink: handleOpenLinkDialog }), jsxRuntime.jsx(AttachmentLinkDialog, { isOpen: isLinkDialogOpen, onClose: handleCloseLinkDialog, onSubmit: handleAddByLink }), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: previewImages, initialIndex: previewIndex, isOpen: previewIndex !== null, onClose: handleClosePreview }, previewIndex))] }));
8428
8442
  });
8429
8443
 
8430
8444
  const AttachmentContainer = React.memo(({ type, elementConfig, renderElement }) => {
@@ -8434,15 +8448,7 @@ const AttachmentContainer = React.memo(({ type, elementConfig, renderElement })
8434
8448
  const { id, style, options } = elementConfig || {};
8435
8449
  const { expandable, expanded } = options || {};
8436
8450
  const [previewIndex, setPreviewIndex] = React.useState(null);
8437
- const previewImages = usePreviewImages({ items, active: previewIndex !== null });
8438
- const orderedPreviewImages = React.useMemo(() => {
8439
- if (previewIndex === null)
8440
- return previewImages;
8441
- return [
8442
- previewImages[previewIndex],
8443
- ...previewImages.filter((_, idx) => idx !== previewIndex),
8444
- ];
8445
- }, [previewImages, previewIndex]);
8451
+ const previewImages = useAttachmentPreviewImages({ items, active: previewIndex !== null });
8446
8452
  const handlePreview = React.useCallback((link) => {
8447
8453
  const idx = items.findIndex(item => item.link === link);
8448
8454
  if (idx >= 0)
@@ -8451,10 +8457,10 @@ const AttachmentContainer = React.memo(({ type, elementConfig, renderElement })
8451
8457
  const handleClosePreview = React.useCallback(() => setPreviewIndex(null), []);
8452
8458
  const handleShowMore = React.useCallback(() => setShowMore(true), [setShowMore]);
8453
8459
  const isVisible = isVisibleContainer(id, expandable, expanded, expandedContainers);
8454
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsxs(Container, { id: id, isColumn: true, style: style, children: [jsxRuntime.jsx(AttachmentsHeader, { alias: renderElement?.({ id: "alias" }), count: items.length, viewMode: viewMode, onChangeViewMode: setViewMode }), jsxRuntime.jsx(AttachmentsContent, { children: viewMode === "grid" ? (jsxRuntime.jsx(AttachmentsGrid, { items: visibleItems, isEdit: false, onPreview: handlePreview })) : (jsxRuntime.jsx(AttachmentsList, { items: visibleItems, isEdit: false, onPreview: handlePreview })) }), hasMore && !showMore && (jsxRuntime.jsx(ShowMoreButton, { hiddenCount: hiddenCount, onClick: handleShowMore })), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: orderedPreviewImages, isOpen: previewIndex !== null, onClose: handleClosePreview, errorTitleText: t("attachments.resourceUnavailable", {
8455
- ns: "common",
8456
- defaultValue: "Ресурс недоступен",
8457
- }) }))] }))] }));
8460
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsx(Container, { id: id, style: { ...BASE_CONTAINER_STYLE, ...style }, children: jsxRuntime.jsxs(uilibGl.Flex, { column: true, children: [jsxRuntime.jsx(AttachmentsHeader, { alias: renderElement?.({ id: "alias" }), count: items.length, viewMode: viewMode, onChangeViewMode: setViewMode }), jsxRuntime.jsx(AttachmentsContent, { children: viewMode === "grid" ? (jsxRuntime.jsx(AttachmentsGrid, { items: visibleItems, isEdit: false, onPreview: handlePreview })) : (jsxRuntime.jsx(AttachmentsList, { items: visibleItems, isEdit: false, onPreview: handlePreview })) }), hasMore && !showMore && (jsxRuntime.jsx(ShowMoreButton, { hiddenCount: hiddenCount, onClick: handleShowMore })), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: previewImages, initialIndex: previewIndex, isOpen: previewIndex !== null, onClose: handleClosePreview, errorTitleText: t("attachments.resourceUnavailable", {
8461
+ ns: "common",
8462
+ defaultValue: "Ресурс недоступен",
8463
+ }) }, previewIndex))] }) }))] }));
8458
8464
  });
8459
8465
 
8460
8466
  const ContainerDivider = styled(uilibGl.Divider) `
@@ -8508,6 +8514,24 @@ const getContainerComponent = (innerTemplateName) => innerTemplateName
8508
8514
  ? containerComponents[innerTemplateName] || containerComponents.default
8509
8515
  : null;
8510
8516
 
8517
+ const HeaderTitleContainer = styled(uilibGl.Flex) `
8518
+ flex-direction: column;
8519
+ width: 100%;
8520
+ `;
8521
+ const LayerDescription = styled(uilibGl.Description) `
8522
+ width: calc(100% - 4rem);
8523
+ display: -webkit-box;
8524
+ -webkit-line-clamp: 2;
8525
+ -webkit-box-orient: vertical;
8526
+ overflow: hidden;
8527
+ text-overflow: ellipsis;
8528
+ `;
8529
+ const HeaderFontColorMixin = styled.css `
8530
+ ${HeaderTitleContainer}, ${HeaderTitleContainer} *, ${LayerDescription} {
8531
+ color: ${({ $fontColor }) => $fontColor};
8532
+ }
8533
+ `;
8534
+
8511
8535
  var img$4 = "data:image/png;base64,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";
8512
8536
 
8513
8537
  const getMaskColor = (isDark) => isDark ? "0, 0, 0" : "255, 255, 255";
@@ -8675,17 +8699,18 @@ const HeaderFrontView = styled(uilibGl.Flex) `
8675
8699
  width: 100%;
8676
8700
  font: ${({ theme: { fonts } }) => fonts.subtitle};
8677
8701
  `;
8678
- const HeaderContainer = styled(uilibGl.FlexSpan) `
8702
+ const HeaderContainer = styled(uilibGl.Flex) `
8679
8703
  display: flex;
8680
8704
  flex-grow: 1;
8681
8705
  flex-wrap: nowrap;
8682
- width: calc(100% - 48px);
8706
+ flex-direction: column;
8707
+ width: calc(100% - 3rem);
8683
8708
  `;
8684
8709
  const FeatureTitleContainer = styled.div `
8685
8710
  display: -webkit-box;
8686
8711
  max-width: 100%;
8687
8712
  width: 100%;
8688
- margin: 0.5rem 0;
8713
+ margin-top: 0.5rem;
8689
8714
  -webkit-line-clamp: 2;
8690
8715
  -webkit-box-orient: vertical;
8691
8716
  overflow: hidden;
@@ -8700,21 +8725,10 @@ const FeatureTitleContainer = styled.div `
8700
8725
  }
8701
8726
  }
8702
8727
  `;
8703
- const LayerDescription = styled(uilibGl.Description) `
8704
- width: calc(100% - 4rem);
8705
- display: -webkit-box;
8706
- -webkit-line-clamp: 2;
8707
- -webkit-box-orient: vertical;
8708
- overflow: hidden;
8709
- text-overflow: ellipsis;
8710
- `;
8711
- const HeaderTitleContainer = styled(uilibGl.Flex) `
8712
- flex-direction: column;
8713
- width: 100%;
8714
- `;
8715
8728
  const RowHeaderMixin = styled.css `
8716
8729
  &&& {
8717
8730
  min-height: auto;
8731
+ padding: 1rem 1.5rem 1rem 1rem;
8718
8732
 
8719
8733
  ${FeatureTitleContainer}, ${LayerDescription} {
8720
8734
  text-align: left;
@@ -8734,16 +8748,20 @@ const Header = styled(uilibGl.Flex) `
8734
8748
  position: relative;
8735
8749
  top: 0;
8736
8750
  flex-shrink: 0;
8737
- overflow: hidden;
8738
8751
  width: 100%;
8739
- padding: 0.5rem;
8752
+ padding: 1rem 1.5rem;
8753
+ overflow: hidden;
8740
8754
 
8741
8755
  ${({ $isRow }) => $isRow && RowHeaderMixin};
8742
8756
  `;
8743
8757
  const DefaultHeaderWrapper = styled.div `
8744
- ${Header} {
8745
- padding: 0 1.5rem 1.5rem 0;
8746
- }
8758
+ width: ${({ withPadding }) => (withPadding ? "100%" : "calc(100% + 1rem)")};
8759
+ height: ${({ height }) => (height ? `${height}px` : "auto")};
8760
+ margin: ${({ withPadding }) => (withPadding ? "-0.5rem -0.5rem 0 -0.5rem" : "-1rem -1rem 0 -1rem")};
8761
+ background: url(${img$4}) 50% -2rem no-repeat;
8762
+ border-radius: ${({ theme: { borderRadius } }) => borderRadius.medium};
8763
+
8764
+ ${({ fontColor }) => !!fontColor && HeaderFontColorMixin};
8747
8765
  `;
8748
8766
 
8749
8767
  const HeaderTitle = ({ noFeature }) => {
@@ -8767,7 +8785,7 @@ const HeaderTitle = ({ noFeature }) => {
8767
8785
  stringFormat: layerDefinitionAttribute.stringFormat,
8768
8786
  })) ||
8769
8787
  feature?.id);
8770
- }, [attributes, feature, configuration]);
8788
+ }, [configuration, attributes, t, feature?.id]);
8771
8789
  return (jsxRuntime.jsxs(HeaderTitleContainer, { children: [noFeature ? (jsxRuntime.jsx(FeatureTitleContainer, { children: t("noObjectFound", { ns: "dashboard", defaultValue: "Объектов не найдено" }) })) : (jsxRuntime.jsx(FeatureTitleContainer, { clickable: true, children: jsxRuntime.jsx(uilibGl.Tooltip, { arrow: true, placement: "top", content: t("zoomToFeature", { ns: "dashboard", defaultValue: "Приблизить к объекту" }), delay: [600, 0], children: ref => (jsxRuntime.jsx(uilibGl.FlexSpan, { ref: ref, onClick: () => zoomToFeatures([feature]), children: resultTitle })) }) })), jsxRuntime.jsx(LayerDescription, { title: resultDescription, children: resultDescription })] }));
8772
8790
  };
8773
8791
 
@@ -8799,7 +8817,7 @@ var img$1 = "data:image/svg+xml,%3csvg width='32' height='32' viewBox='0 0 32 32
8799
8817
 
8800
8818
  var img = "data:image/svg+xml,%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 24 24' style='enable-background:new 0 0 24 24%3b' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%23AEC46F%3b%7d %3c/style%3e %3cg%3e %3cpath class='st0' d='M19%2c4H5C4.4%2c4%2c4%2c4.4%2c4%2c5v14c0%2c0.6%2c0.4%2c1%2c1%2c1h14c0.6%2c0%2c1-0.4%2c1-1V5C20%2c4.4%2c19.6%2c4%2c19%2c4z M6%2c7.5h2.8l-0.7%2c2H6 V7.5z M6%2c13h5v5h-0.4c-0.3-2.4-2.2-4.3-4.6-4.6V13z M18%2c11h-4.3L18%2c6.7V11z M13%2c10.3V6h4.3L13%2c10.3z M17.9%2c13c-0.5%2c1-1.6%2c1.7-3%2c1.7 H13V13H17.9z M13%2c15.7h1.7c0.1%2c0.9%2c0.5%2c1.7%2c1%2c2.3H13V15.7z M15.7%2c15.6c0.9-0.2%2c1.7-0.6%2c2.3-1.2V18h-0.7 C16.5%2c17.6%2c15.9%2c16.7%2c15.7%2c15.6z M11%2c6v5H6v-0.5h2.5c0.2%2c0%2c0.4-0.1%2c0.5-0.3l1-3c0-0.2%2c0-0.4-0.1-0.5C9.8%2c6.6%2c9.7%2c6.5%2c9.5%2c6.5H6V6 H11z M6%2c14.4c1.8%2c0.3%2c3.3%2c1.8%2c3.6%2c3.6H6V14.4z'/%3e %3c/g%3e%3c/svg%3e";
8801
8819
 
8802
- const LayerIcon = ({ layerInfo, error }) => {
8820
+ const LayerIcon = ({ layerInfo, error, innerRef }) => {
8803
8821
  const geometryType = layerInfo?.configuration?.geometryType;
8804
8822
  const renderSymbol = React.useMemo(() => {
8805
8823
  if (layerInfo?.configuration?.layerType === api.LayerServiceType.RemoteTileLayerService) {
@@ -8821,91 +8839,34 @@ const LayerIcon = ({ layerInfo, error }) => {
8821
8839
  default:
8822
8840
  return jsxRuntime.jsx("img", { src: img$3, alt: "" });
8823
8841
  }
8824
- }, [error, geometryType]);
8825
- return jsxRuntime.jsx(LayerIconContainer, { children: renderSymbol });
8842
+ }, [error, geometryType, layerInfo?.configuration?.layerType]);
8843
+ return jsxRuntime.jsx(LayerIconContainer, { ref: innerRef, children: renderSymbol });
8826
8844
  };
8827
8845
 
8828
- const FeatureCardDefaultHeader = ({ noFeature }) => {
8829
- const { layerInfo } = useWidgetContext(exports.WidgetType.FeatureCard);
8830
- return (jsxRuntime.jsx(DefaultHeaderWrapper, { children: jsxRuntime.jsx(Header, { "$isRow": true, children: jsxRuntime.jsxs(HeaderFrontView, { isDefault: true, children: [jsxRuntime.jsxs(HeaderContainer, { children: [!!layerInfo?.name && jsxRuntime.jsx(LayerIcon, { layerInfo: layerInfo }), jsxRuntime.jsx(HeaderTitle, { noFeature: noFeature })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }) }) }));
8831
- };
8832
-
8833
- const HeaderFontColorMixin$1 = styled.css `
8834
- ${HeaderTitleContainer}, ${LayerDescription} {
8835
- color: ${({ $fontColor }) => $fontColor};
8836
- }
8837
- `;
8838
- const HeaderWrapperMixin$1 = styled.css `
8839
- ${Header} {
8840
- min-height: 5.25rem;
8841
- }
8842
-
8843
- ${HeaderContainer} {
8844
- max-width: 100%;
8845
- width: 100%;
8846
- }
8847
-
8848
- ${FeatureControls} {
8849
- max-width: calc(100% - 2rem);
8850
- width: calc(100% - 2rem);
8851
- margin-top: -0.5rem;
8852
- padding-top: 1rem;
8853
- border-radius: ${({ theme: { borderRadius } }) => borderRadius.medium};
8854
- }
8855
-
8856
- ${({ $fontColor }) => !!$fontColor && HeaderFontColorMixin$1};
8857
- `;
8858
- const GradientHeaderWrapper = styled.div `
8859
- ${Header} {
8860
- background: ${({ $bgColor }) => $bgColor || "radial-gradient(129.21% 133.22% at 51.94% 0%, #e8fffe 9.48%, #5fcaff 100%)"};
8861
- }
8862
-
8863
- ${HeaderContainer} {
8864
- align-items: center;
8865
- }
8866
-
8867
- ${HeaderTitleContainer} {
8868
- margin-left: 0;
8869
- text-align: center;
8870
- }
8871
-
8872
- ${FeatureTitleContainer} {
8873
- text-align: center;
8874
- }
8875
-
8876
- ${LayerDescription} {
8877
- text-align: center;
8878
- }
8879
-
8880
- ${HeaderWrapperMixin$1};
8846
+ const LayerIconClickable = styled.div `
8847
+ display: flex;
8848
+ align-items: center;
8849
+ cursor: pointer;
8881
8850
  `;
8882
8851
 
8883
- const FeatureCardGradientHeader = ({ isRow }) => {
8884
- const { layerInfo } = useWidgetContext(exports.WidgetType.FeatureCard);
8852
+ const HeaderLayerIcon = () => {
8853
+ const { t } = useGlobalContext();
8854
+ const { layerInfo, feature } = useWidgetContext(exports.WidgetType.FeatureCard);
8855
+ const zoomToFeatures = useZoomToFeatures();
8856
+ const getMaxZoomTo = useMaxZoomTo();
8857
+ const [optionsMaxZoomTo, layerMaxZoomTo] = React.useMemo(() => getMaxZoomTo(layerInfo?.name), [layerInfo?.name, getMaxZoomTo]);
8858
+ const handleIconClick = React.useCallback(() => zoomToFeatures([feature], { maxZoom: layerMaxZoomTo ?? optionsMaxZoomTo }), [zoomToFeatures, feature, layerMaxZoomTo, optionsMaxZoomTo]);
8859
+ return (jsxRuntime.jsx(LayerIconClickable, { onClick: handleIconClick, children: jsxRuntime.jsx(uilibGl.Tooltip, { arrow: true, placement: "top", content: t("zoomToFeature", { ns: "dashboard", defaultValue: "Приблизить к объекту" }), delay: [600, 0], children: ref => (jsxRuntime.jsx(LayerIcon, { innerRef: ref, layerInfo: layerInfo })) }) }));
8860
+ };
8861
+
8862
+ const FeatureCardDefaultHeader = ({ noFeature }) => {
8885
8863
  const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
8886
8864
  const { header } = config || {};
8887
8865
  const { options } = header || {};
8888
- const { fontColor, bgColor } = options || {};
8889
- const renderElement = useHeaderRender(header);
8890
- return (jsxRuntime.jsx(GradientHeaderWrapper, { "$fontColor": fontColor, "$bgColor": bgColor, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: uilibGl.defaultTheme, children: jsxRuntime.jsx(Header, { "$isRow": isRow, children: jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { children: [jsxRuntime.jsx(LayerIcon, { layerInfo: layerInfo }), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
8891
- id: "title",
8892
- wrap: false,
8893
- }), description: renderElement({
8894
- id: "description",
8895
- wrap: false,
8896
- }) })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }) }) }) }));
8866
+ const { themeName, withPadding, column, height } = options || {};
8867
+ return (jsxRuntime.jsx(DefaultHeaderWrapper, { withPadding: withPadding, height: height, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsx(Header, { "$isRow": !column, children: jsxRuntime.jsxs(HeaderFrontView, { isDefault: !column, children: [jsxRuntime.jsxs(HeaderContainer, { children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(HeaderTitle, { noFeature: noFeature })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }) }) }) }));
8897
8868
  };
8898
8869
 
8899
- const LayerIconClickable = styled.div `
8900
- display: flex;
8901
- align-items: center;
8902
- cursor: pointer;
8903
- `;
8904
- const HeaderFontColorMixin = styled.css `
8905
- ${HeaderTitleContainer}, ${HeaderTitleContainer} *, ${LayerDescription} {
8906
- color: ${({ $fontColor }) => $fontColor};
8907
- }
8908
- `;
8909
8870
  const HeaderWrapperMixin = styled.css `
8910
8871
  ${Header} {
8911
8872
  min-height: 5.25rem;
@@ -8930,13 +8891,18 @@ const HeaderIcon = styled(uilibGl.Flex) `
8930
8891
  position: absolute;
8931
8892
  top: 0;
8932
8893
  right: 0;
8933
- justify-content: flex-end;
8934
8894
  align-items: center;
8935
- min-width: 7.5rem;
8895
+ justify-content: center;
8896
+ width: 7.625rem;
8936
8897
  height: 100%;
8937
8898
 
8938
- span[kind]:after {
8939
- font-size: 7.5rem;
8899
+ span[kind] {
8900
+ width: 4rem;
8901
+
8902
+ :after {
8903
+ font-size: 4rem;
8904
+ color: rgba(255, 255, 255, 0.36);
8905
+ }
8940
8906
  }
8941
8907
 
8942
8908
  span[kind]:after,
@@ -8962,34 +8928,61 @@ const BigIconHeaderMixin = styled.css `
8962
8928
  }
8963
8929
  }
8964
8930
  `;
8965
- const IconHeaderWrapper = styled.div `
8931
+ const WithPaddingHeaderMixin = styled.css `
8932
+ ${Header} {
8933
+ width: 100%;
8934
+ margin: -0.5rem -0.5rem 0.5rem -0.5rem;
8935
+ }
8936
+ `;
8937
+ const BottomBlurHeaderMixin = styled.css `
8938
+ ${Header} {
8939
+ margin-bottom: 0;
8940
+
8941
+ &::after {
8942
+ content: "";
8943
+ position: absolute;
8944
+ left: 0;
8945
+ right: 0;
8946
+ bottom: 0;
8947
+ height: 2rem;
8948
+ z-index: 11;
8949
+ pointer-events: none;
8950
+ background: ${({ theme: { palette } }) => palette.background};
8951
+ mask-image: linear-gradient(to top, #000 0%, transparent 100%);
8952
+ -webkit-mask-image: linear-gradient(to top, #000 0%, transparent 100%);
8953
+ }
8954
+ }
8955
+
8956
+ ${HeaderFrontView} {
8957
+ z-index: 12;
8958
+ }
8959
+ `;
8960
+ const GradientHeaderWrapper = styled.div `
8966
8961
  ${Header} {
8967
- width: calc(100% + 0.5rem);
8968
- margin: -1rem -1rem 0.5rem -1rem;
8969
- padding: 1.5rem;
8970
- border-top-left-radius: 0.5rem;
8971
- border-top-right-radius: 0.5rem;
8962
+ width: calc(100% + 1rem);
8963
+ height: ${({ $height }) => $height ? `${$height}px` : "auto"};
8964
+ margin: -1rem -1rem 1rem -1rem;
8965
+ border-radius: 0.5rem;
8972
8966
  background: ${({ $bgColor }) => $bgColor || "linear-gradient(96.55deg, #FFFCD3 0%, #B4DC47 100%)"};
8967
+ overflow: hidden;
8973
8968
  }
8974
8969
 
8975
8970
  ${HeaderWrapperMixin};
8976
8971
 
8977
8972
  ${({ $bigIcon }) => $bigIcon && BigIconHeaderMixin};
8973
+
8974
+ ${({ $withPadding }) => $withPadding && WithPaddingHeaderMixin};
8975
+
8976
+ ${({ $bottomBlur }) => $bottomBlur && BottomBlurHeaderMixin};
8978
8977
  `;
8979
8978
 
8980
- const FeatureCardIconHeader = ({ isRow }) => {
8981
- const { t } = useGlobalContext();
8982
- const { layerInfo, feature } = useWidgetContext(exports.WidgetType.FeatureCard);
8979
+ const FeatureCardGradientHeader = () => {
8983
8980
  const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
8984
- const zoomToFeatures = useZoomToFeatures();
8985
- const getMaxZoomTo = useMaxZoomTo();
8986
- const [optionsMaxZoomTo, layerMaxZoomTo] = React.useMemo(() => getMaxZoomTo(layerInfo?.name), [layerInfo?.name, getMaxZoomTo]);
8987
8981
  const { header } = config || {};
8988
8982
  const { options } = header || {};
8989
- const { fontColor, bgColor, bigIcon } = options || {};
8983
+ const { fontColor, bgColor, height, bigIcon, withPadding, bottomBlur, themeName, column } = options || {};
8990
8984
  const renderElement = useHeaderRender(header);
8991
- const handleIconClick = React.useCallback(() => zoomToFeatures([feature], { maxZoom: layerMaxZoomTo ?? optionsMaxZoomTo }), [zoomToFeatures, feature, layerMaxZoomTo, optionsMaxZoomTo]);
8992
- return (jsxRuntime.jsx(IconHeaderWrapper, { "$fontColor": fontColor, "$bgColor": bgColor, "$bigIcon": bigIcon, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: uilibGl.defaultTheme, children: jsxRuntime.jsxs(Header, { "$isRow": isRow, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { children: [jsxRuntime.jsx(uilibGl.Tooltip, { arrow: true, placement: "top", content: t("zoomToFeature", { ns: "dashboard", defaultValue: "Приблизить к объекту" }), delay: [600, 0], children: ref => (jsxRuntime.jsx(LayerIconClickable, { ref: ref, onClick: handleIconClick, children: jsxRuntime.jsx(LayerIcon, { layerInfo: layerInfo }) })) }), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
8985
+ return (jsxRuntime.jsx(GradientHeaderWrapper, { "$fontColor": fontColor, "$bgColor": bgColor, "$height": height, "$bigIcon": bigIcon, "$withPadding": withPadding, "$bottomBlur": bottomBlur, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsxs(Header, { "$isRow": !column, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { column: column, children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
8993
8986
  id: "title",
8994
8987
  wrap: false,
8995
8988
  }), description: renderElement({
@@ -9070,11 +9063,19 @@ const SmallPreviewControl = styled(uilibGl.IconButton) `
9070
9063
  height: 2.5rem;
9071
9064
  margin-top: -1.25rem;
9072
9065
  background-color: rgba(61, 61, 61, 0.8);
9073
- border-radius: ${({ theme: { borderRadius } }) => borderRadius.smallest};
9066
+ border-radius: ${({ theme: { borderRadius } }) => borderRadius.medium};
9074
9067
 
9075
- span:after {
9076
- color: ${({ $isDisabled }) => ($isDisabled ? "rgba(255, 255, 255, 0.28)" : "rgba(255, 255, 255, 1)")};
9077
- transition: color ${uilibGl.transition.hover};
9068
+ :hover {
9069
+ background-color: rgba(61, 61, 61, 1);
9070
+ }
9071
+
9072
+ span {
9073
+ min-width: 1rem;
9074
+
9075
+ :after {
9076
+ color: ${({ $isDisabled }) => ($isDisabled ? "rgba(255, 255, 255, 0.28)" : "rgba(255, 255, 255, 1)")};
9077
+ transition: color ${uilibGl.transition.hover};
9078
+ }
9078
9079
  }
9079
9080
  `;
9080
9081
  const SmallPreviewCounter = styled(uilibGl.Flex) `
@@ -9145,7 +9146,7 @@ const SmallPreviewContainer$1 = styled.div `
9145
9146
 
9146
9147
  ${SmallPreviewControl}, ${SmallPreviewCounter} {
9147
9148
  opacity: 0;
9148
- transition: opacity ${uilibGl.transition.hover};
9149
+ transition: opacity ${uilibGl.transition.hover}, background-color ${uilibGl.transition.hover};
9149
9150
  }
9150
9151
 
9151
9152
  &:hover {
@@ -9729,30 +9730,53 @@ const SmallPreviewContainer = styled.div `
9729
9730
  height: 100%;
9730
9731
  `;
9731
9732
 
9733
+ const useElementSlideshow = ({ type, elementConfig, }) => {
9734
+ const { attributes, dataSources } = useWidgetContext(type);
9735
+ const { options, attributeName } = elementConfig || {};
9736
+ const { relatedDataSource, controls } = options || {};
9737
+ const attribute = React.useMemo(() => attributes?.find(item => item.attributeName === attributeName), [attributes, attributeName]);
9738
+ const isAttachmentAttribute = React.useMemo(() => {
9739
+ if (attribute?.subType === api.StringSubType.Attachments)
9740
+ return true;
9741
+ const mapping = controls?.[0];
9742
+ return !!mapping?.attributeLink;
9743
+ }, [attribute, controls]);
9744
+ const { items } = useAttachmentItems({ type, elementConfig });
9745
+ const imageItems = React.useMemo(() => items.filter(item => IMAGE_FILE_TYPES.includes(getFileType(item.mimeType, item.name))), [items]);
9746
+ const attachmentImages = useAttachmentPreviewImages({
9747
+ items: imageItems,
9748
+ active: isAttachmentAttribute,
9749
+ });
9750
+ const stringImages = React.useMemo(() => {
9751
+ if (isAttachmentAttribute)
9752
+ return [];
9753
+ if (relatedDataSource) {
9754
+ const dataSource = dataSources?.find(({ name }) => name === relatedDataSource);
9755
+ const urls = dataSource?.features
9756
+ ?.map(feature => feature.properties[attributeName])
9757
+ .filter(Boolean) ?? [];
9758
+ return urls.map(src => ({ src, fileName: src }));
9759
+ }
9760
+ if (!elementConfig)
9761
+ return [];
9762
+ const urls = getSlideshowImages({ element: elementConfig, attribute });
9763
+ return urls.map(src => ({ src, fileName: src }));
9764
+ }, [isAttachmentAttribute, relatedDataSource, dataSources, attributeName, elementConfig, attribute]);
9765
+ const images = isAttachmentAttribute ? attachmentImages : stringImages;
9766
+ return { images };
9767
+ };
9768
+
9732
9769
  const ElementSlideshow = ({ elementConfig, type, renderElement }) => {
9733
- const { expandedContainers, dataSources, attributes } = useWidgetContext(type);
9770
+ const { expandedContainers } = useWidgetContext(type);
9734
9771
  const [currentIndex, setCurrentIndex] = React.useState(0);
9735
- const [isOpenGallery, toggleGallery] = useToggle();
9736
- const { id, options, attributeName } = elementConfig || {};
9737
- const { expandable, expanded, relatedDataSource } = options || {};
9772
+ const [previewIndex, setPreviewIndex] = React.useState(null);
9773
+ const { id, options } = elementConfig || {};
9774
+ const { expandable, expanded } = options || {};
9738
9775
  const isVisible = isVisibleContainer(id, expandable, expanded, expandedContainers);
9739
- const images = React.useMemo(() => {
9740
- const dataSource = relatedDataSource ? dataSources?.find(({ name }) => name === relatedDataSource) : null;
9741
- const array = dataSource
9742
- ? dataSource.features.map(feature => feature.properties[attributeName])
9743
- : getSlideshowImages({
9744
- element: elementConfig,
9745
- attribute: attributes?.find(item => item.attributeName === attributeName),
9746
- });
9747
- return (array?.map(image => ({
9748
- src: image,
9749
- fileName: image,
9750
- })) || []);
9751
- }, [attributeName, attributes, dataSources, elementConfig, relatedDataSource]);
9752
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsxs(SmallPreviewContainer, { children: [jsxRuntime.jsx(SmallPreview, { images: images, currentIndex: currentIndex, setCurrentIndex: setCurrentIndex, onClick: toggleGallery }), isOpenGallery && (jsxRuntime.jsx(uilibGl.Preview, { images: images,
9753
- // currentIndex={currentIndex}
9754
- // totalCount={images.length}
9755
- isOpen: isOpenGallery, onClose: toggleGallery }))] }))] }));
9776
+ const { images } = useElementSlideshow({ type, elementConfig });
9777
+ const handleOpenGallery = React.useCallback(() => setPreviewIndex(currentIndex), [currentIndex]);
9778
+ const handleCloseGallery = React.useCallback(() => setPreviewIndex(null), []);
9779
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsxs(SmallPreviewContainer, { children: [jsxRuntime.jsx(SmallPreview, { images: images, currentIndex: currentIndex, setCurrentIndex: setCurrentIndex, onClick: handleOpenGallery }), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: images, initialIndex: previewIndex, isOpen: previewIndex !== null, onClose: handleCloseGallery }, previewIndex))] }))] }));
9756
9780
  };
9757
9781
 
9758
9782
  const ElementSvg = React.memo(({ type, elementConfig, ...rest }) => {
@@ -9788,14 +9812,11 @@ const ElementTooltip = React.memo(({ type, elementConfig }) => {
9788
9812
  });
9789
9813
 
9790
9814
  const SlideshowHeaderWrapper = styled.div `
9791
- padding: ${({ withPadding }) => (withPadding ? "0.5rem 0.5rem 0" : 0)};
9792
-
9793
9815
  ${Header} {
9794
9816
  align-items: flex-start;
9795
- width: calc(100% + 2rem);
9796
- height: ${({ big }) => (big ? "15.5rem" : "auto")};
9797
- padding: 1.5rem;
9798
- margin: -1rem -1rem 0 -1rem;
9817
+ height: ${({ height, big }) => height ? `${height}px` : (big ? "15.5rem" : "auto")};
9818
+ width: ${({ withPadding }) => (withPadding ? "100%" : "calc(100% + 1rem)")};
9819
+ margin: ${({ withPadding }) => (withPadding ? "-0.5rem -0.5rem 0.5rem -0.5rem" : "-1rem -1rem 1rem -1rem")};
9799
9820
  border-radius: ${({ theme: { borderRadius } }) => borderRadius.medium};
9800
9821
 
9801
9822
  ${SmallPreviewCounter} {
@@ -9828,6 +9849,8 @@ const SlideshowHeaderWrapper = styled.div `
9828
9849
  }
9829
9850
  }
9830
9851
  }
9852
+
9853
+ ${({ fontColor }) => !!fontColor && HeaderFontColorMixin};
9831
9854
  `;
9832
9855
  const ImageContainerBg = styled.div `
9833
9856
  position: absolute;
@@ -9859,14 +9882,13 @@ const HeaderSlideshow = styled.div `
9859
9882
  }
9860
9883
  `;
9861
9884
 
9862
- const FeatureCardSlideshowHeader = ({ isRow }) => {
9863
- const { layerInfo } = useWidgetContext(exports.WidgetType.FeatureCard);
9885
+ const FeatureCardSlideshowHeader = () => {
9864
9886
  const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
9865
9887
  const { header } = config || {};
9866
9888
  const { options } = header || {};
9867
- const { height, withPadding } = options || {};
9889
+ const { height, fontColor, withPadding, themeName, column } = options || {};
9868
9890
  const renderElement = useHeaderRender(header);
9869
- return (jsxRuntime.jsx(SlideshowHeaderWrapper, { big: true, withPadding: withPadding, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: uilibGl.darkTheme, children: jsxRuntime.jsxs(Header, { "$isRow": isRow, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { children: [jsxRuntime.jsx(LayerIcon, { layerInfo: layerInfo }), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
9891
+ return (jsxRuntime.jsx(SlideshowHeaderWrapper, { fontColor: fontColor, withPadding: withPadding, height: height, big: true, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsxs(Header, { "$isRow": !column, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { column: column, children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
9870
9892
  id: "title",
9871
9893
  wrap: false,
9872
9894
  }), description: renderElement({
@@ -10202,13 +10224,6 @@ const ElementModal = React.memo(({ type = exports.WidgetType.Dashboard, elementC
10202
10224
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalIcon, { kind: icon || "new_window", onClick: handleOpen, children: title }), jsxRuntime.jsxs(uilibGl.Dialog, { maxWidth: maxWidth, minWidth: minWidth, minHeight: minHeight, isOpen: isOpen, modal: true, onCloseRequest: handleClose, style: { paddingBottom: "2rem" }, children: [jsxRuntime.jsx(uilibGl.DialogTitle, { children: jsxRuntime.jsxs(uilibGl.Flex, { justifyContent: "space-between", alignItems: "center", children: [!!title && jsxRuntime.jsx("span", { children: title }), jsxRuntime.jsx(uilibGl.IconButton, { kind: "close", onClick: handleClose })] }) }), jsxRuntime.jsx(uilibGl.DialogContent, { children: isLoading ? (jsxRuntime.jsx(DashboardLoading, {})) : (jsxRuntime.jsx(Container, { isColumn: true, noBorders: true, children: jsxRuntime.jsx(ContainerChildren, { type: type, items: modalContent, isMain: true, renderElement: renderElement }) })) })] })] }));
10203
10225
  });
10204
10226
 
10205
- const ElementLayerName = React.memo(({ type }) => {
10206
- const { layerInfo } = useWidgetContext(type);
10207
- if (!layerInfo?.name)
10208
- return null;
10209
- return jsxRuntime.jsx("span", { children: layerInfo.name });
10210
- });
10211
-
10212
10227
  const elementComponents = {
10213
10228
  control: ElementControl,
10214
10229
  image: ElementImage,
@@ -10225,7 +10240,6 @@ const elementComponents = {
10225
10240
  markdown: ElementMarkdown,
10226
10241
  uploader: ElementUploader,
10227
10242
  modal: ElementModal,
10228
- layerName: ElementLayerName,
10229
10243
  };
10230
10244
 
10231
10245
  const getElementValue = ({ getDefaultContainer, ...props }) => {
@@ -10259,6 +10273,9 @@ const getElementValue = ({ getDefaultContainer, ...props }) => {
10259
10273
  null
10260
10274
  : null;
10261
10275
  }
10276
+ if (type === "layerName") {
10277
+ return layerInfo?.name || "";
10278
+ }
10262
10279
  const ElementComponent = type ? elementComponents[type] : null;
10263
10280
  return ElementComponent ? (jsxRuntime.jsx(ElementComponent, { ...props })) : (getDefaultContainer?.());
10264
10281
  };
@@ -10315,8 +10332,6 @@ const getFeatureCardHeader = (templateName) => {
10315
10332
  return FeatureCardSlideshowHeader;
10316
10333
  case exports.HeaderTemplate.Gradient:
10317
10334
  return FeatureCardGradientHeader;
10318
- case exports.HeaderTemplate.Icon:
10319
- return FeatureCardIconHeader;
10320
10335
  case exports.HeaderTemplate.Default:
10321
10336
  default:
10322
10337
  return FeatureCardDefaultHeader;
@@ -11286,6 +11301,10 @@ const getTemplateNameFromAttribute = (attribute) => {
11286
11301
  }
11287
11302
  };
11288
11303
 
11304
+ const getThemeByName = (themeName) => {
11305
+ return themeName === exports.ThemeName.Dark ? uilibGl.darkTheme : uilibGl.defaultTheme;
11306
+ };
11307
+
11289
11308
  const getDisplayTemplateNameFromAttribute = (attribute) => {
11290
11309
  if (attribute?.subType === api.StringSubType.Attachments) {
11291
11310
  return exports.ContainerTemplate.Attachment;
@@ -11458,6 +11477,30 @@ const useContainerAttributes = ({ elementConfig, type, renderElement }) => {
11458
11477
  return { getRenderContainerItem, attributesToRender };
11459
11478
  };
11460
11479
 
11480
+ const useEditGroupAttributes = ({ elementConfig, type }) => {
11481
+ const { options } = elementConfig || {};
11482
+ const { controls, useProjectHiddenAttributes } = options || {};
11483
+ const { attributes, layerInfo } = useWidgetContext(type);
11484
+ const [hiddenAttributes] = useLayerHiddenAttributes(layerInfo?.name ?? "");
11485
+ const filteredAttributes = React.useMemo(() => {
11486
+ const { idAttribute } = layerInfo?.configuration?.attributesConfiguration || {};
11487
+ const withoutIdAttribute = idAttribute
11488
+ ? attributes.filter(({ attributeName }) => attributeName !== idAttribute)
11489
+ : attributes;
11490
+ if (!useProjectHiddenAttributes)
11491
+ return withoutIdAttribute;
11492
+ return withoutIdAttribute.filter(({ attributeName }) => !hiddenAttributes.includes(attributeName));
11493
+ }, [attributes, layerInfo?.configuration, hiddenAttributes, useProjectHiddenAttributes]);
11494
+ const filteredControls = React.useMemo(() => {
11495
+ if (!controls)
11496
+ return controls;
11497
+ if (!useProjectHiddenAttributes)
11498
+ return controls;
11499
+ return controls.filter(({ targetAttributeName }) => targetAttributeName ? !hiddenAttributes.includes(targetAttributeName) : true);
11500
+ }, [controls, hiddenAttributes, useProjectHiddenAttributes]);
11501
+ return { filteredAttributes, filteredControls };
11502
+ };
11503
+
11461
11504
  const useFetchWithAuth = (url, transform, cleanup) => {
11462
11505
  const [data, setData] = React.useState(null);
11463
11506
  const loadingRef = React.useRef(false);
@@ -12760,13 +12803,15 @@ const FeatureCardTitle = ({ title, description }) => {
12760
12803
  const titleAttribute = configuration?.attributesConfiguration?.titleAttribute;
12761
12804
  const resultDescription = description || configuration?.alias || configuration?.name || "";
12762
12805
  const resultTitle = React.useMemo(() => {
12763
- const layerDefinitionAttribute = titleAttribute && attributes?.length
12806
+ const foundAttribute = titleAttribute && attributes?.length
12764
12807
  ? attributes.find(item => item.attributeName === titleAttribute)
12765
12808
  : null;
12809
+ const isAttachmentTitle = foundAttribute?.subType === api.StringSubType.Attachments;
12810
+ const layerDefinitionAttribute = isAttachmentTitle ? null : foundAttribute;
12766
12811
  const layerDefinitionTitle = titleAttribute && layerDefinitionAttribute?.value
12767
12812
  ? layerDefinitionAttribute.value
12768
12813
  : null;
12769
- const sourceTitleAttribute = titleAttribute && attributes?.length ? attributes.find(item => item.attributeName === titleAttribute) : null;
12814
+ const sourceTitleAttribute = isAttachmentTitle ? null : foundAttribute;
12770
12815
  const sourceTitle = titleAttribute && sourceTitleAttribute?.value ? sourceTitleAttribute.value : null;
12771
12816
  return (title ||
12772
12817
  (!!sourceTitle &&
@@ -12780,7 +12825,7 @@ const FeatureCardTitle = ({ title, description }) => {
12780
12825
  })) ||
12781
12826
  feature?.id);
12782
12827
  }, [attributes, feature?.id, titleAttribute, title, t]);
12783
- return (jsxRuntime.jsxs(HeaderTitleContainer, { children: [jsxRuntime.jsx(FeatureTitleContainer, { children: jsxRuntime.jsx(uilibGl.FlexSpan, { children: resultTitle }) }), jsxRuntime.jsx(LayerDescription, { title: resultDescription, children: resultDescription })] }));
12828
+ return (jsxRuntime.jsxs(HeaderTitleContainer, { children: [jsxRuntime.jsx(FeatureTitleContainer, { children: jsxRuntime.jsx(uilibGl.FlexSpan, { children: toRenderableValue(resultTitle) }) }), jsxRuntime.jsx(LayerDescription, { title: resultDescription, children: resultDescription })] }));
12784
12829
  };
12785
12830
 
12786
12831
  const HiddenFilters = styled(uilibGl.Flex) `
@@ -13464,7 +13509,6 @@ exports.FeatureCardContext = FeatureCardContext;
13464
13509
  exports.FeatureCardDefaultHeader = FeatureCardDefaultHeader;
13465
13510
  exports.FeatureCardGradientHeader = FeatureCardGradientHeader;
13466
13511
  exports.FeatureCardHeader = FeatureCardHeader;
13467
- exports.FeatureCardIconHeader = FeatureCardIconHeader;
13468
13512
  exports.FeatureCardProvider = FeatureCardProvider;
13469
13513
  exports.FeatureCardSlideshowHeader = FeatureCardSlideshowHeader;
13470
13514
  exports.FeatureCardTitle = FeatureCardTitle;
@@ -13476,6 +13520,7 @@ exports.GlobalContext = GlobalContext;
13476
13520
  exports.GlobalProvider = GlobalProvider;
13477
13521
  exports.Header = Header;
13478
13522
  exports.HeaderContainer = HeaderContainer;
13523
+ exports.HeaderFontColorMixin = HeaderFontColorMixin;
13479
13524
  exports.HeaderFrontView = HeaderFrontView;
13480
13525
  exports.HeaderTitleContainer = HeaderTitleContainer;
13481
13526
  exports.HiddenTitleItems = HiddenTitleItems;
@@ -13605,6 +13650,7 @@ exports.getSelectedFilterValue = getSelectedFilterValue;
13605
13650
  exports.getSlideshowImages = getSlideshowImages;
13606
13651
  exports.getSvgUrl = getSvgUrl;
13607
13652
  exports.getTemplateNameFromAttribute = getTemplateNameFromAttribute;
13653
+ exports.getThemeByName = getThemeByName;
13608
13654
  exports.getTotalFromAttributes = getTotalFromAttributes;
13609
13655
  exports.getTotalFromRelatedFeatures = getTotalFromRelatedFeatures;
13610
13656
  exports.hexToRgba = hexToRgba;
@@ -13630,6 +13676,7 @@ exports.rgbToHex = rgbToHex;
13630
13676
  exports.roundTotalSum = roundTotalSum;
13631
13677
  exports.sliceShownOtherItems = sliceShownOtherItems;
13632
13678
  exports.timeOptions = timeOptions;
13679
+ exports.toRenderableValue = toRenderableValue;
13633
13680
  exports.tooltipNameFromAttributes = tooltipNameFromAttributes;
13634
13681
  exports.tooltipValueFromAttributes = tooltipValueFromAttributes;
13635
13682
  exports.tooltipValueFromRelatedFeatures = tooltipValueFromRelatedFeatures;
@@ -13637,6 +13684,8 @@ exports.transparentizeColor = transparentizeColor;
13637
13684
  exports.treeNodesToProjectItems = treeNodesToProjectItems;
13638
13685
  exports.updateDataSource = updateDataSource;
13639
13686
  exports.useAppHeight = useAppHeight;
13687
+ exports.useAttachmentItems = useAttachmentItems;
13688
+ exports.useAttachmentPreviewImages = useAttachmentPreviewImages;
13640
13689
  exports.useAutoCompleteControl = useAutoCompleteControl;
13641
13690
  exports.useChartChange = useChartChange;
13642
13691
  exports.useChartData = useChartData;
@@ -13647,6 +13696,7 @@ exports.useDashboardHeader = useDashboardHeader;
13647
13696
  exports.useDataSources = useDataSources;
13648
13697
  exports.useDebouncedCallback = useDebouncedCallback;
13649
13698
  exports.useDiffPage = useDiffPage;
13699
+ exports.useEditGroupAttributes = useEditGroupAttributes;
13650
13700
  exports.useExpandableContainers = useExpandableContainers;
13651
13701
  exports.useExportPdf = useExportPdf;
13652
13702
  exports.useFetchImageWithAuth = useFetchImageWithAuth;