@evergis/react 4.0.138 → 4.0.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Dashboard/containers/VoteContainer/styled.d.ts +2 -1
- package/dist/hooks/map/index.d.ts +0 -1
- package/dist/index.js +248 -295
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +250 -296
- package/dist/react.esm.js.map +1 -1
- package/package.json +2 -2
package/dist/react.esm.js
CHANGED
|
@@ -4,7 +4,7 @@ import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
|
4
4
|
import { isValidElement, Fragment, createContext, memo, useRef, useState, useCallback, useEffect, useContext, useMemo, createElement, useLayoutEffect, forwardRef } from 'react';
|
|
5
5
|
import { barChartClassNames, lineChartClassNames, BarChart as BarChart$1, LineChart, PieChart } from '@evergis/charts';
|
|
6
6
|
import { AttributeType, AttributeIconType, generateId, STORAGE_TOKEN_KEY, parseJwt, STORAGE_REFRESH_TOKEN_KEY, RemoteTaskStatus, AttributeConfigurationType, LayerServiceType, OgcGeometryType, StringSubType } from '@evergis/api';
|
|
7
|
-
import { isNil, isEqual,
|
|
7
|
+
import { isNil, isEqual, uniqueId, isEmpty, unescape } from 'lodash';
|
|
8
8
|
import { ColorScale, Color as Color$1 } from '@evergis/color';
|
|
9
9
|
import { isValid, format, parseJSON, parseISO, toDate } from 'date-fns';
|
|
10
10
|
import { ru, enUS } from 'date-fns/locale';
|
|
@@ -6353,300 +6353,23 @@ const useMapImages = ({ images }) => {
|
|
|
6353
6353
|
};
|
|
6354
6354
|
void loadAllImages();
|
|
6355
6355
|
}, [mapLoaded, images, map, addImage]);
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
|
|
6359
|
-
const enrichStyleItemsWithIds = (style) => {
|
|
6360
|
-
return {
|
|
6361
|
-
...style,
|
|
6362
|
-
items: style.items.map(item => {
|
|
6363
|
-
return {
|
|
6364
|
-
...item,
|
|
6365
|
-
id: item.id || v4(),
|
|
6366
|
-
};
|
|
6367
|
-
}),
|
|
6368
|
-
};
|
|
6369
|
-
};
|
|
6370
|
-
|
|
6371
|
-
const enrichStyleModelsWithIds = (style) => {
|
|
6372
|
-
return {
|
|
6373
|
-
...style,
|
|
6374
|
-
models: style.models.map(model => {
|
|
6375
|
-
return {
|
|
6376
|
-
...model,
|
|
6377
|
-
id: model.id || v4(),
|
|
6378
|
-
};
|
|
6379
|
-
}),
|
|
6380
|
-
};
|
|
6381
|
-
};
|
|
6382
|
-
|
|
6383
|
-
const findAttributeInExpression = (expression) => {
|
|
6384
|
-
if (Array.isArray(expression) && expression.length === 2 && expression[0] === "get") {
|
|
6385
|
-
return [expression[1]];
|
|
6386
|
-
}
|
|
6387
|
-
return expression.reduce((acc, curr) => {
|
|
6388
|
-
if (!Array.isArray(curr)) {
|
|
6389
|
-
return acc;
|
|
6390
|
-
}
|
|
6391
|
-
if (curr[0] === "get") {
|
|
6392
|
-
return [...new Set([...acc, curr[1]])];
|
|
6393
|
-
}
|
|
6394
|
-
return [...new Set([...acc, ...findAttributeInExpression(curr)])];
|
|
6395
|
-
}, []);
|
|
6396
|
-
};
|
|
6397
|
-
|
|
6398
|
-
const getActualExtrusionHeight = (paint) => {
|
|
6399
|
-
return Array.isArray(paint?.["fill-extrusion-height"]) && paint?.["fill-extrusion-height"][0] === "+"
|
|
6400
|
-
? paint?.["fill-extrusion-height"][1]
|
|
6401
|
-
: paint?.["fill-extrusion-height"];
|
|
6402
|
-
};
|
|
6403
|
-
|
|
6404
|
-
const getLayerClientStyle = (layer) => {
|
|
6405
|
-
const clientStyle = layer?.configuration?.clientStyle;
|
|
6406
|
-
return {
|
|
6407
|
-
...clientStyle,
|
|
6408
|
-
items: clientStyle?.items ?? [],
|
|
6409
|
-
};
|
|
6410
|
-
};
|
|
6411
|
-
|
|
6412
|
-
const extractAttributesFromObject = (obj) => {
|
|
6413
|
-
if (!obj || isEmpty(obj)) {
|
|
6414
|
-
return [];
|
|
6415
|
-
}
|
|
6416
|
-
return Object.entries(obj).reduce((acc, [, value]) => {
|
|
6417
|
-
if (!Array.isArray(value)) {
|
|
6418
|
-
return acc;
|
|
6356
|
+
useEffect(() => {
|
|
6357
|
+
if (!mapLoaded) {
|
|
6358
|
+
return;
|
|
6419
6359
|
}
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
|
|
6425
|
-
return [];
|
|
6426
|
-
}
|
|
6427
|
-
return style?.items?.reduce((acc, curr) => {
|
|
6428
|
-
const paintAttributes = extractAttributesFromObject(curr.paint);
|
|
6429
|
-
const layoutAttributes = extractAttributesFromObject(curr.layout);
|
|
6430
|
-
const filterAttributes = curr.filter
|
|
6431
|
-
? findAttributeInExpression(curr.filter)
|
|
6432
|
-
: [];
|
|
6433
|
-
return [...new Set([...acc, ...paintAttributes, ...layoutAttributes, ...filterAttributes])];
|
|
6434
|
-
}, []);
|
|
6435
|
-
};
|
|
6436
|
-
|
|
6437
|
-
/**
|
|
6438
|
-
* Извлекает имена иконок из выражения icon-image.
|
|
6439
|
-
*
|
|
6440
|
-
* Поддерживает:
|
|
6441
|
-
* - Строки: "parking" → ["parking"]
|
|
6442
|
-
* - match: ["match", ["get", "type"], "a", "icon-a", "b", "icon-b", "default"] → ["icon-a", "icon-b", "default"]
|
|
6443
|
-
* - case: ["case", [...], "icon-a", "icon-b"] → ["icon-a", "icon-b"]
|
|
6444
|
-
* - coalesce: ["coalesce", ["image", "icon-a"], ["image", "icon-b"]] → ["icon-a", "icon-b"]
|
|
6445
|
-
* - image: ["image", "icon-a"] → ["icon-a"]
|
|
6446
|
-
*
|
|
6447
|
-
* @param iconImage - значение icon-image из layout
|
|
6448
|
-
* @returns массив имён иконок
|
|
6449
|
-
*/
|
|
6450
|
-
const parseIconNames = (iconImage) => {
|
|
6451
|
-
if (!iconImage) {
|
|
6452
|
-
return [];
|
|
6453
|
-
}
|
|
6454
|
-
// Простая строка: "parking"
|
|
6455
|
-
if (typeof iconImage === "string") {
|
|
6456
|
-
return [iconImage];
|
|
6457
|
-
}
|
|
6458
|
-
// Выражение Mapbox
|
|
6459
|
-
if (Array.isArray(iconImage) && iconImage.length > 0) {
|
|
6460
|
-
const [operator, ...args] = iconImage;
|
|
6461
|
-
switch (operator) {
|
|
6462
|
-
// ["match", input, label1, output1, label2, output2, ..., fallback]
|
|
6463
|
-
case "match": {
|
|
6464
|
-
const results = [];
|
|
6465
|
-
// Пропускаем первый аргумент (input), берём каждый второй начиная с индекса 2
|
|
6466
|
-
for (let i = 2; i < args.length; i += 2) {
|
|
6467
|
-
if (typeof args[i] === "string") {
|
|
6468
|
-
results.push(args[i]);
|
|
6469
|
-
}
|
|
6470
|
-
else if (Array.isArray(args[i])) {
|
|
6471
|
-
results.push(...parseIconNames(args[i]));
|
|
6472
|
-
}
|
|
6473
|
-
}
|
|
6474
|
-
// Последний аргумент - fallback (если нечётное количество после input)
|
|
6475
|
-
const lastArg = args[args.length - 1];
|
|
6476
|
-
if (typeof lastArg === "string") {
|
|
6477
|
-
results.push(lastArg);
|
|
6478
|
-
}
|
|
6479
|
-
else if (Array.isArray(lastArg)) {
|
|
6480
|
-
results.push(...parseIconNames(lastArg));
|
|
6481
|
-
}
|
|
6482
|
-
return [...new Set(results)];
|
|
6483
|
-
}
|
|
6484
|
-
// ["case", condition1, output1, condition2, output2, ..., fallback]
|
|
6485
|
-
case "case": {
|
|
6486
|
-
const results = [];
|
|
6487
|
-
for (let i = 1; i < args.length; i += 2) {
|
|
6488
|
-
if (typeof args[i] === "string") {
|
|
6489
|
-
results.push(args[i]);
|
|
6490
|
-
}
|
|
6491
|
-
else if (Array.isArray(args[i])) {
|
|
6492
|
-
results.push(...parseIconNames(args[i]));
|
|
6493
|
-
}
|
|
6360
|
+
map.current.on("styleimagemissing", async (e) => {
|
|
6361
|
+
const missingImage = images.find(item => item.name === e.id);
|
|
6362
|
+
if (missingImage && !map.current.hasImage(e.id)) {
|
|
6363
|
+
try {
|
|
6364
|
+
await addImage(missingImage);
|
|
6494
6365
|
}
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
const lastArg = args[args.length - 1];
|
|
6498
|
-
if (typeof lastArg === "string") {
|
|
6499
|
-
results.push(lastArg);
|
|
6500
|
-
}
|
|
6501
|
-
else if (Array.isArray(lastArg)) {
|
|
6502
|
-
results.push(...parseIconNames(lastArg));
|
|
6503
|
-
}
|
|
6366
|
+
catch {
|
|
6367
|
+
// Ошибка уже записана в errors
|
|
6504
6368
|
}
|
|
6505
|
-
return [...new Set(results)];
|
|
6506
|
-
}
|
|
6507
|
-
// ["coalesce", expr1, expr2, ...]
|
|
6508
|
-
case "coalesce": {
|
|
6509
|
-
const results = [];
|
|
6510
|
-
args.forEach(arg => {
|
|
6511
|
-
if (typeof arg === "string") {
|
|
6512
|
-
results.push(arg);
|
|
6513
|
-
}
|
|
6514
|
-
else if (Array.isArray(arg)) {
|
|
6515
|
-
results.push(...parseIconNames(arg));
|
|
6516
|
-
}
|
|
6517
|
-
});
|
|
6518
|
-
return [...new Set(results)];
|
|
6519
|
-
}
|
|
6520
|
-
// ["image", name] или ["image", name1, name2, ...]
|
|
6521
|
-
case "image": {
|
|
6522
|
-
return args.filter((arg) => typeof arg === "string");
|
|
6523
|
-
}
|
|
6524
|
-
// ["concat", ...] или другие - рекурсивно ищем строки
|
|
6525
|
-
default: {
|
|
6526
|
-
const results = [];
|
|
6527
|
-
args.forEach(arg => {
|
|
6528
|
-
if (Array.isArray(arg)) {
|
|
6529
|
-
results.push(...parseIconNames(arg));
|
|
6530
|
-
}
|
|
6531
|
-
});
|
|
6532
|
-
return [...new Set(results)];
|
|
6533
|
-
}
|
|
6534
|
-
}
|
|
6535
|
-
}
|
|
6536
|
-
return [];
|
|
6537
|
-
};
|
|
6538
|
-
/**
|
|
6539
|
-
* Свойства, содержащие имена изображений (иконки и паттерны).
|
|
6540
|
-
*/
|
|
6541
|
-
const IMAGE_PROPERTIES = {
|
|
6542
|
-
layout: ["icon-image"],
|
|
6543
|
-
paint: ["fill-pattern", "line-pattern", "fill-extrusion-pattern"],
|
|
6544
|
-
};
|
|
6545
|
-
/**
|
|
6546
|
-
* Извлекает все имена изображений из clientStyle.
|
|
6547
|
-
* Включает иконки (icon-image) и паттерны (fill-pattern, line-pattern, fill-extrusion-pattern).
|
|
6548
|
-
*
|
|
6549
|
-
* @param clientStyle - конфигурация стиля слоя
|
|
6550
|
-
* @returns массив уникальных имён изображений
|
|
6551
|
-
*/
|
|
6552
|
-
const parseIconNamesFromClientStyle = (clientStyle) => {
|
|
6553
|
-
if (!clientStyle?.items) {
|
|
6554
|
-
return [];
|
|
6555
|
-
}
|
|
6556
|
-
const imageNames = new Set();
|
|
6557
|
-
clientStyle.items.forEach(item => {
|
|
6558
|
-
// Парсим icon-image из layout
|
|
6559
|
-
IMAGE_PROPERTIES.layout.forEach(prop => {
|
|
6560
|
-
const value = item.layout?.[prop];
|
|
6561
|
-
if (value) {
|
|
6562
|
-
parseIconNames(value).forEach(name => imageNames.add(name));
|
|
6563
|
-
}
|
|
6564
|
-
});
|
|
6565
|
-
// Парсим fill-pattern, line-pattern, fill-extrusion-pattern из paint
|
|
6566
|
-
IMAGE_PROPERTIES.paint.forEach(prop => {
|
|
6567
|
-
const value = item.paint?.[prop];
|
|
6568
|
-
if (value) {
|
|
6569
|
-
parseIconNames(value).forEach(name => imageNames.add(name));
|
|
6570
|
-
}
|
|
6571
|
-
});
|
|
6572
|
-
});
|
|
6573
|
-
return [...imageNames];
|
|
6574
|
-
};
|
|
6575
|
-
|
|
6576
|
-
/**
|
|
6577
|
-
* Находит конфигурацию иконки в clientStyle.icons по имени.
|
|
6578
|
-
*/
|
|
6579
|
-
const findIconConfig = (layers, iconName) => {
|
|
6580
|
-
for (const layer of layers) {
|
|
6581
|
-
const icon = layer.clientStyle?.icons?.find(i => i.name === iconName);
|
|
6582
|
-
if (icon) {
|
|
6583
|
-
return icon;
|
|
6584
|
-
}
|
|
6585
|
-
}
|
|
6586
|
-
return undefined;
|
|
6587
|
-
};
|
|
6588
|
-
/**
|
|
6589
|
-
* Хук для автоматической загрузки иконок из clientStyle слоёв.
|
|
6590
|
-
*
|
|
6591
|
-
* Парсит все icon-image выражения из clientStyle.items и загружает
|
|
6592
|
-
* соответствующие иконки из clientStyle.icons или по конвенции baseUrl.
|
|
6593
|
-
*
|
|
6594
|
-
* @example
|
|
6595
|
-
* ```tsx
|
|
6596
|
-
* const layers = [
|
|
6597
|
-
* {
|
|
6598
|
-
* layerId: 'parking',
|
|
6599
|
-
* clientStyle: {
|
|
6600
|
-
* icons: [
|
|
6601
|
-
* { name: 'parking-icon', url: '/icons/parking.svg', sdf: true }
|
|
6602
|
-
* ],
|
|
6603
|
-
* items: [{
|
|
6604
|
-
* type: 'symbol',
|
|
6605
|
-
* layout: { 'icon-image': 'parking-icon' }
|
|
6606
|
-
* }]
|
|
6607
|
-
* }
|
|
6608
|
-
* }
|
|
6609
|
-
* ];
|
|
6610
|
-
*
|
|
6611
|
-
* const { loaded, errors } = useIconsFromLayers({ layers });
|
|
6612
|
-
*
|
|
6613
|
-
* if (!loaded) return <Loading />;
|
|
6614
|
-
* ```
|
|
6615
|
-
*/
|
|
6616
|
-
const useIconsFromLayers = ({ layers, baseUrl = "/icons", defaultExtension = "svg", }) => {
|
|
6617
|
-
// Собираем все уникальные имена иконок из всех слоёв
|
|
6618
|
-
const requestedIcons = useMemo(() => {
|
|
6619
|
-
const iconNames = new Set();
|
|
6620
|
-
layers.forEach(layer => {
|
|
6621
|
-
const names = parseIconNamesFromClientStyle(layer.clientStyle);
|
|
6622
|
-
names.forEach(name => iconNames.add(name));
|
|
6623
|
-
});
|
|
6624
|
-
return [...iconNames];
|
|
6625
|
-
}, [layers]);
|
|
6626
|
-
// Формируем конфигурации для загрузки
|
|
6627
|
-
const imageConfigs = useMemo(() => {
|
|
6628
|
-
return requestedIcons.map(name => {
|
|
6629
|
-
// Ищем в clientStyle.icons
|
|
6630
|
-
const customIcon = findIconConfig(layers, name);
|
|
6631
|
-
if (customIcon) {
|
|
6632
|
-
return {
|
|
6633
|
-
name: customIcon.name,
|
|
6634
|
-
url: customIcon.url,
|
|
6635
|
-
sdf: customIcon.sdf,
|
|
6636
|
-
size: customIcon.size,
|
|
6637
|
-
pixelRatio: customIcon.pixelRatio,
|
|
6638
|
-
};
|
|
6639
6369
|
}
|
|
6640
|
-
// Fallback: конструируем URL по конвенции
|
|
6641
|
-
return {
|
|
6642
|
-
name,
|
|
6643
|
-
url: `${baseUrl}/${name}.${defaultExtension}`,
|
|
6644
|
-
sdf: true,
|
|
6645
|
-
};
|
|
6646
6370
|
});
|
|
6647
|
-
}, [
|
|
6648
|
-
|
|
6649
|
-
return { loaded, errors, requestedIcons };
|
|
6371
|
+
}, [mapLoaded]);
|
|
6372
|
+
return { loaded, errors, addImage, removeImage, hasImage };
|
|
6650
6373
|
};
|
|
6651
6374
|
|
|
6652
6375
|
const useRedrawLayer = () => {
|
|
@@ -12183,7 +11906,8 @@ const VoteAcceptedBadge = styled(Flex).withConfig({ displayName: "VoteAcceptedBa
|
|
|
12183
11906
|
color: #ffffff;
|
|
12184
11907
|
font-size: 0.875rem;
|
|
12185
11908
|
`;
|
|
12186
|
-
|
|
11909
|
+
/** Мелкая серая подпись под контролами: почему нельзя голосовать или почему кнопка неактивна. */
|
|
11910
|
+
const VoteHint = styled.div.withConfig({ displayName: "VoteHint", componentId: "sc-1ortkdd" }) `
|
|
12187
11911
|
font-size: 0.8125rem;
|
|
12188
11912
|
color: ${({ theme: { palette } }) => palette.textSecondary};
|
|
12189
11913
|
`;
|
|
@@ -12285,8 +12009,18 @@ const useVoteForm = (initialValues) => {
|
|
|
12285
12009
|
const removeVariant = useCallback((index) => {
|
|
12286
12010
|
setVariants(prev => prev.filter((_, itemIndex) => itemIndex !== index));
|
|
12287
12011
|
}, []);
|
|
12288
|
-
|
|
12289
|
-
|
|
12012
|
+
/**
|
|
12013
|
+
* Варианты вместе с недобавленным черновиком.
|
|
12014
|
+
*
|
|
12015
|
+
* Последний вариант часто набирают и жмут «Создать», не нажав Enter: чипсом он ещё не стал, но
|
|
12016
|
+
* пользователь его уже ввёл. Считать такой текст вариантом честнее, чем гасить кнопку и молчать.
|
|
12017
|
+
*/
|
|
12018
|
+
const allVariants = useMemo(() => {
|
|
12019
|
+
const pending = draft.trim();
|
|
12020
|
+
return pending ? [...variants, { text: pending }] : variants;
|
|
12021
|
+
}, [variants, draft]);
|
|
12022
|
+
const isValid = useMemo(() => Boolean(categoryId && text.trim() && allVariants.length >= MIN_VARIANTS), [categoryId, text, allVariants.length]);
|
|
12023
|
+
const values = useMemo(() => ({ categoryId, text: text.trim(), multiSelect, variants: allVariants }), [categoryId, text, multiSelect, allVariants]);
|
|
12290
12024
|
return {
|
|
12291
12025
|
categoryId,
|
|
12292
12026
|
setCategoryId,
|
|
@@ -12316,7 +12050,10 @@ const VoteCreateForm = ({ categories, initialValues, isEditing, canDelete, submi
|
|
|
12316
12050
|
}
|
|
12317
12051
|
} }), jsxs(Flex, { alignItems: "center", justifyContent: "space-between", children: [jsx(VoteSectionLabel, { children: t("vote.multiSelect", { ns: VOTE_NS, defaultValue: "Множественный выбор" }) }), jsx(Switch, { checked: multiSelect, onChange: () => setMultiSelect(prev => !prev) })] }), jsx(RaisedButton, { primary: true, disabled: !isValid || submitting, onClick: () => onSubmit(values), children: isEditing
|
|
12318
12052
|
? t("vote.save", { ns: VOTE_NS, defaultValue: "Сохранить" })
|
|
12319
|
-
: t("vote.create", { ns: VOTE_NS, defaultValue: "Создать голосование" }) }),
|
|
12053
|
+
: t("vote.create", { ns: VOTE_NS, defaultValue: "Создать голосование" }) }), !isValid && (jsx(VoteHint, { children: t("vote.formHint", {
|
|
12054
|
+
ns: VOTE_NS,
|
|
12055
|
+
defaultValue: "Нужны категория, вопрос и минимум два варианта ответа",
|
|
12056
|
+
}) })), isEditing && (jsxs(Flex, { alignItems: "center", justifyContent: "space-between", children: [onCancel && (jsx(VoteEditLink, { onClick: onCancel, children: t("vote.cancel", { ns: VOTE_NS, defaultValue: "Отмена" }) })), canDelete && onDelete && (jsx(RaisedButton, { error: true, disabled: submitting, onClick: onDelete, children: t("vote.delete", { ns: VOTE_NS, defaultValue: "Удалить голосование" }) }))] }))] }));
|
|
12320
12057
|
};
|
|
12321
12058
|
|
|
12322
12059
|
/** Блок «Поделиться в соцсетях» — пока только вёрстка, без рабочих ссылок. */
|
|
@@ -12340,7 +12077,7 @@ const VoteResults = ({ question, category, results, screen, isOwner, hasAnswers,
|
|
|
12340
12077
|
}, [question.multiSelect]);
|
|
12341
12078
|
const canSubmit = useMemo(() => selected.length > 0 && !submitting, [selected.length, submitting]);
|
|
12342
12079
|
return (jsxs(VoteWrapper, { children: [category && jsx(VoteCategoryLabel, { children: category.name }), jsx(VoteQuestionText, { children: question.text }), jsx(VoteVariantList, { column: true, value: selected[0] ?? "", children: results.map(({ id, text, count, percent }) => (jsxs(VoteVariantRow, { children: [jsxs(VoteVariantHead, { children: [showControls &&
|
|
12343
|
-
(question.multiSelect ? (jsx(Checkbox, { checked: selected.includes(id), onChange: () => toggle(id) })) : (jsx(Radio, { value: id, checked: selected.includes(id), onChange: () => toggle(id) }))), jsx(VoteVariantText, { children: text }), jsx(VoteVariantCount, { children: count })] }), jsx(LinearProgress, { done: percent })] }, id))) }), screen === "unauthenticated" && (jsx(
|
|
12080
|
+
(question.multiSelect ? (jsx(Checkbox, { checked: selected.includes(id), onChange: () => toggle(id) })) : (jsx(Radio, { value: id, checked: selected.includes(id), onChange: () => toggle(id) }))), jsx(VoteVariantText, { children: text }), jsx(VoteVariantCount, { children: count })] }), jsx(LinearProgress, { done: percent })] }, id))) }), screen === "unauthenticated" && (jsx(VoteHint, { children: t("vote.authHint", { ns: VOTE_NS, defaultValue: "Чтобы проголосовать, пожалуйста, авторизуйтесь" }) })), screen === "voted" && (jsxs(VoteAcceptedBadge, { children: [jsx(Icon, { kind: "success" }), t("vote.accepted", { ns: VOTE_NS, defaultValue: "Ваш ответ принят" })] })), showControls && (jsx(RaisedButton, { primary: true, disabled: !canSubmit, onClick: () => onSubmit(selected), children: t("vote.submit", { ns: VOTE_NS, defaultValue: "Отправить ответ" }) })), canEdit && onEdit && (jsx(Flex, { children: jsx(VoteEditLink, { onClick: onEdit, children: t("vote.edit", { ns: VOTE_NS, defaultValue: "Редактировать" }) }) })), showShare && jsx(VoteShare, {})] }));
|
|
12344
12081
|
};
|
|
12345
12082
|
|
|
12346
12083
|
/**
|
|
@@ -19019,6 +18756,223 @@ const RasterLayer = ({ layer, tileUrl, visible, beforeId, }) => {
|
|
|
19019
18756
|
return (jsx(Source, { id: layer.name, type: "raster", tiles: tiles, children: jsx(Layer$1, { id: layer.name, type: "raster", "source-layer": "default", beforeId: beforeId, layout: { visibility: visible ? "visible" : "none" } }) }, `${layer.name}-${tileUrl}`));
|
|
19020
18757
|
};
|
|
19021
18758
|
|
|
18759
|
+
const enrichStyleItemsWithIds = (style) => {
|
|
18760
|
+
return {
|
|
18761
|
+
...style,
|
|
18762
|
+
items: style.items.map(item => {
|
|
18763
|
+
return {
|
|
18764
|
+
...item,
|
|
18765
|
+
id: item.id || v4(),
|
|
18766
|
+
};
|
|
18767
|
+
}),
|
|
18768
|
+
};
|
|
18769
|
+
};
|
|
18770
|
+
|
|
18771
|
+
const enrichStyleModelsWithIds = (style) => {
|
|
18772
|
+
return {
|
|
18773
|
+
...style,
|
|
18774
|
+
models: style.models.map(model => {
|
|
18775
|
+
return {
|
|
18776
|
+
...model,
|
|
18777
|
+
id: model.id || v4(),
|
|
18778
|
+
};
|
|
18779
|
+
}),
|
|
18780
|
+
};
|
|
18781
|
+
};
|
|
18782
|
+
|
|
18783
|
+
const findAttributeInExpression = (expression) => {
|
|
18784
|
+
if (Array.isArray(expression) && expression.length === 2 && expression[0] === "get") {
|
|
18785
|
+
return [expression[1]];
|
|
18786
|
+
}
|
|
18787
|
+
return expression.reduce((acc, curr) => {
|
|
18788
|
+
if (!Array.isArray(curr)) {
|
|
18789
|
+
return acc;
|
|
18790
|
+
}
|
|
18791
|
+
if (curr[0] === "get") {
|
|
18792
|
+
return [...new Set([...acc, curr[1]])];
|
|
18793
|
+
}
|
|
18794
|
+
return [...new Set([...acc, ...findAttributeInExpression(curr)])];
|
|
18795
|
+
}, []);
|
|
18796
|
+
};
|
|
18797
|
+
|
|
18798
|
+
const getActualExtrusionHeight = (paint) => {
|
|
18799
|
+
return Array.isArray(paint?.["fill-extrusion-height"]) && paint?.["fill-extrusion-height"][0] === "+"
|
|
18800
|
+
? paint?.["fill-extrusion-height"][1]
|
|
18801
|
+
: paint?.["fill-extrusion-height"];
|
|
18802
|
+
};
|
|
18803
|
+
|
|
18804
|
+
const getLayerClientStyle = (layer) => {
|
|
18805
|
+
const clientStyle = layer?.configuration?.clientStyle;
|
|
18806
|
+
return {
|
|
18807
|
+
...clientStyle,
|
|
18808
|
+
items: clientStyle?.items ?? [],
|
|
18809
|
+
};
|
|
18810
|
+
};
|
|
18811
|
+
|
|
18812
|
+
const extractAttributesFromObject = (obj) => {
|
|
18813
|
+
if (!obj || isEmpty(obj)) {
|
|
18814
|
+
return [];
|
|
18815
|
+
}
|
|
18816
|
+
return Object.entries(obj).reduce((acc, [, value]) => {
|
|
18817
|
+
if (!Array.isArray(value)) {
|
|
18818
|
+
return acc;
|
|
18819
|
+
}
|
|
18820
|
+
return [...new Set([...acc, ...findAttributeInExpression(value)])];
|
|
18821
|
+
}, []);
|
|
18822
|
+
};
|
|
18823
|
+
const getStyleAttributes = (style) => {
|
|
18824
|
+
if (!style) {
|
|
18825
|
+
return [];
|
|
18826
|
+
}
|
|
18827
|
+
return style?.items?.reduce((acc, curr) => {
|
|
18828
|
+
const paintAttributes = extractAttributesFromObject(curr.paint);
|
|
18829
|
+
const layoutAttributes = extractAttributesFromObject(curr.layout);
|
|
18830
|
+
const filterAttributes = curr.filter
|
|
18831
|
+
? findAttributeInExpression(curr.filter)
|
|
18832
|
+
: [];
|
|
18833
|
+
return [...new Set([...acc, ...paintAttributes, ...layoutAttributes, ...filterAttributes])];
|
|
18834
|
+
}, []);
|
|
18835
|
+
};
|
|
18836
|
+
|
|
18837
|
+
/**
|
|
18838
|
+
* Извлекает имена иконок из выражения icon-image.
|
|
18839
|
+
*
|
|
18840
|
+
* Поддерживает:
|
|
18841
|
+
* - Строки: "parking" → ["parking"]
|
|
18842
|
+
* - match: ["match", ["get", "type"], "a", "icon-a", "b", "icon-b", "default"] → ["icon-a", "icon-b", "default"]
|
|
18843
|
+
* - case: ["case", [...], "icon-a", "icon-b"] → ["icon-a", "icon-b"]
|
|
18844
|
+
* - coalesce: ["coalesce", ["image", "icon-a"], ["image", "icon-b"]] → ["icon-a", "icon-b"]
|
|
18845
|
+
* - image: ["image", "icon-a"] → ["icon-a"]
|
|
18846
|
+
*
|
|
18847
|
+
* @param iconImage - значение icon-image из layout
|
|
18848
|
+
* @returns массив имён иконок
|
|
18849
|
+
*/
|
|
18850
|
+
const parseIconNames = (iconImage) => {
|
|
18851
|
+
if (!iconImage) {
|
|
18852
|
+
return [];
|
|
18853
|
+
}
|
|
18854
|
+
// Простая строка: "parking"
|
|
18855
|
+
if (typeof iconImage === "string") {
|
|
18856
|
+
return [iconImage];
|
|
18857
|
+
}
|
|
18858
|
+
// Выражение Mapbox
|
|
18859
|
+
if (Array.isArray(iconImage) && iconImage.length > 0) {
|
|
18860
|
+
const [operator, ...args] = iconImage;
|
|
18861
|
+
switch (operator) {
|
|
18862
|
+
// ["match", input, label1, output1, label2, output2, ..., fallback]
|
|
18863
|
+
case "match": {
|
|
18864
|
+
const results = [];
|
|
18865
|
+
// Пропускаем первый аргумент (input), берём каждый второй начиная с индекса 2
|
|
18866
|
+
for (let i = 2; i < args.length; i += 2) {
|
|
18867
|
+
if (typeof args[i] === "string") {
|
|
18868
|
+
results.push(args[i]);
|
|
18869
|
+
}
|
|
18870
|
+
else if (Array.isArray(args[i])) {
|
|
18871
|
+
results.push(...parseIconNames(args[i]));
|
|
18872
|
+
}
|
|
18873
|
+
}
|
|
18874
|
+
// Последний аргумент - fallback (если нечётное количество после input)
|
|
18875
|
+
const lastArg = args[args.length - 1];
|
|
18876
|
+
if (typeof lastArg === "string") {
|
|
18877
|
+
results.push(lastArg);
|
|
18878
|
+
}
|
|
18879
|
+
else if (Array.isArray(lastArg)) {
|
|
18880
|
+
results.push(...parseIconNames(lastArg));
|
|
18881
|
+
}
|
|
18882
|
+
return [...new Set(results)];
|
|
18883
|
+
}
|
|
18884
|
+
// ["case", condition1, output1, condition2, output2, ..., fallback]
|
|
18885
|
+
case "case": {
|
|
18886
|
+
const results = [];
|
|
18887
|
+
for (let i = 1; i < args.length; i += 2) {
|
|
18888
|
+
if (typeof args[i] === "string") {
|
|
18889
|
+
results.push(args[i]);
|
|
18890
|
+
}
|
|
18891
|
+
else if (Array.isArray(args[i])) {
|
|
18892
|
+
results.push(...parseIconNames(args[i]));
|
|
18893
|
+
}
|
|
18894
|
+
}
|
|
18895
|
+
// Fallback
|
|
18896
|
+
if (args.length % 2 === 0) {
|
|
18897
|
+
const lastArg = args[args.length - 1];
|
|
18898
|
+
if (typeof lastArg === "string") {
|
|
18899
|
+
results.push(lastArg);
|
|
18900
|
+
}
|
|
18901
|
+
else if (Array.isArray(lastArg)) {
|
|
18902
|
+
results.push(...parseIconNames(lastArg));
|
|
18903
|
+
}
|
|
18904
|
+
}
|
|
18905
|
+
return [...new Set(results)];
|
|
18906
|
+
}
|
|
18907
|
+
// ["coalesce", expr1, expr2, ...]
|
|
18908
|
+
case "coalesce": {
|
|
18909
|
+
const results = [];
|
|
18910
|
+
args.forEach(arg => {
|
|
18911
|
+
if (typeof arg === "string") {
|
|
18912
|
+
results.push(arg);
|
|
18913
|
+
}
|
|
18914
|
+
else if (Array.isArray(arg)) {
|
|
18915
|
+
results.push(...parseIconNames(arg));
|
|
18916
|
+
}
|
|
18917
|
+
});
|
|
18918
|
+
return [...new Set(results)];
|
|
18919
|
+
}
|
|
18920
|
+
// ["image", name] или ["image", name1, name2, ...]
|
|
18921
|
+
case "image": {
|
|
18922
|
+
return args.filter((arg) => typeof arg === "string");
|
|
18923
|
+
}
|
|
18924
|
+
// ["concat", ...] или другие - рекурсивно ищем строки
|
|
18925
|
+
default: {
|
|
18926
|
+
const results = [];
|
|
18927
|
+
args.forEach(arg => {
|
|
18928
|
+
if (Array.isArray(arg)) {
|
|
18929
|
+
results.push(...parseIconNames(arg));
|
|
18930
|
+
}
|
|
18931
|
+
});
|
|
18932
|
+
return [...new Set(results)];
|
|
18933
|
+
}
|
|
18934
|
+
}
|
|
18935
|
+
}
|
|
18936
|
+
return [];
|
|
18937
|
+
};
|
|
18938
|
+
/**
|
|
18939
|
+
* Свойства, содержащие имена изображений (иконки и паттерны).
|
|
18940
|
+
*/
|
|
18941
|
+
const IMAGE_PROPERTIES = {
|
|
18942
|
+
layout: ["icon-image"],
|
|
18943
|
+
paint: ["fill-pattern", "line-pattern", "fill-extrusion-pattern"],
|
|
18944
|
+
};
|
|
18945
|
+
/**
|
|
18946
|
+
* Извлекает все имена изображений из clientStyle.
|
|
18947
|
+
* Включает иконки (icon-image) и паттерны (fill-pattern, line-pattern, fill-extrusion-pattern).
|
|
18948
|
+
*
|
|
18949
|
+
* @param clientStyle - конфигурация стиля слоя
|
|
18950
|
+
* @returns массив уникальных имён изображений
|
|
18951
|
+
*/
|
|
18952
|
+
const parseIconNamesFromClientStyle = (clientStyle) => {
|
|
18953
|
+
if (!clientStyle?.items) {
|
|
18954
|
+
return [];
|
|
18955
|
+
}
|
|
18956
|
+
const imageNames = new Set();
|
|
18957
|
+
clientStyle.items.forEach(item => {
|
|
18958
|
+
// Парсим icon-image из layout
|
|
18959
|
+
IMAGE_PROPERTIES.layout.forEach(prop => {
|
|
18960
|
+
const value = item.layout?.[prop];
|
|
18961
|
+
if (value) {
|
|
18962
|
+
parseIconNames(value).forEach(name => imageNames.add(name));
|
|
18963
|
+
}
|
|
18964
|
+
});
|
|
18965
|
+
// Парсим fill-pattern, line-pattern, fill-extrusion-pattern из paint
|
|
18966
|
+
IMAGE_PROPERTIES.paint.forEach(prop => {
|
|
18967
|
+
const value = item.paint?.[prop];
|
|
18968
|
+
if (value) {
|
|
18969
|
+
parseIconNames(value).forEach(name => imageNames.add(name));
|
|
18970
|
+
}
|
|
18971
|
+
});
|
|
18972
|
+
});
|
|
18973
|
+
return [...imageNames];
|
|
18974
|
+
};
|
|
18975
|
+
|
|
19022
18976
|
const VectorLayer = ({ layer, tileUrl, visible, beforeId, getLayerTempStyle, }) => {
|
|
19023
18977
|
const layerConfiguration = layer?.configuration;
|
|
19024
18978
|
const clientStyle = layerConfiguration?.clientStyle;
|
|
@@ -19251,5 +19205,5 @@ const DEFAULT_HEATMAP_STYLE = {
|
|
|
19251
19205
|
],
|
|
19252
19206
|
};
|
|
19253
19207
|
|
|
19254
|
-
export { ALIGNMENTS, ALIGN_ITEMS, ATTRIBUTE_ICON_ELEMENT_TYPES, AddButtonRow, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, BG_IMAGE_SLOT_ID, BaseMapTheme, CHART_TYPES, COMPACT_FRACTION_DIGITS, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CONTAINERS_GROUP_DEFAULTS, CONTAINER_BODY_ATTRIBUTE, CONTAINER_BODY_FILL_STYLE, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerBackground, ContainerChildren, ContainerLoading, ContainerRoot, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DASHBOARD_OVERLAY_Z_INDEX, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_BLUR, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_RADIUS, DEFAULT_CIRCLE_STROKE_WIDTH, DEFAULT_CIRCLE_STYLE, DEFAULT_COLOR, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_BASE, DEFAULT_FILL_EXTRUSION_HEIGHT, DEFAULT_FILL_EXTRUSION_STYLE, DEFAULT_FILL_EXTRUSION_VERTICAL_GRADIENT, DEFAULT_FILL_STYLE, DEFAULT_FILTER_PADDING, DEFAULT_GRID_GAP, DEFAULT_HEATMAP_COLOR, DEFAULT_HEATMAP_INTENSITY, DEFAULT_HEATMAP_RADIUS, DEFAULT_HEATMAP_STYLE, DEFAULT_HEATMAP_WEIGHT, DEFAULT_ICON_ANCHOR, DEFAULT_ICON_OVERLAP, DEFAULT_ICON_PADDING, DEFAULT_ICON_ROTATE, DEFAULT_ICON_SIZE, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_CAP, DEFAULT_LINE_JOIN, DEFAULT_LINE_STYLE, DEFAULT_LINE_WIDTH, DEFAULT_LNG, DEFAULT_OPACITY, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_SYMBOL_COLOR, DEFAULT_SYMBOL_HALO_COLOR, DEFAULT_SYMBOL_PLACEMENT, DEFAULT_SYMBOL_SPACING, DEFAULT_SYMBOL_STYLE, DEFAULT_TEXT_ANCHOR, DEFAULT_TEXT_JUSTIFY, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_TRANSFORM, DEFAULT_TRACK_FR, DEFAULT_TRANSLATE, DEFAULT_ZOOM, DRAG_THRESHOLD_PX, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EMPTY_DATA_SOURCE_LAYER_INFO, EXTENT_FILTER_NAME, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTable, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILL_SIZE, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FR_PRECISION, FeatureCardBackgroundHeader, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GEOMETRY_FILTER_NAME, GRID_AUTO_FILL_DEFAULTS, GRID_CELL_ATTR, GRID_CELL_ID_PREFIX, GRID_DRAGGING_ATTR, GRID_DRAG_SOURCE_ATTR, GRID_DROP_TARGET_ATTR, GRID_FILL_DEFAULTS, GRID_HANDLE_ATTR, GRID_HANDLE_PROPS, GRID_ROW_ID_PREFIX, GlobalContext, GlobalProvider, GridRowContainer, HANDLE_BLEED_PX, Header, HeaderContainer, HeaderFontColorMixin, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAP_VIEW_FILTER_NAMES, MAX_CHART_WIDTH, MAX_TRACKS, MIN_TRACK_PX, MIN_TRACK_RATIO, Map$1 as Map, MapContext, MapProvider, NON_TRACK_SLOT_IDS, NO_CELL_DRAG_SELECTOR, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OBJECT_FITS, OVERFLOWS, OneColumnContainer, PIE_CHART_TOOLTIP_STYLE, POLL_SUBTASK_INTERVAL_MS, POLL_SUBTASK_TIMEOUT_MS, PROVIDER_PREFIX, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, ProviderPrefix, QUERY_DESCRIPTION_CACHE_TTL, RoundedBackgroundContainer, SAVE_HOOK_RESULT_DURATION, SERVER_NOTIFICATION_EVENT, STACK_BAR_TOTAL_HEIGHT, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, StructuredDataContainer, SvgImage, TILE_ALIGNMENTS, TIME_ZONE_FORMAT, TITLE_SLOT_IDS, TabsContainer, TextTrim, ThemeName, TitleContainer, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, VIEW_MODES, VoteContainer, WidgetType, ZOOM_FILTER_NAME, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyTreeFilterToCondition, applyVarsToCondition, asAttributeName, asChartId, asContainerId, asDataSourceName, asFilterName, asLayerName, asModalId, asResourceId, asTabId, buildGridTemplate, buildTrackTemplate, checkEqualOrIncludes, checkIsLoading, collectConfigIds, containsNodeId, createConfigLayer, createConfigPage, createGridCell, createGridIdFactory, createGridRow, createNewPageId, createSaveNotificationId, dateOptions, debounce, decimalOpacityToHex, enrichStyleItemsWithIds, enrichStyleModelsWithIds, eqlParametersToPayload, fetchQueryDescription, findAttributeInExpression, findCellContext, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, geometryToEwkt, getActualExtrusionHeight, getAttributeByName, getAttributeConfigurationByName, getAttributeIconElement, getAttributeIconUrl, getAttributeValue, getAttributesConfiguration, getAverageTrackSize, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDataSourceLayerInfo, getDate, getDefaultConfig, getDisplayTemplateNameFromAttribute, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getImageUrl, getLayerClientStyle, getLayerInfo, getLayerInfoAttribute, getLayerInfoFromDataSources, getLayoutChildren, getMapViewDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getStyleAttributes, getSvgUrl, getTemplateNameFromAttribute, getThemeByName, getTotalFromAttributes, getTotalFromRelatedFeatures, getTrackSize, getTrackSizeKey, getTrackSizes, getWrapperSizeStyle, hasContainerBgImage, hexToRgba, isCrossOriginUrl, isEmptyElementValue, isEmptyValue, isFeaturesFilterValue, isFillSize, isFrSize, isGridNode, isHiddenEmptyValue, isHookActive, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isRootOwningContainer, isTreeFilterValue, isVisibleContainer, mapNodeById, mergeAttributeConfigurations, metersPerPixel, noMarginMixin, numberOptions, parseFrValue, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, removeTracks, replaceNodesByIds, rgbToHex, roundFr, roundTotalSum, setLayoutChildren, sizeCssMixin, sliceShownOtherItems, stretchPalette, timeOptions, toConditionsArray, toCssSize, toFrSize, toPxNumber, toRenderableValue, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, updateDataSource, useAfterSave, useAppHeight, useAttachmentDownload, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useBgImageHost, useChartChange, useChartData, useContainerAttributes, useContainerRoot, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSourceLoading, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useEqualTileWidth, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource,
|
|
19208
|
+
export { ALIGNMENTS, ALIGN_ITEMS, ATTRIBUTE_ICON_ELEMENT_TYPES, AddButtonRow, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, BG_IMAGE_SLOT_ID, BaseMapTheme, CHART_TYPES, COMPACT_FRACTION_DIGITS, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CONTAINERS_GROUP_DEFAULTS, CONTAINER_BODY_ATTRIBUTE, CONTAINER_BODY_FILL_STYLE, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerBackground, ContainerChildren, ContainerLoading, ContainerRoot, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DASHBOARD_OVERLAY_Z_INDEX, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_BLUR, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_RADIUS, DEFAULT_CIRCLE_STROKE_WIDTH, DEFAULT_CIRCLE_STYLE, DEFAULT_COLOR, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_BASE, DEFAULT_FILL_EXTRUSION_HEIGHT, DEFAULT_FILL_EXTRUSION_STYLE, DEFAULT_FILL_EXTRUSION_VERTICAL_GRADIENT, DEFAULT_FILL_STYLE, DEFAULT_FILTER_PADDING, DEFAULT_GRID_GAP, DEFAULT_HEATMAP_COLOR, DEFAULT_HEATMAP_INTENSITY, DEFAULT_HEATMAP_RADIUS, DEFAULT_HEATMAP_STYLE, DEFAULT_HEATMAP_WEIGHT, DEFAULT_ICON_ANCHOR, DEFAULT_ICON_OVERLAP, DEFAULT_ICON_PADDING, DEFAULT_ICON_ROTATE, DEFAULT_ICON_SIZE, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_CAP, DEFAULT_LINE_JOIN, DEFAULT_LINE_STYLE, DEFAULT_LINE_WIDTH, DEFAULT_LNG, DEFAULT_OPACITY, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_SYMBOL_COLOR, DEFAULT_SYMBOL_HALO_COLOR, DEFAULT_SYMBOL_PLACEMENT, DEFAULT_SYMBOL_SPACING, DEFAULT_SYMBOL_STYLE, DEFAULT_TEXT_ANCHOR, DEFAULT_TEXT_JUSTIFY, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_TRANSFORM, DEFAULT_TRACK_FR, DEFAULT_TRANSLATE, DEFAULT_ZOOM, DRAG_THRESHOLD_PX, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EMPTY_DATA_SOURCE_LAYER_INFO, EXTENT_FILTER_NAME, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTable, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILL_SIZE, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FR_PRECISION, FeatureCardBackgroundHeader, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GEOMETRY_FILTER_NAME, GRID_AUTO_FILL_DEFAULTS, GRID_CELL_ATTR, GRID_CELL_ID_PREFIX, GRID_DRAGGING_ATTR, GRID_DRAG_SOURCE_ATTR, GRID_DROP_TARGET_ATTR, GRID_FILL_DEFAULTS, GRID_HANDLE_ATTR, GRID_HANDLE_PROPS, GRID_ROW_ID_PREFIX, GlobalContext, GlobalProvider, GridRowContainer, HANDLE_BLEED_PX, Header, HeaderContainer, HeaderFontColorMixin, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAP_VIEW_FILTER_NAMES, MAX_CHART_WIDTH, MAX_TRACKS, MIN_TRACK_PX, MIN_TRACK_RATIO, Map$1 as Map, MapContext, MapProvider, NON_TRACK_SLOT_IDS, NO_CELL_DRAG_SELECTOR, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OBJECT_FITS, OVERFLOWS, OneColumnContainer, PIE_CHART_TOOLTIP_STYLE, POLL_SUBTASK_INTERVAL_MS, POLL_SUBTASK_TIMEOUT_MS, PROVIDER_PREFIX, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, ProviderPrefix, QUERY_DESCRIPTION_CACHE_TTL, RoundedBackgroundContainer, SAVE_HOOK_RESULT_DURATION, SERVER_NOTIFICATION_EVENT, STACK_BAR_TOTAL_HEIGHT, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, StructuredDataContainer, SvgImage, TILE_ALIGNMENTS, TIME_ZONE_FORMAT, TITLE_SLOT_IDS, TabsContainer, TextTrim, ThemeName, TitleContainer, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, VIEW_MODES, VoteContainer, WidgetType, ZOOM_FILTER_NAME, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyTreeFilterToCondition, applyVarsToCondition, asAttributeName, asChartId, asContainerId, asDataSourceName, asFilterName, asLayerName, asModalId, asResourceId, asTabId, buildGridTemplate, buildTrackTemplate, checkEqualOrIncludes, checkIsLoading, collectConfigIds, containsNodeId, createConfigLayer, createConfigPage, createGridCell, createGridIdFactory, createGridRow, createNewPageId, createSaveNotificationId, dateOptions, debounce, decimalOpacityToHex, enrichStyleItemsWithIds, enrichStyleModelsWithIds, eqlParametersToPayload, fetchQueryDescription, findAttributeInExpression, findCellContext, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, geometryToEwkt, getActualExtrusionHeight, getAttributeByName, getAttributeConfigurationByName, getAttributeIconElement, getAttributeIconUrl, getAttributeValue, getAttributesConfiguration, getAverageTrackSize, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDataSourceLayerInfo, getDate, getDefaultConfig, getDisplayTemplateNameFromAttribute, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getImageUrl, getLayerClientStyle, getLayerInfo, getLayerInfoAttribute, getLayerInfoFromDataSources, getLayoutChildren, getMapViewDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getStyleAttributes, getSvgUrl, getTemplateNameFromAttribute, getThemeByName, getTotalFromAttributes, getTotalFromRelatedFeatures, getTrackSize, getTrackSizeKey, getTrackSizes, getWrapperSizeStyle, hasContainerBgImage, hexToRgba, isCrossOriginUrl, isEmptyElementValue, isEmptyValue, isFeaturesFilterValue, isFillSize, isFrSize, isGridNode, isHiddenEmptyValue, isHookActive, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isRootOwningContainer, isTreeFilterValue, isVisibleContainer, mapNodeById, mergeAttributeConfigurations, metersPerPixel, noMarginMixin, numberOptions, parseFrValue, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, removeTracks, replaceNodesByIds, rgbToHex, roundFr, roundTotalSum, setLayoutChildren, sizeCssMixin, sliceShownOtherItems, stretchPalette, timeOptions, toConditionsArray, toCssSize, toFrSize, toPxNumber, toRenderableValue, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, updateDataSource, useAfterSave, useAppHeight, useAttachmentDownload, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useBgImageHost, useChartChange, useChartData, useContainerAttributes, useContainerRoot, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSourceLoading, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useEqualTileWidth, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useLayerHiddenAttributes, useLayerParams, useMapContext, useMapDraw, useMapImages, useMaxZoomTo, useProjectDashboardInit, usePythonSandbox, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRemoteTask, useRenderElement, useResizeBox, useSavePrototypeBuilder, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useVisibleProjectItems, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useWrapperSize, useZoomToFeatures, useZoomToPoint, withTrackSize };
|
|
19255
19209
|
//# sourceMappingURL=react.esm.js.map
|