@evergis/react 3.1.41 → 3.1.46
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/components/ChartLegend/index.d.ts +1 -0
- package/dist/components/Dashboard/components/ChartLegend/styled.d.ts +1 -0
- package/dist/components/Dashboard/containers/FiltersContainer/components/ChipsFilter.d.ts +3 -0
- package/dist/components/Dashboard/containers/FiltersContainer/components/ChipsFilter.styled.d.ts +3 -0
- package/dist/components/Dashboard/containers/FiltersContainer/components/CustomChip.d.ts +15 -0
- package/dist/components/Dashboard/containers/FiltersContainer/components/CustomChip.styled.d.ts +11 -0
- package/dist/components/Dashboard/elements/ElementMarkdown/index.d.ts +3 -0
- package/dist/components/Dashboard/elements/ElementMarkdown/styled.d.ts +5 -0
- package/dist/components/Dashboard/elements/index.d.ts +1 -0
- package/dist/components/Dashboard/elements/registry.d.ts +1 -0
- package/dist/components/Dashboard/styled.d.ts +1 -0
- package/dist/components/Dashboard/types.d.ts +13 -1
- package/dist/index.js +508 -15
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +508 -17
- package/dist/react.esm.js.map +1 -1
- package/package.json +6 -4
package/dist/react.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
2
|
-
import { IconButton, Flex, transition, Chip, Icon, Description, FlexSpan, IconToggle, Popup, Menu, DraggableTree, shadows, Divider, LegendToggler, Tooltip as Tooltip$1, DropdownField, MultiSelectContainer, IconButtonButton, FlatButton, DraggableTreeContainer, LinearProgress, H2, ThemeProvider, defaultTheme, Preview, Blank, Popover, darkTheme, NumberRangeSlider, useAsyncAutocomplete, AutoComplete, Dropdown, Checkbox, CircularProgress, RangeNumberInput, dateFormat } from '@evergis/uilib-gl';
|
|
2
|
+
import { IconButton, Flex, transition, Chip, Icon, Description, FlexSpan, IconToggle, Popup, Menu, DraggableTree, shadows, Divider, LegendToggler, Tooltip as Tooltip$1, DropdownField, MultiSelectContainer, IconButtonButton, FlatButton, DraggableTreeContainer, LinearProgress, H2, ThemeProvider, defaultTheme, Preview, Blank, Popover, Expander, darkTheme, NumberRangeSlider, useAsyncAutocomplete, AutoComplete, Dropdown, Checkbox, CircularProgress, RangeNumberInput, dateFormat } from '@evergis/uilib-gl';
|
|
3
3
|
import { createContext, memo, useRef, useState, useEffect, useCallback, useContext, useMemo, Fragment } from 'react';
|
|
4
4
|
import styled, { createGlobalStyle, css, useTheme } from 'styled-components';
|
|
5
5
|
import { lineChartClassNames, BarChart as BarChart$1, barChartClassNames, LineChart, PieChart } from '@evergis/charts';
|
|
@@ -20,6 +20,8 @@ import MapGL, { Source, Layer as Layer$1 } from 'react-map-gl/mapbox';
|
|
|
20
20
|
import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
|
|
21
21
|
import 'mapbox-gl/dist/mapbox-gl.css';
|
|
22
22
|
import { Swiper, SwiperSlide } from 'swiper/react';
|
|
23
|
+
import ReactMarkdown from 'react-markdown';
|
|
24
|
+
import remarkGfm from 'remark-gfm';
|
|
23
25
|
|
|
24
26
|
const AddFeatureButton = ({ title, icon = "feature_add" /* , layerName, geometryType*/ }) => {
|
|
25
27
|
// const [, handleAddFeature] = useFeatureCreator(layerName, geometryType);
|
|
@@ -4446,24 +4448,48 @@ const formatDataSourceCondition = ({ condition, configFilters, filters, attribut
|
|
|
4446
4448
|
const DashboardChipsContainer = styled(Flex) `
|
|
4447
4449
|
flex-wrap: wrap;
|
|
4448
4450
|
`;
|
|
4451
|
+
const DefaultChipColorMixin = css `
|
|
4452
|
+
&& {
|
|
4453
|
+
color: ${({ theme: { palette } }) => palette.textPrimary};
|
|
4454
|
+
}
|
|
4455
|
+
|
|
4456
|
+
&& > * {
|
|
4457
|
+
color: ${({ theme: { palette } }) => palette.textPrimary};
|
|
4458
|
+
}
|
|
4459
|
+
|
|
4460
|
+
&& span[kind]:after {
|
|
4461
|
+
color: ${({ theme: { palette } }) => palette.icon};
|
|
4462
|
+
}
|
|
4463
|
+
`;
|
|
4464
|
+
const CustomChipColorMixin = css `
|
|
4465
|
+
&& {
|
|
4466
|
+
color: ${({ $fontColor }) => $fontColor};
|
|
4467
|
+
}
|
|
4468
|
+
|
|
4469
|
+
&& > * {
|
|
4470
|
+
color: ${({ $fontColor }) => $fontColor};
|
|
4471
|
+
}
|
|
4472
|
+
|
|
4473
|
+
&& span[kind]:after {
|
|
4474
|
+
color: ${({ $fontColor }) => $fontColor};
|
|
4475
|
+
}
|
|
4476
|
+
`;
|
|
4449
4477
|
const DashboardChip$1 = styled(Chip) `
|
|
4450
4478
|
margin: 0 0.25rem 0.25rem 0;
|
|
4451
4479
|
background: ${({ $isDefault, $bgColor, theme: { palette } }) => $isDefault ? palette.element : $bgColor || palette.primary};
|
|
4452
4480
|
border-radius: ${({ $radius, theme: { borderRadius } }) => $radius || borderRadius.medium};
|
|
4453
4481
|
white-space: nowrap;
|
|
4454
4482
|
font-size: ${({ $fontSize }) => $fontSize || "0.875rem"};
|
|
4455
|
-
color: ${({
|
|
4483
|
+
color: ${({ theme: { palette } }) => palette.iconContrast};
|
|
4456
4484
|
|
|
4457
4485
|
> * {
|
|
4458
4486
|
font-size: ${({ $fontSize }) => $fontSize || "0.875rem"};
|
|
4459
|
-
color: ${({ $isDefault, $fontColor, theme: { palette } }) => $isDefault ? palette.textPrimary : $fontColor || "#fff"};
|
|
4460
4487
|
}
|
|
4461
4488
|
|
|
4462
4489
|
span[kind] {
|
|
4463
4490
|
height: 0.875rem;
|
|
4464
4491
|
|
|
4465
4492
|
:after {
|
|
4466
|
-
color: ${({ $isDefault, $fontColor, theme: { palette } }) => ($isDefault ? palette.icon : $fontColor || "#fff")};
|
|
4467
4493
|
font-size: 0.875rem;
|
|
4468
4494
|
}
|
|
4469
4495
|
}
|
|
@@ -4472,6 +4498,9 @@ const DashboardChip$1 = styled(Chip) `
|
|
|
4472
4498
|
width: auto;
|
|
4473
4499
|
padding: 0 0.5rem;
|
|
4474
4500
|
}
|
|
4501
|
+
|
|
4502
|
+
${({ $isDefault }) => $isDefault && DefaultChipColorMixin}
|
|
4503
|
+
${({ $fontColor, $isDefault }) => !!$fontColor && !$isDefault && CustomChipColorMixin}
|
|
4475
4504
|
`;
|
|
4476
4505
|
|
|
4477
4506
|
const ChartLegendContainer = styled(Flex) `
|
|
@@ -4498,7 +4527,7 @@ const ChartLegendColor = styled.div `
|
|
|
4498
4527
|
`;
|
|
4499
4528
|
const ChartLegendName = styled.div `
|
|
4500
4529
|
flex: 1;
|
|
4501
|
-
font-size: 0.625rem;
|
|
4530
|
+
font-size: ${({ $fontSize }) => $fontSize || "0.625rem"};
|
|
4502
4531
|
color: ${({ theme: { palette }, $fontColor }) => $fontColor || palette.textPrimary};
|
|
4503
4532
|
`;
|
|
4504
4533
|
|
|
@@ -5038,7 +5067,7 @@ const LayerGroup = ({ group, onlyMainTools }) => {
|
|
|
5038
5067
|
if (!group) {
|
|
5039
5068
|
return null;
|
|
5040
5069
|
}
|
|
5041
|
-
return (jsx(LayerGroupContainer, { visible: group.isVisible, children: jsxs(LayerGroupMain, { children: [jsx(Icon, { kind: group.isExpanded ? "
|
|
5070
|
+
return (jsx(LayerGroupContainer, { visible: group.isVisible, children: jsxs(LayerGroupMain, { children: [jsx(Icon, { kind: group.isExpanded ? "tree_folder_opened" : "tree_folder_closed", style: { color: group.clientData.color } }), jsxs(Description, { children: [jsx("div", { style: { wordBreak: "break-word" }, children: group?.alias || group?.name }), jsx(IconButton, { kind: group.isExpanded ? "reduce" : "expand", onClick: () => onToggleExpand(group.name, !group.isExpanded) })] }), jsx(FlexSpan, { children: jsxs(Flex, { flexWrap: "nowrap", p: "0 0.5rem", children: [jsx(FlexSpan, { children: jsx(IconToggle, { kind: group.isVisible ? "password_show" : "password_hide", className: "feature-visible", isSelected: group.isVisible, onClick: () => onToggleVisibility(group.name, !group.isVisible) }) }), !onlyMainTools && (jsx(Popup, { distance: -14, isVisible: isMenuOpen, onRequestClose: toggleMenu, anchor: ref => (jsx(FlexSpan, { children: jsx(IconButton, { innerRef: ref, kind: "menu_vertical", onClick: toggleMenu }) })), children: jsx(Menu, { options: options, selectOption: selectOption }) }))] }) })] }) }));
|
|
5042
5071
|
};
|
|
5043
5072
|
|
|
5044
5073
|
const createTreeNode = (layer, Component, onlyMainTools) => {
|
|
@@ -5101,6 +5130,9 @@ const LayerListContainer = styled(Flex) `
|
|
|
5101
5130
|
const ElementValueWrapper = styled.div `
|
|
5102
5131
|
transition: background-color ${transition.toggle};
|
|
5103
5132
|
`;
|
|
5133
|
+
const InnerContainerWrapper$1 = styled.div `
|
|
5134
|
+
width: 100%;
|
|
5135
|
+
`;
|
|
5104
5136
|
const ContainerWrapper = styled(Flex) `
|
|
5105
5137
|
position: relative;
|
|
5106
5138
|
min-height: 1rem;
|
|
@@ -6169,12 +6201,29 @@ const SvgContainer = styled.div `
|
|
|
6169
6201
|
const ContainerIconTitle = styled(Flex) `
|
|
6170
6202
|
align-items: center;
|
|
6171
6203
|
flex-wrap: nowrap;
|
|
6204
|
+
flex-shrink: 1;
|
|
6205
|
+
flex-grow: 0;
|
|
6172
6206
|
color: ${({ fontColor, theme: { palette } }) => fontColor || palette.textSecondary};
|
|
6173
6207
|
|
|
6208
|
+
> div {
|
|
6209
|
+
flex-shrink: 1;
|
|
6210
|
+
flex-grow: 0;
|
|
6211
|
+
width: auto;
|
|
6212
|
+
}
|
|
6213
|
+
|
|
6214
|
+
${SvgContainer} {
|
|
6215
|
+
flex-shrink: 0;
|
|
6216
|
+
flex-grow: 0;
|
|
6217
|
+
margin-right: 0.5rem;
|
|
6218
|
+
}
|
|
6219
|
+
|
|
6220
|
+
> * {
|
|
6221
|
+
width: auto;
|
|
6222
|
+
}
|
|
6223
|
+
|
|
6174
6224
|
svg,
|
|
6175
6225
|
img,
|
|
6176
|
-
span[kind]
|
|
6177
|
-
${SvgContainer} {
|
|
6226
|
+
span[kind] {
|
|
6178
6227
|
margin-right: 0.5rem;
|
|
6179
6228
|
}
|
|
6180
6229
|
|
|
@@ -6195,6 +6244,17 @@ const ContainerIconTitle = styled(Flex) `
|
|
|
6195
6244
|
${LegendToggler} {
|
|
6196
6245
|
margin-left: 0.25rem;
|
|
6197
6246
|
}
|
|
6247
|
+
|
|
6248
|
+
span[kind="download"] {
|
|
6249
|
+
opacity: 0;
|
|
6250
|
+
transition: opacity ${transition.hover};
|
|
6251
|
+
}
|
|
6252
|
+
|
|
6253
|
+
:hover {
|
|
6254
|
+
span[kind="download"] {
|
|
6255
|
+
opacity: 1;
|
|
6256
|
+
}
|
|
6257
|
+
}
|
|
6198
6258
|
`;
|
|
6199
6259
|
const ContainerTitle = styled(Flex) `
|
|
6200
6260
|
align-items: center;
|
|
@@ -6230,8 +6290,9 @@ const TitleContainer = memo(({ containerId, templateName, layerNames, fontColor,
|
|
|
6230
6290
|
const [layersVisibility, toggleVisibility] = useToggle(true);
|
|
6231
6291
|
const { palette } = useTheme();
|
|
6232
6292
|
const { style, options } = elementConfig || {};
|
|
6233
|
-
const { simple } = options || {};
|
|
6293
|
+
const { simple, downloadById } = options || {};
|
|
6234
6294
|
const isLayers = templateName === ContainerTemplate.Layers;
|
|
6295
|
+
const { onExport } = useExportPdf(downloadById);
|
|
6235
6296
|
const onClick = useCallback(() => {
|
|
6236
6297
|
if (!expandable)
|
|
6237
6298
|
return;
|
|
@@ -6246,7 +6307,7 @@ const TitleContainer = memo(({ containerId, templateName, layerNames, fontColor,
|
|
|
6246
6307
|
const renderVisibility = useMemo(() => isLayers && (jsx(FlexSpan, { mr: "-1rem", children: jsx(IconToggle, { kind: layersVisibility ? "password_show" : "password_hide", className: "feature-visible", isSelected: layersVisibility, onClick: onToggleVisibility }) })), [isLayers, layersVisibility, onToggleVisibility]);
|
|
6247
6308
|
const renderToggler = useMemo(() => !!containerId &&
|
|
6248
6309
|
expandable && (jsx("div", { children: jsx(LegendToggler, { color: palette.icon, toggled: expandedContainers?.[containerId] !== undefined ? expandedContainers[containerId] : expanded, onClick: onClick }) })), [containerId, expandable, expanded, expandedContainers, onClick, palette.icon]);
|
|
6249
|
-
return (jsx(Container, { isTitle: isVisible, style: style, children: jsxs(ContainerTitle, { simple: simple, children: [jsxs(ContainerIconTitle, { fontColor: fontColor, children: [renderElement({ id: "titleIcon", wrap: false }), renderElement({ id: "title" }), isLayers && renderToggler] }), !isLayers && renderToggler, renderVisibility] }) }));
|
|
6310
|
+
return (jsx(Container, { isTitle: isVisible, style: style, children: jsxs(ContainerTitle, { simple: simple, children: [jsxs(ContainerIconTitle, { fontColor: fontColor, children: [renderElement({ id: "titleIcon", wrap: false }), renderElement({ id: "title" }), !!downloadById && (jsx(IconButton, { kind: "download", onClick: onExport })), isLayers && renderToggler] }), !isLayers && renderToggler, renderVisibility] }) }));
|
|
6250
6311
|
});
|
|
6251
6312
|
|
|
6252
6313
|
const ContainerDivider = styled(Divider) `
|
|
@@ -7435,7 +7496,7 @@ const ElementImage = memo(({ type, elementConfig }) => {
|
|
|
7435
7496
|
const ElementLegend = memo(({ type, element, elementConfig, expandedContainers }) => {
|
|
7436
7497
|
const { attributes, dataSources } = useWidgetContext(type);
|
|
7437
7498
|
const { options } = elementConfig || {};
|
|
7438
|
-
const { twoColumns, chartId, relatedDataSources } = options || {};
|
|
7499
|
+
const { twoColumns, chartId, relatedDataSources, fontSize } = options || {};
|
|
7439
7500
|
const chartElement = useMemo(() => returnFound(element?.children, { id: chartId }), [chartId, element?.children]);
|
|
7440
7501
|
const { data, loading } = useChartData({
|
|
7441
7502
|
element: chartElement,
|
|
@@ -7462,7 +7523,7 @@ const ElementLegend = memo(({ type, element, elementConfig, expandedContainers }
|
|
|
7462
7523
|
return { ...item, name: attribute?.alias || item.name };
|
|
7463
7524
|
});
|
|
7464
7525
|
}, [attributes, axes, data, options.chartType, relatedDataSources, dataSources]);
|
|
7465
|
-
return !chartElement?.options?.expanded || expandedContainers?.[chartElement.id] ? (jsx(ChartLegend, { data: legendData, loading: loading, chartElement: chartElement, twoColumns: twoColumns, type: type })) : null;
|
|
7526
|
+
return !chartElement?.options?.expanded || expandedContainers?.[chartElement.id] ? (jsx(ChartLegend, { data: legendData, loading: loading, chartElement: chartElement, twoColumns: twoColumns, fontSize: fontSize, type: type })) : null;
|
|
7466
7527
|
});
|
|
7467
7528
|
|
|
7468
7529
|
const ExternalLink = styled(IconButton).attrs(() => ({
|
|
@@ -7533,6 +7594,169 @@ const ElementLink = memo(({ type, elementConfig }) => {
|
|
|
7533
7594
|
return link.startsWith("http") ? jsx(ExternalLink, { onClick: () => window.open(link) }) : jsx(LocalLink, { link: link });
|
|
7534
7595
|
});
|
|
7535
7596
|
|
|
7597
|
+
const MarkdownWrapper = styled.div `
|
|
7598
|
+
padding: 0;
|
|
7599
|
+
background: transparent;
|
|
7600
|
+
border-radius: 0.5rem;
|
|
7601
|
+
font-family: 'Nunito Sans', sans-serif;
|
|
7602
|
+
color: ${({ theme: { palette } }) => palette.textPrimary};
|
|
7603
|
+
|
|
7604
|
+
/* Paragraphs */
|
|
7605
|
+
p {
|
|
7606
|
+
font-size: 0.875rem;
|
|
7607
|
+
line-height: 1rem;
|
|
7608
|
+
letter-spacing: 0.0052rem;
|
|
7609
|
+
margin: 0 0 1rem 0;
|
|
7610
|
+
font-weight: 400;
|
|
7611
|
+
|
|
7612
|
+
&:last-child {
|
|
7613
|
+
margin-bottom: 0;
|
|
7614
|
+
}
|
|
7615
|
+
}
|
|
7616
|
+
|
|
7617
|
+
/* Headings */
|
|
7618
|
+
h1, h2, h3, h4, h5, h6 {
|
|
7619
|
+
margin: 0 0 0.75rem 0;
|
|
7620
|
+
font-weight: 300;
|
|
7621
|
+
}
|
|
7622
|
+
|
|
7623
|
+
h1 {
|
|
7624
|
+
font-size: 1.5rem;
|
|
7625
|
+
line-height: 1.75rem;
|
|
7626
|
+
}
|
|
7627
|
+
|
|
7628
|
+
h2 {
|
|
7629
|
+
font-size: 1.25rem;
|
|
7630
|
+
line-height: 1.5rem;
|
|
7631
|
+
}
|
|
7632
|
+
|
|
7633
|
+
h3 {
|
|
7634
|
+
font-size: 1rem;
|
|
7635
|
+
line-height: 1.25rem;
|
|
7636
|
+
}
|
|
7637
|
+
|
|
7638
|
+
/* Images */
|
|
7639
|
+
img {
|
|
7640
|
+
max-width: 100%;
|
|
7641
|
+
height: auto;
|
|
7642
|
+
border-radius: 0.5rem;
|
|
7643
|
+
object-fit: cover;
|
|
7644
|
+
margin: 0.75rem 0;
|
|
7645
|
+
}
|
|
7646
|
+
|
|
7647
|
+
/* Links */
|
|
7648
|
+
a {
|
|
7649
|
+
color: ${({ theme: { palette } }) => palette.primary};
|
|
7650
|
+
text-decoration: none;
|
|
7651
|
+
|
|
7652
|
+
&:hover {
|
|
7653
|
+
text-decoration: underline;
|
|
7654
|
+
}
|
|
7655
|
+
}
|
|
7656
|
+
|
|
7657
|
+
/* Lists */
|
|
7658
|
+
ul, ol {
|
|
7659
|
+
margin: 0 0 1rem 0;
|
|
7660
|
+
padding-left: 1.25rem;
|
|
7661
|
+
|
|
7662
|
+
li {
|
|
7663
|
+
font-size: 0.875rem;
|
|
7664
|
+
line-height: 1rem;
|
|
7665
|
+
margin-bottom: 0.5rem;
|
|
7666
|
+
}
|
|
7667
|
+
}
|
|
7668
|
+
|
|
7669
|
+
/* Code */
|
|
7670
|
+
code {
|
|
7671
|
+
background: ${({ theme: { palette } }) => palette.element};
|
|
7672
|
+
padding: 0.125rem 0.375rem;
|
|
7673
|
+
border-radius: 0.25rem;
|
|
7674
|
+
font-family: monospace;
|
|
7675
|
+
font-size: 0.8125rem;
|
|
7676
|
+
}
|
|
7677
|
+
|
|
7678
|
+
pre {
|
|
7679
|
+
background: ${({ theme: { palette } }) => palette.element};
|
|
7680
|
+
padding: 0.75rem;
|
|
7681
|
+
border-radius: 0.25rem;
|
|
7682
|
+
overflow-x: auto;
|
|
7683
|
+
margin: 0.75rem 0;
|
|
7684
|
+
|
|
7685
|
+
code {
|
|
7686
|
+
background: transparent;
|
|
7687
|
+
padding: 0;
|
|
7688
|
+
}
|
|
7689
|
+
}
|
|
7690
|
+
|
|
7691
|
+
/* Hide horizontal rules */
|
|
7692
|
+
hr {
|
|
7693
|
+
display: none;
|
|
7694
|
+
}
|
|
7695
|
+
`;
|
|
7696
|
+
styled(Flex) `
|
|
7697
|
+
align-items: center;
|
|
7698
|
+
gap: 1rem;
|
|
7699
|
+
margin-top: 1rem;
|
|
7700
|
+
`;
|
|
7701
|
+
styled.span `
|
|
7702
|
+
display: block;
|
|
7703
|
+
font-size: 0.75rem;
|
|
7704
|
+
line-height: 0.875rem;
|
|
7705
|
+
opacity: 0.36;
|
|
7706
|
+
margin: 0 0 0.5rem 0;
|
|
7707
|
+
`;
|
|
7708
|
+
styled.div `
|
|
7709
|
+
width: 1.25rem;
|
|
7710
|
+
height: 1.25rem;
|
|
7711
|
+
cursor: pointer;
|
|
7712
|
+
transition: opacity 0.2s;
|
|
7713
|
+
|
|
7714
|
+
&:hover {
|
|
7715
|
+
opacity: 0.7;
|
|
7716
|
+
}
|
|
7717
|
+
|
|
7718
|
+
img, svg {
|
|
7719
|
+
width: 100%;
|
|
7720
|
+
height: 100%;
|
|
7721
|
+
display: block;
|
|
7722
|
+
}
|
|
7723
|
+
`;
|
|
7724
|
+
const ExpandButton = styled(IconButton) `
|
|
7725
|
+
margin-bottom: 1rem;
|
|
7726
|
+
`;
|
|
7727
|
+
|
|
7728
|
+
const ElementMarkdown = memo(({ elementConfig, type }) => {
|
|
7729
|
+
const { attributes } = useWidgetContext(type);
|
|
7730
|
+
const { t } = useGlobalContext();
|
|
7731
|
+
const [expanded, setExpanded] = useState(false);
|
|
7732
|
+
const { attributeName, value, options } = elementConfig || {};
|
|
7733
|
+
const expandLength = options?.expandLength || 0;
|
|
7734
|
+
// Get markdown content from:
|
|
7735
|
+
// 1. value (static content)
|
|
7736
|
+
// 2. attribute by attributeName (dynamic content from data)
|
|
7737
|
+
let content = value;
|
|
7738
|
+
if (!content && attributeName && attributes) {
|
|
7739
|
+
const attribute = attributes.find(attr => attr.name === attributeName);
|
|
7740
|
+
content = attribute?.value;
|
|
7741
|
+
}
|
|
7742
|
+
if (!content)
|
|
7743
|
+
return null;
|
|
7744
|
+
const markdownString = String(content);
|
|
7745
|
+
const shouldShowExpand = expandLength > 0 && markdownString.length > expandLength;
|
|
7746
|
+
// If expand is not needed, show full content
|
|
7747
|
+
if (!shouldShowExpand) {
|
|
7748
|
+
return (jsx(MarkdownWrapper, { children: jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: markdownString }) }));
|
|
7749
|
+
}
|
|
7750
|
+
// Truncated content for collapsed state
|
|
7751
|
+
const truncatedContent = markdownString.substring(0, expandLength);
|
|
7752
|
+
// Collapsed state
|
|
7753
|
+
if (!expanded) {
|
|
7754
|
+
return (jsxs(MarkdownWrapper, { children: [jsx(ExpandButton, { primary: true, icon: jsx(Expander, { isSelected: false }), onClick: () => setExpanded(true), children: t("more", { ns: "dashboard", defaultValue: "Подробнее" }) }), jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: truncatedContent })] }));
|
|
7755
|
+
}
|
|
7756
|
+
// Expanded state
|
|
7757
|
+
return (jsxs(MarkdownWrapper, { children: [jsx(ExpandButton, { primary: true, icon: jsx(Expander, { isSelected: true }), onClick: () => setExpanded(false), children: t("hide", { ns: "dashboard", defaultValue: "Свернуть" }) }), jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], children: markdownString })] }));
|
|
7758
|
+
});
|
|
7759
|
+
|
|
7536
7760
|
const SmallPreviewContainer = styled.div `
|
|
7537
7761
|
width: 100%;
|
|
7538
7762
|
height: 100%;
|
|
@@ -7812,6 +8036,7 @@ const elementComponents = {
|
|
|
7812
8036
|
camera: ElementCamera,
|
|
7813
8037
|
chart: ElementChart,
|
|
7814
8038
|
legend: ElementLegend,
|
|
8039
|
+
markdown: ElementMarkdown,
|
|
7815
8040
|
};
|
|
7816
8041
|
|
|
7817
8042
|
const getElementValue = ({ getDefaultContainer, ...props }) => {
|
|
@@ -8403,6 +8628,268 @@ const RangeDateFilter = ({ type, filter }) => {
|
|
|
8403
8628
|
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 }));
|
|
8404
8629
|
};
|
|
8405
8630
|
|
|
8631
|
+
const getJustifyContent = (align) => {
|
|
8632
|
+
switch (align) {
|
|
8633
|
+
case "center":
|
|
8634
|
+
return "center";
|
|
8635
|
+
case "right":
|
|
8636
|
+
return "flex-end";
|
|
8637
|
+
case "left":
|
|
8638
|
+
default:
|
|
8639
|
+
return "flex-start";
|
|
8640
|
+
}
|
|
8641
|
+
};
|
|
8642
|
+
const ChipsContainer = styled(Flex) `
|
|
8643
|
+
flex-wrap: wrap;
|
|
8644
|
+
gap: 0.25rem;
|
|
8645
|
+
background: transparent;
|
|
8646
|
+
justify-content: ${({ $align }) => getJustifyContent($align)};
|
|
8647
|
+
`;
|
|
8648
|
+
|
|
8649
|
+
const FilterChip = styled.div `
|
|
8650
|
+
display: inline-flex;
|
|
8651
|
+
align-items: center;
|
|
8652
|
+
gap: 0.25rem;
|
|
8653
|
+
padding: 0.3125rem 0.5rem;
|
|
8654
|
+
height: 1.5rem;
|
|
8655
|
+
border-radius: 0.25rem;
|
|
8656
|
+
background-color: ${({ $isActive, $bgColor, theme }) => $bgColor
|
|
8657
|
+
? $bgColor
|
|
8658
|
+
: $isActive
|
|
8659
|
+
? theme.palette?.primary
|
|
8660
|
+
: theme.palette?.elementLight};
|
|
8661
|
+
color: ${({ $isActive, $textColor, theme }) => $textColor
|
|
8662
|
+
? $textColor
|
|
8663
|
+
: $isActive
|
|
8664
|
+
? theme.palette?.textContrast
|
|
8665
|
+
: theme.palette?.textSecondary};
|
|
8666
|
+
cursor: pointer;
|
|
8667
|
+
font-size: 0.75rem;
|
|
8668
|
+
line-height: 0.875rem;
|
|
8669
|
+
white-space: nowrap;
|
|
8670
|
+
flex-shrink: 0;
|
|
8671
|
+
transition: all 0.2s ease-in-out;
|
|
8672
|
+
margin: 0 0.25rem 0 0;
|
|
8673
|
+
box-sizing: border-box;
|
|
8674
|
+
|
|
8675
|
+
&:hover {
|
|
8676
|
+
background-color: ${({ $isActive, $bgColor, theme }) => $isActive
|
|
8677
|
+
? $bgColor || 'inherit'
|
|
8678
|
+
: $bgColor || theme.palette?.elementDark};
|
|
8679
|
+
}
|
|
8680
|
+
`;
|
|
8681
|
+
const ChipIconWrapper = styled.span `
|
|
8682
|
+
display: inline-flex;
|
|
8683
|
+
align-items: center;
|
|
8684
|
+
justify-content: center;
|
|
8685
|
+
width: 0.875rem;
|
|
8686
|
+
height: 0.875rem;
|
|
8687
|
+
flex-shrink: 0;
|
|
8688
|
+
|
|
8689
|
+
svg, img {
|
|
8690
|
+
width: 100%;
|
|
8691
|
+
height: 100%;
|
|
8692
|
+
display: block;
|
|
8693
|
+
}
|
|
8694
|
+
`;
|
|
8695
|
+
const ChipText = styled.span `
|
|
8696
|
+
overflow: hidden;
|
|
8697
|
+
text-overflow: ellipsis;
|
|
8698
|
+
white-space: nowrap;
|
|
8699
|
+
${({ $maxTextWidth }) => $maxTextWidth && `max-width: ${$maxTextWidth / 16}rem;`}
|
|
8700
|
+
`;
|
|
8701
|
+
|
|
8702
|
+
const CustomChip = ({ text, icon, color, primary, secondary, error, disabled, isActive, maxTextWidth, fontColor: customFontColor, backgroundColor: customBackgroundColor, ...props }) => {
|
|
8703
|
+
const theme = useTheme();
|
|
8704
|
+
const { palette } = theme;
|
|
8705
|
+
// Helper to add transparency to hex color
|
|
8706
|
+
const addTransparency = (hex, transparency = '1f') => {
|
|
8707
|
+
// Ensure hex starts with #
|
|
8708
|
+
const cleanHex = hex.startsWith('#') ? hex : `#${hex}`;
|
|
8709
|
+
return `${cleanHex}${transparency}`;
|
|
8710
|
+
};
|
|
8711
|
+
// Calculate colors based on priority:
|
|
8712
|
+
// 1. customFontColor / customBackgroundColor (highest, from options)
|
|
8713
|
+
// 2. color (from attribute)
|
|
8714
|
+
// 3. primary/secondary/error
|
|
8715
|
+
// 4. default theme colors
|
|
8716
|
+
let bgColor;
|
|
8717
|
+
let textColor;
|
|
8718
|
+
if (isActive) {
|
|
8719
|
+
// Priority 1: Custom colors from options
|
|
8720
|
+
if (customFontColor) {
|
|
8721
|
+
textColor = customFontColor;
|
|
8722
|
+
bgColor = customBackgroundColor || addTransparency(customFontColor); // 12% opacity
|
|
8723
|
+
}
|
|
8724
|
+
// Priority 2: Color from attribute
|
|
8725
|
+
else if (color) {
|
|
8726
|
+
textColor = palette.textPrimary; // White text for active chip
|
|
8727
|
+
bgColor = color; // Full color without transparency
|
|
8728
|
+
}
|
|
8729
|
+
// Priority 3: Variant colors
|
|
8730
|
+
else if (primary) {
|
|
8731
|
+
bgColor = theme.message.color.success; // Green
|
|
8732
|
+
textColor = palette.textContrast;
|
|
8733
|
+
}
|
|
8734
|
+
else if (secondary) {
|
|
8735
|
+
bgColor = palette.primary;
|
|
8736
|
+
textColor = palette.textContrast;
|
|
8737
|
+
}
|
|
8738
|
+
else if (error) {
|
|
8739
|
+
bgColor = theme.message.color.warning; // Yellow
|
|
8740
|
+
textColor = palette.textPrimary;
|
|
8741
|
+
}
|
|
8742
|
+
// Priority 4: Default - no colors specified
|
|
8743
|
+
else {
|
|
8744
|
+
textColor = palette.primary;
|
|
8745
|
+
bgColor = addTransparency(palette.primary); // palette.primary + 12%
|
|
8746
|
+
}
|
|
8747
|
+
}
|
|
8748
|
+
else {
|
|
8749
|
+
// Inactive state
|
|
8750
|
+
if (color) {
|
|
8751
|
+
textColor = color; // Use color for text
|
|
8752
|
+
bgColor = addTransparency(color); // Uses default 1f (12%) transparency
|
|
8753
|
+
}
|
|
8754
|
+
// else: No color attribute - leave bgColor and textColor undefined
|
|
8755
|
+
// Styled component will use fallback for inactive: bg = rgba(0,0,0,0.06), text = palette.textSecondary
|
|
8756
|
+
}
|
|
8757
|
+
const renderIcon = useCallback((iconValue) => {
|
|
8758
|
+
if (!iconValue) {
|
|
8759
|
+
return null;
|
|
8760
|
+
}
|
|
8761
|
+
// If icon doesn't contain a dot and doesn't start with /sp/, it's a built-in icon from uilib-gl
|
|
8762
|
+
if (!iconValue.includes(".") && !iconValue.startsWith("/sp/")) {
|
|
8763
|
+
return jsx(Icon, { kind: iconValue });
|
|
8764
|
+
}
|
|
8765
|
+
// If it's an SVG file or resourceId path, use SvgImage component
|
|
8766
|
+
const isSvg = iconValue.endsWith(".svg") || iconValue.startsWith("/sp/resources/file/");
|
|
8767
|
+
if (isSvg) {
|
|
8768
|
+
const iconColor = textColor
|
|
8769
|
+
? textColor
|
|
8770
|
+
: isActive
|
|
8771
|
+
? palette.textContrast
|
|
8772
|
+
: palette.textSecondary;
|
|
8773
|
+
return (jsx(SvgImage, { url: iconValue, width: 14, height: 14, fontColor: iconColor }));
|
|
8774
|
+
}
|
|
8775
|
+
// Otherwise, it's a regular image
|
|
8776
|
+
return jsx("img", { src: iconValue, alt: "" });
|
|
8777
|
+
}, [isActive, textColor, palette.textContrast, palette.textSecondary]);
|
|
8778
|
+
return (jsxs(FilterChip, { "$isActive": isActive, "$bgColor": bgColor, "$textColor": textColor, ...props, children: [icon && jsx(ChipIconWrapper, { children: renderIcon(icon) }), jsx(ChipText, { "$maxTextWidth": maxTextWidth, children: text })] }));
|
|
8779
|
+
};
|
|
8780
|
+
|
|
8781
|
+
const ChipsFilter = ({ type, filter, elementConfig, }) => {
|
|
8782
|
+
const { filters, dataSources, changeFilters } = useWidgetContext(type);
|
|
8783
|
+
const { currentPage } = useWidgetPage(type);
|
|
8784
|
+
const theme = useTheme();
|
|
8785
|
+
const { filters: configFilters } = currentPage;
|
|
8786
|
+
const { options } = elementConfig || {};
|
|
8787
|
+
const { align } = options || {};
|
|
8788
|
+
const { filterName, colorAttribute, iconAttribute, maxTextWidth, icon, fontColor, backgroundColor, } = filter.options;
|
|
8789
|
+
const configFilter = getConfigFilter(filterName, configFilters);
|
|
8790
|
+
const multiSelect = configFilter?.valueType === "array";
|
|
8791
|
+
// Process icon URL (resourceId or direct URL)
|
|
8792
|
+
const processedIcon = icon ? getResourceUrl(icon) : undefined;
|
|
8793
|
+
const chipOptions = useMemo(() => {
|
|
8794
|
+
if (!configFilter)
|
|
8795
|
+
return [];
|
|
8796
|
+
const dataSource = getDataSource(configFilter.relatedDataSource, dataSources);
|
|
8797
|
+
if (!dataSource?.features)
|
|
8798
|
+
return [];
|
|
8799
|
+
const features = dataSource.features;
|
|
8800
|
+
return features.map(feature => {
|
|
8801
|
+
const attrs = feature.attributes;
|
|
8802
|
+
const text = attrs[configFilter.attributeAlias || DEFAULT_ATTRIBUTE_NAME];
|
|
8803
|
+
const value = attrs[configFilter.attributeValue || DEFAULT_ATTRIBUTE_NAME];
|
|
8804
|
+
const chipIcon = iconAttribute
|
|
8805
|
+
? getIconFromAttribute(attrs, iconAttribute)
|
|
8806
|
+
: undefined;
|
|
8807
|
+
const chipColor = colorAttribute
|
|
8808
|
+
? getColorFromAttribute(attrs, colorAttribute, theme)
|
|
8809
|
+
: undefined;
|
|
8810
|
+
return {
|
|
8811
|
+
text,
|
|
8812
|
+
value,
|
|
8813
|
+
color: chipColor,
|
|
8814
|
+
icon: chipIcon,
|
|
8815
|
+
};
|
|
8816
|
+
});
|
|
8817
|
+
}, [configFilter, dataSources, colorAttribute, iconAttribute, theme]);
|
|
8818
|
+
const isChipActive = useCallback((chipValue) => {
|
|
8819
|
+
const currentValue = filters?.[filterName]?.value;
|
|
8820
|
+
if (currentValue === undefined) {
|
|
8821
|
+
return checkEqualOrIncludes(configFilter?.defaultValue, chipValue);
|
|
8822
|
+
}
|
|
8823
|
+
return checkEqualOrIncludes(currentValue, chipValue);
|
|
8824
|
+
}, [filters, filterName, configFilter]);
|
|
8825
|
+
const handleChipClick = useCallback((chipValue) => {
|
|
8826
|
+
const currentValue = filters?.[filterName]?.value;
|
|
8827
|
+
let newValue;
|
|
8828
|
+
if (multiSelect) {
|
|
8829
|
+
const currentArray = Array.isArray(currentValue)
|
|
8830
|
+
? currentValue
|
|
8831
|
+
: currentValue
|
|
8832
|
+
? [currentValue]
|
|
8833
|
+
: [];
|
|
8834
|
+
const valueIndex = currentArray.indexOf(chipValue);
|
|
8835
|
+
if (valueIndex >= 0) {
|
|
8836
|
+
const filtered = currentArray.filter(v => v !== chipValue);
|
|
8837
|
+
if (filtered.length === 0) {
|
|
8838
|
+
newValue = configFilter?.defaultValue || null;
|
|
8839
|
+
}
|
|
8840
|
+
else {
|
|
8841
|
+
newValue = filtered;
|
|
8842
|
+
}
|
|
8843
|
+
}
|
|
8844
|
+
else {
|
|
8845
|
+
newValue = [...currentArray, chipValue];
|
|
8846
|
+
}
|
|
8847
|
+
}
|
|
8848
|
+
else {
|
|
8849
|
+
if (currentValue === chipValue) {
|
|
8850
|
+
newValue = configFilter?.defaultValue || null;
|
|
8851
|
+
}
|
|
8852
|
+
else {
|
|
8853
|
+
newValue = chipValue;
|
|
8854
|
+
}
|
|
8855
|
+
}
|
|
8856
|
+
changeFilters({
|
|
8857
|
+
[filterName]: { value: newValue },
|
|
8858
|
+
});
|
|
8859
|
+
}, [filters, filterName, multiSelect, changeFilters, configFilter]);
|
|
8860
|
+
if (!configFilter)
|
|
8861
|
+
return null;
|
|
8862
|
+
return (jsx(ChipsContainer, { "$align": align, children: chipOptions.map((chip, index) => {
|
|
8863
|
+
const isActive = isChipActive(chip.value);
|
|
8864
|
+
// Use chip.icon from attribute or fallback to static icon
|
|
8865
|
+
const chipIcon = chip.icon || processedIcon;
|
|
8866
|
+
return (jsx(CustomChip, { text: chip.text, icon: chipIcon, color: chip.color, isActive: isActive, maxTextWidth: maxTextWidth, fontColor: fontColor, backgroundColor: backgroundColor, onClick: () => handleChipClick(chip.value), title: chip.text }, index));
|
|
8867
|
+
}) }));
|
|
8868
|
+
};
|
|
8869
|
+
function getColorFromAttribute(option, colorAttribute, theme) {
|
|
8870
|
+
const value = option[colorAttribute];
|
|
8871
|
+
// If value is already a hex color (starts with #), return it directly
|
|
8872
|
+
if (value && typeof value === 'string' && value.startsWith('#')) {
|
|
8873
|
+
return value;
|
|
8874
|
+
}
|
|
8875
|
+
// Otherwise, map string values to theme colors
|
|
8876
|
+
const colorMap = {
|
|
8877
|
+
active: theme?.message?.color?.success,
|
|
8878
|
+
warning: theme?.message?.color?.warning,
|
|
8879
|
+
info: theme?.message?.color?.info,
|
|
8880
|
+
inactive: theme?.palette?.textDisabled,
|
|
8881
|
+
};
|
|
8882
|
+
return value && typeof value === 'string' ? colorMap[value.toLowerCase()] : undefined;
|
|
8883
|
+
}
|
|
8884
|
+
function getIconFromAttribute(option, iconAttribute) {
|
|
8885
|
+
const iconValue = option[iconAttribute];
|
|
8886
|
+
if (!iconValue || typeof iconValue !== 'string') {
|
|
8887
|
+
return undefined;
|
|
8888
|
+
}
|
|
8889
|
+
// Process through getResourceUrl to handle both URLs and resourceIds
|
|
8890
|
+
return getResourceUrl(iconValue);
|
|
8891
|
+
}
|
|
8892
|
+
|
|
8406
8893
|
const getFilterComponent = (filterType) => {
|
|
8407
8894
|
switch (filterType) {
|
|
8408
8895
|
case "checkbox":
|
|
@@ -8415,6 +8902,8 @@ const getFilterComponent = (filterType) => {
|
|
|
8415
8902
|
return RangeDateFilter;
|
|
8416
8903
|
case "text":
|
|
8417
8904
|
return TextFilter;
|
|
8905
|
+
case "chips":
|
|
8906
|
+
return ChipsFilter;
|
|
8418
8907
|
case "dropdown":
|
|
8419
8908
|
default:
|
|
8420
8909
|
return DropdownFilter;
|
|
@@ -8600,7 +9089,9 @@ const getRenderElement = ({ t, config, elementConfig, attributes = [], layerInfo
|
|
|
8600
9089
|
return formatElementValue({ t, value, elementConfig: element, attributes, wrap });
|
|
8601
9090
|
};
|
|
8602
9091
|
|
|
8603
|
-
const getResourceUrl = (url) =>
|
|
9092
|
+
const getResourceUrl = (url) => {
|
|
9093
|
+
return url ? (url.startsWith("http") ? url : `/sp/resources/file/${url}`) : "";
|
|
9094
|
+
};
|
|
8604
9095
|
|
|
8605
9096
|
const getSlideshowImages = ({ element, attribute, }) => {
|
|
8606
9097
|
const { defaultValue, options } = element;
|
|
@@ -9580,7 +10071,7 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
9580
10071
|
return (jsx(ChartWrapper, { width: width, height: isStackBar ? "auto" : isPieChart ? width : height, column: column, loading: loading, children: renderChart }));
|
|
9581
10072
|
});
|
|
9582
10073
|
|
|
9583
|
-
const ChartLegend = ({ data, chartElement, type, twoColumns, loading }) => {
|
|
10074
|
+
const ChartLegend = ({ data, chartElement, fontSize, type, twoColumns, loading }) => {
|
|
9584
10075
|
const { t } = useGlobalContext();
|
|
9585
10076
|
const { sliceItems, showMore, onShowMore } = useShownOtherItems(chartElement?.options);
|
|
9586
10077
|
const axes = useMemo(() => getChartAxes(chartElement), [chartElement]);
|
|
@@ -9589,7 +10080,7 @@ const ChartLegend = ({ data, chartElement, type, twoColumns, loading }) => {
|
|
|
9589
10080
|
const showMoreBtn = !!shownItems && data.length > shownItems;
|
|
9590
10081
|
if (!loading && !data?.length && !!hideEmpty)
|
|
9591
10082
|
return null;
|
|
9592
|
-
return (jsxs(Flex, { flexDirection: "column", opacity: loading ? FILTERED_VALUE_OPACITY / 100 : 1, children: [jsx(ChartLegendContainer, { twoColumns: twoColumns, children: sliceItems(data)?.map(({ name, color }, index) => (jsxs(ChartLegendItem, { hasAnyFilter: hasAnyFilter, isFiltered: isFiltered(name), onClick: axes?.[0]?.filterName ? () => onFilter(name) : undefined, children: [jsx(ChartLegendColor, { color: color }), jsx(ChartLegendName, { "$fontColor": fontColor, children: name })] }, index))) }), showMoreBtn && (jsx(LegendToggler, { onClick: onShowMore, toggled: showMore, children: t("other", { ns: "dashboard", defaultValue: "Другое" }) }))] }));
|
|
10083
|
+
return (jsxs(Flex, { flexDirection: "column", opacity: loading ? FILTERED_VALUE_OPACITY / 100 : 1, children: [jsx(ChartLegendContainer, { twoColumns: twoColumns, children: sliceItems(data)?.map(({ name, color }, index) => (jsxs(ChartLegendItem, { hasAnyFilter: hasAnyFilter, isFiltered: isFiltered(name), onClick: axes?.[0]?.filterName ? () => onFilter(name) : undefined, children: [jsx(ChartLegendColor, { color: color }), jsx(ChartLegendName, { "$fontSize": fontSize, "$fontColor": fontColor, children: name })] }, index))) }), showMoreBtn && (jsx(LegendToggler, { onClick: onShowMore, toggled: showMore, children: t("other", { ns: "dashboard", defaultValue: "Другое" }) }))] }));
|
|
9593
10084
|
};
|
|
9594
10085
|
|
|
9595
10086
|
const ContainerChildren = memo(({ items, isColumn, isMain, renderElement }) => {
|
|
@@ -9601,7 +10092,7 @@ const ContainerChildren = memo(({ items, isColumn, isMain, renderElement }) => {
|
|
|
9601
10092
|
index,
|
|
9602
10093
|
wrap: isColumn || isMain,
|
|
9603
10094
|
});
|
|
9604
|
-
return isMain ? (jsx(ContainerWrapper, {
|
|
10095
|
+
return isMain ? (jsx(ContainerWrapper, { id: item.id, "data-templatename": item.templateName, children: jsx(DashboardWrapper, { children: render }) }, index)) : (jsx(InnerContainerWrapper$1, { id: item.id, children: render }, index));
|
|
9605
10096
|
}) }));
|
|
9606
10097
|
});
|
|
9607
10098
|
|
|
@@ -10090,5 +10581,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
|
|
|
10090
10581
|
}, children: children }), upperSiblings] }));
|
|
10091
10582
|
};
|
|
10092
10583
|
|
|
10093
|
-
export { AddFeatureButton, AddFeatureContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, 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_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardGradientHeader, FeatureCardHeader, FeatureCardIconHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, RoundedBackgroundContainer, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TmsType, TopContainer, TopContainerButtons, TwoColumnContainer, TwoColumnsInnerContainer, WidgetType, addDataSource, addDataSources, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading, convertSpToTurfFeature, createConfigLayer, createConfigPage, createNewPageId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, getActualExtrusionHeight, getAttributeByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDate, getDefaultConfig, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerDefinition, getLayerInfo, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getSvgUrl, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sliceShownOtherItems, timeOptions, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, useAppHeight, useChartChange, useChartData, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useExpandableContainers, useExportPdf, useGetConfigLayer, useGlobalContext, useHeaderRender, useLayerParams, useMapContext, useMapDraw, useProjectDashboardInit, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
|
|
10584
|
+
export { AddFeatureButton, AddFeatureContainer, AttributeGalleryContainer, AttributeLabel, BaseMapTheme, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, 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_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardGradientHeader, FeatureCardHeader, FeatureCardIconHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, InnerContainerWrapper$1 as InnerContainerWrapper, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OneColumnContainer, PageNavigator, PageTitle, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, RoundedBackgroundContainer, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TmsType, TopContainer, TopContainerButtons, TwoColumnContainer, TwoColumnsInnerContainer, WidgetType, addDataSource, addDataSources, applyFiltersToCondition, applyQueryFilters, applyVarsToCondition, checkEqualOrIncludes, checkIsLoading, convertSpToTurfFeature, createConfigLayer, createConfigPage, createNewPageId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, getActualExtrusionHeight, getAttributeByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDate, getDefaultConfig, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerDefinition, getLayerInfo, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getSvgUrl, getTotalFromAttributes, getTotalFromRelatedFeatures, hexToRgba, isCompositeLayerConfiguration, isEmptyElementValue, isEmptyValue, isHiddenEmptyValue, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isVisibleContainer, numberOptions, parseClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sliceShownOtherItems, timeOptions, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, useAppHeight, useChartChange, useChartData, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useExpandableContainers, useExportPdf, useGetConfigLayer, useGlobalContext, useHeaderRender, useLayerParams, useMapContext, useMapDraw, useProjectDashboardInit, useRedrawLayer, useRelatedDataSourceAttributes, useRenderElement, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useZoomToFeatures, useZoomToPoint };
|
|
10094
10585
|
//# sourceMappingURL=react.esm.js.map
|