@evergis/react 4.0.101 → 4.0.103
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/componentTypes.d.ts +20 -14
- package/dist/components/Dashboard/components/Chart/FillContext.d.ts +15 -0
- package/dist/components/Dashboard/components/Chart/styled.d.ts +1 -0
- package/dist/components/Dashboard/components/StackBar/index.d.ts +2 -0
- package/dist/components/Dashboard/components/StackBar/styled.d.ts +4 -1
- package/dist/components/Dashboard/containers/EditContainer/styled.d.ts +2 -0
- package/dist/components/Dashboard/containers/FiltersContainer/styled.d.ts +2 -0
- package/dist/components/Dashboard/containers/styled.d.ts +4 -1
- package/dist/components/Dashboard/hooks/index.d.ts +1 -1
- package/dist/components/Dashboard/hooks/useResizeBox.d.ts +17 -0
- package/dist/components/Dashboard/types.d.ts +17 -2
- package/dist/components/Dashboard/utils/getWrapperSizeStyle.d.ts +7 -2
- package/dist/index.js +155 -43
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +154 -43
- package/dist/react.esm.js.map +1 -1
- package/package.json +3 -3
- package/dist/components/Dashboard/components/Chart/ChartFillContext.d.ts +0 -8
- package/dist/components/Dashboard/hooks/useResizeWidth.d.ts +0 -12
package/dist/react.esm.js
CHANGED
|
@@ -100,7 +100,30 @@ const ChartWrapperContainer = styled.div.withConfig({ displayName: "ChartWrapper
|
|
|
100
100
|
position: relative;
|
|
101
101
|
width: 100%;
|
|
102
102
|
`;
|
|
103
|
-
|
|
103
|
+
/*
|
|
104
|
+
* fill-режим: обёртка забирает всю доступную ячейку (её высоту задаёт флекс-цепочка, а не контент графика),
|
|
105
|
+
* на неё вешается ref для ResizeObserver — меряем обе оси без цикла. Плоский div (не Flex uilib), как соседний
|
|
106
|
+
* ChartWrapperContainer, чтобы ref гарантированно дошёл до DOM-узла. Тело графика центрируется внутри.
|
|
107
|
+
*/
|
|
108
|
+
const ChartFillMeasure = styled.div.withConfig({ displayName: "ChartFillMeasure", componentId: "sc-1r4oerb" }) `
|
|
109
|
+
position: relative;
|
|
110
|
+
display: flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
justify-content: center;
|
|
113
|
+
width: 100%;
|
|
114
|
+
height: 100%;
|
|
115
|
+
min-width: 0;
|
|
116
|
+
min-height: 0;
|
|
117
|
+
overflow: hidden;
|
|
118
|
+
|
|
119
|
+
/* SVG по умолчанию inline, поэтому под ним остаётся зазор базовой линии (~4px при line-height
|
|
120
|
+
18.4px): вне fill его скрывал запас высоты, а тело, точно заполнившее ячейку, из-за него
|
|
121
|
+
вылезает за нижнюю границу. Блочный SVG зазора не даёт. */
|
|
122
|
+
svg {
|
|
123
|
+
display: block;
|
|
124
|
+
}
|
|
125
|
+
`;
|
|
126
|
+
const Tooltip = styled.div.withConfig({ displayName: "Tooltip", componentId: "sc-1va8cy3" }) `
|
|
104
127
|
position: relative;
|
|
105
128
|
border-radius: 0.25rem;
|
|
106
129
|
background-color: rgba(28, 33, 48);
|
|
@@ -193,7 +216,7 @@ const LineChartStyles = createGlobalStyle `
|
|
|
193
216
|
fill: ${({ theme: { palette } }) => palette.textDisabled};
|
|
194
217
|
}
|
|
195
218
|
`;
|
|
196
|
-
const StyledBarChart = styled(BarChart$1).withConfig({ displayName: "StyledBarChart", componentId: "sc-
|
|
219
|
+
const StyledBarChart = styled(BarChart$1).withConfig({ displayName: "StyledBarChart", componentId: "sc-1l1kx80" }) `
|
|
197
220
|
.domain {
|
|
198
221
|
display: none;
|
|
199
222
|
}
|
|
@@ -3381,6 +3404,8 @@ const ALIGNMENTS = ["left", "center", "right"];
|
|
|
3381
3404
|
const ALIGN_ITEMS = ["flex-start", "center", "flex-end", "stretch", "baseline"];
|
|
3382
3405
|
/** Масштабирование изображения внутри своего бокса (CSS `object-fit`). */
|
|
3383
3406
|
const OBJECT_FITS = ["cover", "contain", "fill", "none", "scale-down"];
|
|
3407
|
+
/** Поведение контента, выходящего за бокс контейнера (CSS `overflow`). */
|
|
3408
|
+
const OVERFLOWS = ["visible", "hidden", "scroll", "auto"];
|
|
3384
3409
|
/** Режим отображения коллекций. */
|
|
3385
3410
|
const VIEW_MODES = ["grid", "list"];
|
|
3386
3411
|
var ContainerTemplate;
|
|
@@ -3495,6 +3520,13 @@ const BASE_CONTAINER_STYLE = {
|
|
|
3495
3520
|
const StackBarContainer = styled(Flex).withConfig({ displayName: "StackBarContainer", componentId: "sc-stc97k" }) `
|
|
3496
3521
|
flex-wrap: nowrap;
|
|
3497
3522
|
width: 100%;
|
|
3523
|
+
|
|
3524
|
+
${({ $fill }) => $fill &&
|
|
3525
|
+
css `
|
|
3526
|
+
/* fill: полоса забирает остаток высоты обёртки (вся ячейка минус шапка с итогом). */
|
|
3527
|
+
flex: 1 1 auto;
|
|
3528
|
+
min-height: 0;
|
|
3529
|
+
`}
|
|
3498
3530
|
`;
|
|
3499
3531
|
const StackBarHeader = styled(Flex).withConfig({ displayName: "StackBarHeader", componentId: "sc-8mc354" }) `
|
|
3500
3532
|
justify-content: space-between;
|
|
@@ -3504,7 +3536,8 @@ const StackBarHeader = styled(Flex).withConfig({ displayName: "StackBarHeader",
|
|
|
3504
3536
|
const StackBarSection = styled.div.withConfig({ displayName: "StackBarSection", componentId: "sc-i3gdu" }) `
|
|
3505
3537
|
cursor: ${({ onClick }) => (onClick ? "pointer" : "default")};
|
|
3506
3538
|
width: ${({ $width }) => $width}%;
|
|
3507
|
-
|
|
3539
|
+
/* В fill толщину полосы задаёт растянутый контейнер, а не options.height элемента chart. */
|
|
3540
|
+
height: ${({ $fill, $height }) => ($fill ? "100%" : $height ? `${$height}px` : "0.5rem")};
|
|
3508
3541
|
margin: 0 0.5px;
|
|
3509
3542
|
background-color: ${({ $color }) => $color};
|
|
3510
3543
|
opacity: ${({ hasAnyFilter, isFiltered }) => (isFiltered ? 1 : hasAnyFilter ? FILTERED_VALUE_OPACITY / 100 : 1)};
|
|
@@ -7630,30 +7663,33 @@ const useRenderElement = (type = WidgetType.Dashboard, elementConfig) => {
|
|
|
7630
7663
|
]);
|
|
7631
7664
|
};
|
|
7632
7665
|
|
|
7666
|
+
/** Пустой бокс на отключённом пути — стабильная ссылка, чтобы не плодить ре-рендеры. */
|
|
7667
|
+
const EMPTY_BOX = {};
|
|
7633
7668
|
/**
|
|
7634
|
-
* Измеряет
|
|
7669
|
+
* Измеряет фактические ширину и высоту DOM-элемента и обновляет их на любой ресайз (ResizeObserver).
|
|
7635
7670
|
*
|
|
7636
|
-
* Возвращает `[ref,
|
|
7637
|
-
* не измерен. Используется для «резинового» графика: d3-графикам
|
|
7638
|
-
*
|
|
7671
|
+
* Возвращает `[ref, box]`, где `box` — `{ width, height }` в пикселях (content-box) либо пустой объект,
|
|
7672
|
+
* пока элемент ещё не измерен. Используется для «резинового» графика: d3-графикам нужны конкретные
|
|
7673
|
+
* пиксельные размеры, а не CSS `100%`, а для вписывания (fit) нужны обе оси.
|
|
7639
7674
|
*
|
|
7640
7675
|
* `enabled: false` полностью отключает наблюдение — обычные (не fill) графики не измеряются
|
|
7641
7676
|
* и не вызывают лишних ре-рендеров.
|
|
7642
7677
|
*/
|
|
7643
|
-
const
|
|
7678
|
+
const useResizeBox = (enabled) => {
|
|
7644
7679
|
const ref = useRef(null);
|
|
7645
|
-
const [
|
|
7680
|
+
const [box, setBox] = useState(EMPTY_BOX);
|
|
7646
7681
|
useEffect(() => {
|
|
7647
7682
|
const node = ref.current;
|
|
7648
7683
|
if (!enabled || !node)
|
|
7649
7684
|
return;
|
|
7650
7685
|
const observer = new ResizeObserver(([entry]) => {
|
|
7651
|
-
|
|
7686
|
+
const { width, height } = entry.contentRect;
|
|
7687
|
+
setBox({ width, height });
|
|
7652
7688
|
});
|
|
7653
7689
|
observer.observe(node);
|
|
7654
7690
|
return () => observer.disconnect();
|
|
7655
7691
|
}, [enabled]);
|
|
7656
|
-
return [ref, enabled ?
|
|
7692
|
+
return [ref, enabled ? box : EMPTY_BOX];
|
|
7657
7693
|
};
|
|
7658
7694
|
|
|
7659
7695
|
const useShownOtherItems = (options) => {
|
|
@@ -7699,13 +7735,13 @@ const useUpdateDataSource = ({ dataSource, config, filters, attributes, layerPar
|
|
|
7699
7735
|
*/
|
|
7700
7736
|
const useWrapperSize = ({ elementConfig, defaults }) => {
|
|
7701
7737
|
const { id, style, templateName, options } = elementConfig || {};
|
|
7702
|
-
const { width, height } = options || {};
|
|
7738
|
+
const { width, height, overflow } = options || {};
|
|
7703
7739
|
return useMemo(() => ({
|
|
7704
7740
|
id,
|
|
7705
7741
|
"data-templatename": templateName,
|
|
7706
7742
|
style,
|
|
7707
|
-
$sizeCss: getWrapperSizeStyle({ style, width, height, defaults, defaultWidth: FILL_SIZE }),
|
|
7708
|
-
}), [id, templateName, style, width, height, defaults]);
|
|
7743
|
+
$sizeCss: getWrapperSizeStyle({ style, width, height, overflow, defaults, defaultWidth: FILL_SIZE }),
|
|
7744
|
+
}), [id, templateName, style, width, height, overflow, defaults]);
|
|
7709
7745
|
};
|
|
7710
7746
|
|
|
7711
7747
|
const ContainersGroupContainer = memo(({ elementConfig, type, renderElement }) => {
|
|
@@ -7775,6 +7811,19 @@ const ContainerChart = styled(Flex).withConfig({ displayName: "ContainerChart",
|
|
|
7775
7811
|
justify-content: center;
|
|
7776
7812
|
width: 100%;
|
|
7777
7813
|
}
|
|
7814
|
+
|
|
7815
|
+
/* fill: слот забирает остаток высоты ячейки (под слотами title/alias/legend) и центрирует тело графика. */
|
|
7816
|
+
${({ $fill }) => $fill &&
|
|
7817
|
+
css `
|
|
7818
|
+
flex: 1 1 auto;
|
|
7819
|
+
min-height: 0;
|
|
7820
|
+
align-items: center;
|
|
7821
|
+
justify-content: center;
|
|
7822
|
+
|
|
7823
|
+
> * {
|
|
7824
|
+
height: 100%;
|
|
7825
|
+
}
|
|
7826
|
+
`}
|
|
7778
7827
|
`;
|
|
7779
7828
|
const ContainerLegend = styled(Flex).withConfig({ displayName: "ContainerLegend", componentId: "sc-z1n1s8" }) ``;
|
|
7780
7829
|
const ContainerUnits = styled.div.withConfig({ displayName: "ContainerUnits", componentId: "sc-1vurgy9" }) `
|
|
@@ -7790,6 +7839,13 @@ const ContainerValue = styled(Flex).withConfig({ displayName: "ContainerValue",
|
|
|
7790
7839
|
font-size: ${({ big }) => (big ? 1.5 : 1)}rem;
|
|
7791
7840
|
color: ${({ fontColor, theme: { palette } }) => fontColor || palette.textPrimary};
|
|
7792
7841
|
|
|
7842
|
+
/* fill: строка со слотом chart+legend забирает остаток высоты Container'а (гейт — только у Chart-контейнера). */
|
|
7843
|
+
${({ $fill }) => $fill &&
|
|
7844
|
+
css `
|
|
7845
|
+
flex: 1 1 auto;
|
|
7846
|
+
min-height: 0;
|
|
7847
|
+
`}
|
|
7848
|
+
|
|
7793
7849
|
> * {
|
|
7794
7850
|
width: ${({ column }) => (column ? "100%" : "auto")};
|
|
7795
7851
|
}
|
|
@@ -7896,15 +7952,16 @@ const useRenderContainer = ({ elementConfig, type, renderElement, renderBody, })
|
|
|
7896
7952
|
};
|
|
7897
7953
|
|
|
7898
7954
|
const OneColumnContainer = memo(({ type, elementConfig, renderElement }) => {
|
|
7899
|
-
const { width, height } = elementConfig?.options || {};
|
|
7955
|
+
const { width, height, overflow } = elementConfig?.options || {};
|
|
7900
7956
|
const templateName = elementConfig?.templateName;
|
|
7901
7957
|
const renderBody = useCallback(({ id, value, style, hasUnits, render }) => (jsxs(Container, { id: id, isColumn: true, "data-templatename": templateName, style: style, "$sizeCss": getWrapperSizeStyle({
|
|
7902
7958
|
style,
|
|
7903
7959
|
width,
|
|
7904
7960
|
height,
|
|
7961
|
+
overflow,
|
|
7905
7962
|
defaults: BASE_CONTAINER_STYLE,
|
|
7906
7963
|
defaultWidth: FILL_SIZE,
|
|
7907
|
-
}), children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [render({ id: "alias" }), render({ id: "tooltip" }), render({ id: "modal" })] }), jsxs(ContainerValue, { children: [value, hasUnits && (jsx(ContainerUnits, { children: render({ id: "units" }) }))] })] })), [width, height, templateName]);
|
|
7964
|
+
}), children: [jsxs(ContainerAlias, { hasBottomMargin: true, children: [render({ id: "alias" }), render({ id: "tooltip" }), render({ id: "modal" })] }), jsxs(ContainerValue, { children: [value, hasUnits && (jsx(ContainerUnits, { children: render({ id: "units" }) }))] })] })), [width, height, overflow, templateName]);
|
|
7908
7965
|
const { renderContainer, attributesToRender } = useRenderContainer({
|
|
7909
7966
|
type,
|
|
7910
7967
|
elementConfig,
|
|
@@ -7915,9 +7972,9 @@ const OneColumnContainer = memo(({ type, elementConfig, renderElement }) => {
|
|
|
7915
7972
|
});
|
|
7916
7973
|
|
|
7917
7974
|
const TwoColumnContainer = memo(({ elementConfig, type, renderElement }) => {
|
|
7918
|
-
const { width, height } = elementConfig?.options || {};
|
|
7975
|
+
const { width, height, overflow } = elementConfig?.options || {};
|
|
7919
7976
|
const templateName = elementConfig?.templateName;
|
|
7920
|
-
const renderBody = useCallback(({ id, value, style, hasIcon, hasUnits, render }) => (jsxs(TwoColumnContainerWrapper, { id: id, "data-templatename": templateName, style: style, "$sizeCss": getWrapperSizeStyle({ style, width, height, defaultWidth: FILL_SIZE }), children: [jsxs(ContainerAlias, { children: [hasIcon && (jsx(ContainerAliasIcon, { children: render({ id: "icon" }) })), render({ id: "alias" }), render({ id: "tooltip" }), render({ id: "modal" })] }), jsxs(ContainerValue, { big: true, children: [value, hasUnits && (jsx(ContainerUnits, { children: render({ id: "units" }) }))] })] })), [width, height, templateName]);
|
|
7977
|
+
const renderBody = useCallback(({ id, value, style, hasIcon, hasUnits, render }) => (jsxs(TwoColumnContainerWrapper, { id: id, "data-templatename": templateName, style: style, "$sizeCss": getWrapperSizeStyle({ style, width, height, overflow, defaultWidth: FILL_SIZE }), children: [jsxs(ContainerAlias, { children: [hasIcon && (jsx(ContainerAliasIcon, { children: render({ id: "icon" }) })), render({ id: "alias" }), render({ id: "tooltip" }), render({ id: "modal" })] }), jsxs(ContainerValue, { big: true, children: [value, hasUnits && (jsx(ContainerUnits, { children: render({ id: "units" }) }))] })] })), [width, height, overflow, templateName]);
|
|
7921
7978
|
const { renderContainer, attributesToRender } = useRenderContainer({
|
|
7922
7979
|
type,
|
|
7923
7980
|
elementConfig,
|
|
@@ -8299,6 +8356,15 @@ const BarChartContainer = styled.div.withConfig({ displayName: "BarChartContaine
|
|
|
8299
8356
|
const AnyChartWrapper = styled.div.withConfig({ displayName: "AnyChartWrapper", componentId: "sc-1txgly0" }) `
|
|
8300
8357
|
width: 100%;
|
|
8301
8358
|
height: ${({ height }) => height}px;
|
|
8359
|
+
|
|
8360
|
+
${({ $fill }) => $fill &&
|
|
8361
|
+
css `
|
|
8362
|
+
/* fill: обёртке задана ВСЯ доступная высота ячейки, поэтому тело внутри забирает её остаток
|
|
8363
|
+
флексом (полоса stack тянется под строкой итога), а не вычисляется арифметикой. */
|
|
8364
|
+
display: flex;
|
|
8365
|
+
flex-direction: column;
|
|
8366
|
+
min-height: 0;
|
|
8367
|
+
`}
|
|
8302
8368
|
`;
|
|
8303
8369
|
const BarChartWrapper = styled(AnyChartWrapper).withConfig({ displayName: "BarChartWrapper", componentId: "sc-98mm1q" }) `
|
|
8304
8370
|
width: 100%;
|
|
@@ -8421,6 +8487,10 @@ const ChartContainerWrapper = styled(FlexSpan).withConfig({ displayName: "ChartC
|
|
|
8421
8487
|
/* Заданная высота контейнера достаётся телу графика — за вычетом заголовка. */
|
|
8422
8488
|
${({ $sizeCss }) => !!$sizeCss?.height &&
|
|
8423
8489
|
css `
|
|
8490
|
+
/* Раздача высоты требует, чтобы обёртка была flex-колонкой (FlexSpan сам по себе не flex),
|
|
8491
|
+
иначе Container с flex:1 1 auto не растянется на заданную высоту, а fill-график не впишется по высоте. */
|
|
8492
|
+
display: flex;
|
|
8493
|
+
|
|
8424
8494
|
> ${Container} {
|
|
8425
8495
|
flex: 1 1 auto;
|
|
8426
8496
|
min-height: 0;
|
|
@@ -8431,17 +8501,19 @@ const ChartContainerWrapper = styled(FlexSpan).withConfig({ displayName: "ChartC
|
|
|
8431
8501
|
`;
|
|
8432
8502
|
|
|
8433
8503
|
/**
|
|
8434
|
-
*
|
|
8504
|
+
* Контекст вписывания графика (`options.fill` контейнера Chart).
|
|
8435
8505
|
*
|
|
8436
8506
|
* Компонент `Chart` рендерится через `renderElement({ id: "chart" })` и получает только дочерний
|
|
8437
8507
|
* узел `{ id: "chart" }` — опции контейнера до него не доходят. `ChartContainer` оборачивает
|
|
8438
|
-
* график в провайдер этого контекста, а `Chart` читает
|
|
8508
|
+
* график в провайдер этого контекста, а `Chart` читает значение через `useContext`.
|
|
8439
8509
|
*/
|
|
8440
|
-
const
|
|
8510
|
+
const FillContext = createContext({ fill: false, fitHeight: false });
|
|
8441
8511
|
|
|
8442
8512
|
const ChartContainer = memo(({ elementConfig, isVisible, type, renderElement }) => {
|
|
8443
8513
|
const { options, children } = elementConfig || {};
|
|
8444
|
-
const { twoColumns, hideEmpty,
|
|
8514
|
+
const { twoColumns, hideEmpty, height } = options || {};
|
|
8515
|
+
const fill = options?.fill;
|
|
8516
|
+
const fillContextValue = useMemo(() => ({ fill: !!fill, fitHeight: !!fill && height != null }), [fill, height]);
|
|
8445
8517
|
const aliasElement = children.find(child => child.id === "alias");
|
|
8446
8518
|
const chartElement = children.find(child => child.id === "chart");
|
|
8447
8519
|
const legendElement = children.find(child => child.id === "legend");
|
|
@@ -8456,7 +8528,7 @@ const ChartContainer = memo(({ elementConfig, isVisible, type, renderElement })
|
|
|
8456
8528
|
const hasItems = !!data[0]?.items?.length;
|
|
8457
8529
|
if (!loading && !hasItems && hideEmpty)
|
|
8458
8530
|
return null;
|
|
8459
|
-
return (jsxs(ChartContainerWrapper, { ...root, children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxs(Container, { isColumn: true, children: [aliasElement && jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsx(ContainerValue, { column: !twoColumns, alignItems: "center", children: hasItems ? (jsxs(Fragment$1, { children: [jsx(ContainerChart, { children: jsx(
|
|
8531
|
+
return (jsxs(ChartContainerWrapper, { ...root, children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxs(Container, { isColumn: true, children: [aliasElement && jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsx(ContainerValue, { column: !twoColumns, alignItems: twoColumns && fill ? "stretch" : "center", "$fill": !!fill, children: hasItems ? (jsxs(Fragment$1, { children: [jsx(ContainerChart, { "$fill": !!fill, children: jsx(FillContext.Provider, { value: fillContextValue, children: renderElement({ id: "chart" }) }) }), jsx(ContainerLegend, { justifyContent: legendElement?.options?.center ? "center" : "flex-start", children: renderElement({ id: "legend" }) })] })) : (jsx(Fragment$1, { children: "\u2014" })) })] }))] }));
|
|
8460
8532
|
});
|
|
8461
8533
|
|
|
8462
8534
|
const PagesContainer = memo(({ type = WidgetType.Dashboard, noBorders }) => {
|
|
@@ -11463,6 +11535,8 @@ const tagTypography = (tag) => ({ $typography }) => {
|
|
|
11463
11535
|
${style.fontSize && `font-size: ${style.fontSize};`}
|
|
11464
11536
|
${style.lineHeight && `line-height: ${style.lineHeight};`}
|
|
11465
11537
|
${style.fontWeight != null && `font-weight: ${style.fontWeight};`}
|
|
11538
|
+
${style.marginTop && `margin-top: ${style.marginTop};`}
|
|
11539
|
+
${style.marginBottom && `margin-bottom: ${style.marginBottom};`}
|
|
11466
11540
|
`;
|
|
11467
11541
|
};
|
|
11468
11542
|
const MarkdownWrapper = styled.div.withConfig({ displayName: "MarkdownWrapper", componentId: "sc-1iv8z8a" }) `
|
|
@@ -12695,7 +12769,8 @@ const ChartLoading = ({ column }) => (jsx(Flex, { position: "absolute", width: "
|
|
|
12695
12769
|
|
|
12696
12770
|
const ContainerLoading = () => (jsx(Flex, { alignContent: "center", justifyContent: "center", width: "100%", children: jsx(CircularProgress, { diameter: 1.5, mono: true }) }));
|
|
12697
12771
|
|
|
12698
|
-
// forwardRef
|
|
12772
|
+
// forwardRef сохранён для совместимости; в fill-режиме ResizeObserver меряет внешнюю обёртку
|
|
12773
|
+
// ChartFillMeasure (см. Chart/index.tsx), а не сам ChartWrapper.
|
|
12699
12774
|
const ChartWrapper = memo(forwardRef(({ width, height, column, loading, children }, ref) => {
|
|
12700
12775
|
return (jsxs(ChartWrapperContainer, { ref: ref, column: column, style: { width, height }, children: [loading && jsx(ChartLoading, { column: column }), jsx(Flex, { opacity: loading ? FILTERED_VALUE_OPACITY / 100 : 1, children: children })] }));
|
|
12701
12776
|
}));
|
|
@@ -13851,13 +13926,17 @@ const omitKeys = (source, keys = []) => {
|
|
|
13851
13926
|
* конфликтующие внутренние дефолты обёртки, а контент лишается возможности её распирать
|
|
13852
13927
|
* (`min-width`/`min-height: 0`). Для fill-высоты добавляется `flex: 1 1 auto` — в колонке
|
|
13853
13928
|
* контейнер забирает остаток ячейки под заголовком, а не переполняет её на его высоту.
|
|
13929
|
+
*
|
|
13930
|
+
* `overflow` уходит в CSS как есть и ничем не подменяется: не задан — работает браузерный
|
|
13931
|
+
* `visible`, то есть контент крупнее бокса вытекает на соседние слоты.
|
|
13854
13932
|
*/
|
|
13855
|
-
const getWrapperSizeStyle = ({ style, width: widthOption, height, defaults, defaultWidth, }) => {
|
|
13933
|
+
const getWrapperSizeStyle = ({ style, width: widthOption, height, overflow, defaults, defaultWidth, }) => {
|
|
13856
13934
|
// Ширина по умолчанию (контейнеры передают FILL_SIZE): явный `options.width` её перекрывает.
|
|
13857
13935
|
const width = widthOption ?? defaultWidth;
|
|
13858
13936
|
const hasWidth = width != null;
|
|
13859
13937
|
const hasHeight = height != null;
|
|
13860
|
-
|
|
13938
|
+
const hasOverflow = overflow != null;
|
|
13939
|
+
if (!hasWidth && !hasHeight && !hasOverflow) {
|
|
13861
13940
|
return defaults;
|
|
13862
13941
|
}
|
|
13863
13942
|
const fillWidth = isFillSize(width);
|
|
@@ -13866,13 +13945,18 @@ const getWrapperSizeStyle = ({ style, width: widthOption, height, defaults, defa
|
|
|
13866
13945
|
...(fillWidth ? FILL_WIDTH_CONFLICTS : []),
|
|
13867
13946
|
...(fillHeight ? FILL_HEIGHT_CONFLICTS : []),
|
|
13868
13947
|
];
|
|
13869
|
-
const sizeKeys = [
|
|
13948
|
+
const sizeKeys = [
|
|
13949
|
+
...(hasWidth ? ["width"] : []),
|
|
13950
|
+
...(hasHeight ? ["height"] : []),
|
|
13951
|
+
...(hasOverflow ? ["overflow"] : []),
|
|
13952
|
+
];
|
|
13870
13953
|
return {
|
|
13871
13954
|
...omitKeys(defaults, conflicts),
|
|
13872
13955
|
// `options` перекрывают одноимённые поля `style` — приоритет тот же, что был у inline-варианта.
|
|
13873
13956
|
...omitKeys(style, sizeKeys),
|
|
13874
13957
|
...(hasWidth && { width, ...(fillWidth && { minWidth: 0 }) }),
|
|
13875
13958
|
...(hasHeight && { height, ...(fillHeight && { minHeight: 0, flex: "1 1 auto" }) }),
|
|
13959
|
+
...(hasOverflow && { overflow }),
|
|
13876
13960
|
};
|
|
13877
13961
|
};
|
|
13878
13962
|
|
|
@@ -14005,7 +14089,7 @@ const tooltipValueFromRelatedFeatures = (t, value, relatedAttributes, layerInfo)
|
|
|
14005
14089
|
return formatChartRelatedValue(t, value, layerInfo, relatedAttributes);
|
|
14006
14090
|
};
|
|
14007
14091
|
|
|
14008
|
-
const StackBar = ({ data, filterName, type, alias, options, renderElement, renderTooltip }) => {
|
|
14092
|
+
const StackBar = ({ data, filterName, type, alias, options, fill, renderElement, renderTooltip }) => {
|
|
14009
14093
|
const { height, showTotal, cornerRadius, groupTooltip } = options || {};
|
|
14010
14094
|
const { t } = useGlobalContext();
|
|
14011
14095
|
const { hasAnyFilter, isFiltered, onFilter } = useWidgetFilters(type, filterName, data?.[0]?.items);
|
|
@@ -14019,11 +14103,11 @@ const StackBar = ({ data, filterName, type, alias, options, renderElement, rende
|
|
|
14019
14103
|
const visibleItems = useMemo(() => items?.filter(({ value }) => Number(value) > 0), [items]);
|
|
14020
14104
|
const getWidth = useCallback(value => ((Number(value) / total) * 100).toFixed(2), [total]);
|
|
14021
14105
|
const renderGroupTooltip = useMemo(() => (jsx(ThemeProvider, { children: jsx(ChartTooltipTable, { cellPadding: 0, cellSpacing: 0, children: visibleItems?.map(({ name, value, color }, index) => (jsxs("tr", { children: [jsx("td", { children: jsxs(ChartTooltip, { alignItems: "center", children: [jsx(ChartTooltipColor, { "$color": color }), jsx(ChartTooltipName, { children: name })] }) }), jsx("td", { children: formatValue(value) })] }, index))) }) })), [visibleItems, formatValue]);
|
|
14022
|
-
const renderItem = useCallback(({ name, value, color }, ref) => (jsx(StackBarSection, { ref: ref, "$width": getWidth(value), "$height": height, "$color": color, cornerRadius: cornerRadius, hasAnyFilter: hasAnyFilter, isFiltered: isFiltered(name), onClick: filterName ? () => onFilter(name) : undefined })), [cornerRadius, filterName, getWidth, hasAnyFilter, height, isFiltered, onFilter]);
|
|
14106
|
+
const renderItem = useCallback(({ name, value, color }, ref) => (jsx(StackBarSection, { ref: ref, "$width": getWidth(value), "$height": height, "$fill": fill, "$color": color, cornerRadius: cornerRadius, hasAnyFilter: hasAnyFilter, isFiltered: isFiltered(name), onClick: filterName ? () => onFilter(name) : undefined })), [cornerRadius, fill, filterName, getWidth, hasAnyFilter, height, isFiltered, onFilter]);
|
|
14023
14107
|
const renderItems = useMemo(() => (jsx(Fragment$1, { children: visibleItems?.map((item, index) => (jsx(Fragment, { children: groupTooltip ? (renderItem(item)) : (jsx(ThemeProvider, { children: jsx(Tooltip$1, { placement: "top", arrow: true, content: renderTooltip([item]), children: ref => renderItem(item, ref) }) })) }, index))) })), [groupTooltip, visibleItems, renderItem, renderTooltip]);
|
|
14024
14108
|
if (!total)
|
|
14025
14109
|
return null;
|
|
14026
|
-
return (jsxs(Fragment$1, { children: [(alias || showTotal) && (jsxs(StackBarHeader, { children: [jsx(StackBarAlias, { children: renderElement({ id: "alias" }) }), showTotal && (jsxs(StackBarTotal, { children: [jsx(StackBarValue, { children: formatValue(total) }), !!units && jsx(StackBarUnits, { children: units })] }))] })), groupTooltip ? (jsx(Tooltip$1, { placement: "top", arrow: true, content: renderGroupTooltip, children: ref => jsx(StackBarContainer, { ref: ref, children: renderItems }) })) : (jsx(StackBarContainer, { children: renderItems }))] }));
|
|
14110
|
+
return (jsxs(Fragment$1, { children: [(alias || showTotal) && (jsxs(StackBarHeader, { children: [jsx(StackBarAlias, { children: renderElement({ id: "alias" }) }), showTotal && (jsxs(StackBarTotal, { children: [jsx(StackBarValue, { children: formatValue(total) }), !!units && jsx(StackBarUnits, { children: units })] }))] })), groupTooltip ? (jsx(Tooltip$1, { placement: "top", arrow: true, content: renderGroupTooltip, children: ref => (jsx(StackBarContainer, { ref: ref, "$fill": fill, children: renderItems })) })) : (jsx(StackBarContainer, { "$fill": fill, children: renderItems }))] }));
|
|
14027
14111
|
};
|
|
14028
14112
|
|
|
14029
14113
|
const Chart = memo(({ config, element, elementConfig, type, renderElement }) => {
|
|
@@ -14032,10 +14116,10 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14032
14116
|
const primaryColor = palette.primary;
|
|
14033
14117
|
const { t } = useGlobalContext();
|
|
14034
14118
|
const { expandedContainers, attributes, dataSources } = useWidgetContext(type);
|
|
14035
|
-
//
|
|
14036
|
-
// т.к. d3-графики (и useChartChange для line) требуют
|
|
14037
|
-
const fill = useContext(
|
|
14038
|
-
const [chartRef, measuredWidth] =
|
|
14119
|
+
// fill контейнера: вписываем тело графика в контейнер. Размеры ячейки измеряем реально (ResizeObserver),
|
|
14120
|
+
// т.к. d3-графики (и useChartChange для line) требуют пиксельные числа, а не CSS "100%".
|
|
14121
|
+
const { fill, fitHeight } = useContext(FillContext);
|
|
14122
|
+
const [chartRef, { width: measuredWidth, height: measuredHeight }] = useResizeBox(fill);
|
|
14039
14123
|
const { id, options, children } = element || {};
|
|
14040
14124
|
const { column, markers: configMarkers, showLabels, showMarkers, showTotal, totalWord: configTotalWord, totalAttribute, expandable, expanded, chartType, relatedDataSources, defaultColor, dotSnapping, } = options || {};
|
|
14041
14125
|
const isLineChart = chartType === "line";
|
|
@@ -14071,11 +14155,19 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14071
14155
|
const chartWidth = fill
|
|
14072
14156
|
? measuredWidth ?? DEFAULT_CHART_WIDTH
|
|
14073
14157
|
: toPxNumber(width) ?? DEFAULT_CHART_WIDTH;
|
|
14158
|
+
// Фит по высоте включается только при заданной высоте контейнера (fitHeight) и уже измеренной
|
|
14159
|
+
// ячейке; иначе — прежняя фикс. высота options.height. Флаг важен и ниже: он различает два
|
|
14160
|
+
// смысла chartHeight — «высота тела» (вне fill) и «вся доступная высота» (в fill).
|
|
14161
|
+
const fitsHeight = useMemo(() => !!(fill && fitHeight && measuredHeight), [fill, fitHeight, measuredHeight]);
|
|
14162
|
+
// fill по высоте: тянем тело графика на измеренную доступную высоту ячейки (content-box минус слоты).
|
|
14163
|
+
const chartHeight = useMemo(() => (fitsHeight && measuredHeight ? measuredHeight : height), [fitsHeight, measuredHeight, height]);
|
|
14164
|
+
// Круглый график вписываем по короткой стороне (object-fit: contain), центрируя в ячейке.
|
|
14165
|
+
const pieSide = useMemo(() => (fitsHeight && measuredHeight ? Math.min(chartWidth, measuredHeight) : chartWidth), [fitsHeight, measuredHeight, chartWidth]);
|
|
14074
14166
|
const [customize] = useChartChange({
|
|
14075
14167
|
dataSources: config.dataSources,
|
|
14076
14168
|
chartId: elementConfig?.id,
|
|
14077
14169
|
width: chartWidth,
|
|
14078
|
-
height,
|
|
14170
|
+
height: chartHeight,
|
|
14079
14171
|
fontColor,
|
|
14080
14172
|
relatedAttributes,
|
|
14081
14173
|
defaultColor: primaryColor,
|
|
@@ -14175,26 +14267,37 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14175
14267
|
.flat()
|
|
14176
14268
|
.map(({ values }) => values)
|
|
14177
14269
|
.flat();
|
|
14178
|
-
return (jsxs(AnyChartWrapper, { height:
|
|
14270
|
+
return (jsxs(AnyChartWrapper, { height: chartHeight, children: [jsx(LineChartStyles, {}), jsx(LineChart, { data: lineChartData, labels: labels, markers: markers, width: chartWidth, height: chartHeight, xAxisPadding: 15, yAxisPadding: 0, min: Math.min(...chartValues), customYAxisSelection: yAxis => {
|
|
14179
14271
|
if (isHidedY) {
|
|
14180
14272
|
yAxis.remove();
|
|
14181
14273
|
}
|
|
14182
14274
|
}, customYAxis: yAxis => yAxis.ticks(4), renderTooltip: renderLineChartTooltip, customize: customize, dotSnapping: dotSnapping, dynamicTooltipEnable: true, stackedTooltip: true, tooltipClassName: "dashboardLineChartTooltip", drawGridX: !isHidedY, margin: margin })] }));
|
|
14183
14275
|
}
|
|
14184
14276
|
if (isStackBar) {
|
|
14185
|
-
|
|
14186
|
-
|
|
14277
|
+
// Вне fill chartHeight — высота самой полосы, и обёртка честно становится выше на строку
|
|
14278
|
+
// итога. В fill chartHeight — уже ВСЯ доступная высота ячейки: обёртка занимает её целиком,
|
|
14279
|
+
// а полоса забирает остаток под шапкой флексом ($fill), поэтому прибавлять/вычитать
|
|
14280
|
+
// STACK_BAR_TOTAL_HEIGHT не нужно — иначе тело вылезло бы за нижнюю границу.
|
|
14281
|
+
const stackBarHeight = showTotal && !fitsHeight ? chartHeight + STACK_BAR_TOTAL_HEIGHT : chartHeight;
|
|
14282
|
+
return (jsx(AnyChartWrapper, { height: stackBarHeight, "$fill": fitsHeight, children: jsx(StackBar, { data: data, filterName: filterName, type: type, alias: elementConfig?.children?.find(child => child.id === "alias"), options: options, fill: fitsHeight, renderTooltip: renderPieChartTooltip, renderElement: renderElement }) }));
|
|
14187
14283
|
}
|
|
14188
14284
|
if (isPieChart) {
|
|
14189
|
-
return (jsx(AnyChartWrapper, { height: height, children: jsx(PieChart, { data: (data[0]?.items
|
|
14285
|
+
return (jsx(AnyChartWrapper, { height: fill ? pieSide : height, children: jsx(PieChart, { data: (data[0]?.items
|
|
14190
14286
|
?.filter(({ value }) => !isEmptyValue(value))
|
|
14191
14287
|
?.map(item => ({
|
|
14192
14288
|
...item,
|
|
14193
14289
|
color: formatFilterColor(item.name, item.color, defaultColor),
|
|
14194
|
-
})) || []), width:
|
|
14290
|
+
})) || []), 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) })) }) }));
|
|
14195
14291
|
}
|
|
14196
14292
|
const barChartData = getDataFromFilterItems(data[0]?.items);
|
|
14197
|
-
|
|
14293
|
+
// Тот же случай, что у stack: обёртка выше тела на подписи оси X (margin.bottom). В fill
|
|
14294
|
+
// chartHeight — вся доступная высота, поэтому подписи вычитаем из неё, а не прибавляем.
|
|
14295
|
+
// BAR_CHART_FOOTER_MARGIN — это внешний margin-bottom самой BarChartWrapper: в её height он
|
|
14296
|
+
// не входит, но место в ячейке занимает, поэтому его тоже вычитаем.
|
|
14297
|
+
const barBodyHeight = fitsHeight
|
|
14298
|
+
? chartHeight - margin.bottom - BAR_CHART_FOOTER_MARGIN
|
|
14299
|
+
: chartHeight;
|
|
14300
|
+
return (jsx(BarChartWrapper, { height: barBodyHeight + margin.bottom, children: jsx(BarChartContainer, { children: jsx(StyledBarChart, { data: barChartData, colors: getColorsFromFilterItems(data[0]?.items, defaultColor, formatFilterColor), minValue: getMinValueFromFilterItems(data[0]?.items), markers: markers, width: chartWidth, height: barBodyHeight, barWidth: barWidth, barPadding: padding, customYAxisLeft: customYAxisLeft, customXAxisBottom: xAxisBottom => customXAxisBottom(xAxisBottom, barChartData), customYAxis: axis => !showLabels && axis.remove(), customBars: ({ bars }) => {
|
|
14198
14301
|
bars.attr("rx", radius);
|
|
14199
14302
|
bars.attr("ry", radius);
|
|
14200
14303
|
}, margin: margin, xAxisPadding: 0, yAxisPadding: 0, formatTooltipValue: formatTooltipValue, formatTooltipName: formatTooltipName, hideTooltipGroupName: true, dynamicTooltipEnable: true, isBarTooltip: true, onBarClick: filterName ? item => onFilter(item.name) : undefined }) }) }));
|
|
@@ -14212,6 +14315,10 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14212
14315
|
defaultColor,
|
|
14213
14316
|
formatFilterColor,
|
|
14214
14317
|
chartWidth,
|
|
14318
|
+
chartHeight,
|
|
14319
|
+
fitsHeight,
|
|
14320
|
+
pieSide,
|
|
14321
|
+
fill,
|
|
14215
14322
|
barWidth,
|
|
14216
14323
|
showLabels,
|
|
14217
14324
|
padding,
|
|
@@ -14239,7 +14346,11 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14239
14346
|
]);
|
|
14240
14347
|
if (!isVisibleContainer(id, expandable, expanded, expandedContainers))
|
|
14241
14348
|
return null;
|
|
14242
|
-
|
|
14349
|
+
const chartBody = (jsx(ChartWrapper, { width: isPieChart && fill ? pieSide : width, height: isStackBar ? "auto" : isPieChart ? (fill ? pieSide : width) : chartHeight, column: column, loading: loading, children: renderChart }));
|
|
14350
|
+
if (!fill)
|
|
14351
|
+
return chartBody;
|
|
14352
|
+
// fill: тело центрируется в измеряемой обёртке, ref которой питает ResizeObserver обеими осями.
|
|
14353
|
+
return jsx(ChartFillMeasure, { ref: chartRef, children: chartBody });
|
|
14243
14354
|
});
|
|
14244
14355
|
|
|
14245
14356
|
const ChartLegend = ({ data, chartElement, fontSize, type, twoColumns, loading }) => {
|
|
@@ -14967,5 +15078,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
|
|
|
14967
15078
|
}, children: children }), upperSiblings] }));
|
|
14968
15079
|
};
|
|
14969
15080
|
|
|
14970
|
-
export { ALIGNMENTS, ALIGN_ITEMS, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, BaseMapTheme, CHART_TYPES, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EMPTY_DATA_SOURCE_LAYER_INFO, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILL_SIZE, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardBackgroundHeader, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFontColorMixin, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OBJECT_FITS, OneColumnContainer, POLL_SUBTASK_INTERVAL_MS, POLL_SUBTASK_TIMEOUT_MS, PROVIDER_PREFIX, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, ProviderPrefix, 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, StyligClassificationTypes, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, VIEW_MODES, WidgetType, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyTreeFilterToCondition, applyVarsToCondition, asAttributeName, asChartId, asContainerId, asDataSourceName, asFilterName, asLayerName, asModalId, asResourceId, asTabId, checkEqualOrIncludes, checkIsLoading, createConfigLayer, createConfigPage, createNewPageId, createSaveNotificationId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, geometryToEwkt, getActualExtrusionHeight, getAttributeByName, getAttributeConfigurationByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDataSourceLayerInfo, getDate, getDefaultConfig, getDisplayTemplateNameFromAttribute, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerInfo, getLayerInfoAttribute, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getStyleAttributes, getSvgUrl, getTemplateNameFromAttribute, getThemeByName, getTotalFromAttributes, getTotalFromRelatedFeatures, getWrapperSizeStyle, hexToRgba, isEmptyElementValue, isEmptyValue, isFillSize, isHiddenEmptyValue, isHookActive, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isTreeFilterValue, isVisibleContainer, mergeAttributeConfigurations, metersPerPixel, numberOptions, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sizeCssMixin, sliceShownOtherItems, stretchPalette, timeOptions, toCssSize, toPxNumber, toRenderableValue, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, updateDataSource, useAfterSave, useAppHeight, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useChartChange, useChartData, useContainerAttributes, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useIconsFromLayers, useLayerHiddenAttributes, useLayerParams, useMapContext, useMapDraw, useMapImages, useMaxZoomTo, useProjectDashboardInit, usePythonSandbox, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRemoteTask, useRenderElement,
|
|
15081
|
+
export { ALIGNMENTS, ALIGN_ITEMS, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, BaseMapTheme, CHART_TYPES, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EMPTY_DATA_SOURCE_LAYER_INFO, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILL_SIZE, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardBackgroundHeader, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFontColorMixin, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, 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, 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, StyligClassificationTypes, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, VIEW_MODES, WidgetType, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyTreeFilterToCondition, applyVarsToCondition, asAttributeName, asChartId, asContainerId, asDataSourceName, asFilterName, asLayerName, asModalId, asResourceId, asTabId, checkEqualOrIncludes, checkIsLoading, createConfigLayer, createConfigPage, createNewPageId, createSaveNotificationId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, geometryToEwkt, getActualExtrusionHeight, getAttributeByName, getAttributeConfigurationByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDataSourceLayerInfo, getDate, getDefaultConfig, getDisplayTemplateNameFromAttribute, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerInfo, getLayerInfoAttribute, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getStyleAttributes, getSvgUrl, getTemplateNameFromAttribute, getThemeByName, getTotalFromAttributes, getTotalFromRelatedFeatures, getWrapperSizeStyle, hexToRgba, isEmptyElementValue, isEmptyValue, isFillSize, isHiddenEmptyValue, isHookActive, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isTreeFilterValue, isVisibleContainer, mergeAttributeConfigurations, metersPerPixel, numberOptions, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sizeCssMixin, sliceShownOtherItems, stretchPalette, timeOptions, toCssSize, toPxNumber, toRenderableValue, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, updateDataSource, useAfterSave, useAppHeight, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useChartChange, useChartData, useContainerAttributes, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, 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 };
|
|
14971
15082
|
//# sourceMappingURL=react.esm.js.map
|