@opengeoweb/workspace 9.9.0 → 9.10.0

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/index.esm.js CHANGED
@@ -4,7 +4,7 @@ import { syncGroupsTypes, syncGroupsActions, layerActions, mapStoreActions, uiAc
4
4
  import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, useApiContext } from '@opengeoweb/api';
5
5
  import { getLeaves, MosaicContext, getAndAssertNodeAtPathExists, createBalancedTreeFromLeaves, MosaicWindow, Mosaic } from 'react-mosaic-component';
6
6
  import { debounce, takeEvery, takeLatest, all, put, delay, select, call, takeLeading } from 'redux-saga/effects';
7
- import { isAxiosError, getAxiosErrorMessage, withEggs, ConfirmationServiceProvider, useConfirmationDialog, CustomIconButton, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, getHeight, usePrevious, renderCounter, ToolContainer, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
7
+ import { isAxiosError, getAxiosErrorMessage, withEggs, ConfirmationServiceProvider, useConfirmationDialog, CustomIconButton, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, usePrevious, renderCounter, ToolContainer, CustomToggleButton, ConfirmationDialog } from '@opengeoweb/shared';
8
8
  import { snackbarActions, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
9
9
  import * as React from 'react';
10
10
  import React__default, { useCallback } from 'react';
@@ -17,6 +17,7 @@ import { getSagaExtension } from '@redux-eggs/saga-extension';
17
17
  import { produce } from 'immer';
18
18
  import { LinearProgress, Typography, ListItem, ListItemButton, ListItemIcon, ListItemText, Grid, useTheme, Chip, Stack, debounce as debounce$1, TextField, InputAdornment, Box, Backdrop, Menu, ListSubheader, MenuItem, Tabs } from '@mui/material';
19
19
  import 'react-mosaic-component/react-mosaic-component.css';
20
+ import AutoSizer from 'react-virtualized-auto-sizer';
20
21
  import { FixedSizeList } from 'react-window';
21
22
  import { Box as Box$1 } from '@mui/system';
22
23
  import { ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
@@ -5718,31 +5719,6 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
5718
5719
  }, /*#__PURE__*/React__default.createElement(Delete, null))))))));
5719
5720
  };
5720
5721
 
5721
- // Gets element height incl padding, border and margins
5722
- var useGetElementHeight = function useGetElementHeight(ref, defaultHeight) {
5723
- var _React$useState = React__default.useState(defaultHeight),
5724
- _React$useState2 = _slicedToArray(_React$useState, 2),
5725
- height = _React$useState2[0],
5726
- setHeight = _React$useState2[1];
5727
- React__default.useLayoutEffect(function () {
5728
- var element = ref === null || ref === void 0 ? void 0 : ref.current;
5729
- if (element) {
5730
- setHeight(element.offsetHeight);
5731
- }
5732
- var observer = new ResizeObserver(function () {
5733
- var height = getHeight(element);
5734
- height && setHeight(height);
5735
- });
5736
- observer.observe(element);
5737
- return function () {
5738
- observer.disconnect();
5739
- };
5740
- }, [ref]);
5741
- return {
5742
- height: height
5743
- };
5744
- };
5745
-
5746
5722
  /* *
5747
5723
  * Licensed under the Apache License, Version 2.0 (the "License");
5748
5724
  * you may not use this file except in compliance with the License.
@@ -5915,7 +5891,7 @@ var SearchField = function SearchField(_ref3) {
5915
5891
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
5916
5892
  * */
5917
5893
  var DEFAULT_FILTER_HEIGHT = 85;
5918
- var WorkspaceFilter = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5894
+ var WorkspaceFilter = function WorkspaceFilter(_ref) {
5919
5895
  var filters = _ref.filters,
5920
5896
  _ref$onClickFilterChi = _ref.onClickFilterChip,
5921
5897
  onClickFilterChip = _ref$onClickFilterChi === void 0 ? function () {} : _ref$onClickFilterChi,
@@ -5924,7 +5900,6 @@ var WorkspaceFilter = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5924
5900
  isAllSelected = _ref.isAllSelected,
5925
5901
  searchQuery = _ref.searchQuery;
5926
5902
  return /*#__PURE__*/React.createElement(Box, {
5927
- ref: ref,
5928
5903
  sx: {
5929
5904
  marginBottom: '8px'
5930
5905
  }
@@ -5938,7 +5913,7 @@ var WorkspaceFilter = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5938
5913
  onChipClick: onClickFilterChip,
5939
5914
  isAllSelected: isAllSelected
5940
5915
  })));
5941
- });
5916
+ };
5942
5917
 
5943
5918
  var emptyWorkspaceListItem = {
5944
5919
  id: emptyMapWorkspace.id,
@@ -5947,63 +5922,12 @@ var emptyWorkspaceListItem = {
5947
5922
  viewType: emptyMapWorkspace.viewType,
5948
5923
  "abstract": emptyMapWorkspace["abstract"]
5949
5924
  };
5950
- var DEFAULT_DIALOG_HEIGHT = 900;
5951
5925
  var MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
5952
5926
  var LIST_PADDING_TOP = 8;
5953
- var DEFAULT_PARENT_PADDING = 8;
5954
5927
  var DEFAULT_RESULTS_HEIGHT = 22;
5955
- var useGetRequiredHeights = function useGetRequiredHeights(ref) {
5956
- // Used to store the height of the list dialog content
5957
- var _React$useState = React.useState(DEFAULT_DIALOG_HEIGHT),
5958
- _React$useState2 = _slicedToArray(_React$useState, 2),
5959
- dialogHeight = _React$useState2[0],
5960
- setDialogHeight = _React$useState2[1];
5961
- // Used to store the padding height surrounding the list and the filters
5962
- var _React$useState3 = React.useState(DEFAULT_PARENT_PADDING),
5963
- _React$useState4 = _slicedToArray(_React$useState3, 2),
5964
- parentPaddingHeight = _React$useState4[0],
5965
- setParentPaddingHeight = _React$useState4[1];
5966
- // Obtain the height of the results div
5967
- var resultsRef = React.useRef(null);
5968
- var _useGetElementHeight = useGetElementHeight(resultsRef, DEFAULT_RESULTS_HEIGHT),
5969
- resultsHeight = _useGetElementHeight.height;
5970
- // Obtain the height of the filters and search
5971
- var _useGetElementHeight2 = useGetElementHeight(ref, DEFAULT_FILTER_HEIGHT),
5972
- filterHeight = _useGetElementHeight2.height;
5973
- // Obtain the height of of the list dialog content
5974
- React.useLayoutEffect(function () {
5975
- var _a, _b, _c, _d;
5976
- var dialogElement = (_d = (_c = (_b = (_a = resultsRef.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.parentElement;
5977
- setDialogHeight(dialogElement.offsetHeight);
5978
- var observer = new ResizeObserver(function () {
5979
- var height = getHeight(dialogElement);
5980
- height && setDialogHeight(height);
5981
- });
5982
- observer.observe(dialogElement);
5983
- return function () {
5984
- observer.disconnect();
5985
- };
5986
- }, [resultsRef]);
5987
- // Obtain the padding height surrounding the list and the filters
5988
- React.useEffect(function () {
5989
- var _a, _b;
5990
- var parentElement = (_b = (_a = resultsRef.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement;
5991
- var style = getComputedStyle(parentElement);
5992
- var paddingTop = parseInt(style.paddingTop, 10);
5993
- paddingTop && setParentPaddingHeight(paddingTop);
5994
- }, []);
5995
- var heightOtherElements = filterHeight + resultsHeight + LIST_PADDING_TOP + 2 * parentPaddingHeight;
5996
- // row height = height + margin
5997
- var rowHeight = WORKSPACE_SELECT_LIST_ROW_HEIGHT + 4;
5998
- var availableSpaceForList = dialogHeight - heightOtherElements;
5999
- var listHeight = availableSpaceForList && availableSpaceForList < MIN_HEIGHT_SCROLLABLE_LIST ? MIN_HEIGHT_SCROLLABLE_LIST : availableSpaceForList;
6000
- return {
6001
- resultsRef: resultsRef,
6002
- rowHeight: rowHeight,
6003
- listHeight: listHeight
6004
- };
6005
- };
6006
- var WorkspaceSelectList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5928
+ // row height = height + margin
5929
+ var rowHeight = WORKSPACE_SELECT_LIST_ROW_HEIGHT + 4;
5930
+ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
6007
5931
  var workspacePresets = _ref.workspacePresets,
6008
5932
  currentSelectedId = _ref.currentSelectedId,
6009
5933
  onClickPreset = _ref.onClickPreset,
@@ -6015,49 +5939,53 @@ var WorkspaceSelectList = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6015
5939
  newPreset = _ref$newPreset === void 0 ? emptyWorkspaceListItem : _ref$newPreset,
6016
5940
  _ref$testIdPrefix = _ref.testIdPrefix,
6017
5941
  testIdPrefix = _ref$testIdPrefix === void 0 ? 'workspace' : _ref$testIdPrefix;
6018
- var _useGetRequiredHeight = useGetRequiredHeights(ref),
6019
- resultsRef = _useGetRequiredHeight.resultsRef,
6020
- rowHeight = _useGetRequiredHeight.rowHeight,
6021
- listHeight = _useGetRequiredHeight.listHeight;
6022
- // Height of other elements in dialog besides the list:
6023
- // filter, results text , padding list top and 2x padding around dialog children (top & bottom)
6024
- var items = !hideNewWorkspace ? [newPreset].concat(_toConsumableArray(workspacePresets)) : workspacePresets;
6025
- // console.log(filterHeight, resultsHeight, parentPaddingHeight);
5942
+ var items = React.useMemo(function () {
5943
+ return !hideNewWorkspace ? [newPreset].concat(_toConsumableArray(workspacePresets)) : workspacePresets;
5944
+ }, [hideNewWorkspace, newPreset, workspacePresets]);
6026
5945
  return /*#__PURE__*/React.createElement(Box, {
6027
- "data-testid": "".concat(testIdPrefix, "-selectList")
5946
+ "data-testid": "".concat(testIdPrefix, "-selectList"),
5947
+ sx: {
5948
+ height: "calc(100% - ".concat(DEFAULT_FILTER_HEIGHT, "px)"),
5949
+ minHeight: MIN_HEIGHT_SCROLLABLE_LIST
5950
+ }
6028
5951
  }, /*#__PURE__*/React.createElement(Box, {
6029
- ref: resultsRef,
6030
5952
  sx: {
6031
5953
  marginBottom: '4px',
6032
5954
  fontSize: '12px'
6033
5955
  }
6034
- }, workspacePresets.length, " results"), /*#__PURE__*/React.createElement(Box, {
6035
- sx: {
6036
- paddingTop: "".concat(LIST_PADDING_TOP, "px")
6037
- }
6038
- }, /*#__PURE__*/React.createElement(FixedSizeList, {
6039
- height: listHeight,
6040
- itemCount: items.length,
6041
- itemSize: rowHeight,
6042
- width: "100%"
6043
- }, function (_ref2) {
6044
- var index = _ref2.index,
6045
- style = _ref2.style;
6046
- var preset = items[index];
6047
- return /*#__PURE__*/React.createElement("div", {
6048
- style: style,
6049
- key: preset.id || 'emptyPreset'
6050
- }, /*#__PURE__*/React.createElement(WorkspaceSelectListRow, {
6051
- workspacePreset: preset,
6052
- onClickPreset: onClickPreset,
6053
- onClickWorkspacePresetOption: onClickWorkspacePresetOption,
6054
- isEditable: isLoggedIn,
6055
- searchQuery: searchQuery,
6056
- isSelected: currentSelectedId === preset.id || currentSelectedId === '' && preset.id === undefined,
6057
- testIdPrefix: testIdPrefix
5956
+ }, workspacePresets.length, " results"), /*#__PURE__*/React.createElement(AutoSizer, null, function (_ref2) {
5957
+ var _ref2$height = _ref2.height,
5958
+ height = _ref2$height === void 0 ? 0 : _ref2$height,
5959
+ _ref2$width = _ref2.width,
5960
+ width = _ref2$width === void 0 ? 0 : _ref2$width;
5961
+ return /*#__PURE__*/React.createElement(Box, {
5962
+ sx: {
5963
+ paddingTop: "".concat(LIST_PADDING_TOP, "px")
5964
+ }
5965
+ }, /*#__PURE__*/React.createElement(FixedSizeList, {
5966
+ height: height - DEFAULT_RESULTS_HEIGHT,
5967
+ width: width,
5968
+ itemCount: items.length,
5969
+ itemSize: rowHeight
5970
+ }, function (_ref3) {
5971
+ var index = _ref3.index,
5972
+ style = _ref3.style;
5973
+ var preset = items[index];
5974
+ return /*#__PURE__*/React.createElement("div", {
5975
+ style: style,
5976
+ key: preset.id || 'emptyPreset'
5977
+ }, /*#__PURE__*/React.createElement(WorkspaceSelectListRow, {
5978
+ workspacePreset: preset,
5979
+ onClickPreset: onClickPreset,
5980
+ onClickWorkspacePresetOption: onClickWorkspacePresetOption,
5981
+ isEditable: isLoggedIn,
5982
+ searchQuery: searchQuery,
5983
+ isSelected: currentSelectedId === preset.id || currentSelectedId === '' && preset.id === undefined,
5984
+ testIdPrefix: testIdPrefix
5985
+ }));
6058
5986
  }));
6059
- })));
6060
- });
5987
+ }));
5988
+ };
6061
5989
 
6062
5990
  /* *
6063
5991
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -6079,7 +6007,6 @@ var ERROR_TITLE = 'View presets not available';
6079
6007
  var ERROR_RETRY = 'Try again';
6080
6008
  var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6081
6009
  var panelId = _ref.panelId;
6082
- var filterRef = React.useRef(null);
6083
6010
  var viewPresets = useSelector(function (store) {
6084
6011
  return getFilteredViewPresetListForView(store, panelId);
6085
6012
  });
@@ -6219,7 +6146,10 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6219
6146
  });
6220
6147
  var shouldHideNewWorkspace = !isAllSelectedForFilters || viewPresetListSearchQuery.length > 0;
6221
6148
  return /*#__PURE__*/React.createElement("div", {
6222
- "data-testid": "viewpreset-selectlist-connect"
6149
+ "data-testid": "viewpreset-selectlist-connect",
6150
+ style: {
6151
+ height: '100%'
6152
+ }
6223
6153
  }, isViewPresetsListFetching && ( /*#__PURE__*/React.createElement(LinearProgress, {
6224
6154
  "data-testid": "loading-bar",
6225
6155
  color: "secondary",
@@ -6236,15 +6166,15 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6236
6166
  }
6237
6167
  })), /*#__PURE__*/React.createElement(Box, {
6238
6168
  sx: {
6239
- padding: 1
6169
+ padding: 1,
6170
+ height: '100%'
6240
6171
  }
6241
6172
  }, !errorViewPresetsList && ( /*#__PURE__*/React.createElement(WorkspaceFilter, {
6242
6173
  filters: viewPresetListFilters,
6243
6174
  onClickFilterChip: onClickFilterChip,
6244
6175
  isAllSelected: isAllSelectedForFilters,
6245
6176
  searchQuery: viewPresetListSearchQuery,
6246
- onSearch: onSearchFilter,
6247
- ref: filterRef
6177
+ onSearch: onSearchFilter
6248
6178
  })), /*#__PURE__*/React.createElement(WorkspaceSelectList, {
6249
6179
  workspacePresets: viewPresets,
6250
6180
  currentSelectedId: activeViewPresetId || undefined,
@@ -6257,8 +6187,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6257
6187
  isLoggedIn: isLoggedIn,
6258
6188
  hideNewWorkspace: shouldHideNewWorkspace,
6259
6189
  searchQuery: viewPresetListSearchQuery,
6260
- testIdPrefix: "viewpreset",
6261
- ref: filterRef
6190
+ testIdPrefix: "viewpreset"
6262
6191
  })));
6263
6192
  };
6264
6193
 
@@ -7009,7 +6938,6 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
7009
6938
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
7010
6939
  * */
7011
6940
  var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7012
- var filterRef = React.useRef(null);
7013
6941
  var currentView = useSelector(function (store) {
7014
6942
  return getWorkspaceState(store);
7015
6943
  });
@@ -7141,7 +7069,10 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7141
7069
  });
7142
7070
  var shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
7143
7071
  return /*#__PURE__*/React.createElement("div", {
7144
- "data-testid": "workspace-selectlist-connect"
7072
+ "data-testid": "workspace-selectlist-connect",
7073
+ style: {
7074
+ height: '100%'
7075
+ }
7145
7076
  }, isFetching && ( /*#__PURE__*/React.createElement(LinearProgress, {
7146
7077
  "data-testid": "loading-bar",
7147
7078
  color: "secondary",
@@ -7168,15 +7099,15 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7168
7099
  }
7169
7100
  })))), /*#__PURE__*/React.createElement(Box, {
7170
7101
  sx: {
7171
- padding: 1
7102
+ padding: 1,
7103
+ height: '100%'
7172
7104
  }
7173
7105
  }, !error && ( /*#__PURE__*/React.createElement(WorkspaceFilter, {
7174
7106
  filters: workspaceListFilters,
7175
7107
  onClickFilterChip: onClickFilterChip,
7176
7108
  isAllSelected: isAllSelected,
7177
7109
  searchQuery: workspaceSearchQuery,
7178
- onSearch: searchFilter,
7179
- ref: filterRef
7110
+ onSearch: searchFilter
7180
7111
  })), /*#__PURE__*/React.createElement(WorkspaceSelectList, {
7181
7112
  workspacePresets: workspacePresets,
7182
7113
  currentSelectedId: currentView.id || '',
@@ -7184,8 +7115,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
7184
7115
  onClickWorkspacePresetOption: onClickWorkspacePresetOption,
7185
7116
  hideNewWorkspace: shouldHideNewWorkspace,
7186
7117
  isLoggedIn: isLoggedIn,
7187
- searchQuery: workspaceSearchQuery,
7188
- ref: filterRef
7118
+ searchQuery: workspaceSearchQuery
7189
7119
  })));
7190
7120
  };
7191
7121
 
@@ -7742,9 +7672,12 @@ var WorkspaceTopBar = function WorkspaceTopBar(_ref) {
7742
7672
  "aria-label": "workspace-bar-tabs",
7743
7673
  sx: {
7744
7674
  width: '100%',
7675
+ height: '100%',
7745
7676
  minHeight: 'auto',
7746
7677
  '.MuiTabs-flexContainer': {
7747
- flexDirection: 'column'
7678
+ flexDirection: 'column',
7679
+ justifyContent: 'center',
7680
+ height: '100%'
7748
7681
  }
7749
7682
  }
7750
7683
  }, /*#__PURE__*/React.createElement(WorkspaceTabConnect, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "9.9.0",
3
+ "version": "9.10.0",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -10,7 +10,7 @@
10
10
  "dependencies": {
11
11
  "react-redux": "^8.1.3",
12
12
  "@opengeoweb/shared": "*",
13
- "@mui/material": "5.12.0",
13
+ "@mui/material": "~5.15.11",
14
14
  "@opengeoweb/form-fields": "*",
15
15
  "@opengeoweb/store": "*",
16
16
  "@opengeoweb/api": "*",
@@ -33,7 +33,9 @@
33
33
  "axios": "1.5.0",
34
34
  "@opengeoweb/taf": "*",
35
35
  "@opengeoweb/sigmet-airmet": "*",
36
- "@opengeoweb/warnings": "*"
36
+ "@opengeoweb/warnings": "*",
37
+ "react-virtualized-auto-sizer": "^1.0.21",
38
+ "@opengeoweb/timeslider": "*"
37
39
  },
38
40
  "peerDependencies": {
39
41
  "react": "18"
@@ -13,6 +13,5 @@ export interface WorkspaceSelectListProps extends BoxProps {
13
13
  newPreset?: WorkspacePresetListItem;
14
14
  testIdPrefix?: string;
15
15
  }
16
- export declare const DEFAULT_DIALOG_HEIGHT = 900;
17
16
  declare const WorkspaceSelectList: React.FC<WorkspaceSelectListProps>;
18
17
  export default WorkspaceSelectList;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ComponentsLookUpPayload as CoreComponentsLookUpPayload } from '@opengeoweb/core';
3
3
  import { ComponentsLookUpPayload as TimeseriesComponentsLookUpPayload } from '@opengeoweb/timeseries';
4
+ import { ComponentsLookUpPayload as TimesliderComponentsLookUpPayload } from '@opengeoweb/timeslider';
4
5
  import { ComponentsLookUpPayload as TafComponentsLookUpPayload } from '@opengeoweb/taf';
5
6
  import { SigmetComponentsLookUpPayload, AirmetComponentsLookUpPayload } from '@opengeoweb/sigmet-airmet';
6
7
  import { ComponentsLookUpPayload as WarningListComponentsLookUpPayLoad } from '@opengeoweb/warnings';
@@ -9,4 +10,4 @@ import { ComponentsLookUpPayload as WarningListComponentsLookUpPayLoad } from '@
9
10
  * @param payload
10
11
  * @returns
11
12
  */
12
- export declare const componentsLookUp: (payload: CoreComponentsLookUpPayload | TimeseriesComponentsLookUpPayload | TafComponentsLookUpPayload | SigmetComponentsLookUpPayload | AirmetComponentsLookUpPayload | WarningListComponentsLookUpPayLoad) => React.ReactElement;
13
+ export declare const componentsLookUp: (payload: CoreComponentsLookUpPayload | TimeseriesComponentsLookUpPayload | TafComponentsLookUpPayload | SigmetComponentsLookUpPayload | AirmetComponentsLookUpPayload | WarningListComponentsLookUpPayLoad | TimesliderComponentsLookUpPayload) => React.ReactElement;
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- export declare const useGetElementHeight: (ref: React.RefObject<HTMLDivElement>, defaultHeight: number) => {
3
- height: number;
4
- };
@@ -1 +0,0 @@
1
- export {};