@evergis/react 4.0.119 → 4.0.121

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.
@@ -192,7 +192,7 @@ export interface ChartContainerConfig extends Omit<ConfigContainerChild, "option
192
192
  export interface ChartContainerProps extends Omit<ContainerProps, "elementConfig"> {
193
193
  elementConfig?: ChartContainerConfig;
194
194
  }
195
- export type ContainersGroupContainerOptions = Pick<ConfigOptions, "column" | "expandable" | "expanded" | "alignItems" | "grid" | "editMode" | "gap"> & ContainerBoxOptions;
195
+ export type ContainersGroupContainerOptions = Pick<ConfigOptions, "column" | "expandable" | "expanded" | "alignItems" | "grid" | "editMode" | "fixedHeight" | "gap"> & ContainerBoxOptions;
196
196
  export interface ContainersGroupContainerConfig extends Omit<ConfigContainerChild, "options" | "templateName"> {
197
197
  templateName?: ContainerTemplate.ContainersGroup;
198
198
  options?: ContainersGroupContainerOptions;
@@ -6,6 +6,7 @@ import { ContainerProps } from '../../types';
6
6
  * Черновик отличается структурой от конфига, пришедшего сверху, поэтому `renderElement` из пропсов
7
7
  * здесь не годится — он замкнут на исходный узел и не найдёт ячейки, созданные split/add. Вместо
8
8
  * него строится собственный, замкнутый на черновик; всё дерево ниже получает его по цепочке
9
- * рекурсии `getRenderElement`.
9
+ * рекурсии `getRenderElement`. Хост с собственным реестром содержимого отдаёт вместо этого
10
+ * фабрику `createRenderElement` — она получает черновик и строит рендер по нему.
10
11
  */
11
12
  export declare const GridEditSession: FC<ContainerProps>;
@@ -0,0 +1,5 @@
1
+ export * from './types';
2
+ export * from './constants';
3
+ export * from './utils/gridTracks';
4
+ export * from './utils/gridTree';
5
+ export * from './utils/createGridNodeId';
@@ -1,6 +1,7 @@
1
1
  export * from './components';
2
2
  export * from './containers';
3
3
  export * from './elements';
4
+ export * from './grid';
4
5
  export * from './headers';
5
6
  export * from './styled';
6
7
  export * from './constants';
@@ -198,6 +198,14 @@ export interface ConfigLayoutOptions {
198
198
  * не имеет.
199
199
  */
200
200
  editMode?: boolean;
201
+ /**
202
+ * Высота сетки задана снаружи и не редактируется: у корневой строки не рендерится ручка
203
+ * нижней границы. Нужен сеткам, растянутым на бокс, которым распоряжается внешняя
204
+ * раскладка (панель фиксированного экрана, док) — там тянуть собственную высоту нечем
205
+ * и незачем. Читается у корневого узла сетки; на вложенные не влияет — у них ручки
206
+ * высоты нет и так.
207
+ */
208
+ fixedHeight?: boolean;
201
209
  twoColumns?: boolean;
202
210
  /** Вписать график контейнера Chart в контейнер: по ширине всегда, по высоте — при заданной высоте (object-fit: contain). */
203
211
  fill?: boolean;
@@ -655,6 +663,21 @@ export interface ContainerProps {
655
663
  innerComponent?: FC<InnerContainerProps>;
656
664
  renderElement?: RenderElementFunction;
657
665
  onChange?: (config: ConfigContainerChild) => void;
666
+ /**
667
+ * Хостовый рендер треков сетки в режиме редактирования раскладки.
668
+ *
669
+ * Сессия правит собственный черновик, структура которого расходится с конфигом сверху, поэтому
670
+ * готовый `renderElement` там не годится — он замкнут на исходный узел и не найдёт ячейки,
671
+ * созданные split/add. Фабрика получает актуальный черновик и строит рендер по нему; без неё
672
+ * сессия рендерит содержимое штатным реестром контейнеров.
673
+ */
674
+ createRenderElement?: (node: ConfigContainerChild) => RenderElementFunction;
675
+ /**
676
+ * Зеркало выделения ячеек сетки наружу: вызывается при каждой смене выделения списком id
677
+ * выделенных ячеек (пустой список — выделения нет). Само выделение живёт в сессии
678
+ * редактирования; колбэк ни на что не влияет, он только сообщает.
679
+ */
680
+ onGridSelectionChange?: (cellIds: string[]) => void;
658
681
  }
659
682
  export type PieChartDisplayedData = Array<Omit<PieChartData, "value"> & {
660
683
  value: string | number;
@@ -11,6 +11,7 @@ export declare const DEFAULT_CIRCLE_STROKE_WIDTH = 0;
11
11
  export declare const DEFAULT_LINE_WIDTH = 1;
12
12
  export declare const DEFAULT_LINE_CAP = "butt";
13
13
  export declare const DEFAULT_LINE_JOIN = "miter";
14
+ export declare const DEFAULT_SYMBOL_COLOR = "#000000";
14
15
  export declare const DEFAULT_SYMBOL_PLACEMENT = "point";
15
16
  export declare const DEFAULT_SYMBOL_SPACING = 250;
16
17
  export declare const DEFAULT_ICON_OVERLAP = "never";
package/dist/index.js CHANGED
@@ -10026,8 +10026,9 @@ const GridTracks = React.memo(({ node, axis, renderElement, body, gap }) => {
10026
10026
  const handleResizeCommit = React.useCallback((index, next) => edit?.commitResize(node.id, index, next, axis), [axis, edit, node.id]);
10027
10027
  const handleHeightCommit = React.useCallback((height, next) => edit?.commitHeight(height, next), [edit]);
10028
10028
  // Нижнюю границу тянет только корневая сетка сессии: у вложенной снизу лежит трек чужой
10029
- // раскладки, и её высотой распоряжается родитель.
10030
- const outerSizes = React.useMemo(() => (axis === "row" && edit?.draft.id === node.id ? sizes : undefined), [axis, edit?.draft.id, node.id, sizes]);
10029
+ // раскладки, и её высотой распоряжается родитель. `fixedHeight` убирает ручку и у корневой —
10030
+ // когда высотой сетки распоряжается внешняя раскладка (панель фиксированного экрана, док).
10031
+ const outerSizes = React.useMemo(() => (axis === "row" && edit?.draft.id === node.id && !node.options?.fixedHeight ? sizes : undefined), [axis, edit?.draft.id, node.id, node.options?.fixedHeight, sizes]);
10031
10032
  return (jsxRuntime.jsx(GridBody, { ...body, ref: gridRef, isColumn: true, "$template": template, "$axis": axis, "$gap": gap ?? DEFAULT_GRID_GAP, children: items.map((item, index) => (jsxRuntime.jsx(GridTrack, { item: item, axis: axis, index: index, pairSizes: index + 1 < items.length ? [sizes[index], sizes[index + 1]] : null, outerSizes: outerSizes, getGrid: getGrid, onResizeCommit: handleResizeCommit, onHeightCommit: handleHeightCommit, renderElement: renderElement }, item.id))) }));
10032
10033
  });
10033
10034
 
@@ -11484,15 +11485,21 @@ const useGridSelection = () => {
11484
11485
  * Черновик отличается структурой от конфига, пришедшего сверху, поэтому `renderElement` из пропсов
11485
11486
  * здесь не годится — он замкнут на исходный узел и не найдёт ячейки, созданные split/add. Вместо
11486
11487
  * него строится собственный, замкнутый на черновик; всё дерево ниже получает его по цепочке
11487
- * рекурсии `getRenderElement`.
11488
+ * рекурсии `getRenderElement`. Хост с собственным реестром содержимого отдаёт вместо этого
11489
+ * фабрику `createRenderElement` — она получает черновик и строит рендер по нему.
11488
11490
  */
11489
- const GridEditSession = ({ elementConfig, type = exports.WidgetType.Dashboard, onChange, }) => {
11491
+ const GridEditSession = ({ elementConfig, type = exports.WidgetType.Dashboard, onChange, createRenderElement, onGridSelectionChange, }) => {
11490
11492
  const { draft, applyAction, commitResize, commitHeight } = useGridDraft({ node: elementConfig, type, onChange });
11491
11493
  const { selectedIds, selectCell, clearSelection } = useGridSelection();
11492
11494
  const { beginDrag, consumeDragClick } = useGridCellSwap({ draft, applyAction });
11493
11495
  const [menuPosition, setMenuPosition] = React.useState(null);
11494
- const renderElement = useRenderElement(type, draft);
11496
+ // Штатный рендер строится всегда: хостовая фабрика опциональна, а порядок хуков — нет.
11497
+ const defaultRenderElement = useRenderElement(type, draft);
11498
+ const renderElement = React.useMemo(() => (createRenderElement ? createRenderElement(draft) : defaultRenderElement), [createRenderElement, defaultRenderElement, draft]);
11495
11499
  const menuState = React.useMemo(() => getGridMenuState(draft, selectedIds), [draft, selectedIds]);
11500
+ React.useEffect(() => {
11501
+ onGridSelectionChange?.(selectedIds);
11502
+ }, [onGridSelectionChange, selectedIds]);
11496
11503
  const openMenu = React.useCallback((position) => setMenuPosition(position), []);
11497
11504
  const closeMenu = React.useCallback(() => setMenuPosition(null), []);
11498
11505
  const value = React.useMemo(() => ({
@@ -16674,6 +16681,7 @@ const DEFAULT_CIRCLE_STROKE_WIDTH = 0;
16674
16681
  const DEFAULT_LINE_WIDTH = 1;
16675
16682
  const DEFAULT_LINE_CAP = "butt";
16676
16683
  const DEFAULT_LINE_JOIN = "miter";
16684
+ const DEFAULT_SYMBOL_COLOR = "#000000";
16677
16685
  const DEFAULT_SYMBOL_PLACEMENT = "point";
16678
16686
  const DEFAULT_SYMBOL_SPACING = 250;
16679
16687
  const DEFAULT_ICON_OVERLAP = "never";
@@ -16770,8 +16778,9 @@ const DEFAULT_SYMBOL_STYLE = {
16770
16778
  "icon-rotate": DEFAULT_ICON_ROTATE,
16771
16779
  },
16772
16780
  paint: {
16773
- "icon-color": DEFAULT_COLOR,
16781
+ "icon-color": DEFAULT_SYMBOL_COLOR,
16774
16782
  "icon-opacity": DEFAULT_OPACITY,
16783
+ "text-color": DEFAULT_SYMBOL_COLOR,
16775
16784
  "text-opacity": DEFAULT_OPACITY,
16776
16785
  },
16777
16786
  },
@@ -16841,6 +16850,7 @@ exports.DEFAULT_FILL_EXTRUSION_STYLE = DEFAULT_FILL_EXTRUSION_STYLE;
16841
16850
  exports.DEFAULT_FILL_EXTRUSION_VERTICAL_GRADIENT = DEFAULT_FILL_EXTRUSION_VERTICAL_GRADIENT;
16842
16851
  exports.DEFAULT_FILL_STYLE = DEFAULT_FILL_STYLE;
16843
16852
  exports.DEFAULT_FILTER_PADDING = DEFAULT_FILTER_PADDING;
16853
+ exports.DEFAULT_GRID_GAP = DEFAULT_GRID_GAP;
16844
16854
  exports.DEFAULT_HEATMAP_COLOR = DEFAULT_HEATMAP_COLOR;
16845
16855
  exports.DEFAULT_HEATMAP_INTENSITY = DEFAULT_HEATMAP_INTENSITY;
16846
16856
  exports.DEFAULT_HEATMAP_RADIUS = DEFAULT_HEATMAP_RADIUS;
@@ -16860,11 +16870,14 @@ exports.DEFAULT_LNG = DEFAULT_LNG;
16860
16870
  exports.DEFAULT_OPACITY = DEFAULT_OPACITY;
16861
16871
  exports.DEFAULT_PAGES_CONFIG = DEFAULT_PAGES_CONFIG;
16862
16872
  exports.DEFAULT_PIECHART_RADIUS = DEFAULT_PIECHART_RADIUS;
16873
+ exports.DEFAULT_SYMBOL_COLOR = DEFAULT_SYMBOL_COLOR;
16863
16874
  exports.DEFAULT_SYMBOL_PLACEMENT = DEFAULT_SYMBOL_PLACEMENT;
16864
16875
  exports.DEFAULT_SYMBOL_SPACING = DEFAULT_SYMBOL_SPACING;
16865
16876
  exports.DEFAULT_SYMBOL_STYLE = DEFAULT_SYMBOL_STYLE;
16877
+ exports.DEFAULT_TRACK_FR = DEFAULT_TRACK_FR;
16866
16878
  exports.DEFAULT_TRANSLATE = DEFAULT_TRANSLATE;
16867
16879
  exports.DEFAULT_ZOOM = DEFAULT_ZOOM;
16880
+ exports.DRAG_THRESHOLD_PX = DRAG_THRESHOLD_PX;
16868
16881
  exports.Dashboard = Dashboard;
16869
16882
  exports.DashboardCheckbox = DashboardCheckbox;
16870
16883
  exports.DashboardChip = DashboardChip;
@@ -16907,6 +16920,7 @@ exports.FEATURE_CARD_OTHER_COLOR = FEATURE_CARD_OTHER_COLOR;
16907
16920
  exports.FILL_SIZE = FILL_SIZE;
16908
16921
  exports.FILTERED_VALUE_OPACITY = FILTERED_VALUE_OPACITY;
16909
16922
  exports.FILTER_PREFIX = FILTER_PREFIX;
16923
+ exports.FR_PRECISION = FR_PRECISION;
16910
16924
  exports.FeatureCardBackgroundHeader = FeatureCardBackgroundHeader;
16911
16925
  exports.FeatureCardButtons = FeatureCardButtons;
16912
16926
  exports.FeatureCardContext = FeatureCardContext;
@@ -16919,9 +16933,19 @@ exports.FeatureControls = FeatureControls;
16919
16933
  exports.FeatureTitleContainer = FeatureTitleContainer;
16920
16934
  exports.FiltersContainer = FiltersContainer;
16921
16935
  exports.GEOMETRY_ATTRIBUTE = GEOMETRY_ATTRIBUTE;
16936
+ exports.GRID_CELL_ATTR = GRID_CELL_ATTR;
16937
+ exports.GRID_CELL_ID_PREFIX = GRID_CELL_ID_PREFIX;
16938
+ exports.GRID_DRAGGING_ATTR = GRID_DRAGGING_ATTR;
16939
+ exports.GRID_DRAG_SOURCE_ATTR = GRID_DRAG_SOURCE_ATTR;
16940
+ exports.GRID_DROP_TARGET_ATTR = GRID_DROP_TARGET_ATTR;
16941
+ exports.GRID_FILL_DEFAULTS = GRID_FILL_DEFAULTS;
16942
+ exports.GRID_HANDLE_ATTR = GRID_HANDLE_ATTR;
16943
+ exports.GRID_HANDLE_PROPS = GRID_HANDLE_PROPS;
16944
+ exports.GRID_ROW_ID_PREFIX = GRID_ROW_ID_PREFIX;
16922
16945
  exports.GlobalContext = GlobalContext;
16923
16946
  exports.GlobalProvider = GlobalProvider;
16924
16947
  exports.GridRowContainer = GridRowContainer;
16948
+ exports.HANDLE_BLEED_PX = HANDLE_BLEED_PX;
16925
16949
  exports.Header = Header;
16926
16950
  exports.HeaderContainer = HeaderContainer;
16927
16951
  exports.HeaderFontColorMixin = HeaderFontColorMixin;
@@ -16944,9 +16968,13 @@ exports.LinearProgressContainer = LinearProgressContainer;
16944
16968
  exports.LogTerminal = LogTerminal;
16945
16969
  exports.LogoContainer = LogoContainer;
16946
16970
  exports.MAX_CHART_WIDTH = MAX_CHART_WIDTH;
16971
+ exports.MAX_TRACKS = MAX_TRACKS;
16972
+ exports.MIN_TRACK_PX = MIN_TRACK_PX;
16973
+ exports.MIN_TRACK_RATIO = MIN_TRACK_RATIO;
16947
16974
  exports.Map = Map$1;
16948
16975
  exports.MapContext = MapContext;
16949
16976
  exports.MapProvider = MapProvider;
16977
+ exports.NO_CELL_DRAG_SELECTOR = NO_CELL_DRAG_SELECTOR;
16950
16978
  exports.NO_CONTENT_VALUE = NO_CONTENT_VALUE;
16951
16979
  exports.NUMERIC_ATTRIBUTE_TYPES = NUMERIC_ATTRIBUTE_TYPES;
16952
16980
  exports.NoLiveSnapshotContainer = NoLiveSnapshotContainer;
@@ -17011,10 +17039,17 @@ exports.asLayerName = asLayerName;
17011
17039
  exports.asModalId = asModalId;
17012
17040
  exports.asResourceId = asResourceId;
17013
17041
  exports.asTabId = asTabId;
17042
+ exports.buildGridTemplate = buildGridTemplate;
17043
+ exports.buildTrackTemplate = buildTrackTemplate;
17014
17044
  exports.checkEqualOrIncludes = checkEqualOrIncludes;
17015
17045
  exports.checkIsLoading = checkIsLoading;
17046
+ exports.collectConfigIds = collectConfigIds;
17047
+ exports.containsNodeId = containsNodeId;
17016
17048
  exports.createConfigLayer = createConfigLayer;
17017
17049
  exports.createConfigPage = createConfigPage;
17050
+ exports.createGridCell = createGridCell;
17051
+ exports.createGridIdFactory = createGridIdFactory;
17052
+ exports.createGridRow = createGridRow;
17018
17053
  exports.createNewPageId = createNewPageId;
17019
17054
  exports.createSaveNotificationId = createSaveNotificationId;
17020
17055
  exports.dateOptions = dateOptions;
@@ -17025,6 +17060,7 @@ exports.enrichStyleModelsWithIds = enrichStyleModelsWithIds;
17025
17060
  exports.eqlParametersToPayload = eqlParametersToPayload;
17026
17061
  exports.fetchQueryDescription = fetchQueryDescription;
17027
17062
  exports.findAttributeInExpression = findAttributeInExpression;
17063
+ exports.findCellContext = findCellContext;
17028
17064
  exports.formatArea = formatArea;
17029
17065
  exports.formatAttributeValue = formatAttributeValue;
17030
17066
  exports.formatChartRelatedValue = formatChartRelatedValue;
@@ -17043,6 +17079,7 @@ exports.getAttributeIconElement = getAttributeIconElement;
17043
17079
  exports.getAttributeIconUrl = getAttributeIconUrl;
17044
17080
  exports.getAttributeValue = getAttributeValue;
17045
17081
  exports.getAttributesConfiguration = getAttributesConfiguration;
17082
+ exports.getAverageTrackSize = getAverageTrackSize;
17046
17083
  exports.getChartAxes = getChartAxes;
17047
17084
  exports.getChartFilterName = getChartFilterName;
17048
17085
  exports.getChartMarkers = getChartMarkers;
@@ -17070,6 +17107,7 @@ exports.getLayerClientStyle = getLayerClientStyle;
17070
17107
  exports.getLayerInfo = getLayerInfo;
17071
17108
  exports.getLayerInfoAttribute = getLayerInfoAttribute;
17072
17109
  exports.getLayerInfoFromDataSources = getLayerInfoFromDataSources;
17110
+ exports.getLayoutChildren = getLayoutChildren;
17073
17111
  exports.getPagesFromConfig = getPagesFromConfig;
17074
17112
  exports.getPagesFromProjectInfo = getPagesFromProjectInfo;
17075
17113
  exports.getProxyService = getProxyService;
@@ -17085,12 +17123,16 @@ exports.getTemplateNameFromAttribute = getTemplateNameFromAttribute;
17085
17123
  exports.getThemeByName = getThemeByName;
17086
17124
  exports.getTotalFromAttributes = getTotalFromAttributes;
17087
17125
  exports.getTotalFromRelatedFeatures = getTotalFromRelatedFeatures;
17126
+ exports.getTrackSize = getTrackSize;
17127
+ exports.getTrackSizeKey = getTrackSizeKey;
17128
+ exports.getTrackSizes = getTrackSizes;
17088
17129
  exports.getWrapperSizeStyle = getWrapperSizeStyle;
17089
17130
  exports.hexToRgba = hexToRgba;
17090
17131
  exports.isEmptyElementValue = isEmptyElementValue;
17091
17132
  exports.isEmptyValue = isEmptyValue;
17092
17133
  exports.isFillSize = isFillSize;
17093
17134
  exports.isFrSize = isFrSize;
17135
+ exports.isGridNode = isGridNode;
17094
17136
  exports.isHiddenEmptyValue = isHiddenEmptyValue;
17095
17137
  exports.isHookActive = isHookActive;
17096
17138
  exports.isLayerService = isLayerService;
@@ -17100,22 +17142,29 @@ exports.isObject = isObject;
17100
17142
  exports.isProxyService = isProxyService;
17101
17143
  exports.isTreeFilterValue = isTreeFilterValue;
17102
17144
  exports.isVisibleContainer = isVisibleContainer;
17145
+ exports.mapNodeById = mapNodeById;
17103
17146
  exports.mergeAttributeConfigurations = mergeAttributeConfigurations;
17104
17147
  exports.metersPerPixel = metersPerPixel;
17105
17148
  exports.numberOptions = numberOptions;
17149
+ exports.parseFrValue = parseFrValue;
17106
17150
  exports.parseIconNames = parseIconNames;
17107
17151
  exports.parseIconNamesFromClientStyle = parseIconNamesFromClientStyle;
17108
17152
  exports.pieChartTooltipFromAttributes = pieChartTooltipFromAttributes;
17109
17153
  exports.pieChartTooltipFromRelatedFeatures = pieChartTooltipFromRelatedFeatures;
17110
17154
  exports.pointOptions = pointOptions;
17111
17155
  exports.removeDataSource = removeDataSource;
17156
+ exports.removeTracks = removeTracks;
17157
+ exports.replaceNodesByIds = replaceNodesByIds;
17112
17158
  exports.rgbToHex = rgbToHex;
17159
+ exports.roundFr = roundFr;
17113
17160
  exports.roundTotalSum = roundTotalSum;
17161
+ exports.setLayoutChildren = setLayoutChildren;
17114
17162
  exports.sizeCssMixin = sizeCssMixin;
17115
17163
  exports.sliceShownOtherItems = sliceShownOtherItems;
17116
17164
  exports.stretchPalette = stretchPalette;
17117
17165
  exports.timeOptions = timeOptions;
17118
17166
  exports.toCssSize = toCssSize;
17167
+ exports.toFrSize = toFrSize;
17119
17168
  exports.toPxNumber = toPxNumber;
17120
17169
  exports.toRenderableValue = toRenderableValue;
17121
17170
  exports.tooltipNameFromAttributes = tooltipNameFromAttributes;
@@ -17179,4 +17228,5 @@ exports.useWindowResize = useWindowResize;
17179
17228
  exports.useWrapperSize = useWrapperSize;
17180
17229
  exports.useZoomToFeatures = useZoomToFeatures;
17181
17230
  exports.useZoomToPoint = useZoomToPoint;
17231
+ exports.withTrackSize = withTrackSize;
17182
17232
  //# sourceMappingURL=index.js.map