@evergis/react 4.0.131 → 4.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.esm.js CHANGED
@@ -2,7 +2,7 @@ import styled, { createGlobalStyle, css, useTheme } from 'styled-components';
2
2
  import { Icon, IconButtonInnerChild, IconButton, Flex, transition, Chip, shadows, Description, Divider, Popup, Menu, IconToggleButton, LinearProgress, Tooltip as Tooltip$1, IconToggle, Preview, LegendToggler, DropdownField, MultiSelectContainer, IconButtonButton, useDragAndDropEffect, FlatButton, DraggableTreeContainer, DraggableTree, FlexSpan, Dialog, DialogTitle, ActionsGroup, DialogContent, DialogActions, RaisedButton, UploaderItemArea, UploaderTitleWrapper, ThemeProvider, darkTheme, CircularProgress, Switch, AutoComplete, Input, Slider, Dropdown, Checkbox, DatePicker, getLocale, H2, Blank, Popover, NumberInput, Uploader, NumberRangeSlider, useAsyncAutocomplete, RangeNumberInput, TreeDropdown, defaultTheme, dateFormat } from '@evergis/uilib-gl';
3
3
  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
- import { lineChartClassNames, BarChart as BarChart$1, barChartClassNames, LineChart, PieChart } from '@evergis/charts';
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
7
  import { isNil, isEmpty, uniqueId, isEqual, unescape } from 'lodash';
8
8
  import { Color as Color$1, ColorScale } from '@evergis/color';
@@ -73,205 +73,6 @@ const AddFeatureButton = ({ title, icon = "feature_add" /* , layerName, geometry
73
73
  return (jsx(IconButton, { kind: icon, primary: true, onClick: handleAddFeature, children: title }));
74
74
  };
75
75
 
76
- const ChartTooltipTable = styled.table.withConfig({ displayName: "ChartTooltipTable", componentId: "sc-1fk3ts5" }) `
77
- td {
78
- padding: 0;
79
- }
80
-
81
- tr:not(:last-child) td {
82
- padding-bottom: 0.375rem;
83
- }
84
- `;
85
- const ChartTooltip = styled(Flex).withConfig({ displayName: "ChartTooltip", componentId: "sc-1iyyyv7" }) `
86
- flex-wrap: nowrap;
87
- background: rgb(48, 69, 79);
88
- border-radius: 0.25rem;
89
- color: white;
90
-
91
- :not(:last-child) {
92
- margin-bottom: 0.25rem;
93
- }
94
- `;
95
- const ChartTooltipLabel = styled.div.withConfig({ displayName: "ChartTooltipLabel", componentId: "sc-gl0qxz" }) `
96
- margin-right: 0.25rem;
97
- `;
98
- const ChartTooltipColor = styled.div.withConfig({ displayName: "ChartTooltipColor", componentId: "sc-tmvvbh" }) `
99
- width: 0.625rem;
100
- height: 0.625rem;
101
- background-color: ${({ $color }) => $color};
102
- border-radius: ${({ theme: { borderRadius } }) => borderRadius.smallest};
103
- margin-right: 0.25rem;
104
- `;
105
- const ChartLegendColor$1 = styled.div.withConfig({ displayName: "ChartLegendColor", componentId: "sc-l66k4q" }) `
106
- width: 0.5rem;
107
- height: 0.5rem;
108
- background-color: ${({ $color }) => $color};
109
- border-radius: 0.125rem;
110
- `;
111
- const ChartLegendValue = styled.div.withConfig({ displayName: "ChartLegendValue", componentId: "sc-1d7z775" }) `
112
- opacity: 0.65;
113
- `;
114
- const ChartTooltipRow = styled(Flex).withConfig({ displayName: "ChartTooltipRow", componentId: "sc-ih1uc5" }) `
115
- display: flex;
116
- flex-direction: row;
117
- flex-wrap: nowrap;
118
- align-items: center;
119
- margin-top: 0.5rem;
120
- line-height: 0;
121
-
122
- ${ChartLegendColor$1} {
123
- margin-right: 0.25rem;
124
- }
125
- `;
126
- const ChartTooltipName = styled.div.withConfig({ displayName: "ChartTooltipName", componentId: "sc-sm4g0t" }) `
127
- margin-right: 1rem;
128
- opacity: 0.65;
129
- `;
130
- const PieChartCenter = styled.div.withConfig({ displayName: "PieChartCenter", componentId: "sc-1le93jy" }) `
131
- position: absolute;
132
- top: 50%;
133
- left: 50%;
134
- transform: translate(-50%, -50%);
135
- text-align: center;
136
- font-weight: bold;
137
- font-size: 1.5rem;
138
- `;
139
- const ChartWrapperContainer = styled.div.withConfig({ displayName: "ChartWrapperContainer", componentId: "sc-1f4x9zv" }) `
140
- position: relative;
141
- width: 100%;
142
- `;
143
- /*
144
- * fill-режим: обёртка забирает всю доступную ячейку (её высоту задаёт флекс-цепочка, а не контент графика),
145
- * на неё вешается ref для ResizeObserver — меряем обе оси без цикла. Плоский div (не Flex uilib), как соседний
146
- * ChartWrapperContainer, чтобы ref гарантированно дошёл до DOM-узла. Тело графика центрируется внутри.
147
- */
148
- const ChartFillMeasure = styled.div.withConfig({ displayName: "ChartFillMeasure", componentId: "sc-1r4oerb" }) `
149
- position: relative;
150
- display: flex;
151
- align-items: center;
152
- justify-content: center;
153
- width: 100%;
154
- height: 100%;
155
- min-width: 0;
156
- min-height: 0;
157
- overflow: hidden;
158
-
159
- /* SVG по умолчанию inline, поэтому под ним остаётся зазор базовой линии (~4px при line-height
160
- 18.4px): вне fill его скрывал запас высоты, а тело, точно заполнившее ячейку, из-за него
161
- вылезает за нижнюю границу. Блочный SVG зазора не даёт. */
162
- svg {
163
- display: block;
164
- }
165
- `;
166
- const Tooltip = styled.div.withConfig({ displayName: "Tooltip", componentId: "sc-1va8cy3" }) `
167
- position: relative;
168
- border-radius: 0.25rem;
169
- background-color: rgba(28, 33, 48);
170
- padding: 0.5rem;
171
- box-shadow: 0 0.125rem 0.25rem 0 rgba(0, 0, 0, 0.15);
172
- font-size: 0.75rem;
173
- transform: ${({ transform }) => transform};
174
- color: white;
175
-
176
- :before {
177
- position: absolute;
178
- display: block;
179
- content: "";
180
- width: 0;
181
- height: 0;
182
- }
183
- `;
184
- const LineChartStyles = createGlobalStyle `
185
- .dashboardLineChartTooltip.${lineChartClassNames.lineChartMouseLabel} {
186
- .${lineChartClassNames.lineChartLabelFlex} {
187
- justify-content: center;
188
- align-items: flex-end;
189
-
190
- ${Tooltip} {
191
- margin: 0 0 12px 0;
192
-
193
- :before {
194
- top: auto;
195
- bottom: 0;
196
- left: 50%;
197
- transform: translate(-50%, 100%);
198
- border-left: 4px solid transparent;
199
- border-right: 4px solid transparent;
200
- border-top: 4px solid rgba(28, 33, 48, 0.9);
201
- }
202
- }
203
- }
204
- }
205
-
206
- .${lineChartClassNames.lineChartYScaleGlobal}, .${lineChartClassNames.lineChartXScaleGlobal} {
207
- .domain {
208
- visibility: hidden;
209
- }
210
-
211
- .tick {
212
- text {
213
- fill: ${({ theme: { palette } }) => palette.textDisabled};
214
- }
215
-
216
- line {
217
- visibility: hidden;
218
- }
219
- }
220
- }
221
-
222
- .${lineChartClassNames.lineChartXScaleGlobal} {
223
- .tick {
224
- :first-of-type {
225
- text {
226
- text-anchor: start;
227
- }
228
- }
229
-
230
- :last-of-type {
231
- text {
232
- text-anchor: end;
233
- }
234
- }
235
- }
236
- }
237
-
238
- .${lineChartClassNames.lineChartLine} {
239
- stroke-width: 2px;
240
- }
241
-
242
- .${lineChartClassNames.lineChartLabel} {
243
- color: ${({ theme: { palette } }) => palette.textPrimary};
244
- }
245
-
246
- .${lineChartClassNames.lineChartMouseCircle} {
247
- stroke: #ffffff;
248
- stroke-width: 2px;
249
- }
250
-
251
- .${lineChartClassNames.lineChartGridLineX} {
252
- stroke: ${({ theme: { palette } }) => palette.element};
253
- }
254
-
255
- text {
256
- fill: ${({ theme: { palette } }) => palette.textDisabled};
257
- }
258
- `;
259
- const StyledBarChart = styled(BarChart$1).withConfig({ displayName: "StyledBarChart", componentId: "sc-1l1kx80" }) `
260
- .domain {
261
- display: none;
262
- }
263
-
264
- .tick {
265
- text {
266
- fill: ${({ theme: { palette } }) => palette.textDisabled};
267
- }
268
-
269
- line {
270
- visibility: hidden;
271
- }
272
- }
273
- `;
274
-
275
76
  function range(start, stop, step) {
276
77
  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;
277
78
 
@@ -3586,6 +3387,22 @@ const ATTRIBUTE_ICON_ELEMENT_TYPES = {
3586
3387
  const EMPTY_DATA_SOURCE_LAYER_INFO = {
3587
3388
  configuration: { attributesConfiguration: { attributes: [] } },
3588
3389
  };
3390
+ /**
3391
+ * z-index плавающих слоёв дашборда: тултипы графиков и выпадающие списки фильтров.
3392
+ *
3393
+ * Тултипы графиков (`@evergis/charts`) и поповеры дропдаунов рендерятся порталом в `body`, где
3394
+ * их собственные z-index (100 у Bar/Line, 103 у Pie) ниже модального окна `Dialog` из
3395
+ * `@evergis/uilib-gl` (110) — внутри модалки дашборда они уходили под окно.
3396
+ */
3397
+ const DASHBOARD_OVERLAY_Z_INDEX = 1000;
3398
+ /**
3399
+ * Стиль контейнера тултипа `PieChart`: там z-index проставляется инлайном (103), поэтому поднять
3400
+ * его CSS-классом нельзя — только через `tooltipStyle`. Ключ пишем в CSS-нотации: значение уходит
3401
+ * в `d3.selection.style()` → `setProperty`, а camelCase он не понимает.
3402
+ */
3403
+ const PIE_CHART_TOOLTIP_STYLE = {
3404
+ "z-index": `${DASHBOARD_OVERLAY_Z_INDEX}`,
3405
+ };
3589
3406
  const DEFAULT_DROPDOWN_WIDTH = 312;
3590
3407
  const DEFAULT_FILTER_PADDING = 12;
3591
3408
  /** Базовый отступ обёртки контейнера. Снимается, когда контейнер занимает ячейку целиком. */
@@ -3619,6 +3436,217 @@ const CONTAINER_BODY_FILL_STYLE = {
3619
3436
  */
3620
3437
  const CONTAINERS_GROUP_DEFAULTS = { boxSizing: "border-box" };
3621
3438
 
3439
+ const ChartTooltipTable = styled.table.withConfig({ displayName: "ChartTooltipTable", componentId: "sc-1fk3ts5" }) `
3440
+ td {
3441
+ padding: 0;
3442
+ }
3443
+
3444
+ tr:not(:last-child) td {
3445
+ padding-bottom: 0.375rem;
3446
+ }
3447
+ `;
3448
+ const ChartTooltip = styled(Flex).withConfig({ displayName: "ChartTooltip", componentId: "sc-1iyyyv7" }) `
3449
+ flex-wrap: nowrap;
3450
+ background: rgb(48, 69, 79);
3451
+ border-radius: 0.25rem;
3452
+ color: white;
3453
+
3454
+ :not(:last-child) {
3455
+ margin-bottom: 0.25rem;
3456
+ }
3457
+ `;
3458
+ const ChartTooltipLabel = styled.div.withConfig({ displayName: "ChartTooltipLabel", componentId: "sc-gl0qxz" }) `
3459
+ margin-right: 0.25rem;
3460
+ `;
3461
+ const ChartTooltipColor = styled.div.withConfig({ displayName: "ChartTooltipColor", componentId: "sc-tmvvbh" }) `
3462
+ width: 0.625rem;
3463
+ height: 0.625rem;
3464
+ background-color: ${({ $color }) => $color};
3465
+ border-radius: ${({ theme: { borderRadius } }) => borderRadius.smallest};
3466
+ margin-right: 0.25rem;
3467
+ `;
3468
+ const ChartLegendColor$1 = styled.div.withConfig({ displayName: "ChartLegendColor", componentId: "sc-l66k4q" }) `
3469
+ width: 0.5rem;
3470
+ height: 0.5rem;
3471
+ background-color: ${({ $color }) => $color};
3472
+ border-radius: 0.125rem;
3473
+ `;
3474
+ const ChartLegendValue = styled.div.withConfig({ displayName: "ChartLegendValue", componentId: "sc-1d7z775" }) `
3475
+ opacity: 0.65;
3476
+ `;
3477
+ const ChartTooltipRow = styled(Flex).withConfig({ displayName: "ChartTooltipRow", componentId: "sc-ih1uc5" }) `
3478
+ display: flex;
3479
+ flex-direction: row;
3480
+ flex-wrap: nowrap;
3481
+ align-items: center;
3482
+ margin-top: 0.5rem;
3483
+ line-height: 0;
3484
+
3485
+ ${ChartLegendColor$1} {
3486
+ margin-right: 0.25rem;
3487
+ }
3488
+ `;
3489
+ const ChartTooltipName = styled.div.withConfig({ displayName: "ChartTooltipName", componentId: "sc-sm4g0t" }) `
3490
+ margin-right: 1rem;
3491
+ opacity: 0.65;
3492
+ `;
3493
+ const PieChartCenter = styled.div.withConfig({ displayName: "PieChartCenter", componentId: "sc-1le93jy" }) `
3494
+ position: absolute;
3495
+ top: 50%;
3496
+ left: 50%;
3497
+ transform: translate(-50%, -50%);
3498
+ text-align: center;
3499
+ font-weight: bold;
3500
+ font-size: 1.5rem;
3501
+ `;
3502
+ const ChartWrapperContainer = styled.div.withConfig({ displayName: "ChartWrapperContainer", componentId: "sc-1f4x9zv" }) `
3503
+ position: relative;
3504
+ width: 100%;
3505
+ `;
3506
+ /*
3507
+ * fill-режим: обёртка забирает всю доступную ячейку (её высоту задаёт флекс-цепочка, а не контент графика),
3508
+ * на неё вешается ref для ResizeObserver — меряем обе оси без цикла. Плоский div (не Flex uilib), как соседний
3509
+ * ChartWrapperContainer, чтобы ref гарантированно дошёл до DOM-узла. Тело графика центрируется внутри.
3510
+ */
3511
+ const ChartFillMeasure = styled.div.withConfig({ displayName: "ChartFillMeasure", componentId: "sc-1r4oerb" }) `
3512
+ position: relative;
3513
+ display: flex;
3514
+ align-items: center;
3515
+ justify-content: center;
3516
+ width: 100%;
3517
+ height: 100%;
3518
+ min-width: 0;
3519
+ min-height: 0;
3520
+ overflow: hidden;
3521
+
3522
+ /* SVG по умолчанию inline, поэтому под ним остаётся зазор базовой линии (~4px при line-height
3523
+ 18.4px): вне fill его скрывал запас высоты, а тело, точно заполнившее ячейку, из-за него
3524
+ вылезает за нижнюю границу. Блочный SVG зазора не даёт. */
3525
+ svg {
3526
+ display: block;
3527
+ }
3528
+ `;
3529
+ const Tooltip = styled.div.withConfig({ displayName: "Tooltip", componentId: "sc-1va8cy3" }) `
3530
+ position: relative;
3531
+ border-radius: 0.25rem;
3532
+ background-color: rgba(28, 33, 48);
3533
+ padding: 0.5rem;
3534
+ box-shadow: 0 0.125rem 0.25rem 0 rgba(0, 0, 0, 0.15);
3535
+ font-size: 0.75rem;
3536
+ transform: ${({ transform }) => transform};
3537
+ color: white;
3538
+
3539
+ :before {
3540
+ position: absolute;
3541
+ display: block;
3542
+ content: "";
3543
+ width: 0;
3544
+ height: 0;
3545
+ }
3546
+ `;
3547
+ /**
3548
+ * Тултипы графиков рендерятся в `body` со своим z-index (100 у Bar и Line) — ниже модального окна
3549
+ * `Dialog` из `@evergis/uilib-gl` (110), поэтому в модалке дашборда они уходили под окно. Класс
3550
+ * дублируем, чтобы правило перебило стили `@evergis/charts` по специфичности, а не по порядку
3551
+ * подключения.
3552
+ */
3553
+ const ChartTooltipStyles = createGlobalStyle `
3554
+ .${barChartClassNames.barChartMouseTooltip}.${barChartClassNames.barChartMouseTooltip},
3555
+ .${lineChartClassNames.lineChartMouseLabel}.${lineChartClassNames.lineChartMouseLabel} {
3556
+ z-index: ${DASHBOARD_OVERLAY_Z_INDEX};
3557
+ }
3558
+ `;
3559
+ const LineChartStyles = createGlobalStyle `
3560
+ .dashboardLineChartTooltip.${lineChartClassNames.lineChartMouseLabel} {
3561
+ .${lineChartClassNames.lineChartLabelFlex} {
3562
+ justify-content: center;
3563
+ align-items: flex-end;
3564
+
3565
+ ${Tooltip} {
3566
+ margin: 0 0 12px 0;
3567
+
3568
+ :before {
3569
+ top: auto;
3570
+ bottom: 0;
3571
+ left: 50%;
3572
+ transform: translate(-50%, 100%);
3573
+ border-left: 4px solid transparent;
3574
+ border-right: 4px solid transparent;
3575
+ border-top: 4px solid rgba(28, 33, 48, 0.9);
3576
+ }
3577
+ }
3578
+ }
3579
+ }
3580
+
3581
+ .${lineChartClassNames.lineChartYScaleGlobal}, .${lineChartClassNames.lineChartXScaleGlobal} {
3582
+ .domain {
3583
+ visibility: hidden;
3584
+ }
3585
+
3586
+ .tick {
3587
+ text {
3588
+ fill: ${({ theme: { palette } }) => palette.textDisabled};
3589
+ }
3590
+
3591
+ line {
3592
+ visibility: hidden;
3593
+ }
3594
+ }
3595
+ }
3596
+
3597
+ .${lineChartClassNames.lineChartXScaleGlobal} {
3598
+ .tick {
3599
+ :first-of-type {
3600
+ text {
3601
+ text-anchor: start;
3602
+ }
3603
+ }
3604
+
3605
+ :last-of-type {
3606
+ text {
3607
+ text-anchor: end;
3608
+ }
3609
+ }
3610
+ }
3611
+ }
3612
+
3613
+ .${lineChartClassNames.lineChartLine} {
3614
+ stroke-width: 2px;
3615
+ }
3616
+
3617
+ .${lineChartClassNames.lineChartLabel} {
3618
+ color: ${({ theme: { palette } }) => palette.textPrimary};
3619
+ }
3620
+
3621
+ .${lineChartClassNames.lineChartMouseCircle} {
3622
+ stroke: #ffffff;
3623
+ stroke-width: 2px;
3624
+ }
3625
+
3626
+ .${lineChartClassNames.lineChartGridLineX} {
3627
+ stroke: ${({ theme: { palette } }) => palette.element};
3628
+ }
3629
+
3630
+ text {
3631
+ fill: ${({ theme: { palette } }) => palette.textDisabled};
3632
+ }
3633
+ `;
3634
+ const StyledBarChart = styled(BarChart$1).withConfig({ displayName: "StyledBarChart", componentId: "sc-1l1kx80" }) `
3635
+ .domain {
3636
+ display: none;
3637
+ }
3638
+
3639
+ .tick {
3640
+ text {
3641
+ fill: ${({ theme: { palette } }) => palette.textDisabled};
3642
+ }
3643
+
3644
+ line {
3645
+ visibility: hidden;
3646
+ }
3647
+ }
3648
+ `;
3649
+
3622
3650
  const StackBarContainer = styled(Flex).withConfig({ displayName: "StackBarContainer", componentId: "sc-stc97k" }) `
3623
3651
  flex-wrap: nowrap;
3624
3652
  width: 100%;
@@ -4514,13 +4542,22 @@ const applyFiltersToCondition = ({ condition, name, defaultValue, filters, isSin
4514
4542
  return applyTreeFilterToCondition(condition, name, rawValue, isSingle);
4515
4543
  }
4516
4544
  const hasFilter = filters[name] !== undefined && !!filters[name].value?.toString().length;
4545
+ const filterName = `${FILTER_PREFIX}${name}`;
4546
+ // Пока фильтр не применён, границы `%name.min` / `%name.max` берём из range-дефолта конфига
4547
+ // (`defaultValue: [from, to]`) — иначе в условие ушёл бы весь массив вместо своей границы.
4548
+ // Проверка плейсхолдеров обязательна: у array-фильтра массивный дефолт подставляется целиком.
4549
+ const rangeDefault = !hasFilter &&
4550
+ Array.isArray(defaultValue) &&
4551
+ (condition.includes(`${filterName}.min`) || condition.includes(`${filterName}.max`))
4552
+ ? defaultValue
4553
+ : null;
4517
4554
  const min = formatConditionValue({
4518
- value: hasFilter ? filters[name].min : null,
4555
+ value: hasFilter ? filters[name].min : rangeDefault?.[0] ?? null,
4519
4556
  checkQuotes: !isSingle,
4520
4557
  isSetParams,
4521
4558
  });
4522
4559
  const max = formatConditionValue({
4523
- value: hasFilter ? filters[name].max : null,
4560
+ value: hasFilter ? filters[name].max : rangeDefault?.[1] ?? null,
4524
4561
  checkQuotes: !isSingle,
4525
4562
  isSetParams,
4526
4563
  });
@@ -4530,7 +4567,6 @@ const applyFiltersToCondition = ({ condition, name, defaultValue, filters, isSin
4530
4567
  checkQuotes: !isSingle,
4531
4568
  isSetParams,
4532
4569
  });
4533
- const filterName = `${FILTER_PREFIX}${name}`;
4534
4570
  const hasMin = min !== "" && min !== null && min !== undefined;
4535
4571
  const hasMax = max !== "" && max !== null && max !== undefined;
4536
4572
  let result = condition;
@@ -12742,7 +12778,7 @@ const EditStringContainer = ({ type, elementConfig, renderElement, }) => {
12742
12778
  onControlChange(String(lastSelected?.value ?? ""));
12743
12779
  setValue(lastSelected?.text ?? "");
12744
12780
  }, [onControlChange, setValue]);
12745
- return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { column: true, children: control?.relatedDataSource ? (jsx(AutoComplete, { value: value, options: options, width: "100%", onChange: onChange, onSelect: onSelect })) : (jsx(Input, { value: controlValue, width: "100%", onChange: (e) => onControlChange(e.target.value) })) })] }));
12781
+ return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { column: true, children: control?.relatedDataSource ? (jsx(AutoComplete, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, value: value, options: options, width: "100%", onChange: onChange, onSelect: onSelect })) : (jsx(Input, { value: controlValue, width: "100%", onChange: (e) => onControlChange(e.target.value) })) })] }));
12746
12782
  };
12747
12783
 
12748
12784
  const EditNumberContainer = ({ type, elementConfig, renderElement, }) => {
@@ -12755,7 +12791,7 @@ const EditDropdownContainer = ({ type, elementConfig, renderElement, }) => {
12755
12791
  const { value, control, items, onChange } = useEditControl(type, elementConfig);
12756
12792
  const { id, style } = elementConfig || {};
12757
12793
  const optionsList = useMemo(() => items.map(item => ({ text: item, value: item })), [items]);
12758
- return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { column: true, children: jsx(Dropdown, { zIndex: 1000, label: control?.label, placeholder: control?.placeholder, options: optionsList, value: value, width: `${control?.width ?? DEFAULT_DROPDOWN_WIDTH}px`, onChange: ([option]) => onChange(option.value) }) })] }));
12794
+ return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { column: true, children: jsx(Dropdown, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, label: control?.label, placeholder: control?.placeholder, options: optionsList, value: value, width: `${control?.width ?? DEFAULT_DROPDOWN_WIDTH}px`, onChange: ([option]) => onChange(option.value) }) })] }));
12759
12795
  };
12760
12796
 
12761
12797
  const CheckboxWrapper = styled(ContainerValue).withConfig({ displayName: "CheckboxWrapper", componentId: "sc-169umb6" }) `
@@ -12796,7 +12832,7 @@ const EditDateContainer = ({ type, elementConfig, renderElement, }) => {
12796
12832
  const { withTime } = options || {};
12797
12833
  const dateValue = useMemo(() => (value ? new Date(value) : undefined), [value]);
12798
12834
  const handleChange = useCallback((date) => onChange(date.toISOString()), [onChange]);
12799
- return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { column: true, children: jsx(DatePicker, { value: dateValue, locale: getLocale(language), withTime: withTime ?? false, withHeader: true, width: "100%", onChange: handleChange }) })] }));
12835
+ return (jsxs(Container, { id: id, isColumn: true, style: { ...BASE_CONTAINER_STYLE, ...style }, children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [renderElement({ id: "alias" }), renderElement({ id: "tooltip" })] }), jsx(ContainerValue, { column: true, children: jsx(DatePicker, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, value: dateValue, locale: getLocale(language), withTime: withTime ?? false, withHeader: true, width: "100%", onChange: handleChange }) })] }));
12800
12836
  };
12801
12837
 
12802
12838
  const AddButton = ({ multiple = true, accept, onSelectFiles, onSelectFromCatalog, onSelectFromLink, }) => {
@@ -13944,7 +13980,7 @@ const ElementControl = ({ elementConfig }) => {
13944
13980
  });
13945
13981
  }
13946
13982
  }, [changeControls, control?.targetAttributeName]);
13947
- return (jsx(Dropdown, { zIndex: 1000, width: toCssSize(width) ?? "100%", label: label, options: items, value: currentValue, placeholder: placeholder, disabled: isDisabled, onChange: handleChange }));
13983
+ return (jsx(Dropdown, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, width: toCssSize(width) ?? "100%", label: label, options: items, value: currentValue, placeholder: placeholder, disabled: isDisabled, onChange: handleChange }));
13948
13984
  };
13949
13985
 
13950
13986
  const StyledIconFontSizeMixin = css `
@@ -14118,7 +14154,7 @@ const LocalLink = memo(({ link, style }) => {
14118
14154
  navigator.clipboard.writeText(link);
14119
14155
  toggleOpen();
14120
14156
  }, [link, toggleOpen]);
14121
- return (jsx(Popover, { open: isOpen, zIndex: 10, onRequestClose: toggleOpen, anchorOrigin: "bottom-right", targetOrigin: "top-right", anchor: jsx(LocalLinkButton, { onClick: toggleOpen }), children: jsxs(LocalLinkBlank, { children: [jsx(Link, { href: link, target: "_blank", rel: "noreferrer", style: style, children: link }), jsx(LocalLinkCopy, { children: jsx(IconButton, { kind: "copy", onClick: onCopy, children: t("copy", { ns: "dashboard", defaultValue: "Копировать" }) }) })] }) }));
14157
+ return (jsx(Popover, { open: isOpen, zIndex: DASHBOARD_OVERLAY_Z_INDEX, onRequestClose: toggleOpen, anchorOrigin: "bottom-right", targetOrigin: "top-right", anchor: jsx(LocalLinkButton, { onClick: toggleOpen }), children: jsxs(LocalLinkBlank, { children: [jsx(Link, { href: link, target: "_blank", rel: "noreferrer", style: style, children: link }), jsx(LocalLinkCopy, { children: jsx(IconButton, { kind: "copy", onClick: onCopy, children: t("copy", { ns: "dashboard", defaultValue: "Копировать" }) }) })] }) }));
14122
14158
  });
14123
14159
 
14124
14160
  const ElementLink = memo(({ type, elementConfig }) => {
@@ -14739,7 +14775,7 @@ const TableCell = memo(({ attribute, row, canEdit, onChange }) => {
14739
14775
  }
14740
14776
  const renderEditor = () => {
14741
14777
  if (type === AttributeType.DateTime) {
14742
- return (jsx(DatePicker, { focus: true, value: dateValue, locale: getLocale(language), withTime: withTime, withHeader: true, width: "100%", onChange: date => handleChange(date.toISOString()) }));
14778
+ return (jsx(DatePicker, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, focus: true, value: dateValue, locale: getLocale(language), withTime: withTime, withHeader: true, width: "100%", onChange: date => handleChange(date.toISOString()) }));
14743
14779
  }
14744
14780
  if (NUMBER_EDITOR_TYPES.includes(type)) {
14745
14781
  return (jsx(NumberInput, { autoFocus: true, value: value === null || value === undefined ? null : Number(value), width: "100%", numeralDecimalScale: INTEGER_ATTRIBUTE_TYPES.includes(type) ? 0 : undefined, onChange: next => handleChange(next) }));
@@ -15817,7 +15853,7 @@ const TextFilter = ({ type, filter }) => {
15817
15853
  }, [filterName, filters]);
15818
15854
  if (!configFilter)
15819
15855
  return null;
15820
- return (jsx(TextFilterContainer, { children: jsx(AutoComplete, { value: value, placeholder: placeholder, options: variants || options, zIndex: 100, width: getFilterWidth(width), menuHeight: height ? `${height}px` : "10rem", withInfiniteScroll: !variants, infiniteScrollProps: variants ? undefined : infiniteScrollProps, multiSelect: multiSelect, selected: selected, setOptions: variants ? undefined : setOptions, onChange: onChange, onSelect: onSelect, onGetInnerRef: ref => (suggestRef.current = ref), asyncCallback: variants ? undefined : search, onBlur: onBlur, onKeyUp: isFreeTextInput || (variants && !variants.length) ? onKeyUp : undefined }) }));
15856
+ return (jsx(TextFilterContainer, { children: jsx(AutoComplete, { value: value, placeholder: placeholder, options: variants || options, zIndex: DASHBOARD_OVERLAY_Z_INDEX, width: getFilterWidth(width), menuHeight: height ? `${height}px` : "10rem", withInfiniteScroll: !variants, infiniteScrollProps: variants ? undefined : infiniteScrollProps, multiSelect: multiSelect, selected: selected, setOptions: variants ? undefined : setOptions, onChange: onChange, onSelect: onSelect, onGetInnerRef: ref => (suggestRef.current = ref), asyncCallback: variants ? undefined : search, onBlur: onBlur, onKeyUp: isFreeTextInput || (variants && !variants.length) ? onKeyUp : undefined }) }));
15821
15857
  };
15822
15858
 
15823
15859
  const getListOptions = (items, filterName, configFilters) => {
@@ -15863,7 +15899,7 @@ const DropdownFilter = ({ type, filter, elementConfig }) => {
15863
15899
  }, [changeFilters, filterName]);
15864
15900
  if (!configFilter && !variants)
15865
15901
  return null;
15866
- return (jsx(Dropdown, { zIndex: 100, width: getFilterWidth(width), value: value, placeholder: placeholder, options: filterOptions, onChange: onChange }));
15902
+ return (jsx(Dropdown, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, width: getFilterWidth(width), value: value, placeholder: placeholder, options: filterOptions, onChange: onChange }));
15867
15903
  };
15868
15904
 
15869
15905
  const CheckboxFilter = ({ type, filter, elementConfig }) => {
@@ -16133,7 +16169,7 @@ const BarChartFilter = ({ type, config, elementConfig, filter }) => {
16133
16169
  return (jsx(ThemeProvider, { children: jsx(TooltipContainer, { children: group.groupName === group.value.toString() ? group.value : [group.groupName, group.value].join(": ") }) }));
16134
16170
  }, []);
16135
16171
  const totalHeight = height + BAR_CHART_HEADER_HEIGHT + BAR_CHART_FOOTER_MARGIN;
16136
- return (jsx(ChartWrapper, { height: totalHeight, loading: loading, style: style, children: jsxs(BarChartWrapper, { height: totalHeight, children: [jsxs(BarChartFilterHeader, { height: BAR_CHART_HEADER_HEIGHT, children: [jsxs(BarChartFilterArrows, { children: [jsx(IconButton, { kind: "prev", disabled: prevDisabled, onClick: onPrev }), jsx(IconButton, { kind: "next", disabled: nextDisabled, onClick: onNext })] }), renderSelectedRange] }), jsx(BarChartContainer, { barHeight: barHeight, marginBottom: DEFAULT_BAR_CHART_MARGINS.bottom, children: jsx(BarChart, { data: data, margin: DEFAULT_BAR_CHART_MARGINS, height: height, barWidth: barWidth, barPadding: padding, xAxisPadding: 0, yAxisPadding: 0, selectable: !loading, dynamicTooltipEnable: true, isBarTooltip: true, renderTooltip: renderTooltip, ...rest }) })] }) }));
16172
+ return (jsxs(ChartWrapper, { height: totalHeight, loading: loading, style: style, children: [jsx(ChartTooltipStyles, {}), jsxs(BarChartWrapper, { height: totalHeight, children: [jsxs(BarChartFilterHeader, { height: BAR_CHART_HEADER_HEIGHT, children: [jsxs(BarChartFilterArrows, { children: [jsx(IconButton, { kind: "prev", disabled: prevDisabled, onClick: onPrev }), jsx(IconButton, { kind: "next", disabled: nextDisabled, onClick: onNext })] }), renderSelectedRange] }), jsx(BarChartContainer, { barHeight: barHeight, marginBottom: DEFAULT_BAR_CHART_MARGINS.bottom, children: jsx(BarChart, { data: data, margin: DEFAULT_BAR_CHART_MARGINS, height: height, barWidth: barWidth, barPadding: padding, xAxisPadding: 0, yAxisPadding: 0, selectable: !loading, dynamicTooltipEnable: true, isBarTooltip: true, renderTooltip: renderTooltip, ...rest }) })] })] }));
16137
16173
  };
16138
16174
 
16139
16175
  const DEFAULT_FROM_DATA = { minFromData: null, maxFromData: null };
@@ -16143,6 +16179,7 @@ const RangeDateFilter = ({ type, filter }) => {
16143
16179
  const { currentPage } = useWidgetPage(type);
16144
16180
  const [value, setValue] = useState([undefined, undefined]);
16145
16181
  const isInit = useRef(false);
16182
+ const isDefaultApplied = useRef(false);
16146
16183
  const updateDebounce = useDebouncedCallback(FILTER_UPDATE_DEBOUNCE);
16147
16184
  const { filters: configFilters } = currentPage;
16148
16185
  const { filterName, label, minValue, maxValue, withTime } = filter.options;
@@ -16155,28 +16192,42 @@ const RangeDateFilter = ({ type, filter }) => {
16155
16192
  maxFromData: !prev.maxFromData ? date : date > prev.maxFromData ? date : prev.maxFromData
16156
16193
  };
16157
16194
  }, DEFAULT_FROM_DATA) || DEFAULT_FROM_DATA, [configFilter?.attributeValue, dataSource?.features]);
16158
- const minDate = useMemo(() => minValue || minFromData.toISOString(), [minFromData, minValue]);
16159
- const maxDate = useMemo(() => maxValue || maxFromData.toISOString(), [maxFromData, maxValue]);
16195
+ const minDate = useMemo(() => minValue || minFromData?.toISOString(), [minFromData, minValue]);
16196
+ const maxDate = useMemo(() => maxValue || maxFromData?.toISOString(), [maxFromData, maxValue]);
16197
+ // Диапазон по умолчанию: `defaultValue: [from, to]` из конфига фильтра — начальное значение
16198
+ // и точка сброса. Границы календаря (min/max) при этом не меняются; незаданная граница
16199
+ // дефолта падает на них же — как было до появления `defaultValue`.
16200
+ const defaultRange = useMemo(() => {
16201
+ const [from, to] = (Array.isArray(configFilter?.defaultValue) ? configFilter.defaultValue : []);
16202
+ return [getDate(from)?.toISOString() ?? minDate, getDate(to)?.toISOString() ?? maxDate];
16203
+ }, [configFilter?.defaultValue, maxDate, minDate]);
16160
16204
  const isEmpty = useMemo(() => isNil(value?.[0]) && isNil(value?.[1]), [value]);
16161
- const isDefault = useMemo(() => value?.[0] === minDate && value?.[1] === maxDate, [maxDate, minDate, value]);
16205
+ const isDefault = useMemo(() => value?.[0] === defaultRange[0] && value?.[1] === defaultRange[1], [defaultRange, value]);
16162
16206
  const reset = useCallback(() => {
16163
- setValue([minDate, maxDate]);
16207
+ const [from, to] = defaultRange;
16208
+ setValue([from, to]);
16164
16209
  changeFilters({
16165
16210
  [filterName]: {
16166
- value: [minDate, maxDate],
16167
- min: minDate,
16168
- max: maxDate
16211
+ value: [from, to],
16212
+ min: from,
16213
+ max: to
16169
16214
  }
16170
16215
  }, configFilter?.resetFilters);
16171
- }, [changeFilters, configFilter?.resetFilters, filterName, maxDate, minDate]);
16216
+ }, [changeFilters, configFilter?.resetFilters, defaultRange, filterName]);
16172
16217
  const onChange = useCallback((newValue) => {
16173
16218
  setValue([newValue[0].toISOString(), newValue[1].toISOString()]);
16174
16219
  }, []);
16220
+ // Дефолт применяем однократно — как только обе границы диапазона известны. С `defaultValue`
16221
+ // это происходит сразу, без него — после подгрузки фич связанного источника данных.
16175
16222
  useEffect(() => {
16176
- if (!isNil(minDate) && !isNil(maxDate)) {
16177
- reset();
16178
- }
16179
- }, []); // eslint-disable-line
16223
+ if (isDefaultApplied.current)
16224
+ return;
16225
+ const [from, to] = defaultRange;
16226
+ if (isNil(from) || isNil(to))
16227
+ return;
16228
+ isDefaultApplied.current = true;
16229
+ reset();
16230
+ }, [defaultRange, reset]);
16180
16231
  useEffect(() => {
16181
16232
  if (!isInit.current) {
16182
16233
  isInit.current = true;
@@ -16194,7 +16245,7 @@ const RangeDateFilter = ({ type, filter }) => {
16194
16245
  }, [value]); // eslint-disable-line
16195
16246
  if (!configFilter)
16196
16247
  return null;
16197
- return (jsx(RangeNumberInput, { label: label || t("interval", { ns: "dashboard", defaultValue: "Интервал" }), selectedOption: { range: true }, minDate: getDate(minDate), maxDate: getDate(maxDate), value: [getDate(value[0]), getDate(value[1])], zIndex: 100, prefix: jsx(Icon, { kind: "date", disabled: true }), suffix: !isEmpty && !isDefault && jsx(StyledIconButton, { kind: "error", onClick: reset }), withTime: withTime, isDate: true, onChange: onChange }));
16248
+ return (jsx(RangeNumberInput, { label: label || t("interval", { ns: "dashboard", defaultValue: "Интервал" }), selectedOption: { range: true }, minDate: getDate(minDate), maxDate: getDate(maxDate), value: [getDate(value[0]), getDate(value[1])], zIndex: DASHBOARD_OVERLAY_Z_INDEX, prefix: jsx(Icon, { kind: "date", disabled: true }), suffix: !isEmpty && !isDefault && jsx(StyledIconButton, { kind: "error", onClick: reset }), withTime: withTime, isDate: true, onChange: onChange }));
16198
16249
  };
16199
16250
 
16200
16251
  const getJustifyContent = (align) => {
@@ -16838,7 +16889,7 @@ const useTreeFilter = (type, filter) => {
16838
16889
 
16839
16890
  const TreeFilter = ({ type, filter }) => {
16840
16891
  const { width, placeholder, multiSelect, loading, data, setData, expanded, setExpanded, onLoadChildren, selectedIds, selectedCount, selectedLabel, searchValue, onSearchChange, onOpen, onClose, onToggleSelect, onReset, onSave, dirty, } = useTreeFilter(type, filter);
16841
- return (jsx(TreeFilterContainer, { children: jsx(TreeDropdown, { zIndex: 100, width: getFilterWidth(width), placeholder: placeholder, multiSelect: multiSelect, loading: loading, data: data, setData: setData, expanded: expanded, setExpanded: setExpanded, onLoadChildren: onLoadChildren, selectedIds: selectedIds, selectedCount: selectedCount, selectedLabel: selectedLabel, searchValue: searchValue, onSearchChange: onSearchChange, onOpen: onOpen, onClose: onClose, onToggleSelect: onToggleSelect, onReset: onReset, onSave: onSave, dirty: dirty }) }));
16892
+ return (jsx(TreeFilterContainer, { children: jsx(TreeDropdown, { zIndex: DASHBOARD_OVERLAY_Z_INDEX, width: getFilterWidth(width), placeholder: placeholder, multiSelect: multiSelect, loading: loading, data: data, setData: setData, expanded: expanded, setExpanded: setExpanded, onLoadChildren: onLoadChildren, selectedIds: selectedIds, selectedCount: selectedCount, selectedLabel: selectedLabel, searchValue: searchValue, onSearchChange: onSearchChange, onOpen: onOpen, onClose: onClose, onToggleSelect: onToggleSelect, onReset: onReset, onSave: onSave, dirty: dirty }) }));
16842
16893
  };
16843
16894
 
16844
16895
  const getFilterComponent = (filterType) => {
@@ -17395,7 +17446,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
17395
17446
  ?.map(item => ({
17396
17447
  ...item,
17397
17448
  color: formatFilterColor(item.name, item.color, defaultColor),
17398
- })) || []), width: pieSide, height: pieSide, padAngle: angle, outerRadius: radius, cornerRadius: cornerRadius, renderTooltip: renderPieChartTooltip, withTooltip: true, onClick: filterName ? item => onFilter(item.name) : undefined, children: showTotal && (jsx(PieChartCenter, { children: totalWord || roundTotalSum(+totalSum) })) }) }));
17449
+ })) || []), width: pieSide, height: pieSide, padAngle: angle, outerRadius: radius, cornerRadius: cornerRadius, renderTooltip: renderPieChartTooltip, tooltipStyle: PIE_CHART_TOOLTIP_STYLE, withTooltip: true, onClick: filterName ? item => onFilter(item.name) : undefined, children: showTotal && (jsx(PieChartCenter, { children: totalWord || roundTotalSum(+totalSum) })) }) }));
17399
17450
  }
17400
17451
  const barChartData = getDataFromFilterItems(data[0]?.items);
17401
17452
  // Тот же случай, что у stack: обёртка выше тела на подписи оси X (margin.bottom). В fill
@@ -17455,7 +17506,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
17455
17506
  ]);
17456
17507
  if (!isVisibleContainer(id, expandable, expanded, expandedContainers))
17457
17508
  return null;
17458
- const chartBody = (jsx(ChartWrapper, { width: isPieChart && fill ? pieSide : width, height: isStackBar ? "auto" : isPieChart ? (fill ? pieSide : width) : chartHeight, column: column, loading: loading, children: renderChart }));
17509
+ const chartBody = (jsxs(ChartWrapper, { width: isPieChart && fill ? pieSide : width, height: isStackBar ? "auto" : isPieChart ? (fill ? pieSide : width) : chartHeight, column: column, loading: loading, children: [jsx(ChartTooltipStyles, {}), renderChart] }));
17459
17510
  if (!fill)
17460
17511
  return chartBody;
17461
17512
  // fill: тело центрируется в измеряемой обёртке, ref которой питает ResizeObserver обеими осями.
@@ -18124,5 +18175,5 @@ const DEFAULT_HEATMAP_STYLE = {
18124
18175
  ],
18125
18176
  };
18126
18177
 
18127
- export { ALIGNMENTS, ALIGN_ITEMS, ATTRIBUTE_ICON_ELEMENT_TYPES, AddButtonRow, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, 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, ContainerChildren, ContainerLoading, ContainerRoot, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, 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, NO_CELL_DRAG_SELECTOR, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OBJECT_FITS, OVERFLOWS, OneColumnContainer, 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, 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, hexToRgba, 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, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useChartChange, useChartData, useContainerAttributes, useContainerRoot, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSourceLoading, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useEqualTileWidth, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useIconsFromLayers, 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 };
18178
+ export { ALIGNMENTS, ALIGN_ITEMS, ATTRIBUTE_ICON_ELEMENT_TYPES, AddButtonRow, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, 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, 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, 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, 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, hexToRgba, 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, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useChartChange, useChartData, useContainerAttributes, useContainerRoot, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSourceLoading, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useEqualTileWidth, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useIconsFromLayers, 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 };
18128
18179
  //# sourceMappingURL=react.esm.js.map